- •Понятие встроенной системы
- •Системы на кристалле. Реконфигурируемые системы
- •Проектирование систем на кристалле. Ip-компоненты
- •Типы вычислительных ядер. Эксплуатационная и проектная гибкость
- •4. Типы вычислительных ядер. Эксплуатационная и проектная гибкость (продолжение)
- •5. Принципы Фон Неймана. Достоинства и недостатки
- •Cisc и risc архитектуры вычислительных ядер
- •Классические вычислительные архитектуры. Стековая архитектура
- •Классические вычислительные архитектуры. Аккумуляторная архитектура
- •Классические вычислительные архитектуры. Gpr-архитектура
- •Принципы конвейерной обработки инструкций
- •Конвейерные конфликты и способы их минимизации
- •Конвейерные конфликты и способы их минимизации (продолжение)
- •Микроконтроллеры. Основные понятия. Структура pic16f84
- •Pic16f84. Структура памяти исполняемых инструкций
- •Pic16f84. Структура памяти данных. Способы адресации
- •Pic16f84. Счётчик инструкций. Способы управления
- •Pic16f84. Встроенная память eeprom. Структура и программное управление
- •16. Pic16f84. Встроенная память eeprom. Структура и программное управление (продолжение)
- •Pic16f84. Порты ввода-вывода. Структура порта a
- •Pic16f84. Порт а. Структура разряда ra4
- •Pic16f84. Порт а. Структура разрядов ra0-ra3
- •Pic16f84. Подключение простейших устройств ввода информации к портам
- •Pic16f84. Порты ввода-вывода. Структура порта b
- •Pic16f84. Источники прерываний и механизм обработки
- •Pic16f84. Проектирование обработчиков прерываний
- •23. Pic16f84. Проектирование обработчиков прерываний (продолжение)
- •Pic16f84. Внутренняя структура и функционирование таймера
- •Pic16f84. Проектирование обработчика прерываний от таймера
- •Pic16f84. Простейшие устройства вывода информации. Семисегментные индикаторы
- •Pic16f84. Подключение и использование сдвиговых регистров
- •Pic16f84. Структура и программирование матричных клавиатур
- •Жидкокристаллические дисплеи (lcd). Основные понятия. Внутренняя организация и способы подключения
- •Внутренняя организация и функционирование контроллеров lcd
- •Программное управление lcd со стороны микроконтроллеров
- •31. Программное управление lcd со стороны микроконтроллеров (продолжение)
- •31. Программное управление lcd со стороны микроконтроллеров (продолжение)
- •Интерфейсы встроенных систем. Основные понятия и классификация
- •Интерфейс i2c. Основные понятия. Внутренняя структура портов i2c
- •Интерфейс i2c. Протокол передачи данных. Взаимодействие i2c устройств. Арбитраж мультимастерного режима
Программное управление lcd со стороны микроконтроллеров
Контроллер может функционировать в след. режимах:
Режим инициализации Init
Определение интерфейса
Вкл./выкл. подсветки
Перемещение курсора в нач. позицию
Определение содержимого блока CGRAM
Режим передачи данных
Контроллер принимает данные либо для отображ. на LCD Panel (DDRAM), либо для задания пользовательских символов (CGRAM)
Режим передачи инструкций
Для этого МК разл. инструкции и данные тр. разл. врем. задержек для исполнения (min=40мкс, max=4мс)
Полубайтный режим.
При использовании полубайтного режима необх.:
При инициализации LCD контроллера указать инструкцию выбора режима.
После этого все данные и коды инструкций будут передаваться группами по 4 разряда, начиная со старшего полубайта.
Пусть определены след. процедуры врем. задержек:
Delay_1ms
Delay_2ms
Delay_4ms
Delay_40us
Рассм. пример кода управления LCD Panel:
#define BANK0
BCF STATUS, RP0
#define BANK1
BSF STATUS, RP0
RS equ 1 ; номера разрядов порта B, к к-рым подкл. соотв. управляющие линии
RW equ 2
EN equ 3
LCD_buf equ 0x11
LCD_tmp equ 0x12
; LCD instructions
Constant LCD_CD = 0x01 ; Clear Display 2ms
Constant LCD_CH = 0x02 ; Cursor Home 2ms
Constant LCD_ON = 0x0C ; Display On 40us
31. Программное управление lcd со стороны микроконтроллеров (продолжение)
Constant LCD_OFF = 0x08 ; Display Off 40us
Constant LCD_CN = 0x0E ; Cursor On 40us
Constant LCD_CB = 0x09 ; Cursor Wink 40us
Constant LCD_2L = 0x28 ; LCD has 2 lines 40us
Constant LCD_4B = 0x20 ; 4-bit interface 40us
Constant LCD_L1 = 0x80 ; Select 1 line
Constant LCD_L2 = 0xC0 ; Select 2 line
RB7 6 5 4 3 2 1 RB0
D7 D6 D5 D4 E =0 RS X
Data/Instr. {0/1} Write {0/1}
; аргумент для вызова—значение WReg, исп. процедуру LCD_wr, которая передаёт данные из аккумулятора в ; разряды порта B с формированием импульса на линии разрешения E. Импульс д. б. мин. 1мс
LCD_cmd
clrf LCD_buf
movwf LCD_tmp ; код инстр.
andlw b’11110000’
iorwf LCD_buf,0
call LCD_wr
swapf LCD_tmp,0
andlw b’11110000’
iorwf LCD_buf,0
call LCD_wr
return
LCD_wr
clrf PORTB
movwf PORTB
call Delay_1ms ; необх. для корректной фиксации
; переданных значений
bsf PORTB,EN
call Delay_1ms
bcf PORTB,EN
return
Для того чтобы передать вместо инструкции данные, необх. выполнение всё тех же действий + уст. бит RS в «1», который укажет LCD контроллеру, что передаётся.
LCD_dat
bsf LCD_buf, RS
…
; инициализация LCD контроллера
LCD_Init
BANK1
clrf TRISB
BANK0
clrf PORTB
call Delay_4ms ; LCD power UP!
movlw LCD_4B
call LCD_cmd
call Delay_40us
movlw LCD_ON
call LCD_cmd
call Delay_40us
movlw LCD_2L
call LCD_cmd
call Delay_40us
31. Программное управление lcd со стороны микроконтроллеров (продолжение)
В инициализации можно применять очистку дисплея, позиционирование курсора.
; Вывод символов
org 0x10
Main:
call LCD_Init
movlw 0x41 ; код отображаемого символа в аккумулятор
call LCD_dat ; курсор в нулевой позиции
call Delay_40us
movlw 0x61
call LCD_dat ; курсор в следующей позиции
call Delay_40us
…
; макроопределения
LCDD macro Ldata
movlw Ldata
call LCD_dat
call Delay_40us
endm
LCDC macro Lcmd
movlw Lcmd
call LCD_cmd
call Delay_40us
endm
____
LCDC 0x40 ; выбирает 0-вой адрес CGRAM для определения польз. символа
LCDD b’10001’ ; передача битовой маски для определения символа, значимые 5 младших бит
LCDD 0x00
LCDD 0x00
LCDD 0x00
LCDD 0x09
LCDD 0x09
LCDD 0x09
LCDD 0x1F
____
LCDC 0x80 ; перемещаем в 0-вую позицию
LCDD 0x40 ; отображаем символ