procedury obslugi x51 i LCD N3410 (PCD8544)

Nov 02, 2006 0 Replies

moze komus sie przyda, pewnie trzeba bedzie poprawic polamane linijki ponizej same zrodlo, nic wiecej do poczytania


--------------begin LCD3410.ASM----------------------- ; procedury obslugi LCD z nokii 3410 (96pix*65pix B&W) dla 8x51 ; poza procedurami inicjalizacji oraz obslugi SPI calosc wklepal AlexY ; dostępne procedury: ; INIT_LCD - inicjalizacja LCD, uzywa: A, R0, R1 ; SET_CRSR - ustawienie kursora w żądanej pozycji, wejście: A - x (0-95), R2 - y (0-7), uzywa A, R0, R1 ; CLS - czyszczenie zawartości ekranu, uzywa A, R0, R1, R4 ; CHAR_OUT - wysłanie 6-ciu bajtów składających się na znak, wejście: A, uzywa A, B, R0, R1, R2, INV_CHAR, TMP_F ; PRINTS - wyswietlenie ciagu znakow z pamieci programu, wejscie: DPTR, uzywa jak wyzej ; PRINT_LCD - wyswietlenie ciagu znakow z pamieci danych, wejscie R5, uzywa jak wyzej ; HOME - ustawianie kursora w pozycji 0,0 , uzywa A, R2



SCLK EQU 151 ;P1.7 ;LINIA ZEGAROWA SDIN EQU 150 ;P1.6 ;LINIA DANYCH SD_C EQU 149 ;P1.5 ;JESLI 1 TO GRAFIKA, JESLI 0 TO FUNKCJA W LCD SCE EQU 148 ;P1.4 ;JESLI 0 TO WYSWIETLACZ ODBIERA DANE SRST EQU 147 ;P1.3 ;JESLI 0 TO RESET WYSWIETLACZA INV_CHAR EQU 127 ;BIT FLAGI INWERSJI ZNAKU TMP_F EQU 126 ;FLAGA TYMCZASOWA


INIT_LCD: CLR SCLK ;LINIA ZEGAROWA NA ZERO CLR SCE ;MODÓŁ MOZE ODBIERAC DANE CLR SRST ;RESET MODUŁU CLR SD_C CLR SDIN SETB SRST ;KONIEC IMPULSU RST MOV A, #00100001B ;Function set (PD=0 V=0 H=1) ACALL SEND_LPH



MOV A, #00010110B ;BIAS SYSTEM ACALL SEND_LPH



MOV A, #10010000B ;V operate ACALL SEND_LPH



MOV A, #00000100B ;Temerature Control ACALL SEND_LPH



MOV A, #10000000B ;x addres = 0 ACALL SEND_LPH



MOV A, #00100000B ;Function set (PD=0 V=0 H=0) ACALL SEND_LPH



MOV A, #00001001B ;Display Control (D=0 E=1) all on! ACALL SEND_LPH ACALL WAIT


MOV A, #00001100B ;NORMAL MODE ACALL SEND_LPH SETB SD_C ;BO BEDZIE WYSWIETLANA GRAFIKA ACALL CLSM ;CZYSZCZENIE EKRANU ret



;********************************



CLS: MOV R4, #192 ;CZYSZCZENIE EKRANU ZWYKLE SJMP CL1



CLSM: MOV R4, #216 ;CZYSZCZENIE EKRANU DO INICJACJI CL1: ACALL HOME CLR A ACALL SEND_LPH ACALL SEND_LPH ACALL SEND_LPH ACALL SEND_LPH DJNZ R4, CL1 RET



HOME: CLR A MOV R2, A ACALL SET_CRSR RET ;****USTAWIENIE KURSORA W ZADANEJ POZYCJI***** SET_CRSR: ;WEJSCIE A - X , R2 - Y, UZYCIE A CLR SD_C ;BEDZIEMY PODAWAC POLECENIE ORL A, #128 ;USTAWIENIE PIERWSZEGO BITU ACALL SEND_LPH MOV A, R2 ;PRZYGOTOWANIE WARTOSCI Y ANL A, #7 ;ZOSTAWIAMY TYLKO 3 NAJMLODSZE BITY ORL A, #64 ;USTAWIAMY BIT b6 ACALL SEND_LPH SETB SD_C ;PRZYWRACAMY TRYB WYSYLANIA DANYCH DO RAM RET



