ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:95.60KB ,
资源ID:6604573      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6604573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自动打铃系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自动打铃系统.docx

1、自动打铃系统摘要:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮 P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M关键词: 电子钟;打铃;晶振。引言:单片机原理及应用技术是一门技术性,应用性、实践性很强的学科。课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品

2、和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。在实际生活中有好多地方都用到了单片机,因此学习好这门课程有着十分重要的意义。1.方案论证1.1 基本方案 (1)基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。(2)能设置当前时间(含上、下午,时,分)(3)能实现基本打铃功能,规定:上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。1.2 拓展方案(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关

3、闭功能。(2)增加调整起床铃、熄灯铃时间的功能。(3)增设上午4节课的上下课打铃功能,规定如下:730 上课,820下课:830上课,920下课;940 上课,1030下课;1040上课,1130下课;每次铃声5秒。2.硬件详细设计2.1硬件设计 硬件使用51单片机制作自动打铃系统,主要由51单片机,两个8位数码管数字显示器,4个按钮,以及嗡鸣器组成。 按钮其中三个为时间调节按钮,另外一个负责控制强制打铃或者关闭铃音。使用按钮设定响铃时间以及显示时间。设计图如图2.1所示。2.1 硬件设计图3. 软件设计3.1程序简要说明1) 实现24小时制电子钟,8位数码管显示,显示时分秒2) 显示格式:2

4、3-59-59(小时十位如果为0则不显示)3) 到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.74) 打铃方式分起床、熄灯铃和上、下课铃两种5) 系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮6) 调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁7) 增加键ADD_KEY:P1.1;按一次使选中位加18) 减少键DEC_KEY;P1.2;按一次使选中位减19) 如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁10) 如果选中位是秒,则按增加键或减少键都是将秒清零11) 强制打铃键DALING_KEY:P1.3;用来强制打铃或强制

5、关闭铃声12) P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M3.2 主程序流程图4.源程序BEEP EQU P3.7;定义蜂鸣器(电铃)控制信号输出口ORG 0000H;程序入口地址 LJMP START ORG 000BH;定时器0中断入口地址 LJMP TIMER_0ORG 0300H/*程序开始,初始化*/ START: SETB BEEP;关闭蜂鸣器(电铃)SETB 48H;使用一个bit位用于调时闪烁标志SETB 47H;使用一个bit位用于产生脉冲用于调时快进时基CLR 45H;关闭响铃方式1标志CLR 44H;关闭响铃方式2标志MOV R1,#0;调整选择键功能

6、标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H;用于控制秒基准时钟源的产生 MOV 21H,#00H;清零秒寄存器MOV 22H,#00H;清零分寄存器MOV 23H,#00H;清零时寄存器MOV 24H,#00H;用于控制调时闪烁的基准时钟的产生MOV IP,#02H;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H;设定定时器0工作方式1MOV TH0,#3CH MOV TL0,#0B0H;赋定时初值,定时50ms SETB TR0;启动定时器0 MOV SP,#40H;重设堆栈指针/*主程序*/ MAIN:CJNE R1,#00H,MAIN1;是否为

7、正常走时状态LCALL BIJIAO1;调用起床、熄灯打铃比较子程序LCALL BIJIAO2;调用上、下课打铃比较子程序LCALL DALING1;调用响铃方式1执行子程序LCALL DALING2;调用响铃方式2执行子程序MAIN1: LCALL DISPLAY ;调用显示子程序LCALL KEY_SCAN ;调用按键检测子程序 JZ MAIN;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN;如果已进行长按调整(调时快进),则不再执行下面的单步调整LCALL ADD_KEY;调用增加键处理子程序LCALL DEC_KEY;调用减少键处理子程序

8、LCALL DALING_KEY;处理强制打铃/强制关闭铃声键 LJMP MAIN ;重新循环 /*定时中断服务程序*/ TIMER_0: PUSH ACC PUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值 CPL 47H;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME;产生0.5秒基准时钟,用于调时闪烁CPL 48H;取反调时闪烁标志位MOV 24H,#00HADD_TIME:INC 20H MOV A,20H CJNE A,#20,RETI1;产生1秒基准时钟 MOV 20H,#00H ;一秒钟

9、时间到,清零20H MOV A,21HADD A,#01HDA A ;作十进制调整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时到 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24点,清零小时RETI1: POP PSW POP ACC ;恢复现场RETI ;中断返回/*显示处理*/ DISPLAY:MOV A,

10、21H ;秒ANL A,#0FH MOV 2FH,A;转换出秒个位,存入2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A;转换出秒十位,存入2EHJB 46H,MIN;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#3,MIN;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分 ANL A,#0FH MOV 2DH,A;转换出分个位,存入2DH MOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A;转换出分

11、十位,存入2CHJB 46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#2,HOUR;如果R1为2,闪烁分位待调整 JB 48H,HOURMOV 2DH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时 ANL A,#0FH MOV 2BH,A;转换出时个位,存入2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A;转换出时十位,存入2AHJB 46H,DISP;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#1,DISP;如果R1为1,闪烁时位待调整 JB 48H,

12、DISPMOV 2BH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*数码管动态扫描显示*/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7;显示秒个位MOV A,2EHMOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5;显示“-”MOV A,2DHMOVC A,A+DPTRMOV P0,ACLR P2.

