全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

液晶显示时钟程序中的显示程序看不明白,大家能看看解释下吗?先谢

[复制链接]
1794 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
;很实用的时钟程序和电路图(液晶显示);********89C51引脚定义********
RS BIT P2.0
R_W BIT P2.1
E BIT P2.2
DB0_DB7 EQU P0
;*******定义时、分、秒及50mS单元********
DI_DA DATA 20H
SEC DATA 21H
MIN DATA 22H
HOUR DATA 23H
;*******程序开始*******
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP CLOCK
ORG 030H
MAIN: MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB ET0
SETB TR0
MOV DI_DA,#00H
SETB EA
MOV SP,#60H
LCALL INITIAL
LCALL CLS
;*****显示--Beijing Time--*****
MOV A,#10000000B
LCALL WRITE_COM
MOV DPTR,#LINE0
LCALL DISP
;******************************
MOV A,#11000000B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;******************************
MOV A,#11001100B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;*******计时开始********
BEGIN: MOV P3,#7FH
MOV A,P3
CJNE A,#7FH,NEXT
SETB P3.7
ACALL CONV
ACALL DIS
AJMP BEGIN
NEXT: ACALL KEY
AJMP BEGIN
;*******扫描按键********
KEY: ACALL DEL10MS
JB P3.0,HOUR_KEY
MIN_ADJ:CLR C
MOV A,MIN
INC A
DA A
CJNE A,#60H,X1
CLR A
X1: MOV MIN,A
ACALL DIS
ACALL DEL200MS
MOV P3,#7FH
JNB P3.0,MIN_ADJ
HOUR_KEY: JB P3.1,X2
HOUR_ADJ: CLR C
MOV A,HOUR
INC A
DA A
CJNE A,#24H,X3
CLR A
X3: MOV HOUR,A
ACALL DIS
ACALL DEL200MS
X2: MOV P3,#7FH
JNB P3.1,HOUR_ADJ
SETB P3.7
RET
;*******计时转换*******
CONV: MOV A,DI_DA
CJNE A,#14H,DONE
MOV DI_DA,#00H
MOV A,SEC
ADD A,#01H
DA A
MOV SEC,A
CJNE A,#60H,DONE
MOV SEC,#00H
MOV A,MIN
ADD A,#01H
DA A
MOV MIN,A
CJNE A,#60H,DONE
MOV MIN,#00H
MOV A,HOUR
ADD A,#01H
DA A
MOV HOUR,A
CJNE A,#24H,DONE
MOV HOUR,#00H
DONE: RET
;*******显示时间*******
DIS: MOV A,#11000100B
LCALL WRITE_COM
MOV A,HOUR
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,HOUR
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA
MOV A,MIN
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,MIN
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA
MOV A,SEC
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,SEC
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
RET
;*******50mS定时中断服务子程序*******
CLOCK: MOV TL0,#0B0H
MOV TH0,#3CH
INC DI_DA
RETI
;*******显示字符串到LCM子程序********
DISP: PUSH ACC
DISP_LOOP: CLR A
MOVC A,@A+DPTR
JZ END_DISP
LCALL WRITE_DATA
INC DPTR
SJMP DISP_LOOP
END_DISP: POP ACC
RET
;****** 启动LCM子程序******
INITIAL:MOV A,#00111000B
LCALL WRITE_COM
MOV A,#00001100B
LCALL WRITE_COM
MOV A,#00000110B
LCALL WRITE_COM
RET
;******查询忙碌标志信号子程序******
CHECK_BUSY: PUSH ACC
BUSY_LOOP: CLR E
SETB R_W
CLR RS
SETB E
MOV A, DB0_DB7
CLR E
JB ACC.7,BUSY_LOOP
POP ACC
LCALL DEL
RET
;****** 写指令到LCM子程序******
WRITE_COM: LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;****** 写数据到LCM子程序******
WRITE_DATA: LCALL CHECK_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;*******清除LCM子程序*******
CLS: MOV A,#00000001B
LCALL WRITE_COM
RET
;****延时2.7mS子程序****
DEL: MOV R6,#5
L1: MOV R7,#248
DJNZ R7,$
DJNZ R6,L1
RET
;******* 延时10mS子程序********
DEL10MS:MOV R5,#10H
TX1: MOV R4,#0FFH
DJNZ R4,$
DJNZ R5,TX1
RET
;******** 延时200mS子程序********
DEL200MS:MOV R3,#14H
TX2: ACALL DEL10MS
DJNZ R3,TX2
RET
;*******字符串************
LINE0: DB "--Beijing Time--",00H
LINE1: DB "----",00H
END

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表