单片机课程设计之自动打铃系统

合集下载

单片机自动打铃系统设计

单片机自动打铃系统设计

自动打铃系统----学校上下课自动打铃设计设计人:要求:(1)实现上下课的打铃,并通过语音提示上下课;(2)按下开机键,显示当前年月日时间,在LCD液晶屏显示年,月,日,星期,时,分,秒,年-月-日-星期显示在第一行,格式xx-xx-xx-星期x;时分秒显示在第二行,格式xx-xx-xx(24小时格式);(3)能够设置当前时间;(4)使用语音芯片提示上下课,上课时提示:“亲爱的同学们,上课了”,重复2遍,下课时提示:“亲爱的同学们,下课了“,重复2遍。

(5)允许使用时钟芯片。

《摘要》单片机的外接石英晶体振荡器能提供稳定、准确的基准频率,并经12分频后向部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息。

如果石英晶体振荡器的频率信号为6MHZ,设定定时器定时工作方式1下,定时器为3CBOH,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数自动打铃系统,是以一片8位单片机为核心的实时时钟及控制系统。

我们知道到60,则向时计数器进位,如此周而复始的连续计数,便可获得时、分、秒的信号,建立一个实时时钟。

接下来便可以进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)是否相同,如有相同者,则进行报时处理并控制打铃,如有不相同则返回主程序,如此便实现了报时控制的要求。

《关键词》单片机;时间设置电路;计时电路;显示电路;定时打铃控制电路《引言》始的无人问津到现在的随处可见,红绿灯,记分牌,电子秒表,遥控器,电饭煲,电视等只要是电子产随着科技的不断发展,各种芯片都得到了很好的发展,80C51 同样如此,从开品,都会和芯片有关,其实芯片并不是什么神秘的高科技,它只是里面装了一些己编好的程序而己.而这里要介绍的是用汇编语言来编程的一个系统,它能够让一个学校或企业集团实现打铃自动化,总之,一个需要时间系统的机构实现自动提醒功能。

基于单片机的打铃系统

基于单片机的打铃系统

基于单片机的打铃系统一、系统简介打铃系统是一种用于管理学校、工厂、办公室等场所时间的设施,它可以自动地、准确地实现时间的管理。

本文所介绍的打铃系统基于单片机开发,通过编程实现各种铃声的播放,实现按时响铃的功能。

二、系统硬件组成打铃系统基于AT89S52单片机实现。

除了单片机之外,还需要以下硬件:1.时钟电路:用于提供准确的时钟信号。

2.按键:用于设定铃声和时间,以及启动和停止铃声。

3.位选器:用于选择哪个七段数码管进行显示。

4.七段数码管:用于显示当前时间和设定的时间。

5.蜂鸣器:用于播放铃声。

6.电源模块:用于提供系统所需的电源。

三、系统程序实现1.时钟模块时钟模块是整个打铃系统的核心模块,它通过内部定时器实现时钟计时。

定时器的具体参数需要根据外部晶体振荡器的频率进行设置。

在计时过程中,将当前时间实时显示在七段数码管上,并提供按键设置时间的功能。

2.铃声模块铃声模块主要负责蜂鸣器的控制,通过控制蜂鸣器的高低电平来实现各种铃声的播放。

在设定的时间到达时,蜂鸣器会自动响起预先设置好的铃声。

当按下停止键时,蜂鸣器会停止响铃。

四、系统优化设计为了提高打铃系统的稳定性和可靠性,需要进行一些优化设计。

其中的一些优化设计包括:1.电源管理:系统的电源管理非常重要,可以通过使用稳压器等组件来提高系统的抗噪声性能和稳定性。

2.按键处理:按键可以使用中断或轮询的方式进行处理,使用中断方式可以提高系统的实时性。

3.时钟精度:系统的时钟精度非常关键,需要使用高精度的外部晶体振荡器并进行一定的校准以提高时钟的准确性。

四、系统应用本文所介绍的打铃系统可以广泛应用于学校、工厂、办公室等场所。

它可以帮助管理者准确地掌握各个时间点,提高管理效率和准确性。

同时,通过优化设计可以大大提高系统的性能和稳定性。

五、总结打铃系统是一种非常实用的设施,通过单片机等电子技术的应用,可以实现自动化、智能化的时间管理。

本文介绍了基于单片机的打铃系统的硬件组成和程序实现,以及针对性的优化设计,以期为相关领域的读者提供一些借鉴和参考。

单片机自动控制打铃系统设计

单片机自动控制打铃系统设计

单片机自动控制打铃系统,是以一片8位单片机为核心的实时时钟及控制系统.我们知道单片机的外接石英晶体震荡器能提供稳定、准确的基准频率,并经12分频后向内部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得到秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息.如果石英晶体震荡器的频率信号为6MHZ,设定定时器定时器工作在方式1下,定时器为3CB0H,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数到60,则向时计数器进位,如此周而复始的连续技术,便可获得时、分、秒的信号,建立一个实时时钟.接下来便可以进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)是否相同,如有相同者,则进行报时处理并控制打铃,如有不相同则返回主程序,如此便实现了报时控制的要求.2.2 ISP下载电缆的电路及程序设计简介能实现ISP功能的硬件电路,通常被称为“下载电缆”。

ATMEL公司推出的AT89S51/52单片机就具有ISP功能。

用计算机并行口实现ISP功能,在电路设计上非常灵活。

(1)下载电缆的电路设计:计算机并行接口共有25个口线,主要包括数据端口D0~D7(端口地址为378H,用于数据输出);状态端口Busy、nAck、PE、Select、nError(端口地址为379H,用于数据输入);控制端口nSelin、nlnit、nStrobe(端口地址为37AH,用于输出控制)。

从中选出4个口线来模拟ISP所需的引脚,就非常灵活,只需考虑数据的输入、输出方向及操作方便即可。

但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分做输入,另一部分做输出。

基于51单片机的自动打铃机设计

基于51单片机的自动打铃机设计

单片机系统课程设计课程设计名称:自动打铃器设计专业班级:XXXX学生姓名:XXXX学号:XXXXXXXX指导教师:XXX课程设计地点:XXXX课程设计时间:XXXXXXXXXX单片机系统课程设计任务书学生姓名专业班级自动化学号题目自动打铃器设计课题性质工程设计课题来源老师拟定指导老师XXX主要内容(参数)基于89c51单片机可以实现以下功能:1、根据自己需要设计打铃时间,到定时时间自动打铃。

2、8位LED动态显示,实现表24小时制计时和显示功能。

3、能设置当前时间4、可以随时更改打铃时间任务要求(进度)1、查阅有关资料,熟悉设计任务要求,确定设计方案,大概需要1——2天。

2、按照确定的方案设计单元电路,画出单元电路图,元件及元件参数的选择有依据,大概需要1——2天的时间3、软件设计及编写程序,大概需要1——2天的时间。

4、实验室调试,需要1——2天。

5、撰写课程设计报告。

要求内容完整、图表清晰、文理流畅、格式规范、方案合理设计正确。

主要参考资料[1]张迎新.单片机原理、应用及接口技术[M].北京:国防工业出版社,2004[2]李光飞.单片机课程设计实例[M].北京:北京航天航空大学出版社,2004[3]周润景,袁伟婷,景晓松.Proteus在MCS-51系统中的应用[M].北京:电子工业出版社,2006[4] 邓兴成.单片机原理与实践指导.北京:机械工业出版社,2010[5] 阎石.数字电子技术基础.北京:高等教育出版社,2009审查意见系(教研室)主任签字:年月日目录1概述 (5)1.1研究背景 (5)1.2设计思想及基本功能 (5)2总体设计 (5)2.1模块设计 (5)2.2程序流程图 (5)3硬件单元设计 (6)3.1电路设计总原理图 (7)3.2各模块电路设计 (7)3.2.1键盘扫描模块 (7)3.2.2时钟与复位模块 (8)3.2.3显示模块 (8)3.2.4响铃模块 (9)4软件设计 (9)4.1键盘扫描程序 (9)4.2主程序 (10)4.3显示程序 (13)4.4响铃程序 (14)5 总结 (17)6参考文献 (17)7附录 (18)1 概述1.1研究背景现代社会的发展越来越快,人们的时间观念也越来越强。

单片机课程设计报告之自动打铃系统

单片机课程设计报告之自动打铃系统

单片机课程设计之自动打铃系统这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的根底上增加了一些容,不想继续做了,还有一门考试要复习。

设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。

〔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秒。

〔4〕特色和创新自选。

三、设计步骤〔1〕设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;〔2〕进展软件设计,利用单片机系统时钟先设计一个高精度的部时钟系统,最小准确时间为期1秒;〔3〕在秒计数器的根底上设计一个24小时时钟,并设计假设干定时功能;〔4〕设计打铃执行机构,完成自动打铃功能。

