Главная страница  Комбинированное использование портов 

1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Программа, представленная листингом 3.5, предназначена тщ схемы, изображенной на рис, 3.25. Она обнуляет индикатор, загру жает в его память четыре специальных символа и выводит на экра слово РатИахъ прямом и зеркальном представлении благодаря зер, кально отраженным буквам, которые будут заранее помещены в его память.

Листинг 3.5

Управление интеллектуальным ЖКИ.

Программа соответствует руководству по применению фирмы Parallax. Предназначена для ЖКИ фирмы Hitachi или эквивалентного. Выводит на индикатор четыре знака и осуществляет индикацию слова Parallax в прямом и обратном порядке в зеркальном отражении благодаря специальным знакам. Программа включает подпрограмму blip E, которая управляет обменом и отсылает данные или команды на индикатор.

LCD pwr = га.З ; Включение питания индикатора (5 В). RS = га.2 ; О = команда, 1 = данные.

RW = ra.l ; О = запись, 1 = считывание. Е = га.О ; О = запрет приема/передачи.

; 1 = разрешение приема/передачи. Data = It ; Данные ЖКИ. Count = 16 ; Счетчик знаков. Char cnt = 32 ; Счетчик байтов. ; Определение констант, используемых в командах ЖКИ. ; Изменится, если будет использован индикатор другого типа.

Clear

; Сброс индикации.

Home

; home

shiftj =

; Сдвиг влево.

shift.r =

; Сдвиг вправо.

crsr l

; Курсор влево.

crsr r

; Курсор вправо.

Blink c =

; Мигание символа, что указывает

; положение курсора.

No crsr =

; Гашение курсора.

; Определение

переменных величин.

temp ds

; Временный счетчик.

temp2 ds

; Передача данных в blip E.

Counter ds

; Индекс.

start

ra. #0

rb, #0

Ira, #0h

Irb, ttOh

setb

LCD pwr

call

wait

temp2.#00110000b

call

blip.E

temp2.#00001110b

call

blip.E

temp2,#00000110b

call

blip E

temp2.#01000000b

call

blip E

setb

counter, #0

: stuff

w, counter

call

my chars

temp2, w

call

blip e

counter

counter, #char cnt, :

clrb

tenp2, #10000000b

call

blip E

setb

send.msg

counter, #0

:1оор

w,counter

call

temp2,w

call

blip E

counter

counter, #count,:loop

:1оор2

loop2

Инициализация порта A. Инициализация порта В. Все линии порта А - выходы. Все линии порта В - выходы. Включение питания ЖКИ. Ожидание,

Инициализация LCD.

Запись знаков начиная с адреса 0. 1 на RS для передачи данных.

Следующий байт. Запись байта.

stuff

; О на RS для передачи команд.

Передача последовательности знаков.

Бесконечный цикл, сброс для выхода.

Запись данных содержится в переменной temp2 индикатора.

Определение используемого PIC.

device picl6c54,xt osc,wdt off,protect off reset start

ЬИр Е movb

pa2, RS

Запись состояния RS.

clrb

0 на RS в 0 для передачи команд.

setb

1 на RW для считывания.

Irb, #255

Порт В - входной.

clrb

0 на RS в 0 для передачи команд.

temp, data

Принятые из ЖКИ данные в temp.

clrb

Запрет обмена.

temp.7

ЖКИ занят?



:loop ;

Если да,повторяем.

movb

RS. pa2 ;

В противном случае передаем данные

или команды.

clrb

!rb.#0

data, te(np2

setb

clrb

wait

irov

tenp2, #200 ;

Сброс ЖКИ.

:loop

djnz

temp;:loop ;

djnz

temp2;:loop ;

pc+w ;

Таблица символов для индикации.

retw

p-,-a-,

r, a-.T

T.-a-.x,2,0.0.2,1,2,3

My cnars

pc+w ;

Таблица специальных символов.

retw

6,4.4,4.4,4,14,0

; 1 зеркальный вид .

retw

0,0,13,19,1,1,1,С

; г зеркальный вид .

retw

0,0,14,16,30,17,30,0 ; a зеркальный вид .

retw

15,17,17,15,1,1,1,0 ; P зеркальный вид .

+ 5V

В этом листинге собраны все классические подпрогргиммы управле ния ЖКИ. Единственное, что надо предусмотреть в случае использования другой марки индикатора, - изменение кодов посылаемых команд.

Эта программа была взята из технического описания устройства фирмы Parallax, она написана с использованием псевдоинструкций микроконтроллера 8051 ассемблера PASM. При желании вы можете преобразовать данный исходный текст в программу на классическом ассемблере Р1С-микроконтроллеров, воспользовавшись табл. 2.3 и пояснениями к ней.

ПАРАЛЛЕЛЬНЫЕ ВХОДЫ

Параллельные входы обычно используются для контроля состояния различных коммутационных элементов: выключателей, кнопок и т.п., или чтобы проверять наличие напряжения на некоторых устройствах, например оптронных контактных датчиках. Часто входы микроконтроллеров применяются для опроса клавиатуры пульта управления.

Кнопки и переключатели

Считывать состояние кнопок, выключателей или кодирующих дисков (которые представляют собой особые виды выключателей)

4,7кП...47кО

Кнолко, переключагпе;1ь

или контокт - кодируюшего диска

Рис. 3.25

Подключение кнопок и выключателей к микроконтроллеру

рольно просто. Достаточно подсое- rtirrb их между входом и нулевой ши-

й как показано на рис. 3.25. Вход оитянут к высокому логическому вНЮ ограничительным резистором, чина сопротивления которого мо-ДОХОДИТЬ до 100 кОм, чемобеспечи-рается малое потребление тока.

и том сл)чае, если ваше устройство работает вблизи мощного источника помех (например, двигателя), желательно использовать резистор с небольшим сопротивлением (обычно 4,7 или 10 кОм). Наводки на вы-сокоомный вход будут значительно большими, чем на низкоомный. Однако включать в схему резисторы с еще меньшими значениями сопротивления целесообразно только в особых случаях.

