Разработка микроконтроллерной системы
Рис. 2.3. Схема подключения индикаторов при использовании программной перекодировки Контакты кодирующих клавиатур (переключателей и кнопок) бывают с фиксацией замкнутого состояния и без фиксации. Первые остаются в нажатом состоянии (замкнуты), вторые размыкаются после отжатия. На рис. 2.4 приведена схема подключения кодирующей клавиатуры, состоящей из переключателей с фиксацией, к порту МК… Читать ещё >
Разработка микроконтроллерной системы (реферат, курсовая, диплом, контрольная)
1. Разработка структурной схемы МПС
Структурная схема составляется исходя из описания работы МКС и исходных данных для проектирования.
Структурная схема разрабатываемой МКС приведена на рис. 1.1. Ее центральной частью является однокристальный микроконтроллер К1108ПВ1, имеющий внутреннюю память программ объемом 4 Кбайт и 32 двунаправленных линий ввода-вывода. МК имеет 2 таймера Т/С0 и Т/С1. Таймер Т/С0 используется для отсчета времени Топр, а таймер Т/С1 используется для задания требуемой скорости обмена 9600 бит/с по интерфейсу ИРПС.
Аналоговые сигналы U1, U2, U3 через коммутатор (аналоговый мультиплексор) поступают на АЦП. С выхода АЦП 8-разрядный код поступает в МК. МК выдает адрес для выбора канала коммутатора, а также сигнал для запуска АЦП.
Цифровые (двоичные) сигналы X1, X2, X3, X4 поступают на входы МК. Управляющие сигналы Y1, Y2 и Y3, представляющие собой одиночные импульсы определенной длительности, вырабатываются микроконтроллером. Они усиливаются по току с помощью формирователей сигналов ФС1, ФС2, ФС3.
Сигналы последовательного интерфейса TxD (передаваемые данные) и RxD (принимаемые данные) вырабатываются последовательным портом (УАПП) микроконтроллера. Для преобразования их в сигналы интерфейса ИРПС служит блок сопряжения.
Пульт оператора включает в себя 7 светодиодов для индикации значений сигналов X1, X2, X3, X4, Y1, Y2, Y3; четырехпозиционный линейный дисплей на семисегментных светодиодных индикаторах для отображения аналоговых сигналов (напряжений) U1, U2, U3; 3 переключателя для выбора аналоговых каналов; переключатель режима работы МКС кнопку «Сброс», при нажатии на которую производится сброс МК.
2. Разработка отдельных модулей МПС
Рассмотрим схему включения МК КМ1816BE751.
Для обеспечения генерации тактовой частоты к выводам XTAL1 и XTAL2 подключен кварцевый резонатор ZQ1. Частота резонатора выбирается из условия = и равна 8 ГГц.
Конденсаторы С2, С3 служат для облегчения запуска внутреннего генератора. Цепочка С1, R1 обеспечивает сброс МК при подаче электропитания. С помощью кнопки SB1, расположенной на пульте управления, сброс МК может выполнить оператор в любой момент времени. На вывод EA подан высокий уровень, что разрешает работу внутренней памяти программ. Конденсатор С4 служит для фильтрации высокочастотных помех, возникающих на выводах источника питания при работе микросхемы.
К выводам порта Р0 присоединены «подтягивающие» резисторы R1-R9, которые обеспечивают ток для входов микросхем ТТЛ, подключенных к этому порту, при высоком логическом уровне, когда все линии Р0 находятся в z-состоянии. Порты Р1, Р2, Р3 имеют внутренние «подтягивающие» резисторы.
Рис. 2.1. Схема подключения микроконтроллера с внутренней памятью программ
Схемы ввода цифровых и аналоговых сигналов
Реализация схем ввода сигналов от датчика МКС зависит от их количества, а также типа заданного АЦП. При разработке схемы подключения АЦП следует учитывать разрядность кода и возможность управления выходными буферами микросхемы.
На рис. 2.2 приведена функциональная схема ввода цифровых и аналоговых сигналов при использовании АЦП типа К1108ПВ2. Микросхема DA1 К590КН1 является коммутатором аналоговых входных сигналов U1-U3. Переключение входных каналов коммутатора выполняется цифровыми сигналами уровней МОП, подаваемых на адресные входы А2, А1 и А0. Таблица истинности коммутатора имеет вид:
А1 | А0 | Соединение | |
Y=U1 | |||
Y=U2 | |||
Y=U3 | |||
Операционный усилитель DA2 включен по схеме повторителя и служит для устранения влияния низкоомного входа АЦП на коммутатор.
Рис. 2.2. Схема ввода цифровых и аналоговых сигналов с АЦП К1108ПВ1
Особенностью микросхемы К1108ПВ1 является то, что в ней отсутствует возможность управления выходными буферами выдачи цифрового кода. После запуска АЦП выходы буферов будут в z-состоянии. Когда преобразование закончится (сигнал на выводе станет равным 0), выходы буферов переходят в активный режим и на выводах D0-D7 появится цифровой код, который будет неизменным до нового запуска АЦП. В схеме на рис. 2.2 разряды D0-D7 выходного кода АЦП подаются на входы буферного регистра DD2. Сигнал готовности данных АЦП и цифровые входные сигналы Х1-Х4 подаются на входы DD3. Выходы регистров DD2 и DD3 соединены с выводами порта Р0 МК. Управление выходными буферами регистров осуществляется от линий Р3.3 и Р3.4. При Р3.3=1, Р3.4=1 выходы регистров DD2, DD3 находятся в z-состоянии и они отключены от выводов порта Р0. Запуск АЦП выполняется сигналом от линии Р1.4. Переключение каналов коммутатора производят сигналы с линий P1.5, Р1.6, Р1.7 микроконтроллера.
Схема подключения светодиодов индикации VD1 — VD7 и семисегментных светодиодных индикаторов HG1 — HG4 приведена на рис. 2.3. Ее особенность является то, что элементы индикации непосредственно подключены к выходам регистров DD5 — DD9, без использования инверторов с открытым коллектором. Дело в том, что регистры КР1533ИР33 обладают высокой нагрузочной способностью при низком уровне сигнала на выходах I вых <= 20 мА, что вполне достаточно для яркого свечения светодиодов. Однако для работы элементов индикации нужно на входы регистров DD5 — DD9 подавать инверсные значения данных с порта P0 микроконтроллера для их отображения на VD1 — VD7 и HG1 — HG4.
В разрабатываемой МКС на пульте управления имеется простейшая клавиатура, состоящая из клавиш для переключения аналоговых сигналов с целью отображения их на индикаторах дисплея, а также переключателя (тумблера) для ввода режима работы МКС.
В кодирующих клавиатурах каждый контакт подключается к отдельной линии порта ввода МК. При этом схемным путем формируется код, соответствующий нажатой клавише. Благодаря простоте реализации эти клавиатуры широко применяются при небольшом числе клавиш, как правило, не более 8.
Рис. 2.3. Схема подключения индикаторов при использовании программной перекодировки Контакты кодирующих клавиатур (переключателей и кнопок) бывают с фиксацией замкнутого состояния и без фиксации. Первые остаются в нажатом состоянии (замкнуты), вторые размыкаются после отжатия. На рис. 2.4 приведена схема подключения кодирующей клавиатуры, состоящей из переключателей с фиксацией, к порту МК. Переключатели SA1-SA3 служат для выбора аналоговых сигналов U1-U3, а переключатель (тумблер) SA4 — для выбора режима работы МКС: «Работа-Пульт». Особенностью переключателей SA1-SA3 является то, что они взаимозависимы, т. е. в любой момент времени может быть замкнут только один из них. Мы используем дополнительный регистр, так как свободных линий портов МК недостаточно для подключения клавиатуры.
Схемы вывода управляющих сигналов В проектируемой МКС имеются 3 управляющих сигнала Y1, Y2, Y3. Эти сигналы представляют собой одиночные импульсы МОП — уровней, поступающие на исполнительные устройства МКС. Управляющие сигналы снимаются с портов МК. Однако следует учитывать, что нагрузочная способность портов P1, P2, P3 мала: 1,6 мА, 40 мкА. Емкость нагрузки не должна превышать 150 пФ. Для увеличения нагрузочной способности линий портов МК следует использовать усилительные элементы. Это обычно микросхемы, имеющие выходы с открытым коллектором.
Рис. 2.5. Схемы вывода управляющих сигналов Y1, Y2, Y3
В схеме на рис. 2.5 используется инвертор К155ЛН3. При сигнале на входе уровня логической 1 на выходе будет логический 0, т. е. такая схема требует инверсных входных сигналов для управления.
Схемы сопряжения с последовательным интерфейсом
Разрабатываемая микроконтроллерная система должна иметь связь с внешним удаленным компьютером через последовательный интерфейс ИРПС (токовая петля). По запросу внешнего компьютера МК должен передавать данные о сигналах X1-Y3 и коды аналоговых сигналов U1-U3, получаемых с помощью АЦП. Обычно для связи МКС с внешним компьютером используют программный метод управления передачей, так как это позволяет уменьшить число линий связи. В этом случае интерфейс должен обеспечить двустороннюю передачу, т. е. от компьютера к МК (запрос) и от МК к компьютеру (передача данных). При сопряжении МК со стандартным последовательным интерфейсом необходимо решать следующие проблемы [1]:
· согласование уровней сигналов интерфейса с уровнями МОП МК;
· поддержание стандартной скорости приемо-передачи;
· поддержание стандартных форматов посылки;
· поддержание стандартных протоколов обмена На рис. 2.6 приведена схема сопряжения с интерфейсом ИРПС (токовая петля 20 мА). Принимаемые данные (импульсы тока 20 мА в цепи +ПрД/-ПрД) преобразуются в уровни МОП с помощью оптрона V1 и инвертора DD1. Оптрон также обеспечивает гальваническую развязку передатчика (компьютера) и приемника (МК). Передаваемые данные (импульсы тока 20 мА в цепи +ПД/-ПД) образуются из уровня МОП с помощью инвертора DD2 и оптрона V2, который также обеспечивает гальваническую развязку передатчика (МК) и приемника (компьютера). Схема требует дополнительный источник питания Uп1 напряжением 12 В, гальванически не связанный с источником +5 В питания МК.
Рис. 2.6. Схема сопряжения МК с интерфейсом ИРПС
3. Разработка программного обеспечения МПС
Cоставим блок-схему алгоритма (БСА) главной программы работы МКС, которая будет иметь символическое имя CONTROL. БСА этой программы приведена на рис. 3.1.
Из нее видно, что главная программа состоит из нескольких подпрограмм, которые вызываются по мере надобности. Такое построение упрощает структуру программы, делает ее более наглядной. Кроме того, использование подпрограмм упрощает разработку и отладку всей программы работы МКС.
Рис. 3.1. БСА главной программы работы МКС Текст главной программы на языке Ассемблера для МК51 имеет следующий вид:
;**************************************************************
; CONTROL — главная программа работы МКС
;**************************************************************
DATA_W: EQU 30H; Начальный адрес массива в ПД для
; хранения кодов АЦП
ORG 0000H; Начальный адрес программы
CONTROL: JMP MAIN; Переход на основную программу
ORG 000BH; Вектор прерывания от Т/С0
CALL TIMER; Подпрограмма отсчета времени Топр
RETI
ORG 0023H; Вектор прерывания от УАПП
CALL TRANSMIT; Подпрограмма передачи данных в
; интерфейс
RETI
ORG 0030H; Таблица констант
ADR_K1: DW XXXXH; Константа К1
ADR_K2: DW XXXXH; Константа К2
ADR_K3: DW XXXXH; Константа К3
ADR_K4: DW XXXXH; Константа К4
ADR_Q: DW XXXXH; Константа Q
ORG 0050H; Основная программа
MAIN: MOV SP, #70H; Определить стек
CALL INIT; Подпрограмма инициализации МКС
AGAIN: CALL DIGIT; Подпрограмма ввода и обработки
; цифровой информации
CALL ANALOG; Подпрограмма ввода и обработки
; аналоговой информации
SETB ES; Разрешить прерывание от УАПП
SETB PS; Присвоить прерыванию от УАПП
; высший приоритет
; Опрос состояния переключателя SA4 «Работа / Пульт»
MOV P0, #0FFH; Настроить порт P0 на ввод
CLR P3.5; Открыть выходные буферы DD5
MOV A, P0; Ввод из P0
SETB P3.5; Закрыть буферы DD5
JB ACC.7, COUNT; Переход, если SA4 разомкнут (Работа)
CALL PULT; Подпрограмма обслуживания пульта
; управления
JMP AGAIN; Зацикливание программы
COUNT: JNB F0, COUNT; Цикл отсчета времени Tопр = 2c
CLR F0; Сбросить флаг окончания счета Tопр
CLR ES; Запретить прерывания от УАПП
JMP AGAIN; Зацикливание программы В программе определен массив ячеек памяти данных МК с начальным символическим адресом DATA_W для хранения кодов с выхода АЦП. Так как входных переменных 3, то массив будет иметь 3 ячеек. В памяти программ, начиная с адреса 0030H, размещаются однобайтные константы, которые будут использоваться при вычислениях функций. Значения констант условно обозначено XXH. В главной программе используются 2 прерывания: от таймера Т/С0 и от УАПП. Флаг F0 используется для индикации окончания отсчета времени опроса Топр. Он устанавливается, когда истечет время Tопр = 2 с.
Подпрограмма INIT используется для инициализации МКС после включения электропитания. БСА подпрограммы приведена на рис. 3.2. При сбросе МК все порты настраиваются на ввод [1,2], т. е. на их выводах будут высокие уровни (логические 1). В подпрограмме инициализации необходимо настроить УАПП и таймеры Т/C0, T/C1 на заданные режимы работы. Для двустороннего обмена по интерфейсу ИРПС выбираем для УАПП режим 1. Управляющее слово, которое следует загрузить в регистр SCON, будет 52H [1,2].
Скорость обмена УАПП задает таймер T/C1, который должен работать в режиме 2. Управляющее слово, которое нужно загрузить в регистр TMOD, будет 20H. Для получения заданной скорости обмена в регистр TH1 таймера T/С1 необходимо загрузить число, которое вычисляется из соотношения [2]:
. (3.1)
При SMOD = 0, = 4 МГц и = 9600 бит/с получаем из формулы число FEH.
Для отсчета времени Топр будем использовать таймер T/С0 в 1-м режиме работы. Управляющее слово для этого режима равно 01H. При тактовой частоте работы МК, равной 4 МГц, максимальное время задержки будет 196 605 мкс [1,2], что значительно меньше требуемой 2 с. Поэтому на таймере T/C0 реализуем задержку на 1 с, а в регистре общего назначения (РОН) будем накапливать количество переполнений таймера с целью получения требуемой задержки в 2 с. Для получения задержки 1 с в регистры таймера TH0, TL0 первоначально необходимо загрузить число 196 605 — 1 000 000 = 96 605 c = 96 605/3 МЦ = 32 202 МЦ = 7DCAH. Количество переполнений таймера для отсчета времени 2 с будет 2 с / 1 с = 2. Для счета переполнений будем использовать регистр R0 1-го банка РОН.
Рис. 3.2. БСА подпрограммы инициализации МКС
*************************************************************
; INIT — подпрограмма инициализации МКС
;********** *******************************************
INIT: MOV SCON, #52H; Режим 1 для УАПП, двусторонний
; обмен
MOV TMOD, #20H; Режим 2 для T/С1
MOV TH1, #0FEH; Загрузить TH1 для скорости
; обмена 9600 бит/с
SETB TR1; Запустить T/С1
ORL TMOD, #01H; Режим 1 для T/С0
MOV TH0, #7DH; Загрузить регистры T/С0
MOV TL0, #CDH; для отсчета задержки 1 с
MOV 08H, #0; Очистка регистра R0 в 1-м банке P0H
SETB TR0; Запустить T/С0
SETB EA; Общее разрешение прерываний
SETB ET0; Разрешить прерывание от T/С0
RET
Подпрограмма TIMER является обработчиком прерывания при переполнении таймера T/C0, ее БСА приведена на рис. 3.3. Эта подпрограмма производит отсчет времени опроса Топр. При каждом вызове подпрограммы вследствие переполнения таймера (истекло 1 с) инкрементируется регистр R0 в 1-м банке РОН. Если содержимое R0 станет равным 2, то это означает, что истекло время Топр = 2 с. После окончания отсчета времени 2 с подпрограмма TIMER устанавливает флаг F0 = 1, что является сигналом для главной программы CONTROL начать новый цикл опроса датчиков и выполнения других функций управления.
Рис. 3.3. БСА подпрограммы отсчёта времени Tопр
;***********************************************************
; TIMER — подпрограмма отсчета времени Tопр = 2 с
; Выходной параметр: F0 — флаг окончания отсчета времени
; Используется 1-й банк P0H
;************** ******************************************
TIMER: CLR TR0; Остановить T/С0
SETB RS0; Перейти в 1-й банк P0H
INC R0
CJNE R0, #2, EXIT; Переход, если (R0)<2
SETB F0; Установить флаг F0 окончания cчета 3,6 c
MOV R0, #0; Очистить R0
EXIT: MOV TH0, #7DH; Перезагрузить T/С0
MOV TL0, #0CAH
SETB TR0; Запустить T/С0
CLR RS0; Перейти в 0-й банк P0H
RET
Ячейка ПД с адресом 24H используется в программе для хранения значений входных сигналов X1, X2, X3 и X4, а также для запоминания результата вычисления логической функции f () — управляющего сигнала Y1. Выбор этого адреса обусловлен тем, что эта ячейка, как и другие с адресами от 20H до 2FH, допускают обращение к отдельным битам с помощью команд SETB bit и CLR bit [1,2], что упрощает программирование. После выполнения подпрограммы DIGIT в ячейке 20H будет:
— разряды | ||||||||||
24H | Y1 | X4 | X3 | X2 | X1 | |||||
Для формирования одиночного управляющего импульса Y1 длительностью t1 = 100 мкс используется подпрограмма задержки DEL100MKS, текст которой будет приведен ниже.
Рис. 3.4. БСА подпрограммы ввода и обработки цифровой информации
;**********************************************************
; DIGIT — подпрограмма ввода и обработки цифровой информации
; Используется ячейка ПД с адресом 24H для хранения значений
; X1, X2, X3, X4, Y1
;***********************************************************
DIGIT: MOV P0, #0FFH; Настроить P0 на ввод
CLR P3.4; Открыть выходные буферы DD7
MOV A, P0; Ввод сигналов X1-X4
SETB P3.4; Закрыть буферы DD3
SWAP A; Поменять местами тетрады аккумулятора
ANL A, #1111B; Обнулить СтТ аккумулятора
MOV 24H, A; Переслать аккумулятор в ячейку 24H
MOV C, 24H.1; Переслать С X2
ORL C, 24H.2; С X2X3
CPL C; C
ORL C, /24H.0; C f () =
CLR P1.5; Вывести Y1=1
SETB P1.5; Вывести Y1=0
EXIT: RET
Подпрограмма ANALOG выполняет ввод и обработку аналоговой информации — напряжений U1, U2, U3 поступающих в МКС от датчиков. БСА подпрограммы ANALOG изображена на рис. 3.5. Первый блок БСА — это подпрограмма OPROS, которая производит ввод аналоговых сигналов U1 — U3, их преобразование в цифровые коды W1 — W3 и размещение в памяти данных МК. В результате выполнения подпрограммы OPROS в ПД в ячейках с адресами 30H — 32H будет следующая информация
— разряды | ||||||||||
32H | x | x | x | x | x | x | x | x | W3 | |
31H | х | х | х | х | х | х | x | x | W2 | |
(DATA_W) 30H | x | x | x | x | x | x | x | x | W1 | |
Здесь обозначено x — произвольное значение (0 или 1).
В блоках 2 — 4 подпрограммы ANALOG производится вычисление заданной функции g () = (W1+W2)*W3
Для выполнения арифметических операций умножения и деления можно воспользоваться готовыми подпрограммами, которые приведены в приложении данного руководства.
В блоке 5 БСА полученное значение функции g () сравнивается с двухбайтной константой Q, хранящейся в памяти программ по символическому адресу ADR_Q. Сравнение можно выполнить с помощью программы вычитания двухбайтных целых чисел g () — Q. Результат сравнения определяется значением флага переноса C микроконтроллера после вычитания старших байтов. Если C=1, то g () < Q. Если же С=0, то g () >=Q. В блоке 6 подпрограммы ANALOG производится анализ флага C, и в зависимости от его значения формируются одиночные импульсы Y2 или Y3 длительностью t2 и t3 на выводах P1.1 и P1.2 порта МК. Подпрограммы задержек DEL5MS на 5 мс и DEL3MS на 3 мс будут приведены ниже. После выполнения подпрограммы ANALOG в ячейке с адресом 24H будет:
— разряды | ||||||||||
24H | Y3 | Y2 | Y1 | X4 | X3 | X2 | X1 | |||
микроконтроллерный сигнал аналоговый ассемблер
1. Сташин В. В., Урусов А. В., Мологонцева О. Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. — М.: Энергоатомиздат, 1990.
2. Однокристальные микроЭВМ. Справочник/ А. В. Боборыкин, Т. П. Липовецкий и др. — М.: МИКАП, 1994.
3. Федорков Б. Г., Телец В. А., Дегтяренко В. П. Микроэлектронные цифроаналоговые и аналогоцифровые преобразователи. — М.: Радио и связь, 1985.
4. Цифровые интегральные микросхемы. Справочник / М. И. Богданович, И. Н. Грель, В. А. Прохоренко, В. В. Шалимо. — Мн.: Беларусь, 1991.
5. Цифровые и аналоговые интегральные микросхемы: Справочник / Под ред. С. В. Якубовского. — М.: Радио и связь, 1990.
6. Полупроводниковые БИС запоминающих устройств: Справочник / Под ред. А. И. Гордонова и М. Н. Дьякова. — М.: Радио и связь, 1987.
7. Лебедев О. Н. Микросхемы памяти и их применение. — М.: Радио и связь, 1990.
8. Иванов В. И., Аксенов А. И., Юшин А. М. Полупроводниковые оптоэлектронные приборы: Справочник. — Энергоатомиздат, 1989.
9. Резисторы, конденсаторы, трансформаторы, дроссели, коммутационные устройства РЭА. Справочник / Н. Н. Акимов, Е. П. Ващуков, В. А. Прохопенко, Ю. П. Ходоренко. — Мн.: Беларусь, 1994.
10. Гуртовцев А. Л., Гудыменко С. В. Программы для микропроцессоров Справ. пособие. — Мн. Выш. шк., 1989.