四、课程设计说明书要求后面略......公开我的主要设计资料:主程序流程图:汇编程序清单:/***************************************************************程序名称:51单片机自动打铃系统简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59〔小时十位如果为0那么不显示〕到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7 打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,fpc连接器,防水连接器,连接器论坛,供给.ljqw./sell另一只为强制打铃按钮调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:P1.1;按一次使选中位加1 减少键DEC_KEY;P1.2;按一次使选中位减1 如果长按ADD_KEY或D EC_KEY,识别后那么进展调时快进,此时停顿闪烁如果选中位是秒,那么按增加键或减少键都是将秒清零强制打铃键DALING_KEY:P1.3;用来强制打铃或强制关闭铃声P0口输出数码管段选信号,P2口输出数码管位选信号。

课程设计报告---自动打铃系统

课程设计报告---自动打铃系统

目录一、设计任务和性能指标 (2)1.1设计任务 (2)1.2性能指标 (2)二、设计方案 (2)三、系统硬件设置 (3)3.1、单片机最小系统 (3)3.2时钟电路DS1302 (4)3.3、显示电路的设计 (5)3.4、键盘接口的设计 (5)3.5打铃电路的设计 (6)四、系统软件设计 (7)4.1程序流程图 (7)4.2主程序设计 (10)4.3显示子程序的设计 (11)五、调试及性能分析 (12)5.1调试步骤 (12)5.2性能分析 (12)六、心得体会 (12)参考文献 (13)附录1 系统硬件电路图 (14)附录2 程序清单 (15)一、设计任务和性能指标1.1设计任务用单片机器件为主体,设计一台自动打铃系统。

(一)基本要求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秒。

4、特色和创新自选。

1.2性能指标1.时钟:上下午(1位)、时(2位) 、分(2位)2.校对键:确认键/设置键、右移键/灭铃键、加键、减键3.响铃:蜂鸣器二.设计方案二、设计方案按照系统设计的功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示通过内部定时产生中断,从而驱动电铃打铃。

电路系统构成框图如图1.1所示。

基于单片机的自动打铃系统

基于单片机的自动打铃系统

1.任务
单片机实现按照下面表格的时刻设定各个时间节点,到一个时间节点就打铃。

通过键盘实现对时间节点的设定,设定的时间数值保存到内存当中。

利用定时器实现对当前时刻的累加,并通过数码管不断显示。

打铃通过蜂鸣器来实现。

当然,为简化自己的程序,不必完全实现下表中所有的时间节点。

打铃情况设计
2.思路
单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。

建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的作息时间是否相同,相同者,则进行报时处理并控制打铃,不相同则返回主程序。

其余请参考《基于单片机的电子时钟的设计》文档。

单片机打铃系统设计(完整)

单片机打铃系统设计(完整)

目录前言................................................................... . (1)第1章方案比较与选择 (2)1.1系统的比较与选................... ..... .... ......... (2)1.2显示器的比较与选择 (2)1.3时钟芯片的比较与选择................... . (2)第2章系统框图 (3)2.1系统框图 (3)第3章原理分析 (4)3.189C52简介 (4)3.2键盘控制模块 (7)3.3时钟电路模块............. ............. ............. ........... . (7)3.4复位电路模块........... ........ ........... ................ .. (7)3.5系统电源模块........ ........ ........... ................ ....... (8)3.6液晶显示模块........ ........ ........... ................ ......... .. (8)3.7打铃模块....... ........ . ......... .......... ................ .. (9)3.8 ISP下载线接口....... ........ .......... .......... ............ . (9)第4章系统软件设计 (10)4.1软件调试 (11)结论..................................................... .............13 致谢.................... .... .... .... .... ...................... (24)参考文献....................... ..... ..... ..... .. (26)单片机打铃系统设计前言随着现代科技的发展,管理水平的完善,具有自动提示功能的打铃器能够为企业节省人力资源,减少开支,对做到一体化管理具有很大的帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计之自动打铃系统这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的基础上增加了一些内容,不想继续做了,还有一门考试要复习。

设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。

(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秒。

(4)特色和创新自选。

三、设计步骤(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;(4)设计打铃执行机构,完成自动打铃功能。

四、课程设计说明书要求后面略......公开我的主要设计资料:主程序流程图:汇编程序清单:/***************************************************************程序名称:51单片机自动打铃系统简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,fpc连接器,防水连接器,连接器论坛,供应另一只为强制打铃按钮调整选择键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编写:最后更新:09/1/2晚***************************************************************/ BEEP EQU P3.7;定义蜂鸣器(电铃)控制信号输出口ORG 0000H;程序入口地址LJMP STARTORG 000BH;定时器0中断入口地址LJMP TIMER_0ORG 0300H/*****程序开始,初始化*****/START:SETB BEEP;关闭蜂鸣器(电铃)SETB 48H;使用一个bit位用于调时闪烁标志SETB 47H;使用一个bit位用于产生脉冲用于调时快进时基CLR 45H;关闭响铃方式1标志CLR 44H;关闭响铃方式2标志MOV R1,#0;调整选择键功能标志: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,#82HMOV TMOD,#01H;设定定时器0工作方式1MOV TH0,#3CHMOV TL0,#0B0H;赋定时初值,定时50msSETB TR0;启动定时器0MOV SP,#40H;重设堆栈指针/*****主程序*****/MAIN:CJNE R1,#00H,MAIN1;是否为正常走时状态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;调用减少键处理子程序LCALL DALING_KEY;处理强制打铃/强制关闭铃声键LJMP MAIN ;重新循环/*****定时中断服务程序*****/TIMER_0:PUSH ACCPUSH 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 20HMOV A,20HCJNE A,#20,RETI1;产生1秒基准时钟MOV 20H,#00H ;一秒钟时间到,清零20H MOV A,21HADD A,#01HDA A ;作十进制调整MOV 21H,ACJNE A,#60H,RETI1MOV 21H,#00H ;一分钟到MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00H ;一小时到MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回/*****显示处理*****/DISPLAY:MOV A,21H ;秒ANL A,#0FHMOV 2FH,A;转换出秒个位,存入2FH MOV A,21HANL A,#0F0HSWAP AMOV 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,#0FHMOV 2DH,A;转换出分个位,存入2DHMOV A,22HANL A,#0F0HSWAP AMOV 2CH,A;转换出分十位,存入2CHJB 46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#2,HOUR;如果R1为2,闪烁分位待调整JB 48H,HOURMOV 2DH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时ANL A,#0FHMOV 2BH,A;转换出时个位,存入2BHMOV A,23HANL A,#0F0HSWAP AMOV 2AH,A;转换出时十位,存入2AHJB 46H,DISP;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#1,DISP;如果R1为1,闪烁时位待调整JB 48H,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.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以消除前置0 MOV A,2AHMOVC A,@A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0;显示时十位RET/*****按键检测子程序*****/KEY_SCAN:CLR 46H;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A,#0FH ;P1口低4位连接4个按键,只判断该4位JZ EXIT_KEY ;无键按下则返回LCALL DELAY;延时去抖动MOV A,P1;重新判断CPL AANL A,#0FHJZ EXIT_KEY ;键盘去抖动MOV R5,A ;临时将键值存入R5MOV R4,#00H;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进LOOP:;进入长按处理LCALL DISPLAY;使长按时显示正常MOV A,P1CPL AANL 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/*****延时子程序*****/DELAY:MOV R7,#150DJNZ R7,$RETSET_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 R1,#02H,NEXT2;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H;如增加键按下直接清零秒RETDEC_KEY:CJNE R5,#04H,EXIT;减少键键值CJNE R1,#01H,NEXT3;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HNEXT3: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,82H,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 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:20 SETB 44HRETB2:MOV A,23HCJNE A,#08H,B3MOV A,22HCJNE A,#30H,B3;8:30 SETB 44HRETB3:MOV A,23HCJNE A,#09H,B4MOV A,22HCJNE A,#20H,B4;9:20 SETB 44HRETB4:MOV A,23HCJNE A,#09H,B5MOV A,22HCJNE A,#40H,B5;9:40 SETB 44HRETB5:MOV A,23HCJNE A,#10H,B6MOV A,22HCJNE A,#30H,B6;10:30 SETB 44HRETB6:MOV A,23HCJNE A,#10H,B7MOV A,22HCJNE A,#40H,B7;10:40 SETB 44HRETB7:MOV A,23HCJNE A,#11H,EXIT_2MOV A,22HCJNE A,#30H,EXIT_2;11:30SETB 44HRETEXIT_2:CLR 44HRET/*****响铃方式1程序(响5秒停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 SETB BEEPRETEXIT_DALING:RETEND;程序结束。

相关文档
最新文档