Название
|
Вывод
|
Тип
|
Назначение
|
VSS1
|
22
|
I
|
Земля.
|
VCC
|
44
|
I
|
Питание
+5V
|
P0.0-P0.7
|
54-61
|
I/O
|
Порт
P0. Двунаправленный порт с открытым стоком.
|
P1.0-P1.7
|
23-30
|
I/O
|
Порт
P1. Двунаправленный порт с внутренними подтягивающими резисторами.
Альтернативные функции: SCL (P1.6) - Вход тактирования шины I2C. SDA (P1.7) -
Вход\выход данных шины I2C.
|
|
I/O
I/O
|
|
P2.0-P2.7
|
43-50
|
I/O
|
Порт
P2. Двунаправленный порт с внутренними подтягивающими резисторами.
|
P3.0-P3.7
|
31-38
|
I/O
|
Порт
P3. Двунаправленный порт с внутренними подтягивающими резисторами.
|
P4.0-P4.7
|
14-21
|
I/O
|
Порт
P4. Двунаправленный порт с внутренними подтягивающими резисторами.
|
P5.0-P5.7
|
2-8
|
I/O
|
Порт
P4. Двунаправленный порт с внутренними подтягивающими резисторами.
Альтернативная функция - 8 мультиплексированных входов АЦП.
|
RST
|
10
|
I
|
Сигнал
сброса микроконтроллера
|
Uref-
|
62
|
I
|
Низкий
уровень опорного напряжения
|
Uref+
|
63
|
I
|
Высокий
уровень опорного напряжения
|
XTAL1
|
21
|
I
|
Вход
тактового генератора
|
XTAL2
|
20
|
O
|
Выход
тактового генератора
|
AVSS
|
64
|
Аналоговое
питание
|
AVDD
|
1
|
I
|
Аналоговая
земля
|
Структура внутреннего ОЗУ
Внутреннее ОЗУ ОМК состоит из резидентной памяти
данных (РПД) и регистров специальных функций (РСФ). РПД емкостью 512 байт
разделена на три секции; первая занимает адресное пространство 00...7FH, вторая
- 80H…FFH. Эти секции различаются способами адресации и возможным
использованием расположенных в них ячеек РПД.
Рассмотрим эти различия
-я секция РПД: адресация всех ячеек может быть
как прямой, так и косвенной; ячейки с адресами 00...1FH могут быть использованы
как регистры общего назначения, сгруппированные в 4 банка; для ячеек с адресами
20H…2FH допускается побитовая адресация; адреса битов - от 0 (младший бит
ячейки с адресом 20Н) до 7FH (старший бит ячейки с адресом 2FH).
-я секция РПД:
для всех ячеек этой секции (адреса 80H…FFH)
допускается только косвенная адресация.
-я секция РПД.
Расположена во внешнем сегменте данных (XSEG).
Доступ к ней возможен командой MOVX,
в том случае если бит EXTRAM
равен 0.
Помимо указанных трех секций РПД в состав ОМК
входит секция РСФ, значения которых расположены в области 80H...FFH, причем для
них, в отличие от ячеек РПД, допускается лишь прямая адресация.
Порты ввода-вывода
Для обеспечения обмена информацией с внешними
устройствами ОМК 80С554 имеет 6 8-разрядных портов Р0-Р5. Каждый из портов
содержит фиксатор-защёлку, который представляет собой 8-разрядный регистр,
допускающий как байтовую, так и битовую адресацию. Порты P0, P2, P3, P4
и P5 схемотехнически и алгоритмически полностью повторяют одноимённые порты ОМК
80С51. Отличие порта 1 ОМК 80С554 от одноимённого порта 80С51 определяется тем,
что его выводы могут выполнять альтернативные функции.
Повторяя схемотехническую организацию
одноимённого порта 80С51, выходные каскады каждого разряда порта Р0 ОМК 80С554
не содержат «подтягивающих резисторов» и, следовательно, порт Р0 является
двунаправленным и имеет выходы с тремя состояниями. В портах Р1 (за исключением
выводов Р1.6 и Р1.7), Р2 и Р3 ОМК 80С554 выходные каскады имеют «подтягивающие
резисторы». Поэтому эти порты являются квазидвунаправленными и в состоянии
«оборванный вход» их выводы имеют уровень логической «1». Выводы же Р1.6 и Р1.7
в режиме альтернативных функций являются линиями сигналов синхронизации SCL
(Р1.6) и сигналов последовательно передаваемых данных SDA
(Р1.7) шины I2C.
Последняя для своего управления требует выходных каскадов с открытым
коллектором или открытым стоком. В соответствии с этим требованием выходные
каскады выводов Р1.6 и Р1.7 построены по схеме «открытый сток» и, естественно,
не могут иметь «подтягивающих резисторов». Очевидно, что при работе в режиме
обмена данными с внешними устройствами выводы Р1.6 и Р1.7 должны быть
подсоединены к источнику питания ОМК через резисторы, рекомендуемое значение
сопротивления которых равно 10 кОм.
Аналого-Цифровой преобразователь
Восьмиканальный АЦП состоит из коммутатора
аналоговых сигналов, подаваемых на входы порта 5, и 10-разрядного АЦП
последовательных приближений без внутреннего источника опорного напряжения.
Основные параметры АЦП
• Напряжение питания аналоговой части AVDD = VDD
± 0,2 В, где VDD - напряжение питания цифровой части.
• Ток потребления от источника AVDD - не более
1,0/1,2 мА (при частоте кварцевого резонатора 16/24 МГц).
• Диапазон входных напряжений AVIN - от AVSS -
0,2 В до AVDD + 0,2 В, где AVSS - потенциал низкого уровня источника AVDD.
• Потенциал высокого уровня источника опорного
напряжения AVREF+ - не более AVDD + 0,2 В.
• Потенциал низкого уровня источника опорного
напряжения AVREF- - не менее AVSS - 0,2 В.
• Выходной код N = 1024(AVIN - AVREF-)/( AVREF+
- AVREF-).
• Сопротивление входа для подключения источника
опорного напряжения RREF - от 10 до 50 кОм.
• Емкость аналогового входа CIA - не более 15
пФ.
• Время выборки входного сигнала tADS - 8
машинных циклов.
• Рекомендуемое выходное сопротивление источника
входного аналогового сигнала - не более 0,9 кОм.
• Максимальная скорость изменения входного
сигнала VU,max - 10 В/мс.
• Время преобразования (включая время выборки)
tADC - 50 машинных циклов.
• Погрешность дифференциальной линейности - не
более ±1единицы младшего разряда (е.м.р.).
• Погрешность интегральной линейности - не более
±2 е.м.р.
• Смещение нулевого уровня (аддитивная
погрешность) - не более ±2 е.м.р.
• Мультипликативная погрешность - не более ±0,4
%.
• Максимальное значение суммы аддитивной и
мультипликативной погрешностей - не более ±3 е.м.р.
• Погрешность от взаимовлияния каналов - не
более ±3 е.м.р.
Примечание. Все параметры указаны для рабочих
условий эксплуатации ОМК.
Управление работой АЦП
Для управления работой АЦП предусмотрено два
восьмиразрядных РСФ. РСФ ADCH (адрес - C6H, побитовая адресация не разрешена)
содержит 8 старших разрядов результата аналого-цифрового преобразования
(ADC9…ADC2).
РСФ ADCON (адрес - C5H, побитовая адресация не
разрешена):.7 (ADC.1) - 1-й бит результата аналого-цифрового преобразования;.6
(ADC.0) - 0-й бит результата аналого-цифрового преобразования;.5 (ADEX) -
логическая 1 дает разрешение аппаратурного запуска АЦП;.4 (ADCI) - флаг
прерывания АЦП (устанавливается аппаратно, сбрасывается программно);.3 (ADCS) -
флаг состояния АЦП (логическая 1 - идет преобразование; может быть установлен
программно, сбрасывается всегда аппаратно);.2 (AADR2) - 2-й бит кода номера
выбранного входа порта 5;.1 (AADR1) - 1-й бит кода номера выбранного входа
порта 5;.0 (AADR0) - 0-й бит кода номера выбранного входа порта 5.
Запуск аналого-цифрового преобразователя может
осуществляться как программным, так и аппаратурным способом. Программный запуск
(состояние бита ADEX - любое). Преобразование начинается в начале машинного
цикла, следующего за командой установки бита ADCS.
Аппаратурный запуск (состояние бита ADEX -
логическая 1). Преобразование начинается в начале машинного цикла, следующего
за машинным циклом, во время которого происходит перепад из "0" в
"1" на входе STADC. Длительности импульса и паузы запускающего
сигнала ограничены снизу длительностью одного машинного цикла. По завершении
преобразования (при любом виде запуска) бит ADCS автоматически сбрасывается
аппаратурными средствами ОМК; при этом устанавливается бит ADCI -
вырабатывается запрос прерывания. Адрес вектора прерывания АЦП - 53H. До
окончания начавшегося преобразования и программного сброса бита ADCI новый
запуск АЦП блокируется.
Предварительно необходимо инициализировать
прерывание, связанное с АЦП:
• разрешить прерывание - установить бит IEN0.6
(EAD, адрес - AEH) РСФ IEN0 (адрес - A8H, побитовая адресация разрешена);
• задать уровень приоритета прерывания битом
IP0.6 (PAD, адрес BEH) РСФ IP0 (адрес - B8H, побитовая адресация разрешена).
При одновременном поступлении запроса прерывания
от АЦП и какого-либо другого запроса прерывания во всех случаях, кроме внешнего
прерывания INT0 и прерывания последовательного порта SIO1, первым будет
обработано прерывание АЦП.
Разработка структурно-функциональной
схемы
Устройство состоит из следующих функциональных
блоков:
· Блок микроконтроллера
Осуществляет функционирование микроконтроллера.
Состоит из следующих элементов:
o С1, С2, X1
- схема тактового генератора. Осуществляет выработку внешнего сигнала
тактирования микроконтроллера частотой 12МГц.
o С3, R1
- схема первоначального сброса микроконтроллера. Обеспечивает корректный
запуск.
o D1 - сам
микроконтроллер.
· Блок клавиатуры
Клавиатура состоит из 8 кнопок. Выбор уровня
осуществляется нажатием одной из кнопок.
· Блок индикации текущего уровня
Состоит из дешифратора кода символа для
индикатора D2 и семисегментного
индикатора D3.
Выбор элементной базы
При разработке устройства были использованы
следующие электронные компоненты:
· Микроконтроллер 80С554. Этот
микроконтроллер был выбран по причине хорошего соответствия поставленной задаче
и низкой стоимости.
· Микросхема 514ИД1, представляющая
собой дешифратор кодов символов для семисегментного индикатора.
· Семисегментный индикатор АЛС224.
Схема устройства
Таблица. Спецификация
Номер
|
Название
|
Назначение
|
1
|
80С554
|
D1
|
Микроконтроллер
|
3
|
514ИД1
|
D2
|
Дешифратор
символов индикатора
|
6
|
АЛС224
|
D3
|
Семисегментный
индикатор
|
7
|
1K
|
R9
|
Резистор
в цепи сброса
|
8-15
|
1К
|
R1-R8
|
Ограничивающие
резисторы клавиатуры
|
16
|
10pf
|
C1-C2
|
Времязадающие
конденсаторы
|
17
|
1μF
|
С3
|
Конденсатор
цепи сброса
|
Разработка программной части
устройства
Программа состоит из следующих частей:
· Блок объявления переменных
В этом блоке регистрам и специальным битам
системных регистров присваиваются символьные значения для более удобного
обращения к ним.
· Блок инициализации программы
В этом блоке осуществляется первоначальная
настройка микроконтроллера. Установка битов управления и направления передачи
данных в портах ввода вывода.
· Блок обработки прерывания от таймера
Осуществляет подсчет счетных импульсов таймера и
установку соответствующих флагов: о прошествии 1 минуты и 5 минут.
· Основной цикл программы
Осуществляется ожидание нажатия клавиши
пользователем и передача управления соответствующему блоку программы. А так же
постоянное сравнение текущего уровня с заданным и включением соответствующего
устройства для коррекции в случае расхождения. Так же происходит опрос
подключенного к последовательному порту приемника и в случае его обнаружения
выдается текущий уровень. Если приемник не обнаружен - данные сохраняются в
памяти.
· Блок выдачи данных
Выдает накопленные данные в последовательный
порт в случае его обнаружения.
Листинг программной части
kurs:do;
$include(reg51.dcl)data(384) byte auxiliary; /*
Массив данных */
/* Объявление переменных */AUXR1 register at
(0a2h);ADCON register at (0c5h);ADCH register at (0c6);PUMP bit at (085h)
register; /* p0.5 */DRAIN bit at (086h) register; /* p0.6 */P20 bit at (0a0h)
register;P21 bit at (0a1h) register;P22 bit at (0a2h) register;P23 bit at
(0a3h) register;P24 bit at (0a4h) register;P25 bit at (0a5h) register;P26 bit
at (0a6h) register;P27 bit at (0a7h) register;t word; /* Счетчик 20х долей
секунды */sec word; /* Счетчик секунд */sf byte; /* Флаг секунды */sf5
byte; /* Флаг 5х минутного интервала */ptr word; /* Указатель на конец блока
данных */lvl byte; /* Заданный уровень */status word; /* Значение битов PUMP и
DRAIN */lastlvl byte; /* Последний зафиксированный уровень */connected byte; /*
Флаг подключенного устройства */i word;key byte;
/* Обработка прерывания таймера */:procedure
interrupt 1;=0;= t-1;t=0 then /* Прошла 1 минута */;= 1200;= 1;= sec-1;sec=0
then /* Прошел интервал в 5 мин */;= 5;= 1;;;=03ch;=0b0h;=0;=1;=1;timer;
/* Ининциализация */= 0;= 0;= 255; /*
P2 на вход */= 0; /* Обнуление флагов */= 0;= 1200; /* 20интервалов по 50000мкс
= 1сек */= 5;=0; /* сбрасываем флаг переполнения */=1;=1;=03ch; /* 15536 -
счет до 65536 -> 50000 тактов таймера по 1мкс */=0b0h;=00000001b; /* 1ый
режим таймера 0 */=00000001b;= 0;= 0;= 0;= 0; /* Если 0 -> устройство
не подключено */
/* Ининциализация АЦП */= 1; /* Установка
8битного преобразования */=;
/* ------------------------------- */
while 1; /* Главный цикл */
/* Определение нажатой клавиши */= -1;p20 = 0
then key=0;p21 = 0 then key=1;p22 = 0 then key=2;p23 = 0 then key=3;p24 = 0
then key=4;p25 = 0 then key=5;p26 = 0 then key=6;p27 = 0 then key=7;
/* Если кнопка была нажата - фиксируем новый
уровень */(key > 0) lvl = key;= lastlvl + status; /* Выводим уровень на
индикатор */sf = 1 then /* Если прошла одна секунда */;
/* Ожидание преобразования */= 01000b; /* Начало
преобразования */
/* Ожидание окончания преобразования */while
(ADCON AND 010000b) = 0; end;
/* Выделяем старшие три бита результата */= ADCH
/ 32;
/* Включение насоса или клапана в зависимости от
результатов */lastlvl > lvl then do; DRAIN = 1; PUMP = 0; end;lastlvl <
lvl then do; DRAIN = 0; PUMP = 1; end;lastlvl = lvl then do; DRAIN = 0; PUMP =
0; end;
/* Установка значения для записи в P0 */= DRAIN
* 128 + PUMP * 64;
/* Обработка флага подключенного устройства */=
0; /* Устанавливаем что устройство не подключено */= 0;= lastlvl; /* Отправляем
данные */while ti = 0; end; /* Ожидание завершения передачи */=0;
/* Ждем 100 мс. Если устройство подключено, то
за это время придет подтверждение */time(100);
/* Если RI=1 значит пришел ответ от устройства
*/ri = 1 then connected = 1;= 0;;sf5 = 1 then /* Если прошло 5 минут */;
/* Сохраняем в массиве последний измеренный
уровень */(ptr) = lastlvl;= ptr + 1;
/* Если уже прошли сутки - начинаем сохранять
заново */ptr = 288 then ptr = 0;connected = 1 then /* Если устройство
подключено */;
/* Последний байт не выводим т.к. уже его вывели
раньше */i=0 to ptr-1;
/* Сброс флага переданного байта */= 0;=
data(i);
/* Ожидание завершения передачи */while ti = 0;
end;;
/* Обнуляем счетчик сохраненных данных */= 0;;
= 0;;;kurs;
Заключение
В ходе выполнения курсовой работы было
выполнено проектирования микропроцессорного устройства «Система регистрации
уровня с блоком сбора информации и клапаном управления».
Была разработана принципиальная
схема устройства и программа для микроконтроллера, осуществляющая все функции
устройства.