
- •Программирование цифровой техники и микроконтроллеров управления
- •Алматы 2012
- •1 Микроконтроллеры в современном мире
- •1.1 Краткая история развития микроконтроллеров
- •1.2 Задачи и роль микроконтроллеров
- •2 Выполнение арифметических операций в мп
- •2.1 Системы счислений
- •2.2 Двоичная арифметика
- •2.3 Дополнительный код
- •2.4 Знаковый разряд
- •3 Регистры общего и специального назначения
- •3.1 Регистры portc и trisc
- •3.2 Регистр Status
- •3.3 Фиксированная (абсолютная) адресация
- •4 Косвенная адресация. Логика
- •4.1 Косвенная адресация
- •4.2 Логические функции
- •5 Маскирование. Стек
- •5.1 Маскирование
- •5.2 Счетчик команд
- •5.3 Стек
- •6 Конвейер и подпрограмма задержки
- •6.1 Конвейер
- •6.2 Программа задержки
- •6.3 Расчет времени задержки
- •7 Выполнение умножения и деления
- •7.1 Умножение и деление при помощи сдвига
- •7.2 Инструкции условных переходов
- •7.3 Целочисленное умножение
- •7.4 Целочисленное деление
- •7.5 Умножение на дробное число
- •8 Программирование клавиатуры. Дешифратор
- •8.1 Клавиатура
- •8.2 Фрагменты программы
- •8.3 Дешифратор
- •8.4 Компаратор
- •9 Основные элементы цифровой техники
- •9.1 Сумматор
- •9.2 Арифметико-логическое устройство
- •9.3 Бистабильные схемы
- •9.4 Триггеры и регистры
- •10 Структура микроконтроллера. Индикатор
- •10.1 Применение операций сдвига
- •10.2 Цифровой индикатор
- •10.2 Структурная схема мк
- •11 Прерывания и сторожевой таймер
- •11.1 Прерывания
- •11.2 Подсчет посетителей с помощью прерываний
- •11.3 Сторожевой таймер
- •12 Фактор времени и аналоговый мир
- •12.1 Модуль таймера tmr1
- •12.2 Применение таймера tmr1
- •12.3 Аналоговый мир
- •Приложение а Список некоторых сокращений
- •Список литературы
- •Содержание
- •050013, Алматы, Байтурсынова, 126
10.2 Цифровой индикатор
Большинство цифровых индикаторов работают по принципу выборочного включения требуемых сегментов, как показано на рисунке 10.3. Обычно эти сегменты представляют собой светодиоды или электроды элемента на жидких кристаллах.
Рисунок 10.3 – Семи - сегментный индикатор
Входным сигналом в данном случае является 4-битный двоичный код, находящийся в рабочем регистре. Этот код представляет собой десять десятичных цифр в виде b’0000’…b’1001’. Выходным значением, также возвращаемым в W, является соответствующий 7-битный код, необходимый для отображения соответствующей цифры. Причем предполагается, что включение сегмента происходит при подаче на него 1, а выключение — соответственно при подаче 0. При необходимости можно реализовать и обратную полярность.
Преобразования реализуются подпрограммой в виде наборов команд Retlw, каждая из которых возвращает однобайтную константу. Каждая команда retlw помещает разные константы в аккумулятор W, неиспользуемый 7-й бит, предназначенный для изображения точки, сброшен в ноль.
При использовании таблиц извлечение n-го элемента таблицы заключается в выполнении N-ой команды. При этом константа, находящаяся в коде команды, будет помещена в аккумулятор W, после чего произойдет нормальный возврат в вызывающую программу. Если N=6, то исполнится команда Retlw, возвращающая в W код b'011I1000' для символа 6.
Подпрограмма, код которой приведен ниже, осуществляет выборку элемента таблицы, прибавляя число N, передаваемое через аккумулятор, к младшему байту счетчика команд (регистр PCL, расположенный по адресу h'02'). Действительно счетчик команд РС при вызове подпрограммы VYBOR_SEG будет указывать на адрес, где записана первая строка подпрограммы, например 100h. После выполнения команды addwf PCL, f в счетчике будет число 100h+6h+1h=107h поскольку счетчик инкрементируется после выполнения команды, и следующая выполненная команда бет иметь адрес 107h, что нам и требуется.
Подпрограмма дешифратора семи - сегментного индикатора.
VYBOR_SEG; Адрес
addwf PCL, f; прибавим W к PCL, получая PCL + W. 100h
retlw b'00111111'; код для цифры 0. Возвращается при W=0. 101h
retlw b'00000110'; код для цифры 1. Возвращается при W=1. 102h
retlw b'10101101'; код для цифры 2. Возвращается при W=2. 103h
retlw b'01001111'; код для цифры 3. Возвращается при W=3. 104h
retlw b'01100110'; код для цифры 4. Возвращается при W=4. 105h
retlw b'01101101'; код для цифры 5. Возвращается при W=5. 106h
retlw b'01111101'; код для цифры 6. Возвращается при W=6. 107h
retlw b'00000111'; код для цифры 7. Возвращается при W=7. 108h
retlw b'01111111'; код для цифры 8. Возвращается при W=8. 109h
retlw b'01101111'; код для цифры 9. Возвращается при W= 9. 10Аh
В программе не учитывается возможность того, что входное значение в может быть больше h’09’.
10.2 Структурная схема мк
Из рисунка 10.4 видно, что микроконтроллер может управлять различными устройствами и принимать от них данные при минимуме дополнительных устройств, так как большое число периферийных схем уже имеется непосредственно на кристалле микроконтроллера. Это позволяет уменьшить размеры конструкции и снизить потребление энергии от источника питания.
Рисунок 10.4 - Структура микроконтроллера
Рассмотрим типичные элементы микроконтроллеров:
1) Последовательный порт. Он позволяет обмениваться данными с внешними устройствами при малом количестве проводов.
2) Цифровые линии ввода/вывода.
3) Аналоговый порт.
4) Центральное процессорное устройство (ЦПУ) - это мозг микроконтроллера. Оно принимает из памяти программ коды команд, декодирует их и выполняет. ЦПУ состоит из регистров, арифметически- логического устройства (АЛУ) и цепей управления.
5) Сторожевой таймер. Это специальный таймер, предназначенный для предотвращения сбоя программы. Он работает следующим образом: после включения питания начинает отсчет заданного временного интервала, определяющего нормальное выполнение программы. Если программа не перезапустит его до истечения этого интервала времени, сторожевой таймер перезапустит микроконтроллер. Таким образом, программа должна давать сторожевому таймеру сигнал - все в порядке. Если она этого не сделала, значит, по какой-либо причине произошел сбой.
6) Аналого-цифровой преобразователь. В моделях старшего класса есть и цифро-аналоговый преобразователь.
7) Тактовый генератор. Этот генератор определяет скорость работы микроконтроллера и синхронизирует работу всех устройств.
8) Память программ. ОЗУ. Здесь хранятся переменные, стек и коды команд, формирующих программу для микроконтроллера.
9) Встроенные таймеры-счетчики, которые используются для отсчета временного интервала или счета объектов.