ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
8 июля
251101 Топик полностью
mazur (29.04.2011 17:14, просмотров: 143) ответил LeonidPr на Второй день пытаюсь заставить нормально работать реальный индикатор.
Я вам привел пример. Инициализация проца. Сброс ЖКИ (обязательно). То есть, подать нолик на ногу сброса ЖКИ на n мс. Потом подать единицу. Ну и дальнейшая работа. Код рабочий. Только давно и криво написан. :) Камменты есть, так что разобраться можно. Будут вопросы пишите. RstLCD: cbi PortA,RST ldi temp,100 mov Cnt,temp RLCD: dec Cnt brne RLCD sbi PortA,RST ret Initial: ldi temp,High(RamEnd) ; Инициализация стека out sph,temp ldi temp,Low(RamEnd) out spl,temp clr Flags ; Очистка регистра флагов. ser Temp out DDRA,Temp out PortA,Temp ; Порт A - Линии управления ЖК ;cbi PortA,FS ; ************ Сброс ЖК при включении питания ********************************* Start: rcall RstLCD ; ************ Задать адрес начала текста ************************************* ldi DataH,High(0x0780) ldi DataL,Low(0x0780) mov temp,Flags ; Если установлен этот флаг, то передача двух байтов sbr temp,1<<SD2 mov Flags,temp ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,TXHOME ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ Задать адрес начала графики ************************************ clr DataH clr DataL mov temp,Flags ; Если установлен этот флаг, то передача двух байтов sbr temp,1<<SD2 mov Flags,temp ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,GRHOME ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ Задать текстовую область *************************************** clr DataH ldi DataL,128/8 mov temp,Flags ; Если установлен этот флаг, то передача двух байтов sbr temp,1<<SD2 mov Flags,temp ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,TXAREA ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ Задать область графики ***************************************** clr DataH ldi DataL,128/8 mov temp,Flags ; Если установлен этот флаг, то передача двух байтов sbr temp,1<<SD2 mov Flags,temp ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,GRAREA ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ УСТАНОВКА РЕЖИМА (OR РЕЖИМ) ************************************ ldi CMDR,0x80 ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ Установка режима отображения *********************************** ldi CMDR,0x9C ; Режим отображения (текст вкл., графика вкл.) ldi CPR,0x03 rcall WaitBusy rcall SendCom ; ************ Очистка текстового экрана (записать код пробела) *************** ldi DataH,High(0x0780) ldi DataL,Low(0x0780) clr r6 ldi XH,High(128) ldi XL,Low(128) rcall Out_Stroka ; ************ Очистить графический экран (записать код пробела) ************** clr DataH clr DataL clr r6 ldi XH,High(1024) ldi XL,Low(1024) rcall Out_Stroka ; ************ Рисуем диагональную линию ************************************** Line_1: clr r2 clr r3 clr r7 clr XH clr XL ldi temp,16 mov r2,temp L_11: ldi temp,0x80 mov r6,temp L_12: mul r2,r3 add r0,r7 movw DataL,r0 mov temp,Flags ; Если установлен этот флаг, то передача двух байтов sbr temp,1<<SD2 mov Flags,temp ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,ADPSET ldi CPR,0x03 rcall WaitBusy rcall SendCom mov DataL,r6 ldi CPR,0x03 rcall WaitBusy rcall SendDat ldi CMDR,0xC4 ; Записать Данные и не изменять УА ldi CPR,0x03 rcall WaitBusy rcall SendCom inc r3 mov temp,r3 cpi temp,64 breq Paint_Line_H lsr r6 in temp,SREG sbrs temp,0 rjmp L_12 inc r7 rjmp L_11 Paint_Line_H: clr r2 clr r3 clr XH clr XL ser temp mov r6,temp clr r5 ldi temp,16 mov r4,temp rcall Line_2 Paint_Line_L: clr r2 clr r3 ldi XH,High(1024-16) ldi XL,Low(1024-16) ser temp mov r6,temp clr r5 ldi temp,16 mov r4,temp rcall Line_2 ; ************ Вывод тескта на экран ****************************************** ldi DataH,High(0x07B1) ; Задать адрес начала текста ldi DataL,Low(0x07B1) ldi ZH,High(Text) ldi ZL,Low(Text) ldi XH,High(13) ldi XL,Low(13) rcall Out_Massiv rjmp Nul ; ************ Вывести картинку на экран ************************************** ;Out_Grafika: ;clr DataH ;clr DataL ;sbr Flags,1<<SD2 ; Установка флага передачи двух байтов. ;ldi CPR,0x03 ;rcall WaitBusy ;rcall SendDat ;ldi CMDR,ADPSET ;ldi CPR,0x03 ;rcall WaitBusy ;rcall SendCom ;ldi CMDR,AWRON ; Установить Автозапись данных ;ldi CPR,0x03 ;rcall WaitBusy ;rcall SendCom ;ldi ZH,High(Grafika) ;ldi ZL,Low(Grafika) ;ldi XH,High(1024) ;ldi XL,Low(1024) ;ldi CPR,0x08 ;rcall OutText ;ldi CMDR,AWROFF ;ldi CPR,0x03 ;rcall WaitBusy ;rcall SendCom Nul: rjmp Nul .ORG 0x400 Text: .DB 0x34,0x00,0x2F,0x00,0x33,0x00,0x28,0x00,0x29,0x00,0x22,0x00,0x21 Grafika: