سلام. من می خوام با 8051 از یه LCD بخونم. نوشتن توی LCD رو بلدم اما وقتی همون کارای نوشتنو با تغییرات لازم برای خوندن می کنم، جواب نمی ده. اطفا اگه اطلاعاتی در این زمینه دارید کمکم کنید! برای خوندن از LCD باید چه کدی نوشت؟
اطلاعیه
Collapse
No announcement yet.
خواندن از LCD با 8051 خواهش می کنم کمک کنید!
Collapse
X
-
پاسخ : خواندن از LCD با 8051 خواهش می کنم کمک کنید!
سلام. خیلی ممنون از جوابهاتون. من همین کارو کردم اما برنامه رو امروز روی میکرو ریختم تست کردم جواب نداد! ایراد از زیر برنامه خوندنه چون بقیه قسمتها جواب می ده. برای ورودی کردن پورت mov p1, #0ff کافیه؟ من برنامه رو اینجا می نویسم قسمت خوندن رو هم با یه رنگ دیگه مشخص می کنم اگر براتون ممکن بود یه نیگا بهش بندازین. ممنون
ایراد از زیر برنامه خوندنه چون بقیه قسمتها جواب می ده.
کد:;p1= data pin ;p2.0 connected to RS pin ;p2.1 connected to R/W pin ;p2.2 connected to E pin ORG 0H MOV A,#38H ;init ACALL COMMAND ;command subroutine MOV A,#0EH ;LCD on, cursor on ACALL COMMAND MOV A,#01H ;clear LCD command ACALL COMMAND MOV A,#80H ;cursor: Line 1, position 1 ACALL COMMAND MOV A,#'A' ;Display letter 'A' ACALL DATA_DISPLAY CALL DELAY MOV A,#80H ;cursor: Line 1, position 1 ACALL COMMAND ACALL DATA_READ ;reads the data in current location & ;stores it to R1 MOV A,#85H ;cursor: Line 1, position 6 ACALL COMMAND MOV A,R1 ;Display letter 'A'(the data stored in R1) ACALL DATA_DISPLAY HERE: SJMP HERE COMMAND: ACALL READY ;Is LCD ready? MOV P1,A CLR P2.0 ;RS=0 for command CLR P2.1 ;R/W=0 to write to LCD SETB P2.2 ;E=1 for H-to-L pulse CLR P2.2 ;E=0, Latch in RET DATA_DISPLAY: ACALL READY MOV P1,A ;send 'A' to port 1 SETB P2.0 ;RS=1 for data CLR P2.1 ;R/W=0 to write to LCD SETB P2.2 ;E=1 for H-to-L pulse CLR P2.2 ;E=0, Latch in RET DATA_READ: ACALL READY MOV P1,#0FFH ;make p1 input port and ;make sure that the data is read from LCD ;and not from the history of p1 SETB P2.0 ;RS=1 for data SETB P2.1 ;R/W=1 to read from LCD SETB P2.2 ;E=1 for H-to-L pulse CLR P2.2 ;E=0, Latch in MOV R1,P1 ;reads the data in current location & ;stores it to R1 RET READY: SETB P1.7 ;make p1.7 input port CLR P2.0 ;RS=0 access command reg SETB P2.1 ;R/W=1 read command reg ;read command reg and check busy flag BACK: CLR P2.2 ;E=1 for H-to-L pulse SETB P2.2 ;E=0 for H-to-L pulse JB P1.7,BACK RET DELAY: MOV R5,#100 WAIT1: MOV R4,#100 WAIT2: MOV R3,#50 WAIT3: DJNZ R3,WAIT3 DJNZ R4,WAIT2 DJNZ R5,WAIT1 RET END
دیدگاه
دیدگاه