13、4LCALL DELAYSETB P2.4;显示分个位MOV A,2CHMOVC A,A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2;显示“-”MOV A,2BHMOVC A,A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1;显示时个位MOV DPTR,#TABLE1;该位使用TABLE1以消除前置0MOV A,2AHMOVC A,A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0;

14、显示时十位RET /*按键检测子程序*/ KEY_SCAN: CLR 46H;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态 MOV A,P1 CPL A ANL A,#0FH ;P1口低4位连接4个按键,只判断该4位JZ EXIT_KEY ;无键按下则返回 LCALL DELAY;延时去抖动MOV A,P1;重新判断 CPL A ANL A,#0FH JZ EXIT_KEY ;键盘去抖动 MOV R5,A ;临时将键值存入R5MOV R4,#00H;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 LOOP:;进

15、入长按处理LCALL DISPLAY;使长按时显示正常 MOV A,P1 CPL A ANL A,#0FHJB 47H,LOOP1INC R4;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5;输出键值RETEXIT_KEY:RET/*延时子程序*/DELA

16、Y:MOV R7,#150 DJNZ R7,$RET /*选择键处理子程序*/ SET_KEY: CJNE R5,#01H,EXIT;选择键键值INC R1;调整选择功能标志加一SETB BEEPCJNE R1,#4,EXITMOV R1,#0MOV 24H,#00H;调时闪烁基准清零 RET/*增加键处理子程序*/ ADD_KEY: CJNE R5,#02H,EXIT;增加键键值CJNE R1,#01H,NEXT1;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,EXITMOV 23H,#00HNEXT1:CJNE R

17、1,#02H,NEXT2;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H;如增加键按下直接清零秒RET/*减少键处理子程序*/ DEC_KEY: CJNE R5,#04H,EXIT;减少键键值CJNE R1,#01H,NEXT3;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HN

18、EXT3:CJNE R1,#02H,NEXT4;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#99HDA AMOV 22H,ACJNE A,#99H,EXITMOV 22H,#59HNEXT4:CJNE R1,#03H,EXIT;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H;如较少键按下直接清零秒RET/*强制响铃键处理子程序*/ DALING_KEY: CJNE R5,#08H,EXIT;选择键键值CPL BEEPRET/*万用返回程序*/EXIT: RET/*数码管字形编码表*/TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,8

19、2H,0F8H,80H,90H,0FFH ;字形显示编码TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码,该位如果为0则不显示/*打铃时间对比程序(起床、熄灯)*/BIJIAO1:MOV A,23HCJNE A,#06H,B0MOV A,22HCJNE A,#00H,B0;6:00到SETB 45H;开启响铃方式1RETB0:MOV A,23HCJNE A,#22H,EXIT_1MOV A,22HCJNE A,#30H,EXIT_1;22:30到SETB 45H;开启响铃方式1RETEXIT_1:CLR

20、 45HRET/*打铃时间对比程序(上、下课)*/BIJIAO2:MOV A,23HCJNE A,#07H,B1MOV A,22HCJNE A,#30H,B1;7:30SETB 44H;开启响铃方式2RETB1:MOV A,23HCJNE A,#08H,B2MOV A,22HCJNE A,#20H,B2;8:20SETB 44HRETB2:MOV A,23HCJNE A,#08H,B3MOV A,22HCJNE A,#30H,B3;8:30SETB 44HRETB3:MOV A,23HCJNE A,#09H,B4MOV A,22HCJNE A,#20H,B4;9:20SETB 44HRETB4

21、:MOV A,23HCJNE A,#09H,B5MOV A,22HCJNE A,#40H,B5;9:40SETB 44HRETB5:MOV A,23HCJNE A,#10H,B6MOV A,22HCJNE A,#30H,B6;10:30SETB 44HRETB6:MOV A,23HCJNE A,#10H,B7MOV A,22HCJNE A,#40H,B7;10:40SETB 44HRETB7:MOV A,23HCJNE A,#11H,EXIT_2MOV A,22HCJNE A,#30H,EXIT_2;11:30SETB 44HRETEXIT_2:CLR 44HRET/*响铃方式1程序(响5秒停

22、2秒再响5秒)*/DALING1:JNB 45H,EXIT_DALINGMOV A,21H;响铃起始时间由秒实时控制CJNE A,#00H,L1CLR BEEPL1:MOV A,21HCJNE A,#05H,L2SETB BEEPL2:CJNE A,#07H,L3CLR BEEPL3:CJNE A,#12H,EXIT_DALINGSETB BEEPRET/*响铃方式2程序(响5秒)*/DALING2:JNB 44H,EXIT_DALINGMOV A,21H;响铃起始时间由秒实时控制CJNE A,#00H,L4CLR BEEPL4:MOV A,21HCJNE A,#05H,EXIT_DALING

23、SETB BEEPRETEXIT_DALING:RETEND;程序结束5.课程设计体会通过这短短一周的实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。最少很多元器件根本不知道有什么功效,在仿真仪器中是什么代码。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。我遇到了不少问题,花费了很多的时间。这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。 这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。最大的收获是:对键盘,显示器,C51语言(虽然最后还是用汇编语言编写的,但是,我也试着学用了C51)的应用有了深刻的了解。6参考文献1 主编 余发山 单片机原理及应用技术 中国矿业大学出版社 2主编 张淑清 单片微型计算机接口技术及其应用 国防工业出版社 3编著 李光飞 楼然苗 胡佳文 谢象佐 单片机课程设计实例指导 北京航空航天大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1