;****WYSWIETLENIE ZNAKU W BIEZACEJ POZYCJI**** CHAR_OUT: ;WEJSCIE A , MODYFIKUJE A, B, R0, R1, R2h , USTAWIONY MSB OZNACZA ZNAK W NEGATYWIE MOV C, 231 ;KOPIUJEMY MSB AKUMULATORA JAKO ZNACZNIK NEGATYWU MOV INV_CHAR, C CLR 231 ;CZYSCIMY MSB KODU ZNAKU (MAX 127 ZNAKOW) MOV B, #5 MUL AB ;5 BAJTOW NA ZNAK MOV DPTR, #ASCII ;WCZYTUJEMY ADRES POCZATKU TABLICY CLR C ADDC A, DPL MOV DPL, A MOV A, B ADDC A, DPH ;USTAWIAMY DPTR NA POCZATEK POTRZEBNEGO ZNAKU MOV DPH, A MOV R2, #5 ;5 BAJTOW DO WYSLANIA TU3: CLR A MOVC A, @A+DPTR ;POBRANIE BAJTU JNB INV_CHAR, TU4 CPL A ;ODWRACAMY BITY JESLI MA BYC ZNAK W NEGATYWIE TU4: ACALL SEND_LPH INC DPTR DJNZ R2, TU3 ;OSTATNI BAJT? CLR A JNB INV_CHAR, TU5 CPL A TU5: ACALL SEND_LPH ;6-TY BAJT PUSTY (ODSTEP) RET



;****WYSWIETLENIE CIAGU ZNAKOW OD BIEZACEJ POZYCJI****



PRINT_LCD:



MOV A, R5 ;POBIERA KOD ZNAKU INC R5 JNZ PR_1 ;JESLI KOD 0 - KONIEC TEXTU RET



PR_1: ACALL CHAR_OUT ;WYSLANIE ZNAKU DO LCD SJMP PRINT_LCD



PRINTS: CLR A MOVC A, @A+DPTR ;POBIERA KOD ZNAKU INC DPTR JNZ PRS1 ;JESLI KOD 0 - KONIEC TEXTU RET



PRS1: PUSH DPH PUSH DPL ACALL CHAR_OUT ;WYSLANIE ZNAKU DO LCD POP DPL POP DPH SJMP PRINTS



SEND_LPH: ;WEJSCIE A ; UZYCIE R1, A PUSH 224 MOV R1, #8 ;ILOSC BITOW DO WYSLANIA S_LPH: RLC A ;PRZESUN STARSZY BIT DO FLAGI C MOV SDIN, C ;NASTEPNIE PRZEPISZ NA WYPROWADZENIA SETB SCLK ;ZATRZASNIJ INFO W LCD CLR SCLK DJNZ R1, S_LPH POP 224 RET



;-------------------------- WAIT: ;UZYCIE R0, R1, R2



