Некоммерческое акционерное общество
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
Кафедра «Электроника»
СИСТЕМЫ ИНФОРМАЦИОННОГО УПРАВЛЕНИЯ
МИКРОКОНТРОЛЛЕРЫ СЕРИИ PIC
Методические указания к выполнению лабораторных работ
для студентов специальности
6M071900 – Радиотехника, электроника и телекоммуникации
Алматы 2011
СОСТАВИТЕЛИ: Б.С. Байкенов, А.М. Даирбаев. Микроконтроллеры серии PIC. Методические указания к выполнению лабораторных работ по дисциплине «Системы информационного управления» для студентов специальности 6М071900 – Радиотехника, электроника и телекоммуникации. – Алматы: АУЭС, 2011. – 29 с.
В методической разработке рассмотрена работа модулей наиболее распространенного микроконтроллера PIC16F877 фирмы Microchip при помощи симулятора IDE, позволяющего разработчику осуществить проверку и отладку написанных программ. Приведены основные программы по приему, оцифровке, обработке, хранению и отображения информации, т.е. все этапы при проектировании систем управления и стабилизации контролируемых параметров технологического процесса. Рассмотрены примеры программной реализации регистраторов контролируемых параметров, используя модуль АЦП и EEPROM-памяти данных, их передачу на центральный процессор с помощью модуля USART c отображением на LCD; стабилизаторов параметров и управления шаговыми двигателями.
Методическая разработка составлена в целях закрепления лекционного материала и предназначена для студентов специальности 6М071900 –Радиотехника, электроника и телекоммуникации.
Ил. 11, табл. 3, библиогр. – 4 назв.
Рецензент: д-р. техн. наук, проф. Ш.А. Бахтаев
Печатается по плану издания Некоммерческого акционерного общества «Алматинский университет энергетики и связи» на 2011 г.
© НАО «Алматинский университет энергетики и связи», 2011 г.
Введение
Компания Intel сосредоточила усилия на разработке сложных микропроцессоров для компьютеров, уступив сектор рынка микроконтроллеров фирмам Atmel и Microchip.
В нашей стране в строенных системах управления наиболее широкое применения нашли микроконтроллеры фирмы Microchip серии PIC, которые подробно рассмотрены в данной разработке.
Основной целью методических указаний является закрепление знаний по проектированию цифровых систем управления и стабилизации контролируемых параметров технологического процесса; приобретение практических навыков программирования в ассемблере при помощи симулятора IDE фирмы Microchip.
Микроконтроллер, имея такие же габариты как у микропроцессора, обладает функциональной возможностью полной микропроцессорной системы, благодаря наличию таких модулей как FLASH памяти программ и EEPROM данных, АЦП, приемопередатчик USART, ССР для режимов захвата, сравнения и ШИМ.
Симулятор IDE - приложение для разработчиков программ цифровых систем в графической среде Windows с интегрированным BASIC компилятором, ассемблером, дизассемблером и отладчиком.
При выполнении и отладке программы на рабочем столе отображается мнемоника микроконтроллера c отражением текущей и последующей инструкций, такте и счетчика в режиме реального времени, содержимого РС и аккумулятора W.
С помощью команд меню Tools на рабочем столе можно:
- показать все порты выбранного микроконтроллера - Microcontroller View;
- открыть содержимое EEPROM памяти данных с адреса 00-FF - EEPROM Memory Editor;
- открыть поле для записи программы, откомпилировать и загрузить в память программу в двоичном коде – Assembler;
- выставить панель светодиодов – 8xLED board;
- выставить кнопочную панель – Keypad Matrix;
- подключить модуль ЖКИ – LCD module;
- подключить модуль USART – Hardware UART Simulation Interface.
Реализуя заранее известные и несложные алгоритмы, микроконтроллер при достаточно большом объеме памяти и ограниченном составе независимых модулей внешних устройств является основным и высоконадежным устройством обработки информации. Микроконтроллеры используется в таких отраслях производства как приборостроение, станкостроение, авиационная и автомобильная промышленность, связь, бытовая аппаратура и т. д.
Симулятор PIC Simulator IDE очень удобен, прост в обращении и позволяет проектировать и разрабатывать цифровые приборы и системы управления на персональном компьютере.
1 Лабораторная работа. Визуальная сигнализация
Цель работы: изучение программного управления светодиодной панелью 8xLED Board, служащей в качестве устройства сигнализации в системах управления.
1.1 Общие положения
При возникновении внештатных ситуаций оператору необходима информация об этом в виде визуальной и/или звуковой сигнализации.
Для разработки визуальной сигнализации будет использована светодиодная панель 8xLED Board, которую можно подключить только к 3-м портам ввода-вывода: B, D и C (см. рисунок 1.1).
Порт А – 6-ти разрядный, порт Е – 3-х разрядный, а для управления светодиодной панелью, содержащей 8 светодиодов, необходимы 8-ми разрядные порты.
Рисунок 1.1 – Вид визуальной сигнализации
Для имитации срабатывания датчиков (положения, угла, давления и т.д.) служит кнопочная панель Keypad Matrix, вертикальная 4-х разрядная шина, которой подключена к выводам порта В – RB0-RB3, а горизонтальная в выводам RB4-RB7.
Для фиксации нажатия любой из 16 кнопок необходимо настроить выводы RB0-RB3 как цифровые выходы, а RB4-RB7 как входы с помощью регистра направления TRISB:
MOVLW 0xF0
MOVWF TRISB
Выставив на RB0-RB3 порта В единичный сигнал ‘1’, при нажатии любой кнопки этот сигнал поступит на соответствующий вход RB4-RB7.
1.2 Моделирование системы сигнализации
1.2.1 Программа визуальной сигнализации.
Необходимо выполнить следующие действия:
- запустить PIC симулятор IDE;
- нажать на Options/Select Microcontroller;
- выбрать PIC16F877 и нажать на Select;
- нажать на File/Load Program;
- выбрать signal.hex file и нажать Open. Начнется загрузка программы в память PIC;
- нажать на Tools/Keypad Matrix – откроется кнопочная панель (по умолчанию порт В);
- нажать на Tools/8xLED Board – откроется панель светодиодов (выставить порт С).
Для смены порта нужно поочередно нажимать на окошко, начиная с PORTB.0, появляется окно Select Pin, в котором можно выбрать необходимый порт, например, PORTC с указанием вывода 0; далее на PORTB,1 и т.д.
- выбрать Rate/Fast;
- нажать на Simulation/Start - начнется моделирование.
По умолчанию все светодиоды горят зеленым (Green) цветом. Для изменения цвета светодиода нужно нажать на зеленый квадратик, расположенный напротив выбранного вывода порта, появляется окно PIC Simulater IDE – Regist, в котором указаны возможные цвета: Green, Red, Yellow, Blue.
1.2.2 Листинг программы.
MLSEK EQU 0xAA
ORG 000H
GOTO START
ORG 100H
START
CLRF STATUS ; банк 0
BSF STATUS,RP0 ; банк 1
MOVLW 0xF0
MOVWF TRISB ; RB0-RB3 – выход, RB4-RB7 - вход
CLRF TRISC ; порт C – выход на светодиоды
BCF STATUS,RP0 ; банк 0
KEY_1
CLRF PORTC
MOVLW 0x01
MOVWF PORTB
BTFSS PORTB,4 ; опрос кнопки RB0/RB4
GOTO KEY_1
MET_1
MOVLW 0x0F
MOVWF PORTC ; горит верхняя половина светодиодов
CALL ZADR ; вызов п/п задержки
MOVLW 0xF0
MOVWF PORTC ; горит нижняя половина светодиодов
CALL ZADR
GOTO KEY_1
ZADR ; п/п задержки времени
MOVLW 0x03
MOVWF MLSEK
MET_2
DECFSZ MLSEK,1
GOTO MET_2
RETURN
Рисунок 1.2 – Вид экрана выполняемой программы
1.3 Содержание отчета
- цель работы;
- листинг программ;
- вид экрана программы;
- выводы.
1.4 Контрольные вопросы:
1) Сколько портов в PIC16F877 и их назначение?
2) Как изменить направление порта?
3) Как сделать порт D ведомым параллельным?
4) Чем отличается порт А от остальных?
5) Сколько аналоговых датчиков можно подключить к модулю АЦП?
2 Лабораторная работа. Блокнот памяти регистратора параметров
Цель работы: изучить организацию блокнота памяти регистратора контролируемых параметров.
2.1 Общие сведения
Для организации блокнота памяти регистратора контролируемых параметров используется EEPROM память микроконтроллера. Оцифрованное значение критического (выше допуска) значения контролируемого параметра через аккумулятор W записывается в EEPROM память данных объемом 256 байт.
Для нормального функционирования блокнота памяти необходимы регистры:
- EEDATA;
- EEADR;
- EECON1;
- EECON2.
Операции с блокнотом памяти не приостанавливают выполнение программы управления. В регистр EEADR загружается адрес ячейки памяти. Байт параметра заносится из аккумулятора W в регистр EEDATA.
Регистр EECON1 служит для управления памятью. Регистр EECON2 используется только при записи для контроля внимания. В операции записи используются два служебных бита WR, WREN и два бита статуса WRERR, EEIF регистра EECON1. Бит WREN применяется для разрешения/запрещения записи. Флаг прерывания EEIF PIR2<4> устанавливается в 1 по завершении записи.
Для чтения из блокнота памяти необходимо только записать адрес в регистр EEADR и сбросить бит EEPRG в 0. После установки в 1 бита RD записанный байт параметра будет перемещен в регистр EEDATA. Далее через аккумулятор параметр может быть передан в буферный регистр передатчика TXREG модуля USART на центральный процессор системы управления.
2. 2 Моделирование блокнота памяти
2.2.1 Конфигурирование микроконтроллера.
Необходимо выполнить следующие действия:
- запустить PIC Simulator IDE;
- нажать Options/Select Microcontroller;
- выбрать PIC16F877 и нажать кнопку Select;
- нажать File/Load Program;
- выбрать файл eepr10.hex и нажать на «Open». Начнется загрузка программы в память PIC;
- нажать на Tools/EEPROM Memory Editor. Откроется окно EEPROM Memory Editor и можно отрегулировать его расположение для лучшего обзора;
- нажать на Options/Change EEPROM Write Time. Ввести 100 для нового значения и нажать на OK;
- выделить опцию в Options/Infinite Loop Stops Simulation;
- выбрать Rate/Extremely Fast;
- нажатием на «Simulation/Start» начнется моделирование.
2.2.2 Листинг программы запись/чтение блокнота памяти.
Число 80Н записывается в EEPROM память по адресу 01Н. Затем это число программно считывается и сбрасывается на светодиоды 8xLED board, подключенные к порту В.
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO BEGIN
ORG 0x0004
BEGIN
CLRF STATUS ; банк 0
BSF STATUS, RP1
BSF STATUS, RP0 ; банк 3
ZAPIS:
BTFSC EECON1, WR ; проверка завершения предыдущей
GOTO ZAPIS ; операции записи
BCF STATUS, RP0 ; банк 2
MOVLW 0x01
MOVWF EEADR ; установка адреса ячейки в регистр адреса
MOVLW 0x80
MOVWF EEDATA ; установка данных в регистр данных
BSF STATUS, RP0 ; банк 3
BCF EECON1, EEPGD ; выбор EEPROM памяти данных
BSF EECON1, WREN ; разрешение записи
BCF INTCON, GIE ; запрет прерываний
MOVLW 0x55
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2 ; проверка бдительности
BSF EECON1, WR ; инициализировать запись
BSF INTCON, GIE ; разрешение прерываний
BCF EECON1, WREN ; запрет записи в блокнот
CLRF STATUS ; банк 0
BCF PIR2, EEIF ; сброс флага прерываний
; чтение из EEPROM
BSF STATUS, RP1 ; банк 2
MOVLW 0x01
MOVWF EEADR ; запись адреса в регистр адреса
BSF STATUS, RP0 ; банк 3
BCF EECON1, EEPGD ; выбор блокнота памяти
BSF EECON1, RD ; инициализировать чтение
BCF STATUS, RP0 ; банк 2
MOVF EEDATA,W ; пересылка из EEDATA в W
BSF STATUS, RP0
BCF STATUS, RP1 ; банк 1
CLRF TRISB ; порт В - выход
BCF STATUS, RP0 ; банк 0
L0001:
MOVWF PORTB ; сброс на светодиоды
GOTO L0001
END
Рисунок 2.1 - Вид экрана с выполняемой программой
2.3 Содержание отчета
- цель работы;
- листинг программы и ее описание;
- вид экрана с выполняемой программой;
- выводы.
2.4 Контрольные вопросы
1) Какие регистры управляют памятью микроконтроллера?
2) В какие регистры помещается адрес памяти блокнота?
3) Для чего при записи байта в блокнот используются EECON1 и EECON2?
4) В какие регистры помещаются контролируемые параметры?
5) Как осуществляется выбор блокнота памяти параметров?
3 Лабораторная работа. Управление шаговым двигателем
Цель работы: изучить принцип работы и методы цифрового управления шаговым двигателем.
3.1 Общие сведения
Шаговый электродвигатель (ШД) - это синхронный бесщеточный электродвигатель с несколькими обмотками, в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора.
В симуляторе используется четырехфазный шаговый двигатель (ШД) на постоянных магнитах.
Рисунок 3.1 - Шаговый двигатель в PIC Simulator IDE
Для открытия модели ШД необходимо в меню Tools выбрать пункт Stepper Motor Phase Simulation.
Таблица 3.1 – Управляющие байты для вращения против часовой стрелки
Направление |
Обмотки |
PORTB,биты для установки в 1 |
B |
HEX |
|
A |
0 |
0001 |
01 |
|
А, D |
3, 0 |
1001 |
09 |
|
D |
3 |
1000 |
08 |
|
C, D |
2, 3 |
1100 |
0C |
|
C |
2 |
0100 |
04 |
|
B, C |
1, 2 |
0110 |
06 |
|
B |
1 |
0010 |
20 |
|
A, B |
0, 1 |
0011 |
03 |
3. 2 Моделирование работы шагового двигателя
3.2.1 Схема управления шаговым двигателем.
Необходимо выполнить следующие действия:
- запустить PIC Simulator IDE;
- нажать Options/Select Microcontroller;
- выбрать PIC16F877 и нажать кнопку Select;
- нажать на Tools/ Stepper Motor Phase Simulation. В модели ШД порт В изменить на порт C;
- - нажать на Tools/Keypad Matrix. В модели клавишной матрицы порт В оставить без изменения;
- нажать на File/Load program;
- в списке выбрать программу stepdv.asm;
- нажав на Save, программа stepdv.asm загрузится в память микроконтроллера;
- выбрать Rate/Fast;
- выделить опцию в Options/Infinite Loop Stops Simulation;
- нажатием на «Simulation/Start» начнется моделирование.
Нажав на кнопку RB0/RB4, двигатель будет вращаться по и против часовой стрелке. Остановка двигателя осуществляется возвратом кнопки в исходное положение.
3.2.2 Листинг программы stepdv.asm управления ШД.
SEC EQU 0x20
DVP EQU 0x21
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO START
ORG 0x0004
RETFIE
START
CLRF STATUS
BSF STATUS, RP0 ; bank 1
CLRF TRISC ; PORTC - OUT
MOVLW B’11110000’
MOVWF TRISB ; RB0-RB3 – OUT, RB4-RB7 - IN
BCF STATUS, RP0 ; bank 0
ENTER_KEY
CLRF PORTB
BSF PORTB,0
BTFSS PORTB,4 ; Проверка кнопки «Пуск» - RB0/RB4
GOTO ENTER_KEY
CW: ; п/п вращения ШД по часовой стрелки
MOVLW .1
MOVWF DVP
CALL PAUSE
MOVLW 0x02
MOVWF PORTC
CALL PAUSE
MOVLW 0x06
MOVWF PORTC
CALL PAUSE
MOVLW 0x04
MOVWF PORTC
CALL PAUSE
MOVLW 0x0C
MOVWF PORTC
CALL PAUSE
MOVLW 0x08
MOVWF PORTC
CALL PAUSE
MOVLW 0x09
MOVWF PORTC
CALL PAUSE
MOVLW 0x01
MOVWF PORTC
CALL PAUSE
MOVLW 0x03
MOVWF PORTC
CALL PAUSE
CCW: ; п/п вращения ШД против часовой стрелки
MOVLW .1
MOVWF DVP
CALL PAUSE
MOVLW 0x01
MOVWF PORTC
CALL PAUSE
MOVLW 0x09
MOVWF PORTC
CALL PAUSE
MOVLW 0x08
MOVWF PORTC
CALL PAUSE
MOVLW 0x0C
MOVWF PORTC
CALL PAUSE
MOVLW 0x04
MOVWF PORTC
CALL PAUSE
MOVLW 0x06
MOVWF PORTC
CALL PAUSE
MOVLW 0x02
MOVWF PORTC
CALL PAUSE
MOVLW 0x03
MOVWF PORTC
CALL PAUSE
GOTO ENTER_KEY
PAUSE:
DECFSZ DVP, F
GOTO PAUSE
RETURN
Рисунок 3.2 – Вид экрана выполняемой программы
3.3 Содержание отчета
- цель работы;
- листинг программы и ее описание;
- вид экрана;
- выводы.
3.4 Контрольные вопросы
1) Как осуществляется опрос нажатия кнопки?
2) Как осуществляется управление ШД?
3) К какому порту по умолчанию подключен ШД?
4) Достоинства и недостатки ШД?
5) Как изменить скорость вращения ШД?
4 Лабораторная работа. Оцифровка аналоговых сигналов
Цель работы: изучение программного управления модулем АЦП микроконтроллера для оцифровки сигналов с аналоговых датчиков состояния контролируемого объекта..
4.1 Общие положения
Аналоговый сигнал датчика через коммутатор каналов заряжает внутренний конденсатор АЦП CHOLD. Модуль АЦП преобразует напряжение, удерживаемое на конденсаторе CHOLD в соответствующий 10-разрядный цифровой код методом последовательного приближения. Источник верхнего и нижнего опорного напряжения может быть программно выбран с выводов Vdd, Vss, RA2 или RA3.
При работе модуля АЦП в SLEEP режиме в качестве источника тактовых импульсов должен быть выбран RC генератор.
Для управления АЦП микроконтроллера используются 4 регистра:
- регистр результата ADRESH (старший байт);
- регистр результата ADRESL (младший байт);
- регистр управления ADCON0;
- регистр управления ADCON1.
Регистр ADCON0 используется для настройки работы модуля АЦП, а регистром ADCON1 осуществляется выбор аналоговых входов портов А и Е.
10-разрядный результат оцифровки помещается в регистры ADRESH:ADRESL, после чего сбрасывается флаг GO/-DONE (ADCON0<2>) и устанавливается флаг прерывания ADIF.
Перед началом преобразования необходимо выдержать временную паузу для заряда конденсатора CHOLD.
Алгоритм оцифровки аналогового сигнала:
1) Настроить модуль АЦП:
- настроить выводы как аналоговые входы (ADCON1);
- выбрать входной канал АЦП (ADCON0);
- выбрать источник тактовых импульсов для АЦП (ADCON0);
- выбрать тип выравнивания;
- включить модуль АЦП (ADCON0);
2) Настроить прерывание от модуля АЦП:
- сбросить бит ADIF;
- установить бит ADIE в 1;
- установить бит PEIE в 1;
- установить бит GIE в 1;
3) Выдержать паузу, необходимую для зарядки конденсатора CHOLD.
4) Начать аналого-цифровое преобразование:
- установить бит GO/-DONE в 1 (ADCON0);
5) Ожидать окончания преобразования:
- ожидать пока бит GO/-DONE не будет сброшен в 0;
- ожидать прерывание по окончанию преобразования;
6) Считать результат преобразования из регистров ADRESH:ADRESL, сбросить бит ADIF в 0;
7) Для следующего преобразования необходимо выполнить шаги, начиная с пункта 1 или 2.
Запись результата преобразования может выполняться с правым или левым выравниванием, в зависимости от значения бита ADFM регистра ADCON1<7>. Не задействованные биты регистров ADRESH:ADRESL читаются как «0».
4.2 Моделирование оцифровки аналогового сигнала
4.2.1 Конфигурирование микроконтроллера для режима АЦП
Необходимо выполнить следующие действия:
- запустить PIC Simulator IDE;
- нажать Options/Select Microcontroller;
- выбрать PIC16F877 и нажать кнопку Select;
- нажать на Tools/ Microcontroller View – появится окно со всеми портами;
- нажать на Tools/ 8xLED board – появится панель светодиодов (по умолчанию порт В);
- нажать на File/Load program;
- в списке выбрать программу acp10.asm;
- нажав на Save, программа acp10.asm загрузится в память микроконтроллера;
- выбрать Rate/Fast;
- выделить опцию в Options/Infinite Loop Stops Simulation;
- нажатием на «Simulation/Start» начнется моделирование.
Нажав кнопку А, связанную с выводом RA0/AN0, измените аналоговое значение на этом выводе в появившемся окошке АЦП. Цифровое значение будет отражено на светодиодах, подключенных к порту B.
4.2.2 Листинг программы acp10.asm.
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO START
ORG 0x0004
RETFIE ; возврат из п\п с разр-ем прерывания
START
BSF STATUS,RP0 ; банк 1
CLRF TRISB ; PORTB - выход
MOVLW 0x3F
MOVWF TRISA ; PORTA – RA0-RA5 входы
BCF STATUS,RP0 ; банк 0
MOVLW 0xC0
MOVWF ADCON0 ; канал 0 – RA0, RC генератор
BSF STATUS,RP0 ; банк 1
CLRF ADCON1 ; каналы аналоговые, левое выравнивание
BCF STATUS,RP0 ; банк 0
BSF ADCON0,0 ; включение АЦП
NOP
NOP
L0001:
CALL L0002
MOVF ADRESH,W ; W = ADRESH
MOVWF PORTB
GOTO L0001
L0004:
GOTO L0004 ; бесконечный цикл
L0002:
BSF ADCON0,2 ; начало АЦ преобразования
L0005:
BTFSS ADCON0,2
GOTO L0006
GOTO L0005
L0006:
MOVLW 0x1F
ANDWF STATUS,F ; банк 0
RETURN
L0007:
GOTO L0007 ; бесконечный цикл
END
Рисунок 4.1 – Вид экрана выполняемой программы
4.3 Содержание отчета
- цель работы;
- листинг программы и ее описание;
- вид экрана;
- выводы.
4.4 Контрольные вопросы
1) Как включить модуль АЦП?
2) Зачем выдерживается пауза перед преобразованием?
3) Как происходит настройка каналов АЦП?
4) Где содержится байт результата преобразования?
5) Почему при левом выравнивании результат будет кратен 4?
5 Лабораторная работа. Жидкокристаллический индикатор
Цель работы: изучить работу модуля жидкокристаллического индикатора с контроллером HD44780 фирмы Hitachi в различных режимах.
5.1 Общие сведения
Наибольшее распространение получили ЖКИ (Liquid Christal Display - LCD) с контроллером HD44780 фирмы Hitachi.
Рисунок 5.1 - Внешний вид ЖКИ
Таблица 5.1 – Назначение выводов ЖКИ
Pin No. |
Имя |
Описание |
Pin no. 1 |
VSS |
Питание (GND) |
Pin no. 2 |
VCC |
Питание (+5V) |
Pin no. 3 |
VEE |
Регулировка контрастности |
Pin no. 4 |
RS |
0 = Ввод инструкций |
Pin no. 5 |
R/W |
0 = Запись на LCD |
Pin no. 6 |
EN |
Включить сигнал |
Pin no. 7 |
D0 |
Линия шины данных 0 (LSB) |
Pin no. 8 |
D1 |
Линия шины данных 1 |
Pin no. 9 |
D2 |
Линия шины данных 2 |
Pin no. 10 |
D3 |
Линия шины данных 3 |
Pin no. 11 |
D4 |
Линия шины данных 4 |
Pin no. 12 |
D5 |
Линия шины данных 5 |
Pin no. 13 |
D6 |
Линия шины данных 6 |
Pin no. 14 |
D7 |
Линия шины данных 7 (MSB) |
Линия EN называемая "Включить" (Enable), используется как импульс-строб для ЖКИ при передаче данных/команд. Перед передачей микроконтроллер должен убедиться, что эта линия является низкой (EN=0), а затем установить другие две линии контроля и поместить данные на шину данных. Когда другие линии полностью готовы, сделать EN = 1 высоким с выдержкой времени, необходимого для приема данных LCD.
Линия RS является линией "Выбора Регистра" (Register Select). При RS =0 в ЖКИ подключается регистр команд IR (instruct register) для приема команды (например, очистка экрана, позиция курсора и т.д.). При RS=1 подключается регистр DR (data register) для приема передаваемых данных.
Линия RW – это линия управления "чтение / запись" (Read/Write). При RW=0 информация шины данных записывается на ЖК-дисплее. При RW=1 микроконтроллер читает сообщения о состоянии LCD, например, команда "Get LCD status " – 80Н.
Таблица 5.2 – Набор символов знакогенератора
В модуле HD44780 используется две разные памяти:
- DDRAM - для хранения отображаемых данных;
- CGRAM – память знакогенератора для хранения битовых комбинаций, которые соответствуют матрице размером 5x8 или 5x10 (определяет форму символа).
Распределение знаков показано в таблице 5.2, причем четыре старших разряда байта символа определяют его размещение по вертикали, а четыре младших - по горизонтали (например, "А" = 41Н).
5.2 Моделирование устройства отображения информации
5.2.1 Конфигурирование модуля LCD.
Необходимо выполнить следующие действия:
- запустить PIC симулятор IDE;
- нажать на Options/Select Microcontroller.
- выбрать PIC16F877 и нажать на Select;
- нажать на Tools/LCD Module;
- осуществить настройку схемы подключения модуля ЖКИ;
- нажать на File/Open – выбрать программу lcd_ht.asm - программа lcd_ht.asm загрузится в память микроконтроллера;
- выбрать Rate/Fast;
- выделить опцию в Options/Infinite Loop Stops Simulation;
- нажать на «Simulation/Start» - начнется моделирование.
Для того настройки схемы подключения ЖКИ в окне LCD Module нажать на кнопку Setup (см. рисунок 5.2).
Рисунок 5.2 - Настройка ЖКИ
LCD Type 2х16 – выбор типа ЖКИ - 2 строчный, 16 символов в строке – оставляем по умолчанию.
Data Lines – выбор порта для шины данных - порт В оставить по умолчанию.
Interface – выбор разрядности ЖКИ – 8 bit.
RS Line – выбор порта для RS линии – PORTD,1.
E Line – выбор порта для линии EN – PORTD,3.
R/W Line – выбор порта для линии RW – PORTD,2.
Setup LCD Module Busy Delays - установка задержки инициализации шины, команд шины и данных шины в мс.
Change LCD Module Color Scheme – выбор цвета табло ЖКИ.
Для запоминания параметров настройки нужно нажать на кнопку Apply!
5.2.2 Листинг программы lcd_ht.asm.
R0L EQU 0x20
R0H EQU 0x21
R1L EQU 0x22
R1H EQU 0x23
R2L EQU 0x24
R2H EQU 0x25
R3L EQU 0x26
R3H EQU 0x27
R4L EQU 0x28
R4H EQU 0x29
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO START
ORG 0x0004
START
; Инициализации ЖК-модуля, мигает курсор
CLRF STATUS ; bank 0
CLRF PORTD
CLRF PORTB
BSF STATUS,RP0 ; bank 1
CLRF TRISD ; PORTD - out
MOVWF TRISB ; PORTB - out
BCF STATUS,RP0 ; bank 0
MOVLW 0x02
MOVWF R0L
MOVLW 0x00
MOVWF R0H ; задержка 0002Н
CALL W001 ; п\п задержки
MOVLW 0x33 ; команда на включение ЖКИ
CALL LC02 ; п/п передачи команд
MOVLW 0x33
CALL LC02
MOVLW 0x33
CALL LC02
MOVLW 0x38 ; команда задания режимов
CALL LC02
MOVLW 0x0D ; 8-битнвй интерфейс, миг. курсор
CALL LC02
MOVLW 0x01 ; очистить дисплей
CALL LC02
TEXT1:
; текст для 1-й строки ЖКИ
MOVLW 0x80 ; выбор DDRAM
CALL LC02
MOVLW ‘P’
CALL LC01
MOVLW ‘R’
CALL LC01
MOVLW ‘I’
CALL LC01
MOVLW ‘V’
CALL LC01
MOVLW ‘E’
CALL LC01
MOVLW ‘T’
CALL LC01
MOVLW ‘!’
; текст для 2-й строки
MOVLW 0xC0 ; курсор в начало строки 2
CALL LC02
MOVLW 0x40 ; выбор CGRAM знакогенератора
CALL LC02
MOVLW 0x48 ; H
CALL LC01
MOVLW 0x49 ; I
CALL LC01
MOVLW 0x21 ; !
CALL LC01
; задержка в 4 мс
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
GOTO TEXT1 ; бесконечный цикл
; задержка 1,64 мс
W001:
MOVF R0L,W
BTFSC STATUS,Z
GOTO W002
CALL W003
DECF R0L,F
NOP
NOP
NOP
NOP
NOP
GOTO W001
W002:
MOVF R0H,W
BTFSC STATUS,Z
RETURN
CALL W003
DECF R0H,F
DECF R0L,F
GOTO W001
W003:
MOVLW 0x0C
MOVWF R2H
W004:
DECFSZ R2H,F
GOTO W004
NOP
NOP
MOVLW 0x12
MOVWF R1L
W005:
DECFSZ R1L,F
GOTO W006
CALL W007
CALL W007
NOP
NOP
RETURN
W006:
CALL W007
GOTO W005
W007:
MOVLW 0x0D
MOVWF R2L
W008:
DECFSZ R2L,F
GOTO W008
NOP
RETURN
; задержка длиной в 1 байт – 40мс
X001:
MOVLW 0x0A
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
X002:
MOVLW 0x06
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
; задержка длиной в 2 байта – 100 мс
Y001:
MOVLW 0x10
SUBWF R4L,F
CLRW
BTFSS STATUS,C
ADDLW 0x01
SUBWF R4H,F
BTFSS STATUS,C
RETURN
GOTO Y002
Y002:
MOVLW 0x0A
SUBWF R4L,F
CLRW
BTFSS STATUS,C
ADDLW 0x01
SUBWF R4H,F
BTFSS STATUS,C
RETURN
GOTO Y002
; передача данных
LC01:
BSF PORTD,1
BCF PORTD,2
MOVWF PORTB
CALL LCX1
MOVLW 0x32
MOVWF R4L
CALL X001
RETURN
LCX1:
BSF PORTD,3 ; запись EN=1
NOP
BCF PORTD,3 ; выключение записи EN=0
NOP
RETURN
; передача команд
LC02:
BCF PORTD,1
BCF PORTD,2
MOVWF PORTB
CALL LCX1
MOVLW 0xD0
MOVWF R4L
MOVLW 0x07
MOVWF R4H
CALL Y001
RETURN
END
Рисунок 5.3 – Вид экрана выполняемой программы
Символы английского алфавита выводятся на индикатор как обычные символьные константы в виде 'simvol′, а для вывода английского алфавита используется код ASCII, помещенный в таблица 5.2.
5.3 Содержание отчета
- цель работы;
- листинг программы и ее описание;
- вид экрана с выполняемой программой;
- выводы.
5.4 Контрольные вопросы
1) Как осуществляется управление LCD?
2) Какую функцию выполняют регистры IR и DR?
3) Что сообщается микроконтроллеру при В=1?
4) Для чего служит память DDRAM?
5) Для чего служит память CGRAM?
6 Лабораторная работа. Приемо-передатчик UART
Цель работы: изучить работу универсального приемо-передатчика UART в асинхронном режиме передачи байтов контролируемых параметров на центральный процессор.
6.1 Общие сведения
Для связи с персональными компьютерами служит универсальный асинхронный приемопередатчик (UART), работающий в дуплексном асинхронном режиме ( см. рисунок 6.1).
Регистры TXSTA (transmitter status) и RCSTA (receiver status) модуля USART являются регистрами управления и статуса, соответственно передатчика и приемника.
В асинхронном режиме UART использует стандартный формат (NRZ): один стартовый бит, 8 или 9 битов данных и один стоповый бит.
Модуль USART в асинхронном режиме состоит из следующих элементов:
- генератор скорости обмена;
- цепь опроса;
- асинхронный передатчик;
- асинхронный приемник.
Рисунок 6.1 – Структурная схема организации связи в асинхронном режиме
Главным в передатчике USART является сдвиговый регистр TSR, который получает данные из буфера передатчика TXREG.
Данные в регистр TXREG загружаются программно. После передачи стопового бита предыдущего байта, в последнем машинном такте цикла RRG, TSR загружается новым значением из TXREG (если оно присутствует), после чего устанавливается флаг прерывания TXIF (PIR1<4>). Прерывание может быть разрешено или запрещено битом TXIE (Р1Е1<4>). Флаг TXIF устанавливается независимо от состояния бита TXIE и не может быть сброшен в '0' программно. Очистка флага TXIF происходит только после загрузки новых данных в регистр TXREG.
Для разрешения передачи необходимо установить бит TXEN (TXSTA<5>) в '1'. Передача данных не начнется до тех пор, пока в TXREG не будут загружены новые данные; не придет очередной тактовый импульс от генератора BRG.
6.2 Моделирование приемо-передатчика
6.2.1 Схема модуля UART.
Необходимо выполнить следующие действия:
- запустить PIC симулятор IDE;
- нажать на Options/Select Microcontroller;
- выбрать PIC16F877 и нажать на Select;
- нажать Options/Change Clock Frequency;
- ввести 4 и нажать кнопку OK;
- нажать Options/Change UART Transmit/Receive Time;
- ввести 100 и нажать кнопку OK;
- нажать Tools/Hardware UART Simulation Interface (откроется окно симуляции аппаратного интерфейса UART);
- нажать на Tools/ 8xLED board – появится панель светодиодов (по умолчанию порт В);
- нажать File/Load Program;
- выбрать файл uart-receiver.hex и нажать кнопку Open;
- выбрать Rate/ Fast simulation rate;
- нажать Simulation/Start (начнётся выполнение программы).
Программа показывает работу UART в асинхронном и высокоскоростном режиме передачи. Для пересылки данных используется одна из двух кнопок интерфейса UART:
- Send Byte (Dec) для значений десятичных чисел 0-9;
- Send Byte (Hex) для байтов 01Н – 3FH. Байты больше 09Н будут отражаться на экране как символы знакогенератора CGRAM, а светодиоды без изменения.
Нажав на одну из этих кнопок, в появившееся окно занесите любое число или байт соответственно. На экране появится принятое число или символ знакогенератора, а светодиоды отражают передаваемые данные в двоичном коде.
6.2.2 Листинг программы.
ZADERZH EQU 0x20
BUF EQU 0x21
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO BEGIN
ORG 0x0004
BEGIN
CLRF STATUS ; банк 0
CLRF PORTB ; очистка порта В
BSF STATUS,RP0 ; банк 1
CLRF TRISB ; порт В - выход
MOVLW 0x19
MOVWF SPBRG ; скорость передачи 9,6 Кбит/с
BSF TRISC,6 ; RC6 - вход
BSF TRISC,7 ; RC7 - вход
MOVLW 0x24
MOVWF TXSTA ; АС и ВС режим, разрешение передачи
BCF STATUS,RP0 ; банк 0
MOVLW 0x90
MOVWF RCSTA ; вкл UART, прием разрешен
CALL L0007 ; п/п залержки
CLRF W
L0001:
BTFSC PIR1,RCIF ; проверка буфера приемника
GOTO L0002 ; буфер полон
GOTO L0001 ; буфер пуст
L0002:
MOVF RCREG,W
MOVWF PORTB ; передаваемый байт в порт В
MOVWF BUF
CALL L0007 ; п/п залержки
CLRF W
L0003:
BTFSC PIR1,TXIF ; проверка буфера передатчика
GOTO L0004 ; буфер пуст
GOTO L0003 ; буфер полон
L0004:
MOVF BUF,W
ADDLW 0x30 ; коррекция адреса CGDRAM
MOVWF TXREG ; загрузка передатчика
CLRF RCREG
CLRF TXREG
GOTO L0001
L0007: ; п/п залержки
MOVLW 0x05
MOVWF ZADERZH
L0005:
DECFSZ ZADERZH,1
GOTO L0005
RETURN
L0006:
GOTO L0006 ; бесконечный цикл
END
Рисунок 6.2 – Вид экрана выполняемой программы
6.3 Содержание отчета
- цель работы;
- листинг программы и ее описание;
- вид экрана с выполняемой программой;
- выводы.
6.4 Контрольные вопросы
1) Как включить модуль UART?
2) Как настроить UART в режим приема?
3) Как настроить UART в режим высоко скоростной передачи?
4) Зачем к значению принятого байта прибавляется 30Н?
5) Что показывают светодиоды?
Список литературы
1. Новиков Ю.В., Скоробогатов П.К. Основы микропроцессорной техники. – М.: БИНОМ. Лаборатория знаний, 2006.
2. Тавернье К. PIC – Микроконтроллеры. – М.: ДМК Пресс, 2003.
3. Трамперт В. AVR-RISC микроконтроллеры. – К.: «МК-Пресс», 2006.
4. Техническая документация. Однокристальные 8-разрядные FLASH микроконтроллеры. – М.: ООО «Микро-Чип», 2002.
Содержание
1 Введение 3
2 Лабораторная работа 4
3 Лабораторная работа 7
4 Лабораторная работа 9
5 Лабораторная работа 13
6 Лабораторная работа 17
7 Лабораторная работа 24
Список литературы 28
Св.план 2011 г., поз. 206