Uploaded by MAXOPHONE

Работа с жидкокристаллическим индикатором

advertisement
Лабораторная работа №1
Работа с жидкокристаллическим индикатором
Вывести строку символов на экране контроллера HD44780
HD44780 (а также совместимый с ним KS0066) — контроллер монохромных
жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8битным интерфейсом. Разработан фирмой Hitachi. Управляющий интерфейс и
протокол являются де-факто стандартом для такого типа дисплеев[1]. Эти контроллеры были фактически монополистами на рынке в 90-е годы. В настоящее
время все активнее вытесняются контроллерами с SPI или I2C интерфейсами, а
также контроллерами цветных дисплеев.
На базе этого контроллера выпускалось огромное количество моделей с различным конструктивом и разрешением, начиная с 8x1 (восемь символов в одной
строке), и заканчивая 40x4 (содержащих два независимых управляющих чипа).
Часто встречаются 16x2 и 20x4, а также некоторые другие.
Дисплеи нашли широкое применение в принтерах, копирах, факс-машинах,
сетевом оборудовании (например, в роутерах) и других устройствах. Экраны предоставляют только возможность вывода монохромного текста.
Существуют варианты дисплеев с подсветкой и без.
Код программы:
.include "m16def.inc"
.def temp=r16
.equ const1=0b01100101
.equ const2=38
.equ const3=0x3E
.equ const4=$B0
.cseg
.org 0
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1 CompareA Handler
jmp TIM1_COMPB ; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART RX Complete Handler
jmp USART_UDRE ; UDR Empty Handler
jmp USART_TXC ; USART TX Complete Handler
Лист
Изм. Лист
№ документа
Подпись
Дата
2
jmp
jmp
jmp
jmp
jmp
jmp
jmp
ADC_C ; ADC Conversion Complete Handler
EE_RDY ; EEPROM Ready Handler
ANA_COMP ; Analog Comparator Handler
TWSI ; Two-wire Serial Interface Handler
EXT_INT2 ; IRQ2 Handler
TIM0_COMP ; Timer0 Compare Handler
SPM_RDY ; Store Program Memory Ready Handler
RESET: ldi temp,high(RAMEND) ; Main program start
out SPH,temp ; Set Stack Pointer to top of RAM
ldi temp,low(RAMEND)
out SPL,temp
ldi temp, 0b00111111 ;настройка 6 младших линий PD0-PD5 на выход
out DDRD,temp
rcall load_text
rcall initlcd_2313
;sei ; Enable interrupts
infinity_loop:
Loop: ldi r24, 20
;
shift: ldi r25,$18
rcall icom_2313
rcall ddelay
dec r24
brne shift
;
ldi r24,5
stop: rcall ddelay
dec r24
brne stop
;установка счетчика символов
;сдвиг дисплея на один символ
;задержка ~200 мкс при кварце 4 МГц
;остановка после вывода каждой строки
jmp infinity_loop
EXT_INT0: ; IRQ0 Handler
EXT_INT1: ; IRQ1 Handler
TIM2_COMP: ; Timer2 Compare Handler
TIM2_OVF: ; Timer2 Overflow Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_COMPB: ; Timer1 CompareB Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
SPI_STC: ; SPI Transfer Complete Handler
USART_RXC: ; USART RX Complete Handler
USART_UDRE: ; UDR Empty Handler
USART_TXC: ; USART TX Complete Handler
ADC_C: ; ADC Conversion Complete Handler
EE_RDY: ; EEPROM Ready Handler
ANA_COMP: ; Analog Comparator Handler
TWSI: ; Two-wire Serial Interface Handler
EXT_INT2: ; IRQ2 Handler
TIM0_COMP: ; Timer0 Compare Handler
SPM_RDY: ; Store Program Memory Ready Handler
reti
icom_2313:
swap r25
mov r26,r25
andi r26,$ef
ori r26,$e0
;подготовить старшую тетраду для передачи
;очистка бита 4 порта D (сигнал RS=0)
;установка бита 5 порта D ( сигнал E=1)
Лист
Изм. Лист
№ документа
Подпись
Дата
3
out portd,r26
cbi portd, 5
;стробирующий сброс бита 5 порта D ( сигнал E=0).
swap r25
mov r26,r25
andi r26,$ef
ori r26,$e0
out portd,r26
;подготовить младшую тетраду для передачи
cbi portd, 5
ret
;стробирующий сброс бита 5 порта D ( сигнал E=0)
;очистка бита 4 порта D (сигнал RS=0)
;установка бита 5 порта D ( сигнал E=1)
;
idat_2313:
swap r25
mov r26,r25
ori r26,$f0
out portd,r26
;подготовить старшую тетраду для передачи
;установка бита 4 порта D (сигнал RS=1) и
;бита 5 порта D ( сигнал E=1)
cbi portd,5
;стробирующий сброс бита 5 порта D ( сигнал E=0)
swap r25
mov r26,r25
ori r26,$f0
out portd,r26
;подготовить младшую тетраду для передачи
cbi portd,5
ret
; стробирующий сброс бита 5 порта D ( сигнал E=0)
;установка бита 4 порта D (сигнал RS=1) и
;бита 5 порта D ( сигнал E=1)
;
initlcd_2313:
ldi r25,$20
rcall icom_2313
rcall del
ldi r25,$0C
rcall icom_2313
rcall del
ldi r25,$20
rcall icom_2313
rcall del
ldi r25,$1
rcall icom_2313
rcall delay
;
ret
;4-битный интерфейс, 1-строка, шрифт-5х7 точек
;включить дисплей, выключить курсор
;4-битный интерфейс, 1-строка, шрифт-5х7 точек
;очистить дисплей и установить курсор в
; начальную позицию
load_text:
;вывод в DDRAM постоянного текста
ldi r25,$80
;после этой команды данные записываются в DDRAM
rcall icom_2313
;начиная с адреса 0
rcall del
ldi r30,low(text0*2)
;установить указатель Z на начало буфера text0
ldi r31,high(text0*2)
ldi r24,80
;установить счетчик программируемых ячеек DDRAM
ddram:
lpm
;извлечь из flash-памяти байт данных
mov r25,r0
rcall idat_2313
;записать его в DDRAM
rcall del
ld r1,z+
;увеличить на 1 указатель Z адреса flash-памяти
dec r24
;если еще не все ячейки запрограммированы
brne ddram
;вернуться назад
;
Лист
Изм. Лист
№ документа
Подпись
Дата
4
ret
;
;Задержка вывода для удобства восприятия человеком
ddelay:
ldi r19,100
;
dd:
rcall delay
dec r19
brne dd
ret
del:
l4:
ldi r18,50
dec r18
brne l4
ret
;задержка ~40 мкс при кварце 4 МГц
;
;
ldi r17,9
ldi r18,255
dec r18
brne l1
dec r17
brne l
ret
;задержка ~1,8 ms при кварце 4 МГц
;
;
;
;
;
;
delay:
l:
l1:
;Во flash - памяти после программы размещаем постоянные данные
rus_buf:
(код-0)
.DB $0e,$11,$01,$0f,$01,$11,$0e,$00
;Начертание для буквы Э
.DB $04,$0e,$15,$15,$0e,$04,$04,$00
;Начертание для буквы Ф
(код-1)
text0:
.DB ' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
.DB ' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
;Пустая строка
text1:
.DB ' ',' ',' ','I',' ','l','o','v','e',' '
.DB 'm','y',' ','A','V','R',' ',' ',' ',' '
;I love my AVR
Выводы: во время выполнения лабораторной работы была изучена работа
жидкокристаллического индикатора на базе контроллера HD44780, на дисплее
была выведена строка “I love my AVR”
Лист
Изм. Лист
№ документа
Подпись
Дата
5
Download