??? 01/31/07 11:52 Read: times |
#131780 - TESTED code for LCD Responding to: ???'s previous message |
i have made this code have tested
you copy past in simulator simulate the code create hex file send it to controller IF then its not working then it is sure hardware prob or simulating prob some times lcd does not get initialised because of the delay is not proper and i have used busy flag so dont wory about delays and pin configuration you can modify ;********************************************************************* ;THIS CODE WILL DISPAY A CHARACTER "G" ON LCD AND SINK THE CHAR DOWNWARDS ;********************************************************************* .org 0000h ;********************************************************************* ;PORT DEFINED (CAN BE MODIFIED ACCORING TO CIRCUIT ;********************************************************************* ;p0= d0-d7 ;RS rs=0 for command rs=1 for data ;RW wr=0 for write wr=1 for read ;EN enable -\_ .equ RS, p3.5 .equ RW, p3.4 .equ EN, p3.3 ;********************************************************************* ;TO INITIALIZE THE LCD ;********************************************************************* mov a,#38h ;2 line 5x7 acall command mov a,#0ch ;lcd on cursor on acall command mov a,#01h ;clr lcd acall command mov a,#06h ;shift cursor right acall command mov a,#'a' ; testing for "a" acall ddisp acall delay acall writech ;writes char in CG ram of lcd mov a,#80h ;go to start of lcd acall command mov a,#01h acall command ;clr disp ;********************************************************************* ;LOOP FOR DISPLAYING 8 ROW (1CHAR) STORED IN CG RAM ;********************************************************************* s: mov r0,#00h ;CGram address again1: mov a,#85h ;DDRAM addres display position on lcd acall command acall delay mov a,r0 ; r0=0 means first char of cg ram acall ddisp ; display on lcd inc r0 ; inc counter cjne r0,#08h,again1 sjmp s ; main loop reapet command:acall ready ;chk lcd is ready to accept command mov p0,a clr RS ;rs=0 for command clr RW ;wr=0 for write setb EN clr EN ret ddisp: acall ready mov p0,a setb RS ;rs=1 for data clr RW ;wr=0 for write setb EN clr EN ret ready: setb p0.7 clr RS ;rs=0 command setb RW ;wr=1 read back: clr EN ;enable setb EN jb p0.7,back ret delay: mov r7,#99h w2: mov r6,#00h w1: djnz r6,w1 djnz r7,w2 ret writech:acall ready mov a,#40h ; go to 00 of cgram mov p0,a clr RW clr RS setb EN clr EN mov r7,#64 ;counter for 64 times 8pix hor x 8lines = 1 char mov dptr,#tabel ;load address values of tabel wr1: clr a acall ready movc a,@a+dptr mov p0,a ; this will write tabel in cgram (address 40 of lcd setb RS clr RW setb EN clr EN inc dptr djnz r7,wr1 ret ;********************************************************************* ;TABEL FOR 8 CHAR ;MADE SUCH THAT CHAR "G" IS SINKING DOWN ;********************************************************************* tabel: .db 00001110b ;char 1 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00010000b .db 00010011b .db 00010001b .db 00010001b .db 00001110b .db 00000000b .db 00001110b ;char 2 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00010000b .db 00010011b .db 00010001b .db 00010001b .db 00000000b .db 00000000b .db 00001110b ;char 3 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00010000b .db 00010011b .db 00010001b .db 00000000b .db 00000000b .db 00000000b .db 00001110b ;char 4 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00010000b .db 00010011b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00001110b ;char 5 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00010000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00001110b ;char 6 of CGRAM .db 00010001b ;1=high pixel .db 00010000b ;0=low pix .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00001110b ;char 7 of CGRAM .db 00010001b ;1=high pixel .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00000000b .db 00001110b ;char 8 of CGRAM .end |