1602液晶初始化程序(汇编)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
〔原创〕1602液晶初始化程序(2007-12-22 18:10:40)
标签:1602液晶it/科技汇编语言
液晶初始化,显示数字,按秒计数
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
IN_0 EQU P0
SECL EQU 40H ;秒低位
SECH EQU 41H ;秒高位
MH1 EQU 42H ;冒号
MINL EQU 43H ;分低位
MINH EQU 44H ;分高位
MH2 EQU 45H ;冒号
HOURL EQU 46H ;时低位
HOURH EQU 47H ;时高位
;*********************************
ORG 0000H
AJMP START
ORG 000BH
AJMP INTT_0
START:MOV SP,#70H
MOV R2,#20
ACALL INIT_LCD ;初始化液晶
MOV R5,#00H
MOV IN_0,#84H ;写入显示起始地址(第一行第五个位置 ACALL ENABLE
MOV TH0,#3fH ;50MS
MOV TL0,#0b0H
MOV TMOD,#01H
ACALL SJCZ
START1:SETB EA
SETB ET0
SETB TR0
LCALL WDATA
AJMP START1
;*****时间初值*******
SJCZ: MOV 40H,#8 ;显示初值是 08:08:08
MOV 41H,#0
MOV 42H,#10
MOV 43H,#8
MOV 44H,#0
MOV 45H,#10
MOV 46H,#8
MOV 47H,#0
RET
;****T0定时器中断****
INTT_0: PUSH ACC
MOV TL0,#0b0H ;送定时初值
MOV TH0,#3fH
DJNZ R2,TT
MOV R2,#20
INC SECL ;秒记数,到60S就清0 MOV A,SECL
CJNE A,#0AH,TT
INC SECH
MOV SECL,#0
MOV A,SECH
CJNE A,#06H,TT
MOV SECH,#0
INC MINL ;分记数,到60分请0 MOV A,MINL
CJNE A,#0AH,TT
MOV MINL,#0
INC MINH
MOV A,MINH
CJNE A,#06H,TT
MOV MINH,#0
INC HOURL ;时记数,到24时清0 MOV A,HOURL
CJNE A,#04H,TT2
MOV A,HOURH
CJNE A,#02H,TT1
MOV HOURL,#0
MOV HOURH,#0
AJMP TT
TT2: CJNE A,#0AH,TT
MOV HOURL ,#0
INC HOURH
AJMP TT
TT1: MOV A,HOURL
CJNE A,#0AH,TT
MOV HOURL ,#0
INC HOURH
AJMP TT
TT: POP ACC
RETI
;*******液晶初始化*****
INIT_LCD:
CALL DELAYL ;延时20ms,等待LCD完成电源的启动
MOV IN_0,#01H ;清屏并光标复位
ACALL ENABLE
MOV IN_0,#38H ;设置显示模式:8位2行5x7点阵
ACALL ENABLE
MOV IN_0,#0FH ;显示器开、光标开、光标允许闪烁
ACALL ENABLE
MOV IN_0,#06H ;文字不动,光标自动右移
ACALL ENABLE
MOV IN_0,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE
RET
;******写数据程序***
WDATA: MOV IN_0,#84H ;写入显示起始地址(第一行第五个位置
ACALL ENABLE
MOV R1,#8
MOV R0,#47H
WDATA1: MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV IN_0,A ;写入数据
SETB RS
CLR RW
CLR E
ACALL CHECKBUSY
SETB E ; 忙检测
DEC R0
DJNZ R1,WDATA1
MOV R1,#8
RET
;*******显示字母表********
TABLE: DB 30H,31H,32H,33H,34H,35H ;0 1 2 3 4 5
DB 36H,37H,38H,39H,3AH,80H,2EH ;6 7 8 9 : 空格 .
;*********写指令*****
ENABLE: CLR RS ;写入控制命令的子程序
CLR RW
CLR E
ACALL CHECKBUSY
SETB E
RET
;*******程序忙检测***
CHECKBUSY:
MOV IN_0,#0FFH ;判断液晶显示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,CHECKBUSY ;如果P1.7为高电平表示忙就循环等待 RET
;******延时程序****
DELAY: MOV R6,#50
DEL: MOV R7,#48
DJNZ R7,$
DJNZ R6,DEL
RET
DELAYL: MOV R7,#100 ;长延时20ms
D1: MOV R6,#98
DJNZ R6,$
DJNZ R7,D1