MOV R0, #255 MOV R1, #255 MOV R2, #7 ;-------------------------- TU: DJNZ R0, $ DJNZ R1, TU DJNZ R2, TU RET ;------------------- Ascii: db 0,0,0,0,0 ;empty - invalid db 20h , 54h , 54h , 0D4h , 78h ;ą polskie a Db 38h , 44h , 46h , 45h , 28h ;ć polskie c db 38h , 54h , 54h , 0D4h , 18h ;ę polskie e db 00h , 49h , 7Fh , 44h , 00h ;ł polskie l db 7Ch , 08h , 06h , 05h , 78h ;ń polskie n db 38h , 44h , 46h , 45h , 38h ;ó polskie o db 08h , 54h , 56h , 55h , 20h ;ś polskie s db 44h , 64h , 56h , 4Dh , 44h ;ź z z kreska db 44h , 64h , 55h , 4Ch , 44h ;ż z z kropka Db 10h , 7Fh , 44h , 42h , 40h ;Ł polskie L db 04h , 4Ah , 4Bh , 4Ah , 30h ;Ś polskie S db 62h , 56h , 4Bh , 46h , 42h ;Ź Z z kreska db 61h , 59h , 49h , 4Dh , 43h ;Ż z z kropka db 7Eh , 43h , 41h , 43h , 7Eh ;symbol pustej baterii db 7eh , 63h , 61h , 63h , 7eh ;bateria+1 db 7eh , 73h , 71h , 73h , 7eh ;bateria+2 db 7eh , 7bh , 79h , 7bh , 7eh ;bateria+3 db 7eh , 7fh , 7dh , 7fh , 7eh ;bateria+4 db 7eh , 7fh , 7fh , 7fh , 7eh ;bateria+5 full db 80h , 80h , 80h , 80h , 80h ;1pix hor. db 0c0h , 0c0h , 0c0h , 0c0h , 0c0h ;2pix hor. db 0e0h , 0e0h , 0e0h , 0e0h , 0e0h ;3pix db 0f0h , 0f0h , 0f0h , 0f0h , 0f0h ;4pix db 0f8h , 0f8h , 0f8h , 0f8h , 0f8h ;5pix db 0fch , 0fch , 0fch , 0fch , 0fch ;6pix db 0feh , 0feh , 0feh , 0feh , 0feh ;7pix db 0,0,0,0,0 ;ˇ db 00h , 00h , 00h , 7Fh , 7Fh ;kreska pionowa 2pix db 00h , 00h , 7Fh , 7Fh , 7Fh ;kreska pionowa 3pix db 00h , 7Fh , 7Fh , 7Fh , 7Fh ;kreska pionowa 4pix Db 7Fh , 7Fh , 7Fh , 7Fh , 7Fh ;kreska pionowa 5pix Db 00h , 00h , 00h , 00h , 00h ;spacja db 00h , 00h , 5fh , 00h , 00h ;! db 00h , 03h , 00h , 03h , 00h ;" db 14h , 7fh , 14h , 7fh , 14h ;# db 24h , 2ah , 7fh , 2ah , 12h ;$ db 23h , 10h , 08h , 04h , 62h ;% db 20h , 54h , 4ah , 34h , 50h ;& db 00h , 00h , 03h , 00h , 00h ;' db 00h , 1ch , 22h , 41h , 41h ;( db 00h , 41h , 41h , 22h , 1ch ;) db 2ah , 1ch , 3eh , 1ch , 2ah ;* db 08h , 08h , 7eh , 08h , 08h ;+ db 00h , 40h , 70h , 30h , 00h ;, db 08h , 08h , 08h , 08h , 08h ;- db 00h , 00h , 60h , 60h , 00h ;. db 20h , 10h , 08h , 04h , 02h ;/ db 3Eh , 51h , 49h , 45h , 3Eh ;0 db 00h , 42h , 7Fh , 40h , 00h ;1 db 42h , 61h , 51h , 49h , 46h ;2 Db 22h , 41h , 49h , 49h , 36h ;3 db 18h , 14h , 12h , 7Fh , 10h ;4 db 27h , 45h , 45h , 45h , 39h ;5 db 3Eh , 49h , 49h , 49h , 32h ;6 db 61h , 11h , 09h , 05h , 03h ;7 db 36h , 49h , 49h , 49h , 36h ;8 db 26h , 49h , 49h , 49h , 3Eh ;9 db 00h , 00h , 36h , 36h , 00h ;: db 00h , 40h , 76h , 36h , 00h ;; db 00h , 08h , 14h , 22h , 41h ;< db 14h , 14h , 14h , 14h , 14h ;= db 00h , 41h , 22h , 14h , 08h ;>



