We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello EveryBody, I am working on LCD (16x2) and i have built some of my ideas about LCD programming but i am using Assembly language for my LCD, well as all things was going sweet so as every programmer is having something wrong ... (in starting) my problem specification is that i am using that LCD in 8-bit mode and i have connected my AT89C2051 (with some pull-ups) P1 DB P3.7 RS P3.5 RW P3.4 E and i have interfaced my LCD with my MCu but my problem is that i am getting the LCD not working ... (i dont know why) .... i have interfaced my LCD but there only little bit of contrast....i mean to say that there nothing visible... even i move my 10K-ohm-POT to the ground.....
and i have done some programming, so could any one please help me .... (i am really stucked) any help will be appritiatable.....
<code> ORG 0000H LJMP MAIN ORG 0030H RS EQU P3.7 RW EQU P3.5 EN EQU P3.4 MAIN: LCALL DELAY CLR EN MOV DPTR,#MYCOM LCALL LCD_INI MOV DPTR,#MYDATA LCALL LOOP MOV A,#0C9h LCALL COM LCALL DELAY MOV DPTR,#MYDAT2 LCALL LOOP AGAIN: SJMP AGAIN ;======================================== COM: MOV P1,A CLR RS CLR RW SETB EN LCALL DELAY CLR EN RET ;======================================== DATAW: MOV P1,A SETB RS CLR RW SETB EN LCALL DELAY CLR EN RET ;======================================== DELAY: MOV R6,#100 HERE2: MOV R7,#250 HERE: DJNZ R7,HERE DJNZ R6,HERE2 RET ;======================================== LCD_INI: CLR A MOVC A,@A+DPTR LCALL COM LCALL DELAY JZ GO_B1 INC DPTR SJMP LCD_INI GO_B1: RET ;======================================== LOOP: CLR A MOVC A,@A+DPTR LCALL DATAW LCALL DELAY INC DPTR JZ GO_B2 SJMP LOOP GO_B2: RET ;======================================== MYCOM: DB 38H,0EH,06,01,84H,0 MYDATA: DB "DAREDEVIL",0 MYDAT2: DB "GUNS AND ROSES",0 ;======================================== END </code>
Asif Ali "DareDevil"
Jonny Doin said, "I have no idea if the LCD init codes on MYCOM are right for the LCD you are using, but your program as it is will not work as you expect it to." (my emphasis)
Asif Ali replied, "i have tried to varify the output on Keil Simulator in Single step Debugging but the output is desired"
That's the problem with simulation: if your design is based on a flawed interpretation, and your simulation is also based on that same flawed assumption, then the simulator will give you the results that you expected - but the real hardware will not!
"One piece of advice: do not trust RESET values"
This is a very common area where the simulator can differ from reality!
"Always initialize what you use."
Absolutely!
Thanks Sir Andy for your comments well sir i have done a new code for my MCu and hoping that you will tell me my Mistake ... thanks in advance
ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#038H LCALL COM MOV A,#00EH LCALL COM MOV A,#001H LCALL COM MOV A,#006H LCALL COM MOV A,#084H LCALL COM MOV A,'A' LCALL DATAW MOV A,'L' LCALL DATAW MOV A,'I' LCALL DATAW AGAIN: SJMP AGAIN COM: MOV P1,A CLR P2.0 CLR P2.1 SETB P2.2 CLR P2.2 LCALL DELAY RET DATAW: MOV P1,A SETB P2.0 CLR P2.1 SETB P2.2 CLR P2.2 LCALL DELAY RET DELAY: MOV R6,#50 HERE2: MOV R7,#255 HERE: DJNZ R7,HERE DJNZ R6,HERE2 RET END
Well sir It will only Send "ALI" to LCD (in my imagination)
Hi Ali, It seems your reset sequence is going wrong somewhere. Try the soft reset sequence properly . I remember that Some LCDs require 0x38 (the first seq) to be written 3 times and then follow the other ones.
suvidh
"tell me my Mistake"
You have still not put one single comment in it!