Лабораторная работа №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