db 02h , 01h , 59h , 05h , 02h ;? db 3Ch , 42h , 5ah , 5ah , 1ch ;@ db 7Ch , 12h , 11h , 12h , 7Ch ;A db 7Fh , 49h , 49h , 49h , 36h ;B db 3Eh , 41h , 41h , 41h , 22h ;C db 7Fh , 41h , 41h , 41h , 3Eh ;D db 7Fh , 49h , 49h , 49h , 41h ;E Db 7Fh , 09h , 09h , 09h , 01h ;F db 3Eh , 41h , 49h , 49h , 3Ah ;G db 7Fh , 08h , 08h , 08h , 7Fh ;H db 00h , 41h , 7Fh , 41h , 00h ;I db 20h , 41h , 41h , 41h , 3Fh ;J db 7Fh , 08h , 14h , 22h , 41h ;K db 7Fh , 40h , 40h , 40h , 40h ;L db 7Fh , 02h , 04h , 02h , 7Fh ;M Db 7Fh , 04h , 08h , 10h , 7Fh ;N db 3Eh , 41h , 41h , 41h , 3Eh ;O db 7Fh , 09h , 09h , 09h , 06h ;P db 3Eh , 41h , 51h , 61h , 7Eh ;Q db 7Fh , 09h , 19h , 29h , 46h ;R db 06h , 49h , 49h , 49h , 30h ;S db 01h , 01h , 7Fh , 01h , 01h ;T db 3Fh , 40h , 40h , 40h , 3Fh ;U Db 1Fh , 20h , 40h , 20h , 1Fh ;V db 7Fh , 20h , 10h , 20h , 7Fh ;W db 63h , 14h , 08h , 14h , 63h ;X db 03h , 04h , 78h , 04h , 03h ;Y db 61h , 51h , 49h , 45h , 43h ;Z db 00h , 7fh , 41h , 41h , 00h ;[ db 02h , 04h , 08h , 10h , 20h ;\ db 00h , 41h , 41h , 7fh , 00h ;] db 00h , 02h , 01h , 02h , 00h ;^ db 40h , 40h , 40h , 40h , 40h ;_ db 00h , 00h , 01h , 02h , 00h ;` db 20h , 54h , 54h , 54h , 78h ;a db 3Fh , 48h , 44h , 44h , 38h ;b db 38h , 44h , 44h , 44h , 28h ;c db 38h , 44h , 44h , 48h , 7Fh ;d db 38h , 54h , 54h , 54h , 18h ;e db 00h , 04h , 0FEh , 05h , 00h ;f db 18h , 0A4h , 0A4h , 0A4h , 78h ;g Db 7Fh , 08h , 04h , 04h , 78h ;h db 00h , 44h , 7Dh , 40h , 00h ;i db 00h , 80h , 84h , 7Dh , 00h ;j db 7Fh , 20h , 10h , 28h , 44h ;k db 00h , 41h , 7Fh , 40h , 00h ;l db 7Ch , 04h , 18h , 04h , 7Ch ;m db 7Ch , 08h , 04h , 04h , 78h ;n db 38h , 44h , 44h , 44h , 38h ;o Db 0FCh , 14h , 24h , 24h , 18h ;p db 18h , 24h , 24h , 14h , 0FCh ;q db 7Ch , 04h , 04h , 08h , 00h ;r db 08h , 54h , 54h , 54h , 20h ;s db 04h , 3Fh , 44h , 40h , 00h ;t db 3Ch , 40h , 40h , 40h , 3Ch ;u db 1Ch , 20h , 40h , 20h , 1Ch ;v db 3Ch , 40h , 30h , 40h , 3Ch ;w Db 44h , 28h , 10h , 28h , 44h ;x db 0CH , 10H , 0A0H , 0A0H , 7CH ;y db 44h , 64h , 54h , 4Ch , 44h ;z db 00h , 08h , 36h , 41h , 00h ;{ db 00h , 00h , 36h , 00h , 00h ;| db 00h , 41h , 36h , 08h , 00h ;} db 08h , 04h , 08h , 10h , 08h ;~ db 0,0,0,0,0 ;free



----------------end LCD3410.ASM-------------------


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required