Lcd

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • friends
    Đệ tử 1 túi
    • Jul 2006
    • 19

    #1

    Lcd

    Cac huynh de cho minh hoi chut xiu :
    Chuong trinh ben duoi minh viet de hien thi ki tu A len LCD ,nhung khi mo phong no thi khong chay ,minh khong biet sai o cho nao ,cac huynh de kiem tra dum va sua dum cho minh nha ,minh dang lam de tai nen dang can gap .Cam on nhieu!

    Code:
    TITLE "HIEN THI LEN LCD"
    PROCESSOR P16F876A
    #INCLUDE <P16F876A.INC> ;CHEN THU VIEN LIEN KET CHO CHUONG TRINH
    __CONFIG 3F71H ;CAU HINH CAC BIT HE THONG
    ERRORLEVEL -302 ;BO DI CAC LOI CHON BANK
    
    cblock 0X020
    
    LCD_TEMP
    LCD_TEMP1
    DELAY 
    X_DELAY 
    endc 
    LCD_DATA EQU PORTB 
    LCD_DATA_TRIS EQU TRISB
    LCD_CTRL EQU PORTA 
    
    ; PORTA control bits
    LCD_E EQU 2 
    LCD_RW EQU 1 
    LCD_RS EQU 0
    
    
    org 0x000
    GOTO START 
    START 
    
    ;HIEN THI NHIET DO LEN LCD
    
    LCDINIT
    
    CLRF LCD_CTRL 
    
    MOVLW 0x01E
    CALL X_DELAY500 ; 30 * 0.5mS = 15mS
    
    MOVLW 0x038 ; 8-bit-interface, 2-lines
    CALL LCDPUTCMD
    MOVLW 0x000 ; disp.off, curs.off, no-blink
    CALL LCDDMODE
    CALL LCDCLEAR
    MOVLW 0x004 ; disp.on, curs.off
    CALL LCDDMODE
    MOVLW 0x002 ; auto-inc (shift-cursor)
    CALL LCDEMODE
    ;MOVLW 0x01E
    ;CALL X_DELAY500
    CALL LCDPUTCHAR
    RETURN
    ;************************************************* *********************
    
    LCDBUSY
    BSF STATUS,RP0 ; bank 1
    MOVLW 0x0FF ; Set PORTB for input
    MOVWF LCD_DATA_TRIS
    BCF STATUS, RP0 ; bank 0
    BCF LCD_CTRL, LCD_RS ; lenh dang duoc viet len LCD
    BSF LCD_CTRL, LCD_RW ; vdk doc du lieu tu LCD
    BSF LCD_CTRL, LCD_E ; cho phep giao tiep LCD
    MOVF LCD_DATA, W ; Read busy flag + DDram address
    BCF LCD_CTRL, LCD_E ; cam
    ANDLW 0x80 ; Check Busy flag, High = Busy
    BTFSS STATUS, Z
    GOTO LCDBUSY
    LCDNOTBUSY
    BCF LCD_CTRL, LCD_RW
    BSF STATUS, RP0 ; bank 1
    MOVLW 0x000
    MOVWF LCD_DATA_TRIS ; Set PORTB for output
    BCF STATUS, RP0 ; bank 0
    RETURN
    ;************************************************* ********************
    
    LCDDMODE
    ANDLW 0x007 ; Strip upper bits
    IORLW 0x008 ; Function set
    CALL LCDPUTCMD
    RETURN
    ;************************************************* *********************
    
    LCDCLEAR
    MOVLW 0x001
    CALL LCDPUTCMD
    RETURN
    ;************************************************* ********************
    
    LCDEMODE
    ANDLW 0x003 ; Strip upper bits
    IORLW 0x004 ; Function set
    CALL LCDPUTCMD
    RETURN
    
    ;************************************************* *********************
    
    LCDPUTCHAR
    Movlw 0x080 ;dinh dia chi de xuat A
    CALL LCDPUTCMD 
    Movlw 'A'
    movwf LCD_TEMP
    CALL LCDBUSY ; Wait for LCD to be ready
    BCF LCD_CTRL, LCD_RW ; vdk viet du lieu len LCD
    BSF LCD_CTRL, LCD_RS ; du lieu dang duoc viet len LCD
    BSF LCD_CTRL, LCD_E ; cho phep giao tiep LCD
    MOVF LCD_TEMP, W 
    MOVWF LCD_DATA ; Send data to LCD
    BCF LCD_CTRL, LCD_E ; cam giao tiep LCD
    RETURN
    
    
    
    ;************************************************* *********************
    
    LCDPUTCMD
    MOVWF LCD_TEMP ; Command to send is in W
    CALL LCDBUSY ; Wait for LCD to be ready
    BCF LCD_CTRL, LCD_RW ; vdk viet du lieu len LCD
    BCF LCD_CTRL, LCD_RS ; lenh dang duoc viet len LCD
    BSF LCD_CTRL, LCD_E ; cho phep giao tiep LCD
    MOVF LCD_TEMP, W
    MOVWF LCD_DATA ; Send data to LCD
    BCF LCD_CTRL, LCD_E ; cam giao tiep LCD
    RETURN
    
    ;************************************************* ******************
    DELAY500
    MOVLW D'165' ; +1 1 cycle
    MOVWF DELAY ; +2 1 cycle
    DELAY500_LOOP
    DECFSZ DELAY, F ; step1 1 cycle
    GOTO DELAY500_LOOP ; step2 2 cycles
    DELAY500_END
    RETURN ; +3 2 cycles
    
    ;*********************************** a delay of 'W' * 500mS
    X_DELAY500
    MOVWF X_DELAY ; +1 1 cycle
    X_DELAY500_LOOP
    CALL DELAY500 ; step1 wait 500uSec
    DECFSZ X_DELAY, F ; step2 1 cycle
    GOTO X_DELAY500_LOOP ; step3 2 cycles
    X_DELAY500_END
    RETURN ; +2 2 cycles
    end

    hinh mo_phong_LCD duoi day:
    Attached Files
    Last edited by namqn; 16-04-2007, 06:00 PM.
  • namqn
    Trưởng lão PIC bang
    • Feb 2006
    • 3020

    #2
    Module LCD của bạn nhìn lạ lắm, không có vẻ là một module của Proteus. Bạn chọn module LM016L (trong Optoelectronics, Alphanumeric LCDs) thử xem.

    Lần sau bạn chú ý chuyển thành tập tin dạng .gif hay .jpg trước rồi hãy gửi kèm, như vậy sẽ tiết kiệm được không gian lưu trữ và băng thông cho diễn đàn.

    Thân,
    Biển học mênh mông, sức người có hạn.

    Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
    http://www.picvietnam.com/forum/showthread.php?t=1263

    Comment

    • friends
      Đệ tử 1 túi
      • Jul 2006
      • 19

      #3
      lcd_tiep

      Nguyên văn bởi namqn View Post
      Module LCD của bạn nhìn lạ lắm, không có vẻ là một module của Proteus. Bạn chọn module LM016L (trong Optoelectronics, Alphanumeric LCDs) thử xem.

      Lần sau bạn chú ý chuyển thành tập tin dạng .gif hay .jpg trước rồi hãy gửi kèm, như vậy sẽ tiết kiệm được không gian lưu trữ và băng thông cho diễn đàn.

      Thân,
      anh oi, em thay chữ RETURN của LCDINIT ở trên bẳng chữ " GOTO $ " và thay LCD đó bẳng LM016L mà mô phỏng cũng không chạy ,anh hay mọi người thử xem lại kĩ dùm em cái nha, em đã mất nhiều thời gian để kiểm tra nó mà cũng không thấy chạy (có thể nó có liên quan tới delay không?),làm cho em không thể lập trình được các phần khác.

      Comment

      • namqn
        Trưởng lão PIC bang
        • Feb 2006
        • 3020

        #4
        Bạn đã xem thử ví dụ của Proteus chưa? (Ví dụ nằm trong thư mục 'Samples\PIC 4 bit LCD Driver', trong thư mục cài đặt Proteus).

        Tôi hỏi một câu hơi thừa: Bạn biết cách nạp chương trình đã dịch vào PIC trong Proteus chứ?

        Bạn có mạch thật chứ? Nên thử trên mạch thật.

        Thân,
        Biển học mênh mông, sức người có hạn.

        Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
        http://www.picvietnam.com/forum/showthread.php?t=1263

        Comment

        • friends
          Đệ tử 1 túi
          • Jul 2006
          • 19

          #5
          lcd

          Nguyên văn bởi namqn View Post
          Bạn đã xem thử ví dụ của Proteus chưa? (Ví dụ nằm trong thư mục 'Samples\PIC 4 bit LCD Driver', trong thư mục cài đặt Proteus).

          Tôi hỏi một câu hơi thừa: Bạn biết cách nạp chương trình đã dịch vào PIC trong Proteus chứ?

          Bạn có mạch thật chứ? Nên thử trên mạch thật.

          Thân,
          em viết chương trình hiển thị chữ lên lcd bằng ngôn ngữ C và mô phỏng bằng Proteus thì nó chạy ,còn chương trình asm này thì em mô phỏng không thấy chạy ,em mắc mạch thật để kiểm tra nhiều lần vẫn không thấy có dấu hiệu gì .

          Comment

          • namqn
            Trưởng lão PIC bang
            • Feb 2006
            • 3020

            #6
            Bạn thử hình dung tình huống module LCD của bạn được khởi tạo mặc định là giao tiếp ở chế độ 4-bit sau khi bật nguồn. Khi đó phần mã thiết lập chế độ 8-bit của bạn ở trên có ổn không? Ngay cả giao tiếp mặc định là 8-bit sau khi bật nguồn thì phần code của bạn vẫn không ổn.

            Các trình biên dịch ngôn ngữ cấp cao thường thực hiện thiết lập một cách tổng quát, không phụ thuộc vào chế độ giao tiếp mặc định khi bật nguồn của module LCD. Bạn có thể xem thử code hợp ngữ được sinh ra cho chương trình C của bạn để biết họ khởi tạo module ra sao.

            Bạn nên tìm đọc datasheet của HD44780 (đa số chip điều khiển LCD ký tự là tương thích với HD44780), trong đó bạn sẽ thấy quy trình khởi tạo LCD, và sẽ thấy chỗ không ổn trong phần code của bạn.

            Thân,
            Last edited by namqn; 13-05-2007, 10:33 PM.
            Biển học mênh mông, sức người có hạn.

            Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
            http://www.picvietnam.com/forum/showthread.php?t=1263

            Comment

            • namdinhno1
              Nhập môn đệ tử
              • Jun 2006
              • 10

              #7
              ôi quả thực là nhìn vào chương trình LCD của bạn chả ổn tí nào.Thực ra viết cho LCD đơn giản hơn ,mà bạn viết hơi rối nên khó đọc . Có lẽ bạn nên sắp xếp lại cho gọn hơn thì dễ tra lỗi hơn nhiều
              Lưu Diệc Phi - My Love

              Comment

              • atclub
                Nhập môn đệ tử
                • Apr 2007
                • 10

                #8
                anh namdinhno1 có thể post lên code phần khởi tạo cho LCD được không?em chưa hiểu rõ lắm về lập trình hiển thị trên LCD, muốn tìm hiểu mà khó quá!

                Comment

                • atclub
                  Nhập môn đệ tử
                  • Apr 2007
                  • 10

                  #9
                  Bắt đầu tìm hiểu LCD

                  Theo như bác namqn chỉ dẫn, em đã load datasheet HD44780 về, có đoạn viết trong ảnh em gửi kèm.
                  Cho em hỏi, Khi viết code thì chỉ cần làm theo các bước như trên hay còn phải khai báo thêm thủ tục gì nữa? Mong mọi người giúp đỡ
                  Attached Files

                  Comment

                  • friends
                    Đệ tử 1 túi
                    • Jul 2006
                    • 19

                    #10
                    lcd_gui anh namqn

                    Nguyên văn bởi namqn View Post
                    Bạn thử hình dung tình huống module LCD của bạn được khởi tạo mặc định là giao tiếp ở chế độ 4-bit sau khi bật nguồn. Khi đó phần mã thiết lập chế độ 8-bit của bạn ở trên có ổn không? Ngay cả giao tiếp mặc định là 8-bit sau khi bật nguồn thì phần code của bạn vẫn không ổn.

                    Các trình biên dịch ngôn ngữ cấp cao thường thực hiện thiết lập một cách tổng quát, không phụ thuộc vào chế độ giao tiếp mặc định khi bật nguồn của module LCD. Bạn có thể xem thử code hợp ngữ được sinh ra từ cho chương trình C của bạn để biết họ khởi tạo module ra sao.

                    Bạn nên tìm đọc datasheet của HD44780 (đa số chip điều khiển LCD ký tự là tương thích với HD44780), trong đó bạn sẽ thấy quy trình khởi tạo LCD, và sẽ thấy chỗ không ổn trong phần code của bạn.

                    Thân,
                    anh namqn ơi ,dưới đây là chương trình khác viết về hiển thị lcd bằng hợp ngữ nhưng em không đọc cờ bận nữa mà dùng chương trình delay để chờ,chương trình này nhìn chắc có lẽ dể hiểu hơn ,em đã mô phỏng bằng protues và nó đã chạy nhưng em mắc mạch thực tế thì nó vẩn không chạy ,hình như lcd chưa nhận được dữ liệu thì phải, em có gửi sơ đồ mạch mô phỏng ở dưới dây ,và sơ đồ mắc thực tế cũng tương tự nhưng em dùng LCD loại TC1602C (con này có thêm 2 chân để thắp sáng đèn nền). Em có thử dùng thêm điện trở thanh 4k7 ở portB kéo lên cao thế mà vẫn không thấy nó chạy ,anh xem dùm em chương trình xem nó bị lỗi chổ nào mà không chạy ,có cần phải chỉnh sửa delay ở chổ nào để khi mắc mạch thực tế lcd đáp ứng được ,anh biết thì chỉ dùm em cái ,chứ giờ em bó tay luôn rồi .

                    chương trình ở đây

                    Code:
                     #include <p16f877a.inc>
                    
                    ;========================== Hien thi ra LCD
                    ;===== Port B = D7 ... D0
                    ;===== RE0->RS; RE1->RW; RE2->E
                      cblock	0X020
                    	        count		
                                         delay
                            	        x_delay
                      endc
                           
                    ;==========================
                    org		0X00
                    GOTO                  MAIN
                    MAIN
                    		bsf		    STATUS,RP0	; chon bank 1
                    		movlw		0x00
                    		movwf		TRISE
                    		movwf		TRISB
                            MOVLW        0X83
                            MOVWF        ADCON1              ;cac ngo dieu khien la digital
                            bcf	             STATUS,RP0	; chon bank 0		
                    		clrf		PORTE
                    		clrf		PORTB
                    		call		dl100ms
                    		call		dl100ms
                            call		dl100ms
                    		
                    ;==========================
                    start		
                            call		lcdinit
                    
                            call		dl100ms
                           	
                    ;==========================
                            call		line1
                            call             line2   
                            call             dl100ms
                            call             dl100ms
                            goto            $
                    ;==========================
                    line1
                    		movlw		081h                ;dinh dia chi
                    		call		address
                    		call		st_line1
                    		return
                    ;==========================
                    line2
                    		movlw		0c7h                ;dinh dia chi
                    		call		address
                    		call		st_line2
                    		return
                    ;==========================
                    st_line1
                    
                    
                    		clrf		count
                    		bcf		    STATUS,2
                    display1
                    		movf		count,0
                    		call		text1
                    		xorlw		0x00
                    		btfsc		STATUS,2
                    		goto		exit1
                    		call		display_lcd
                    		incf		count,1
                    		goto		display1
                    exit1
                    		bcf		    STATUS,2
                    		return
                    
                    ;==========================
                    st_line2
                    
                    
                    		clrf		count
                    		bcf		    STATUS,2
                    display2
                    		movf		count,0
                    		call		text2
                    		xorlw		0x00
                    		btfsc		STATUS,2
                    		goto		exit2
                    		call		display_lcd
                    		incf		count,1
                    		goto		display2
                    exit2
                    		bcf		    STATUS,2
                    		return
                    ;==========================HIEN THI KI TU
                    display_lcd
                            
                            
                    		bsf		    PORTE,2    ;set E
                    		nop
                    		nop
                    		bsf		    PORTE,0    ;set RS
                    		bcf		    PORTE,1    ;clr RW
                    		movwf		    PORTB      
                                              call		    dl2ms
                    		bcf		    PORTE,2    ;clr E
                    		nop
                    		nop
                    		bcf		    PORTE,0    ;clr RS
                    		call		    dl100ms
                    		return
                    
                    ;==========================KHOI TAO LCD
                    lcdinit
                    		bsf		    PORTE,2    ;set RS
                    		nop
                    		nop
                    		bcf		    PORTE,0    ;clr RS
                    		bcf		    PORTE,1    ;clr RW 
                    		movlw		    38h                ;8 bits,2 lines
                    		movwf		    PORTB
                           	             call		    dl2ms
                    		bcf		    PORTE,2    ;clr E
                    		call		    dl05ms
                            		;=================
                    		bsf		    PORTE,2     
                    		nop
                    		nop
                    		bcf		    PORTE,0
                    		bcf		    PORTE,1
                    		movlw		    0eh                  ;display on, cursor underline on,cursor blink off
                    		movwf		    PORTB
                    		call		    dl2ms
                         	             bcf		    PORTE,2
                    		call		    dl05ms
                            ;=================
                                              call		clrscr
                    
                    		bsf		    PORTE,2
                    		nop
                    		nop
                    		bcf		    PORTE,0
                    		bcf		    PORTE,1
                    		movlw		    06h               ;increment,display shift off
                    		movwf		    PORTB
                           	             call		    dl2ms
                    		bcf		    PORTE,2
                    		call		    dl05ms 
                                              return
                    ;========================== XOA MAN HINH
                    clrscr
                    		bsf		    PORTE,2       ;set E
                    		nop
                    		nop
                    		bcf		    PORTE,0       ;clr RS
                    		bcf		    PORTE,1       ;clr RW
                    		movlw		    01h
                    		movwf		    PORTB
                    		call		    dl2ms       ;2mS
                    		bcf		    PORTE,2
                    		call		    dl05ms         ;05mS
                    		return
                    		;=================
                    ;============================GUI DIA CHI
                    address 
                           
                    		bsf		    PORTE,2       ;set E
                    		nop			          		
                    		nop
                    		bcf		    PORTE,0       ;clr RS
                                              bcf		    PORTE,1       ;clr RW
                    		movwf		    PORTB
                                              call		    dl100ms
                                              bcf		    PORTE,2       ;clr E
                           	             call		    dl05ms
                           	             return
                    		
                    
                    ;******************************************delay 0.5ms = 500uS
                    dl05ms
                       	       movlw       D'165'              ; +1        1 cycle
                       	       movwf       delay               ; +2        1 cycle
                    delay500_loop
                       	       decfsz      delay, F            ; step1     1 cycle
                       	       goto        delay500_loop       ; step2     2 cycles
                                        delay500_end
                       	       return                          ; +3        2 cycles
                    
                    ;***********************************  delay 100ms
                    dl100ms
                                        movlw       D'200'              ; +1        1 cycle
                       	       movwf       x_delay            ; +1        1 cycle
                    x_delay500_loop
                       	       call        dl05ms            ; step1     wait 500uSec
                       	       decfsz      x_delay, F          ; step2     1 cycle
                       	       goto        x_delay500_loop     ; step3     2 cycles
                                        x_delay500_end
                       	       return                          ; +2        2 cycles
                    ;*********************************** delay 2ms
                    dl2ms
                                        movlw       D'4'              ; +1        1 cycle
                       	       movwf       x_delay            ; +1        1 cycle
                    x_delay500_loop1
                       	       call        dl05ms            ; step1     wait 500uSec
                       	       decfsz      x_delay, F          ; step2     1 cycle
                       	       goto        x_delay500_loop1     ; step3     2 cycles
                                        x_delay500_end1
                       	       return
                    
                    ;========================== 
                    text1
                    		addwf		02h,1
                    		retlw		'N'
                    		retlw		'H'
                    		retlw		'I'
                    		retlw		'E'
                    		retlw		'T'
                    		retlw		' '
                    		retlw		'D'
                    		retlw		'O'
                                              retlw		' '
                    		retlw		'P'
                    		retlw		'H'
                    		retlw		'O'
                    		retlw		'N'
                        	             retlw		'G'
                                             retlw		 0
                    
                    text2
                    		addwf		02h,1
                    		retlw		'3'
                    		retlw		'0'
                        	             retlw		0x0df
                    		retlw		'C'
                                              retlw		 0
                    
                         	        ;==========================	
                    END
                    Attached Files
                    Last edited by namqn; 12-05-2007, 05:52 PM.

                    Comment

                    • namqn
                      Trưởng lão PIC bang
                      • Feb 2006
                      • 3020

                      #11
                      Trình tự khởi tạo LCD ở chế độ giao tiếp 8-bit (theo datasheet của HD44780):
                      - Bật nguồn, chờ 15 ms sau khi nguồn đạt 4.5 V
                      - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                      - Chờ 4.1 ms
                      - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                      - Chờ 100 us
                      - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                      - Ghi lệnh b'0011NFxx' ra LCD (chưa dùng BF được)
                      - Ghi lệnh tắt màn hình (chưa dùng BF được)
                      - Ghi lệnh xóa màn hình (chưa dùng BF được)
                      - Ghi lệnh thiết lập cách nhập dữ liệu (chưa dùng BF được)
                      - Kết thúc quá trình khởi tạo

                      Từ đây trở đi có thể dùng BF.

                      Code của bạn chưa thực hiện quá trình khởi tạo này cho LCD. Nếu bạn thực hiện đầy đủ những thao tác này mà LCD vẫn không làm việc thì bạn có thể:
                      - Yêu cầu tôi gửi file .hex để bạn thử module
                      - Tìm xem chip điều khiển của module thực sự là chip gì, và tìm datasheet của nó.

                      Thân,
                      Biển học mênh mông, sức người có hạn.

                      Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
                      http://www.picvietnam.com/forum/showthread.php?t=1263

                      Comment

                      • friends
                        Đệ tử 1 túi
                        • Jul 2006
                        • 19

                        #12
                        lcd

                        Nguyên văn bởi namqn View Post
                        Trình tự khởi tạo LCD ở chế độ giao tiếp 8-bit (theo datasheet của HD44780):
                        - Bật nguồn, chờ 15 ms sau khi nguồn đạt 4.5 V
                        - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                        - Chờ 4.1 ms
                        - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                        - Chờ 100 us
                        - Ghi lệnh 0x3x ra LCD (chưa dùng BF được)
                        - Ghi lệnh b'0011NFxx' ra LCD (chưa dùng BF được)
                        - Ghi lệnh tắt màn hình (chưa dùng BF được)
                        - Ghi lệnh xóa màn hình (chưa dùng BF được)
                        - Ghi lệnh thiết lập cách nhập dữ liệu (chưa dùng BF được)
                        - Kết thúc quá trình khởi tạo

                        Từ đây trở đi có thể dùng BF.


                        Code của bạn chưa thực hiện quá trình khởi tạo này cho LCD. Nếu bạn thực hiện đầy đủ những thao tác này mà LCD vẫn không làm việc thì bạn có thể:
                        - Yêu cầu tôi gửi file .hex để bạn thử module
                        - Tìm xem chip điều khiển của module thực sự là chip gì, và tìm datasheet của nó.

                        Thân,
                        anh namqn oi ,chương trình trên em khởi tạo thêm những thông số anh đã nói ở trên và em không dùng cờ bận để kiểm tra mà dùng delay như trên để chờ có được không? ah anh hay ai đó đã viết hợp ngữ cho pic (giao tiếp 8 đường) để hiển thị lên lcd mà mắc mạch thực đã chạy rồi không ,nếu có ,có thể cho em xin để tham khảo thêm không ?em thấy viết bằng hợp ngữ này khó chạy quá ,phải thiết lập nhiều thông số quá .

                        Comment

                        • friends
                          Đệ tử 1 túi
                          • Jul 2006
                          • 19

                          #13
                          lcd

                          anh namqn oi,em đã khởi tạo thêm các lệnh như anh đã nói và không kiểm tra cờ bận mà chỉ dùng delay thôi nhưng nó vẫn không chạy ,à ghi lệnh b'0011NF00' ra lcd không dùng được vì nó không phải là số nhị phân.

                          Comment

                          • namqn
                            Trưởng lão PIC bang
                            • Feb 2006
                            • 3020

                            #14
                            Nguyên văn bởi friends View Post
                            anh namqn oi,em đã khởi tạo thêm các lệnh như anh đã nói và không kiểm tra cờ bận mà chỉ dùng delay thôi nhưng nó vẫn không chạy ,à ghi lệnh b'0011NF00' ra lcd không dùng được vì nó không phải là số nhị phân.
                            Bạn phải tự đặt N và F theo yêu cầu của bạn chứ. Tôi chỉ ghi format của nó ra thôi (nếu bạn vẫn không biết phải đặt N và F bằng bao nhiêu thì đây: N=1: hiển thị 2 dòng, N=0: hiển thị 1 dòng, F=1: dùng font 5x10, F=0: dùng font 5x8).

                            Bạn định nghĩa 'không chạy' như thế nào? Nếu bạn chưa thực hiện đặt font và số dòng thì liệu LCD có hiển thị đúng những gì bạn muốn không?

                            Tôi thấy bạn hỏi lung tung mọi chỗ, nhưng không biết bạn đã thử tutorial về LCD của Nigel Goodwin chưa?

                            Thân,
                            Biển học mênh mông, sức người có hạn.

                            Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
                            http://www.picvietnam.com/forum/showthread.php?t=1263

                            Comment

                            • namqn
                              Trưởng lão PIC bang
                              • Feb 2006
                              • 3020

                              #15
                              Về mạch thử nghiệm thực tế của bạn:

                              - Bạn đang dùng thạch anh tần số bao nhiêu?
                              - Bạn đã xác định là mạch chạy tốt bằng một ví dụ nháy LED chứ?

                              Thân,
                              Biển học mênh mông, sức người có hạn.

                              Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
                              http://www.picvietnam.com/forum/showthread.php?t=1263

                              Comment

                              Working...