Thông báo

Collapse
No announcement yet.

Chế độ 4 bit của LCD

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Chế độ 4 bit của LCD

    Em đang viết code cho LCD ở chế độ 4 bit , nhưng em không thể ép con trỏ về đầu dòng 2 được, dù em đã khai báo chế độ 4 bit .Các anh chị giúp em với

  • #2
    Bạn dùng VDK gì vậy? Và viết chương trình bằng ngôn ngữ gì?
    Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
    http://diencongnghiep360.com/
    http://tudienhathe.vn/

    Comment


    • #3
      Mình dùng chíp AT89S52 và viết bằng assembly

      Comment


      • #4
        4 bit LCD

        Bạn có thể đưa code lên cho mọi người check thử? Đây là code của mình để bạn tham khảo nhé
        Code:
         ;In this whole 4-bit tutorial LCD is connected to
        ;my controller in following way...
        ;D4 - P3.0
        ;D5 - P3.1
        ;D6 - P3.2
        ;D7 - P3.3
        ;EN - P3.7
        ;RS - P3.5
        ;RW gnd
        
                lcd_port equ P3         ;LCD connected to Port3
                en equ P3.7             ;Enable connected to P3.7
                rs equ P3.5             ;Register select to P3.5
               
        lcd_reset:                  ;LCD reset sequence
                mov lcd_port, #0FFH
                mov delay,#20           ;20mS delay
                acall delayms
                mov lcd_port, #83H      ;Data = 30H, EN = 1, First Init
                mov lcd_port, #03H      ;Data = 30H, EN = 0
                mov delay,#15           ;Delay 15mS
                acall delayms
                mov lcd_port, #83H      ;Second Init, Data = 30H, EN = 1
                mov lcd_port, #03H      ;Data = 30H, EN = 0
                mov delay,#5            ;Delay 5mS
                acall delayms
                mov lcd_port, #83H      ;Third Init
                mov lcd_port, #03H
                mov delay,#5            ;Delay 5mS
                acall delayms
                mov lcd_port, #82H      ;Select Data width (20H for 4bit)
                mov lcd_port, #02H      ;Data = 20H, EN = 0
                mov delay,#5            ;Delay 5mS
                acall delayms
                ret
        
        lcd_init:
                acall lcd_reset         ;Call LCD Reset sequence
                mov a,#28H              ;4-bit, 2 line, 5x7 dots
                acall lcd_cmd           ;Call LCD command
                mov a,#0CH              ;Display ON cursor OFF
                acall lcd_cmd           ;Call LCD command
                mov a,#06H              ;Set entry mode (Auto increment)
                acall lcd_cmd           ;Call LCD command
                mov a,#80H              ;Bring cursor to line 1
                acall lcd_cmd           ;Call LCD command
                ret
        lcd_cmd:                  ;LCD command Routine
                mov temp,a            ;Save a copy of command to temp
                swap a                ;Swap to use higher nibble
                anl a,#0FH            ;Mask the first four bits
                add a,#80H            ;Enable = 1, RS = 0
                mov lcd_port,a        ;Move it to lcd port
                anl a,#0FH            ;Enable = 0, RS = 0
                mov lcd_port,a        ;Move to lcd port
        
                mov a,temp            ;Reload the command from temp
                anl a,#0FH            ;Mask first four bits
                add a,#80H            ;Enable = 1
                mov lcd_port,a        ;Move to port
                anl a,#0FH            ;Enable = 0
                mov lcd_port,a        ;Move to lcd port
        
                mov delay,#1          ;delay 1 ms
                acall delayms
                ret
        
        lcd_dat:                  ;LCD data Routine
                mov temp,a            ;Keep copy of data in temp
                swap a                ;We need higher nibble
                anl a,#0FH            ;Mask first four bits
                add a,#0A0H           ;Enable = 1, RS = 1
                mov lcd_port,a        ;Move to lcd port
                nop
                clr en                ;Enable = 0
        
                mov a,temp            ;Reload the data from temp
                anl a,#0FH            ;we need lower nibble now
                add a,#0A0H           ;Enable = 1, RS = 1
                mov lcd_port,a        ;Move to lcd port
                nop
                clr en                ;Enable = 0
        
                mov delay,#1          ;Delay 1mS
                acall delayms
                ret

        Comment


        • #5
          cảm ơn bạn, mình làm được rồi

          Comment

          Về tác giả

          Collapse

          vanquangtk Tìm hiểu thêm về vanquangtk

          Bài viết mới nhất

          Collapse

          Đang tải...
          X