LCD_DATA EQU P0 ;液晶并行數(shù)據(jù)口
LCD_RS EQU P2.0 ;液晶指令數(shù)據(jù)選擇:H=數(shù)據(jù) L=指令
LCD_RW EQU P2.1 ;液晶讀寫信號控制: H=讀 L=寫
LCD_E EQU P2.2 ;液晶數(shù)據(jù)鎖存信號: 下降沿鎖存
LCD_SPB EQU P2.3 ;液晶通信格式: H=并行 L=串行
LCD_RES EQU P2.4 ;液晶復(fù)位信號: 低電平復(fù)位
POW_EN EQU P2.6
TX_EN EQU P2.5
DISP_ON EQU 20H.0
SCAN_BIT EQU 20H.1
;液晶顯示區(qū)首地址:第一行:30H~3FH,第二行:40H~4FH,第三行:50H~5FH,第四行:60H~6FH
ORG 0000H
JMP MAIN
ORG 0023H
JMP RS_232
主程序:
MAIN:CLR DISP_ON
CLR SCAN_BIT
SETB POW_EN
CLR TX_EN
MOV R1,#30H ;指向存儲區(qū)首地址
MOV R5,#0
MOV R4,#0
CALL LCD_INIT
CALL RS232_INIT
CALL DELY2
CALL DELY2
CALL DELY2
MAIN_LOOP:JNB DISP_ON,$
CALL DISP_RAM
CLR DISP_ON
JMP MAIN_LOOP
RET
串口初始化程序:
RS232_INIT:MOV TMOD,#20H
MOV SCON,#50H
MOV TL1,#0FAH
MOV TH1,#0FAH
SETB TR1
SETB ES
SETB EA
RET
顯示RAM區(qū)程序:
DISP_RAM:MOV A,#80H
CALL WRITE_COM
MOV R0,#30H
DISP_RAM_JMP1:MOV A,@R0
CALL WRITE_DATA
INC R0
CJNE R0,#40H,DISP_RAM_JMP1
MOV A,#90H
CALL WRITE_COM
DISP_RAM_JMP2:MOV A,@R0
CALL WRITE_DATA
INC R0
CJNE R0,#50H,DISP_RAM_JMP2
MOV A,#88H
CALL WRITE_COM
DISP_RAM_JMP3:MOV A,@R0
CALL WRITE_DATA
INC R0
CJNE R0,#60H,DISP_RAM_JMP3
MOV A,#98H
CALL WRITE_COM
DISP_RAM_JMP4:MOV A,@R0
CALL WRITE_DATA
INC R0
CJNE R0,#70H,DISP_RAM_JMP4
RET
液晶初始化程序:
LCD_INIT: CLR LCD_RES ;復(fù)位
CALL DELY2 ;復(fù)位延時(shí)
CALL DELY2 ;復(fù)位延時(shí)
SETB LCD_RES ;復(fù)位結(jié)束
CALL DELY2 ;復(fù)位延時(shí)
CALL DELY2 ;復(fù)位延時(shí)
SETB LCD_SPB ;并行通信方式
MOV A,#30H
CALL WRITE_COM
CALL DELY1
MOV A,#03H
CALL WRITE_COM
CALL DELY1
MOV A,#0CH
CALL WRITE_COM
CALL DELY1
MOV A,#01H
CALL WRITE_COM
CALL DELY1
MOV A,#06H
CALL WRITE_COM
CALL DELY1
RET
液晶寫指令,入口地址A
WRITE_COM:CLR LCD_RS
CLR LCD_RW
SETB LCD_E
MOV LCD_DATA,A
NOP
NOP
CLR LCD_E
CALL DELY1
RET
液晶寫數(shù)據(jù),入口地址A
WRITE_DATA:SETB LCD_RS
CLR LCD_RW
SETB LCD_E
MOV LCD_DATA,A
NOP
NOP
CLR LCD_E
CALL DELY1
RET
延時(shí)程序1
DELY1:MOV R7,#255
DJNZ R7,$
RET
延時(shí)程序2
DELY2:MOV R6,#255
DELY2_JMP1:CALL DELY1
DJNZ R6,DELY2_JMP1
RET
串口中斷程序
RS_232:PUSH A
MOV A,SBUF
JB SCAN_BIT,RS_232_JMP1
CJNE A,#99H,RS_232_JMP0
INC R5
CJNE R5,#2,RS_232_EXIT
MOV R1,#30H
MOV R4,#0
SETB SCAN_BIT
RS_232_JMP0:MOV R5,#0
JMP RS_232_EXIT
RS_232_JMP1:CJNE A,#0AAH,RS_232_JMP2
INC R4
CJNE R4,#3,RS_232_JMP3
MOV R5,#0
CLR SCAN_BIT
SETB DISP_ON
JMP RS_232_EXIT
RS_232_JMP2:MOV R4,#0
RS_232_JMP3:CJNE R1,#70H,RS_232_JMP4
JMP RS_232_EXIT
RS_232_JMP4:MOV @R1,A
INC RRS_232_EXIT:POP A
CLR RI
RETI
|