找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

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

[复制链接]
admin 发表于 2012-9-3 02:49:05 | 显示全部楼层 |阅读模式

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

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

×
;很实用的时钟程序和电路图(液晶显示);********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
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
loading...
logo
验证成功
验证未通过
加载失败,请点击重试
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-7-7 21:14 , Processed in 0.065475 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表