51单片机自动打铃系统.docx
- 文档编号:28748066
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:15
- 大小:121.88KB
51单片机自动打铃系统.docx
《51单片机自动打铃系统.docx》由会员分享,可在线阅读,更多相关《51单片机自动打铃系统.docx(15页珍藏版)》请在冰豆网上搜索。
51单片机自动打铃系统
设计自动打铃系统
一、设计任务
用单片机器件为主体,设计一台自动打铃系统。
(1)按照设计标准,画出系统框图和系统硬件电路图。
(2)完成该课题的程序设计,提交程序设计框图及程序设计清单。
(3)提交课程设计报告
二、设计要求
(一)基本要求
(1)基本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
(2)能设置当前时间(含上、下午,时,分)
(3)能实现基本打铃功能,规定:
上午6:
00起床铃:
打铃5秒、停2秒、再打铃5秒。
下午10:
30熄灯铃:
打铃5秒、停2秒、再打铃5秒。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理
(二)发挥部分
(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。
(2)增加调整起床铃、熄灯铃时间的功能。
(3)增设上午4节课的上下课打铃功能,规定如下:
7.30上课,8.20下课:
8.30上课,9.20下课;9.40上课,10.30下课;10.40上课,11.30下课;每次铃声5秒。
三、设计步骤
(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;
(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;
(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;
(4)设计打铃执行机构,完成自动打铃功能。
四、课程设计说明书要求
后面略......
/***************************************************************
程序名称:
51单片机自动打铃系统
简要说明:
实现24小时制电子钟,8位数码管显示,显示时分秒
显示格式:
23-59-59(小时十位如果为0则不显示)
到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:
P3.7
打铃方式分起床、熄灯铃和上、下课铃两种
系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮
调整选择键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁
增加键ADD_KEY:
P1.1;按一次使选中位加1
减少键DEC_KEY;P1.2;按一次使选中位减1
如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁
如果选中位是秒,则按增加键或减少键都是将秒清零
强制打铃键DALING_KEY:
P1.3;用来强制打铃或强制关闭铃声
P0口输出数码管段选信号,P2口输出数码管位选信号。
晶振12M
编 写:
JiangX.net
最后更新:
09/1/2晚
***************************************************************/
BEEPEQUP3.7 ;定义蜂鸣器(电铃)控制信号输出口
ORG0000H ;程序入口地址
LJMPSTART
ORG000BH ;定时器0中断入口地址
LJMPTIMER_0
ORG0300H
/*****程序开始,初始化*****/
START:
SETBBEEP ;关闭蜂鸣器(电铃)
SETB48H ;使用一个bit位用于调时闪烁标志
SETB47H ;使用一个bit位用于产生脉冲用于调时快进时基
CLR 45H ;关闭响铃方式1标志
CLR 44H ;关闭响铃方式2标志
MOVR1,#0 ;调整选择键功能标志:
0正常走时、1调时、2调分、3调秒
MOV20H,#00H ;用于控制秒基准时钟源的产生
MOV21H,#00H ;清零秒寄存器
MOV22H,#00H ;清零分寄存器
MOV23H,#00H ;清零时寄存器
MOV24H,#00H ;用于控制调时闪烁的基准时钟的产生
MOVIP,#02H ;IP,IE初始化
MOVIE,#82H
MOVTMOD,#01H ;设定定时器0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H ;赋定时初值,定时50ms
SETBTR0 ;启动定时器0
MOVSP,#40H ;重设堆栈指针
/*****主程序*****/
MAIN:
CJNER1,#00H,MAIN1 ;是否为正常走时状态
LCALLBIJIAO1 ;调用起床、熄灯打铃比较子程序
LCALLBIJIAO2 ;调用上、下课打铃比较子程序
LCALLDALING1 ;调用响铃方式1执行子程序
LCALLDALING2 ;调用响铃方式2执行子程序
MAIN1:
LCALLDISPLAY ;调用显示子程序
LCALLKEY_SCAN ;调用按键检测子程序
JZMAIN ;无键按下则返回重新循环
LCALLSET_KEY ;调用选择键处理子程序
JB46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整
LCALLADD_KEY ;调用增加键处理子程序
LCALLDEC_KEY ;调用减少键处理子程序
LCALLDALING_KEY ;处理强制打铃/强制关闭铃声键
LJMPMAIN ;重新循环
/*****定时中断服务程序*****/
TIMER_0:
PUSHACC
PUSHPSW ;保护现场
MOVTH0,#3CH
MOVTL0,#0B0H ;重新赋定时初值
CPL47H ;产生脉冲用于调时快进时基
INC24H
MOVA,24H
CJNEA,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁
CPL48H ;取反调时闪烁标志位
MOV24H,#00H
ADD_TIME:
INC20H
MOVA,20H
CJNEA,#20,RETI1 ;产生1秒基准时钟
MOV20H,#00H ;一秒钟时间到,清零20H
MOVA,21H
ADDA,#01H
DAA ;作十进制调整
MOV21H,A
CJNEA,#60H,RETI1
MOV21H,#00H ;一分钟到
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,RETI1
MOV22H,#00H ;一小时到
MOVA,23H
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,RETI1
MOV23H,#00H ;到24点,清零小时
RETI1:
POPPSW
POPACC ;恢复现场
RETI ;中断返回
/*****显示处理*****/
DISPLAY:
MOVA,21H ;秒
ANLA,#0FH
MOV2FH,A ;转换出秒个位,存入2FH
MOVA,21H
ANLA,#0F0H
SWAPA
MOV2EH,A ;转换出秒十位,存入2EH
JB46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#3,MIN ;如果R1为3,闪烁秒位待调整
JB48H,MIN
MOV2FH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2EH,#0AH
MIN:
MOVA,22H ;分
ANLA,#0FH
MOV2DH,A ;转换出分个位,存入2DH
MOVA,22H
ANLA,#0F0H
SWAPA
MOV2CH,A ;转换出分十位,存入2CH
JB46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#2,HOUR ;如果R1为2,闪烁分位待调整
JB48H,HOUR
MOV2DH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2CH,#0AH
HOUR:
MOVA,23H ;时
ANLA,#0FH
MOV2BH,A ;转换出时个位,存入2BH
MOVA,23H
ANLA,#0F0H
SWAPA
MOV2AH,A ;转换出时十位,存入2AH
JB46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#1,DISP ;如果R1为1,闪烁时位待调整
JB48H,DISP
MOV2BH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2AH,#0AH
/*****数码管动态扫描显示*****/
DISP:
MOVDPTR,#TABLE
MOVA,2FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
LCALLDELAY
SETBP2.7 ;显示秒个位
MOVA,2EH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.6
LCALLDELAY
SETBP2.6 ;显示秒十位
MOVA,#0BFH
MOVP0,A
CLRP2.5
LCALLDELAY
SETBP2.5 ;显示“-”
MOVA,2DH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.4
LCALLDELAY
SETBP2.4 ;显示分个位
MOVA,2CH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.3
LCALLDELAY
SETBP2.3 ;显示分十位
MOVA,#0BFH
MOVP0,A
CLRP2.2
LCALLDELAY
SETBP2.2 ;显示“-”
MOVA,2BH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.1
LCALLDELAY
SETBP2.1 ;显示时个位
MOVDPTR,#TABLE1 ;该位使用TABLE1以消除前置0
MOVA,2AH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
LCALLDELAY
SETBP2.0 ;显示时十位
RET
/*****按键检测子程序*****/
KEY_SCAN:
CLR46H ;关闭长按调整(调时快进)标志
MOVP1,#0FFH ;将P1口设置成输入状态
MOVA,P1
CPLA
ANLA,#0FH ;P1口低4位连接4个按键,只判断该4位
JZEXIT_KEY ;无键按下则返回
LCALLDELAY ;延时去抖动
MOVA,P1 ;重新判断
CPLA
ANLA,#0FH
JZEXIT_KEY ;键盘去抖动
MOVR5,A ;临时将键值存入R5
MOVR4,#00H ;用于控制调时快进速度
;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进
LOOP:
;进入长按处理
LCALLDISPLAY ;使长按时显示正常
MOVA,P1
CPLA
ANLA,#0FH
JB47H,LOOP1
INCR4 ;调时快进间隔时间基准加1
LOOP1:
CJNER1,#03H,LOOP2 ;如果调秒时长按,则不处理
LJMPLOOP3
LOOP2:
CJNER4,#99H,LOOP3
MOVR4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度
SETB46H ;长按调整(调时快进)标志
LCALLADD_KEY
LCALLDEC_KEY
LOOP3:
JNZLOOP ;等待键释放
MOVA,R5 ;输出键值
RET
EXIT_KEY:
RET
/*****延时子程序*****/
DELAY:
MOVR7,#150
DJNZR7,$
RET
/*****选择键处理子程序*****/
SET_KEY:
CJNER5,#01H,EXIT ;选择键键值
INCR1 ;调整选择功能标志加一
SETBBEEP
CJNER1,#4,EXIT
MOVR1,#0
MOV24H,#00H ;调时闪烁基准清零
RET
/*****增加键处理子程序*****/
ADD_KEY:
CJNER5,#02H,EXIT ;增加键键值
CJNER1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出
MOVA,23H
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,EXIT
MOV23H,#00H
NEXT1:
CJNER1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,EXIT
MOV22H,#00H
NEXT2:
CJNER1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出
MOV21H,#00H ;如增加键按下直接清零秒
RET
/*****减少键处理子程序*****/
DEC_KEY:
CJNER5,#04H,EXIT ;减少键键值
CJNER1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出
MOVA,23H
ADDA,#99H
DAA
MOV23H,A
CJNEA,#99H,EXIT
MOV23H,#23H
NEXT3:
CJNER1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出
MOVA,22H
ADDA,#99H
DAA
MOV22H,A
CJNEA,#99H,EXIT
MOV22H,#59H
NEXT4:
CJNER1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出
MOV21H,#00H ;如较少键按下直接清零秒
RET
/*****强制响铃键处理子程序*****/
DALING_KEY:
CJNER5,#08H,EXIT ;选择键键值
CPLBEEP
RET
/*****万用返回程序*****/
EXIT:
RET
/*****数码管字形编码表*****/
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;字形显示编码
TABLE1:
DB0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;小时位的十位数编码,该位如果为0则不显示
/*****打铃时间对比程序(起床、熄灯)*****/
BIJIAO1:
MOVA,23H
CJNEA,#06H,B0
MOVA,22H
CJNEA,#00H,B0 ;6:
00到
SETB45H ;开启响铃方式1
RET
B0:
MOVA,23H
CJNEA,#22H,EXIT_1
MOVA,22H
CJNEA,#30H,EXIT_1 ;22:
30到
SETB45H ;开启响铃方式1
RET
EXIT_1:
CLR45H
RET
/*****打铃时间对比程序(上、下课)*****/
BIJIAO2:
MOVA,23H
CJNEA,#07H,B1
MOVA,22H
CJNEA,#30H,B1 ;7:
30
SETB44H ;开启响铃方式2
RET
B1:
MOVA,23H
CJNEA,#08H,B2
MOVA,22H
CJNEA,#20H,B2 ;8:
20
SETB44H
RET
B2:
MOVA,23H
CJNEA,#08H,B3
MOVA,22H
CJNEA,#30H,B3 ;8:
30
SETB44H
RET
B3:
MOVA,23H
CJNEA,#09H,B4
MOVA,22H
CJNEA,#20H,B4 ;9:
20
SETB44H
RET
B4:
MOVA,23H
CJNEA,#09H,B5
MOVA,22H
CJNEA,#40H,B5 ;9:
40
SETB44H
RET
B5:
MOVA,23H
CJNEA,#10H,B6
MOVA,22H
CJNEA,#30H,B6 ;10:
30
SETB44H
RET
B6:
MOVA,23H
CJNEA,#10H,B7
MOVA,22H
CJNEA,#40H,B7 ;10:
40
SETB44H
RET
B7:
MOVA,23H
CJNEA,#11H,EXIT_2
MOVA,22H
CJNEA,#30H,EXIT_2 ;11:
30
SETB44H
RET
EXIT_2:
CLR44H
RET
/*****响铃方式1程序(响5秒停2秒再响5秒)*****/
DALING1:
JNB45H,EXIT_DALING
MOVA,21H ;响铃起始时间由秒实时控制
CJNEA,#00H,L1
CLRBEEP
L1:
MOVA,21H
CJNEA,#05H,L2
SETBBEEP
L2:
CJNEA,#07H,L3
CLRBEEP
L3:
CJNEA,#12H,EXIT_DALING
SETBBEEP
RET
/*****响铃方式2程序(响5秒)*****/
DALING2:
JNB44H,EXIT_DALING
MOVA,21H ;响铃起始时间由秒实时控制
CJNEA,#00H,L4
CLRBEEP
L4:
MOVA,21H
CJNEA,#05H,EXIT_DALING
SETBBEEP
RET
EXIT_DALING:
RET
END ;程序结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 自动 打铃 系统