Когда контакты выключателя разомкнуты, на входе будет высокий логический уровень, при замыкании контактов - низкий.

Все механические выключатели имеют одно негативное свойство, известное как дребезг контактов , которое обусловлено колебания-миупругих контактов при их замыкании и размыкании. Длительность колебаний составляет всего несколько миллисекунд. При этом вместо чистого прямоугольного импульса (рис, 3.26а) получается искаженный импульс или пачка импульсов (рис. 3.266).

Рис. 3.26

Теоретический сигнал

РесльныО сигнал

Явление

едребезга контактов

Обычно такой недостаток устраняют с помощью RS-триггеров, од-Човибраторов или интегрирующих R-C цепочек, устанавливаемых Перед триггерами Шмитта. В устройствах на базе микроконтроллеров борьбу с дребезгом контактов возлагают на программу, которая ествляет многократное считывание состояния входа, подключен-го к переключателю, определяя момент устойчивого изменения его ояния. Опрос входа может производиться периодически либо



нерегулярно, по мере того как микроконтроллер освобождается qj, выполнения текущих задач. В любом случае необходима временнгц задержка между двумя последовательными считываниями состо ния входа.

Гальваническая развязка входов

Когда микроконтроллер должен получать информацию от устройств, находящихся под высоким напряжением или связанных с электрической сетью, самое лучшее решение состоит в том, чтобы обеспечить гальваническую развязку входа, например, посредством оптрона. Данный принцип иллюстрируется схемой, представленной на рис. 3.27.

Вьсокое напряжение

-си-

1N914

или $ 1N4148

Опглроннай пара

4,7kfi...10kfi

Рис. 3.27

Использование оптрона

для гальванической развязки входов

Когда на внешнюю часть схемы подается напряжение, через светодиод оптрона проходит ток и фототранзистор оптрона открывается, переводя вход микроконтроллера на низкий логический уровень. При отключени8и внешней схемы фототранзистор закрывается, и на входе микроконтроллера будет высокий логический уровень.

Для нормальной работы схемы необходимо, чтобы протекающий через светодиод ток не превышал предельно доп)стимый, но бььт ДО статочным для перевода фототранзистора в режим насыщения, который гарантир}тоет получение на входе микроконтроллера низкого логического уровня. Обеспечить выполнение последнего требование можно, выбрав соответствующий оптрон или использовав усилитель-Процесс считывания сигнала такой же, как в описанной ранее схеме с переключателем. Борьба с дребезгом контактов в данное случае не акт}альна.

1с1виатуры

ро многих устройствах для ввода информации используется клавиатура, даже если у нее всего несколько клавиш. Так, телефонный номеронабиратель нуждается по крайней мере в двенадцати клавишах, для домашнего программируемого таймера требуется больше кла-вйП1, чтобы обеспечить удобный ввод времени и даты. Можно привести и Др>тие примеры.

Если клавиатура состоит из нескольких клавиш, они могут быть подключены к микроконтроллеру как отдельные кнопки, то есть каждая через свой порт. Если клавиатура большая, необходимо искать другое решение, поскольку портов у микроконтроллера не слишком много. Здесь возможны два варианта.

Первый состоит в том, чтобы применить внешний клавиатурный кодер, который подключается к N клавишам, а на выходе формирует М-разрядный код, причем N = 2 Таким образом, шестнадцать клавишей могут быть закодированы четырьмя битами.

На рис. 3.28 показан пример использования подобной микросхемы, а именно ИС типа 74С922 фирмы National Semiconductor. К ее входу подключается клавиатура из шестнадцати клавишей. Данная ИС осуществляет постоянное сканирование клавишей, устраняет влияние дребезга контактов и кодирует состояние клавиатуры. Выходной код снимается с выходов D, С, В и А. Нажатие одной из клавиш и наличие кодированных данных на выходе индицируется высоким уровнем сигнала на выходе DA.

Х4 КВМ ХЗ

Х2 А

XI ММ7ДС922 в

Y1 С

Y2 О

Y3 DA

OSC OE

10nF...1pF -С

Рис. 3.28

1/6 74C04

Использование внешнего клавиатурного кодера



1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.