带LCD的时间控制器Word文档下载推荐.docx
- 文档编号:4176714
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:27
- 大小:37.23KB
带LCD的时间控制器Word文档下载推荐.docx
《带LCD的时间控制器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《带LCD的时间控制器Word文档下载推荐.docx(27页珍藏版)》请在冰点文库上搜索。
EQU
24
;
加载低字节
HI
99
加载高字节
-----------------------------
CO
200
5ms中断计数时间常数
计数200次表示1s
ALB
20H.0
控制设置标志
CLOCK
EQU
20H.1
整点报时标志
HOUR
30H
存放小时变量
MIN
31H
存放分钟变量
SEC
32H
存放秒钟变量
DEDA
33H
5ms计数值
SEC0
34H
存放旧的秒数
DDRAM
35H
LCD地址变量
COM
22H
LCD指令寄存器
DAT
21H
LCD数据寄存器
COUNT
计数器
HH
36H
控制设置小时变量
MM
37H
控制设置分钟变量
KEY4.....
K1
P2.1
设置当前时间
K2
P2.0
K3
P3.6
K4
P3.7
K5
P3.1
LCD.....
RS
P3.4
寄存器选择
RW
P3.5
读写控制
E
P3.3
LCD使能
ELEC
P3.0
SPK
P2.2
Y_LED
P2.6
C_LED
P2.4
W_LED
P2.3
D_LED
P2.5
ORG
0000H
程序代码由地址0
JMP
START
跳至主函数开始执行
000BH
定时器TIMER0中断地址
T0_INT
跳至TIMER0中断启始地址
#############################
主程序
START:
CLR
继电器工作指示关
继电器关
CLOCK
清除整点报时标志
SETB
整点报时指示灯关
ALB
清除控制标志
MOV
HH,#0
内定的控制时间为--00:
00
MM,#0
LCALLSET_LCD
LCD初始化
LCALLBZ
蜂鸣器连续两次发音
LCALLBZ
LCALLLED_BL
LED闪动,表示工作开始
LCALLINIT
初始化变量
LCALLINIT_TIMER
初始化定时器
LCALLMENU
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
循环程序
LOOP:
LCALLTIME_PRO
时间计时处理
按键扫描............
JB
K1,L1
未按下K1键则继续扫描
K1.....时间设置/设整点报时
K1:
ADJTIME
K2:
K3:
K4:
OK
LCALLD_LAY
1s延时
JNB
K1,LL
按键超过1s,则设整点报时
LED闪动
DPTR,#MADJ
现实执行消息
A,#1
LCALLLCD_PRINT
在LCD显示字符
LCALLSET_TIME
设置目前时间
菜单
LOOP
继续循环
.............................
L1:
K2,L2
未按下K2键则继续扫描
K2............控制时间显示
K2,$
等待K2键释放
蜂鸣器发音
DPTR,#MLAL
显示控制消息
LCALLLOOK_ATIME
查看控制时间
LCALLDELAY
延时
工作LED闪动
L2:
K3,L3
未按下K3键则继续扫描
K3.....控制时间设置
K3:
ADJATIME
K3,$
等待K3键释放
DPTR,#MAADJ
LCALLSET_ATIME
控制时间设置
LL:
SJMP
L6
L3:
K4,L4
未按下K4键则继续扫描
K4.......控制开关/确定
K4,$
等待K4键释放
CPL
控制设置标志取反
ALB,L31
没有控制标志,则发音一声
ALARMON....................
CLR
控制指示灯亮
有控制标志,则蜂鸣器发音三声
LCALLBZ
返回
L31:
ALARMOFF...................
控制指示灯灭
蜂鸣器发音一声
L4:
JB
K5,L5
K5.........电器控制开/关
K5,$
等待K5键释放
CPL
LED取反
ELEC
LCALLBZ
L5:
JMP
L6:
值整点报时标志
整点报时指示灯亮
LCALLDELAY
LMESS1:
DB
"
Wlecome!
"
0
LMESS2:
happy!
初始化控制变量子程序
INIT:
DEDA,#0
5ms计数值清除为0
SEC0,#0
旧的秒数清除为0
MOV
SEC,#0
秒钟变量清除为0
MIN,#0
分钟变量清除为0
HOUR,#1
小时变量清除为1
RET
子程序返回
初始化定时器接口子程序
INIT_TIMER:
TMOD,#00000000B;
设置定时器T0工作方式为方式0
IE,
#10000010B;
TL0,#LO
TH0,#HI
SETB
TR0
启动定时器T0开始计时
RET
*****************************
定时器0中断服务程序
T0_INT:
中断程序每隔5ms中断一次
PUSH
ACC
累加器放入堆栈
INC
DEDA
5ms计数值加1
1SECTIMEOUTCHECK
A,DEDA
CJNE
A,#CO,TT
是否1s到了?
DEDA值0
LED灯亮灭变换
SEC
秒计数加1
A,SEC
秒数据放在累加器里,用于比较
A,#60,TT
是否到1min?
1MINTIMEOUT
MIN
分计数加1
秒计数清除为0
A,MIN
是否到1h?
1HOURTIMEOUT
HOUR
小时计数加1
分计数清除为0
A,HOUR
A,#24,TT
是否24h到了?
秒钟变量清0
分钟变量清0
HOUR,#0
小时变量清0
TT:
POP
将累加器由堆栈取出
RETI
中断返回
OK
K4:
SET_TIME:
关定时器0
SCAN3KEYTOADJ...........
S0:
K2,S1
小时调整
INC
小时加1
A,HOUR
小时值放在累加器中,用于比较
CJNE
A,#24,S11
S11:
LCALLCONV
转换LCD显示数据
R5,#20
S0
继续程序执行
....................
S1:
K3,S2
分钟调整
分钟加1
A,MIN
分钟值放在累加器中,用于比较
A,#60,S21
是否60min到了?
S21:
20*10ms
.....................
S2:
K4,S0
有键按下则等待放开
K4KEYED
OK..........
设置完成,蜂鸣器发音两声
启动定时器
LCD第一行显示程序
A:
DIG
X:
LCDXPOS
SHOWONLCDLINE1
SHOW_DIG:
B,#10
设置被除数
DIV
AB
除法运算,结果A存商数,B存余数
ADD
A,#30H
A为十位数,转换为字符
PUSH
B
B放入堆栈暂存起来
B,DDRAM
设置LCD显示的位置
LCALLLCDP1
由LCD显示出来
POP
B由堆栈取出来
A,B
B为个位数
转换为字符
DDRAM
LCD显示位置加1
设置LCD显示位置
LCD第二行显示程序
SHOWONLCDLINE2
SHOW_DIG2:
LCALLLCDP2
转换显示当前时间子程序
时时:
分分:
秒秒
CONV:
SHOWHOUR...............显示小时数据
小时数据放在A中
DDRAM,#0
设置要显示的地址
LCALLSHOW_DIG2
在第二行显示
显示地址加1
A,#'
:
'
加载"
:
LCD显示地址放入B中
SHOWMIN...............显示分钟数据
A,MIN
分钟数据放在A中
SHOWSEC...............显示秒钟数据
秒钟数据放在A中
****************************
LCD初始化设置程序
并测试
SET_LCD:
LCALLINIT_LCD
初始化LCD
R5,#10
10*10ms
延迟一下
DPTR,#LMESS1
指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD 时间 控制器