اطلاعیه

Collapse
No announcement yet.

خواندن از LCD با 8051 خواهش می کنم کمک کنید!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    خواندن از LCD با 8051 خواهش می کنم کمک کنید!

    سلام. من می خوام با 8051 از یه LCD بخونم. نوشتن توی LCD رو بلدم اما وقتی همون کارای نوشتنو با تغییرات لازم برای خوندن می کنم، جواب نمی ده. اطفا اگه اطلاعاتی در این زمینه دارید کمکم کنید! برای خوندن از LCD باید چه کدی نوشت؟

    #2
    پاسخ : خواندن از LCD با 8051 خواهش می کنم کمک کنید!

    باید همون مراحلی که برای نوشتن به کار میبری رو به کار ببری ... ولی ایندفعه باید پورت مورد نظر رو ورودی کنی بعد دیتا رو از lcd بخونی...
    www.icesi.ir

    دیدگاه


      #3
      پاسخ : خواندن از LCD با 8051 خواهش می کنم کمک کنید!

      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
      MOV R1,P1
      اگه پورت رو ورودی کنم، بعدش این کد درسته؟
      چطور ورودیش کنم؟ با یک کردن اون پورت؟

      دیدگاه


        #4
        پاسخ : خواندن از LCD با 8051 خواهش می کنم کمک کنید!

        برنامت که درسته...
        با یک کردن پورت اون پورت ورودی میشه..
        یه کاری کن اول برنامه پورت رو ورودی کن ببین ... بعد ببین که میشه روی lcd نوشت یا نه؟؟
        اگه بشه پورتت ورودی هست به راحتی میتونی از lcd بخونی..(ن خودم تست نکردم)
        www.icesi.ir

        دیدگاه


          #5
          پاسخ : خواندن از 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

          دیدگاه

          لطفا صبر کنید...
          X