PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Help hiển thị LCD 16x2 (http://www.picvietnam.com/forum/showthread.php?t=32126)

kdt_khanh 17-04-2013 12:03 AM

Help hiển thị LCD 16x2
 
Mọi người xem giúp mình đoạn code sau: khi mô phỏng trên Proteus thì chạy được.
Còn khi nạp vào PIC thì ko hiển thị chữ gì.
Giao tiếp 8 bit . data PORTB
Điều khiển RD0 RD1 RD2

Ngôn ngữ MPASM, MPLAB IDE

Code:

#INCLUDE <P16F877A.INC>
__CONFIG        _CP_OFF & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _HS_OSC
       
; thach anh 20MHz
COUNT1                EQU        0X20
COUNT2                EQU        0X21
COUNT3                EQU        0X22
COUNT4                EQU        0X23
COUNT5                EQU 0X24
LCD_DATA        EQU        PORTB
LCD_CONTROL        EQU        PORTD
RS                        EQU        RD0
RW                        EQU        RD1
EN                        EQU        RD2

ORG 0X000
goto start

start        org 0x005       
                BCF        STATUS,RP1
                BSF        STATUS,RP0
                CLRF        TRISB
                CLRF        TRISD
                BCF        STATUS,RP0
;---------------------------
;                BEGIN
;-------- KHOI TAO -----------------
BEGIN        BCF                LCD_CONTROL,EN
                CALL        DELAY20MS
                MOVLW        0X38
                CALL        COMNWRT
                CALL        DELAY20MS
                MOVLW        0X0E
                CALL        COMNWRT
                CALL        DELAY20MS
                MOVLW        0X01
                CALL        COMNWRT
                CALL        DELAY20MS
                MOVLW        0X06
                CALL        COMNWRT
                CALL        DELAY20MS
                MOVLW        0X80
                CALL        COMNWRT
                CALL        DELAY20MS
;------------------------------
; GHI DATA
                MOVLW        A'N'
                CALL        DATAWRT
                CALL        DELAY20MS
                MOVLW        A'A'
                CALL        DATAWRT
                CALL        DELAY20MS
                MOVLW        A'M'
                CALL        DATAWRT
                CALL        DELAY20MS
                MOVLW        A'E'
                CALL        DATAWRT
                CALL        DELAY20MS
                GOTO        $

;----------------------
;        COMMAND WRITE
COMNWRT                MOVWF        LCD_DATA
                        BCF                LCD_CONTROL,RS
                        BCF                LCD_CONTROL,RW
                        BSF                LCD_CONTROL,EN
                        NOP
                        NOP
                        NOP
                        BCF                LCD_CONTROL,EN
                        RETURN
;----------------
;        DATA WRITE
DATAWRT                MOVWF        LCD_DATA
                        BSF                LCD_CONTROL,RS
                        BCF                LCD_CONTROL,RW
                        BSF                LCD_CONTROL,EN
                        NOP
                        NOP
                        NOP
                        BCF                LCD_CONTROL,EN
                        RETURN
DELAY20MS
                        MOVLW        D'20'
                        MOVWF        COUNT3
LOOP3                MOVLW        D'100'
                        MOVWF        COUNT1
LOOP1                MOVLW        D'200'
                        MOVWF        COUNT2
LOOP2                NOP
                        NOP
                        DECFSZ        COUNT2
                        GOTO        LOOP2
                        DECFSZ        COUNT1
                        GOTO        LOOP1
                        DECFSZ        COUNT3
                        GOTO        LOOP3       
RETURN

END



Múi giờ GMT. Hiện tại là 10:05 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam