RS BIT P2.4 ;這3位是液晶屏的控制信號,連接方式由具體硬件而定
RW BIT P2.5
E BIT P2.6
ORG 00H
AJMP MAIN
MAIN:
mov R0,#24
ACALL INITIAL
ACALL DISPLAY;調(diào)用液晶顯示子程序
AJMP MAIN
;-------液晶顯示---------------------------------------
DISPLAY:
MOV A,#80H ;第一行第1 個點
ACALL WR_CMD
MOV DPTR, #LINE1
ACALL PR_STR
ACALL WR_DATA
DISP1:
MOV A,#18H ;字符左移命令(注:實物中左移命令字為18H)
ACALL WR_CMD
ACALL D05S
DJNZ R0,DISP1
RET
;---液晶屏初始化-------------------------------------------------
INITIAL:
MOV A, #01H
ACALL WR_CMD
MOV A, #38H
ACALL WR_CMD
MOV A, #0CH
ACALL WR_CMD
MOV A, #06H
ACALL WR_CMD
RET
;----寫液晶指令的子程序------------------------------------------
WR_CMD:
MOV P0, A
CLR RS ;寫入控制命令
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;----寫液晶數(shù)據(jù)---------------------------------------------
WR_DATA:
MOV P0, A
SETB RS ;寫入數(shù)據(jù)
CLR RW
CLR E
ACALL DELAY ;判斷液晶模塊是否忙?
SETB E
RET
;-----寫行字符---------------------------------------------------------------
PR_STR:
CLR A
MOVC A, @A+DPTR
JZ END_PR
ACALL WR_DATA
INC DPTR
AJMP PR_STR
END_PR:
RET
;----查看液晶忙碌信號---------------------------------------------------------
DELAY:
MOV P0,#0FFH ;判斷液晶顯示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,DELAY ;如果P0.7為高電平表示忙就循環(huán)等待
RET
;----0.5S延時(按12MHZ算)-----------------------------------------------------------------
D05S:
MOV R6,#25
MOV R5,#100
MOV R4,#100
DJNZ R4,$
DJNZ R5,$-4
DJNZ R6,$-8
RET
;--------------------------------------------------------------------------------------
LINE1:
DB 'Happy birthday to you!'
END
既然在開發(fā)板上能用證明 你這個程序是沒有問題的,,問題肯定是出在你的硬件電路上 仔細檢查一下電路
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |