Некоммерческое акционерное общество

АЛМАТИНСКИЙ  УНИВЕРСИТЕТ ЭНЕРГЕТИКИ   И СВЯЗИ

Кафедра «Электроника»

 

 

 

СИСТЕМЫ ИНФОРМАЦИОННОГО УПРАВЛЕНИЯ

МИКРОКОНТРОЛЛЕРЫ СЕРИИ 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 IDERegist, в котором указаны возможные цвета: 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                  ; банк

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 = Ввод инструкций
1 = Ввод данных

Pin no. 5

R/W

0 = Запись на LCD
1 = Чтение с
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 выбор порта для линии ENPORTD,3.

R/W Line выбор порта для линии RWPORTD,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