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

基于单片机的打铃系统一、系统简介打铃系统是一种用于管理学校、工厂、办公室等场所时间的设施,它可以自动地、准确地实现时间的管理。
本文所介绍的打铃系统基于单片机开发,通过编程实现各种铃声的播放,实现按时响铃的功能。
二、系统硬件组成打铃系统基于AT89S52单片机实现。
除了单片机之外,还需要以下硬件:1.时钟电路:用于提供准确的时钟信号。
2.按键:用于设定铃声和时间,以及启动和停止铃声。
3.位选器:用于选择哪个七段数码管进行显示。
4.七段数码管:用于显示当前时间和设定的时间。
5.蜂鸣器:用于播放铃声。
6.电源模块:用于提供系统所需的电源。
三、系统程序实现1.时钟模块时钟模块是整个打铃系统的核心模块,它通过内部定时器实现时钟计时。
定时器的具体参数需要根据外部晶体振荡器的频率进行设置。
在计时过程中,将当前时间实时显示在七段数码管上,并提供按键设置时间的功能。
2.铃声模块铃声模块主要负责蜂鸣器的控制,通过控制蜂鸣器的高低电平来实现各种铃声的播放。
在设定的时间到达时,蜂鸣器会自动响起预先设置好的铃声。
当按下停止键时,蜂鸣器会停止响铃。
四、系统优化设计为了提高打铃系统的稳定性和可靠性,需要进行一些优化设计。
其中的一些优化设计包括:1.电源管理:系统的电源管理非常重要,可以通过使用稳压器等组件来提高系统的抗噪声性能和稳定性。
2.按键处理:按键可以使用中断或轮询的方式进行处理,使用中断方式可以提高系统的实时性。
3.时钟精度:系统的时钟精度非常关键,需要使用高精度的外部晶体振荡器并进行一定的校准以提高时钟的准确性。
四、系统应用本文所介绍的打铃系统可以广泛应用于学校、工厂、办公室等场所。
它可以帮助管理者准确地掌握各个时间点,提高管理效率和准确性。
同时,通过优化设计可以大大提高系统的性能和稳定性。
五、总结打铃系统是一种非常实用的设施,通过单片机等电子技术的应用,可以实现自动化、智能化的时间管理。
本文介绍了基于单片机的打铃系统的硬件组成和程序实现,以及针对性的优化设计,以期为相关领域的读者提供一些借鉴和参考。
基于单片机自动打铃系统设计

目录第一部分设计任务 (2)1、毕业设计的主要任务 (2)2、单片机总体设计思路 (2)第二部分设计说明 (3)1、单片机介绍 (3)2、设计说明 (3)3、软件设计 (8)第三部分设计成果 (12)1、开机运行图 (12)2、自动打铃器源程序 (12)第四部分结束语 (15)第五部分致谢 (18)第六部分参考文献 (19)第一部分设计任务1、毕业设计的主要任务设计一个采用4位数码管显示时间秒、分、时,伴有调时校正电路,响铃控制则是通过作息时间表和定时器来实现自动打铃的单片机控制系统。
对于不同的季节,作息时间可能不同,可以制定多个作息时间表采用开关切换达到目的。
本设计采用了1个开关实现夏季和冬季作息时间的切换,完成一个自动循环。
2、单片机总体设计思路(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏。
(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒。
(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能。
(4)设计打铃执行机构,完成自动打铃功能。
第二部分设计说明1、单片机介绍本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分构成。
通过内部定时产生中断,从而使驱动电铃打铃。
设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生1S信号,这是秒单元加1。
同理,对分单有采用动态扫描LED的显示。
本系统采用四个按键,当时钟时间和设置时间一直时元和时单元计数从而产生秒、分、时的值,通过六位七段显示器进行显示。
由于动态显示法需要数据所存等硬件,接口作,进行打铃,每次打铃30s较复杂,考虑显示只有六位,且系统没有其他浮躁的处理程序。
2、设计说明2.1 AT89C51简介一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
基于单片机的自动打铃器设计

基于单片机的自动打铃器设计随着社会的发展和科学技术的进步,大部分单位对于时间有严格的管理制度,能够实现在预定时间进行打铃的设备也成为必需品。
本文单片机AT89C51为核心,加入了键盘输入,时间显示等模块,可以满足日常使用所需的功能。
标签:AT89C51;自动打铃器;时间;显示为了方便人们的生活和工作,自动打铃器广泛于学校、工厂、企业等有比较固定作息时间的单位。
尤其是学校,要按时打铃,以指挥师生员工上课、下课等统一行动。
现在我们可以利用单片机设计自动打铃器,在预定的时间打铃。
这项设计涉及到单片机的定时器、中断、键盘输入、LCD数码和字符显示、I2C总线、单总线、开关量输出等内容。
1 总体设计总体设计,其中最主要的就是原理设计。
根据设计要求和现有的技术条件,在满足功能、性能等用户需求的基础上,初步提出可选技术路线,并对各方案进行必要的分析,充分听取方方面面的意见,选择一种实施方案。
本项目的实施方案如下:选用机型:AT89C51(可以使用简化版AT89C2051)。
这是美国ATMEL公司生产的与INTEL公司的MCS-51系列全兼容的单片机产品,指令兼容,引脚兼容,可以直接代换。
其优点是片内程序存储器是电擦写的,使用方便,耗电少,价格低。
时间显示:16位×2行的液晶显示模块1602,显示内容比较多。
并行口连接。
键盘输入:4个独立式按键,分别是对表、定时、临时打铃和上、下、左、右调整键打铃输出:经二级晶体管放大驱动12V直流继电器,控制220V电源通、断电铃。
系统扩展:不需要扩展RAM、ROM、和其它I/O接口,只需要通过I2C总线扩展一片24LC16B,用于保存打铃时间,以保证掉电不丢失,免得重新设置之麻烦。
电源部分:220V交流电经降压、整流、滤波、稳压,提供+12V和+5V两种直流电源,再加可充电电池作备用电源,停电时保持时钟和作息时间表。
交流供电时给电池充电。
现在,专用的日历时钟芯片很多,性能也很好,尤其是精度可以很高,省电,使用方便。
基于单片机的自动打铃系统

1.任务
单片机实现按照下面表格的时刻设定各个时间节点,到一个时间节点就打铃。
通过键盘实现对时间节点的设定,设定的时间数值保存到内存当中。
利用定时器实现对当前时刻的累加,并通过数码管不断显示。
打铃通过蜂鸣器来实现。
当然,为简化自己的程序,不必完全实现下表中所有的时间节点。
打铃情况设计
2.思路
单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的作息时间是否相同,相同者,则进行报时处理并控制打铃,不相同则返回主程序。
其余请参考《基于单片机的电子时钟的设计》文档。
基于单片机控制的校园自动打铃器作息时钟设计-大学毕业论文毕业设计学位论文范文模板参考资料

校园自动打铃器作息时钟摘要本文介绍了以AT89S51单片机为控制核心的自动打铃器产品,该电路具有时钟功能,可通过产品的上的设置键对要报警的时间点逐个的设置进去,打玲器只要走到设置好的时间就能报警。
输出效果由报警模块与显示模块组成,显示模块主要采用数码管来显示时间,让人们可以看到自动打铃器的时间是否与我们生活的时间一致,如果有误差则可以通过按键对时间进行调整。
该打铃器是一种电路比较简单,功能完善,且比较实用的自动打铃器。
它不但可以适用于学校及企业工厂等场所。
关键字:单片机自动控制数码显示调整目录一.引言 (3)二.方案比较 (4)2.1方案一基于数模电路的自动打铃器 (4)2.2方案二基于A T89S51控制的自动打铃器 (5)三.硬件电路设计 (5)3.1微控制器 (5)3.2振荡电路 (6)3.3复位电路 (6)3.4控键电路 (7)3.5显示电路 (8)3.6报警电路 (9)四.软件系统设计 (10)4.1主程序设计 (10)4.2定时1mS子程序设计 (10)4.3显示子程序设计 (10)4.4软件抗干扰设计 (11)五.系统调试与测试 (13)5.1软件仿真 (13)5.2硬件电路安装 (14)5.2.1单片机振荡电路安装 (14)5.2.2单片机复位电路安装 (14)5.2.3单片机控键电路安装 (14)5.2.4单片机显示电路安装 (15)5.2.5单片机报警电路安装 (15)5.2.6整机电路安装与调试 (15)结束语............................................................................................................. 错误!未定义书签。
参考文献.. (16)附录1:总设计原理图 (17)附录2:源程序 (18)一.引言打铃器是一种广泛应用于企业和学校单位。
就以对学校单位而言,自动打铃器是为了对了广大师生的作息时间做更好的管理,它一种学校必备电子设备,也是一种逐渐成型的电子产品,打铃器多为小规模集成电路构成,其性能单一,工作起来不够理想。
基于单片机的简易自动打铃系统设计

课程设计报告课程名称:单片机原理及应用课程设计设计题目:简易自动打铃系统系别:专业:班级:学生姓名:学号:起止日期:年月日~ 年月日指导教师:教研室主任:摘要随着科学技术的飞速发展,单片机应用的范围越来越广,本设计正是基于STC89C52型单片机为核心,加上适当的外围部件,设计而成的简易自动打铃系统。
简易自动打铃系统的设计以STC89C52单片机芯片和8255芯片的拓展I/0引脚为核心部件,用定时器中断系统进行计时、数码管显示当前时间、蜂鸣器实现打铃功能、矩阵键盘调整显示时间、电源电路为整个系统提供5V工作电压,由以上模块构成了本系统。
根据设计要求,该简易自动打铃系统可以进行计时和显示,设置当前时间,实现定点打铃等功能。
该设计简单、实用、操作便捷。
关键字:单片机;自动定点打铃;设置时间;中断;矩阵键盘;I/O扩展;目录摘要 (3)目录 (4)设计要求 (5)1.方案论证与对比 (5)1.1方案一采用时钟芯片和键盘实现功能 (5)1.2方案二:采用中断定时实现功能 (5)1.3方案比较 (6)2.单元电路设计与论证 (6)2.1单片机、I/O拓展 (7)2.2打铃电路设计 (8)2.3数码管电路设计 (8)3系统软件工作流程图 (8)3.1主程序工作流程 (8)3.2定时器中断子程序 (9)3.3时间设定子程序 (10)4.系统功能实际测试 (11)4.1程序实际编译测试 (11)4.2系统实际测试 (11)4.3软件调试步骤 (11)4.4子程序调试步骤 (11)4.5调试结果 (12)4.6系统误差及性能分析 (12)5.设计总结 (12)6.详细仪器清单 (14)7. 致谢 (15)8.参考文献 (16)附录1.详细程序 (17)简易自动打铃系统设计设计要求⏹ 1.基本计时和显示功能(12小时制)。
⏹ 2.可设置当前时间(包括上下午标志,时、分的数字显示)。
⏹ 3.能在上午7:45自习)和下午10:00(晚熄灯)定点打铃,且每次打铃均为响铃3s,停1s,再响3s。
基于单片机的电铃控制系统的设计方案

基于单片机的电铃控制系统的设计方案绪论1.1 课题的提出及意义单片机作息时间控制系统是在数字电子钟的基础上,添加了电铃控制电路和音响控制电路,使其具有时钟、定闹等多重功能的一个小型的智能化系统。
此系统可以实现对时间的智能化控制,摆脱了传统的由人来控制时间的长短的不便,可广泛应用在学校、工厂和机关的自动打铃、计时、路灯及室照明和其他对象控制,因此具有广阔的市场和良好的经济效益。
通过此次设计,我们要掌握以下方面的知识:(l)单片机的原理及应用。
(2)Protel 软件的使用。
(3)作息时间控制系统的原理和实现方法。
此外,通过该课题的设计,要达到提高我们综合能力的目的,如综合应用所学知识能力、资料查询能力、计算机应用能力、语言表达能力、论文撰写能力等,尤其是要提高我们单片机应用技术的实践操作技能和利用单片机进行科技革新、开发和创新的基本能力,同时使我们初步掌握单片机应用系统设计、研制的方法。
特别是如果我们毕业以后从事与单片机相关的工作,这就可以大大缩短我们在未来工作岗位上的适应期,使我们尽快在工作中担当主角,发挥我们的作用。
1.2 设计要求1.2.1 基本要求(1)基本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
(2)能设置当前时间(含上、下午,时,分)(3)能实现基本打铃功能,规定:(4)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD 或LED的显示器;上午6:00起床铃:打铃5秒、停2秒、再打铃 5 秒。
下午10:30熄灯铃:打铃 5 秒、停 2 秒、再打铃 5 秒。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理1.2.2 发挥部分(1)增加整点报时功能,整点时响铃 5 秒,要求有控制启动和关闭功能。
(2)增加调整起床铃、熄灯铃时间的功能。
(3)增设上午 4 节课的上下课打铃功能,规定如下:7.30 上课,8.20 下课:8.30上课,9.20 下课;9.40 上课,10.30 下课;10.40 上课,11.30下课;每次铃声5 秒。
基于单片机的自动打铃系统设计很完整

摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
简易自动打铃系统的出现,使学校上下课铃声得以有效管制,对于减轻学校管理人员工作量、提高学校各工作效率,减少管理人员因忘记打铃,从而导致老师拖延课程时间起到明显效果。
本系统采用单片机STC89C52为中心器件来设计简易自动打铃控制器,系统实用性强、操作简单、扩展性强。
关键词:单片机;8255扩张芯片;数码管显示时钟模块;键盘调时钟模块;定时蜂鸣器鸣叫模块。
目录简易自动打铃系统 (1)设计要求 (1)1方案论证与对比 (1)1.1方案一 (1)1.2方案二 (1)1.3方案对比与选择 (1)2单元电路设计与计算 (2)2.1复位电路 (2)2.2时钟电路 (2)2.3按键电路 (3)2.4数码显示功能说明 (4)2.5蜂鸣器电路 (4)3系统软件工作流程 (5)3.1系统软件设计流程图 (5)3.2按键处理流程图 (5)3.3定时器中断流程图 (6)3.4响铃流程图 (7)4系统功能测试与整体指标 (8)4.1系统各功能模块的性能调试与测试 (8)4.2系统功能测试 (9)4.3系统误差原因分析 (9)4.4系统整体指标测试 (9)5详细仪器清单 (10)6总结与思考致谢 (10)7参考文献 (11)附录一:总设计原理图 (11)附录二:总设计PCB板图 (12)附录三:程序 (13)简易自动打铃系统设计要求利用单片机作为控制核心,完成一个简易自动打铃系统。
具体功能要求如下:(1)基本计时和显示功能(12小时制)。
可设置当前时间(包括上下午标志,时、分的数字显示)。
(2)能实现基本打铃功能,规定:上午7:30早自习:打铃5秒、停2秒、再打铃5秒。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第一部分设计任务 (2)1、毕业设计的主要任务 (2)2、单片机总体设计思路 (2)第二部分设计说明 (3)1、单片机介绍 (3)2、设计说明 (3)3、软件设计 (8)第三部分设计成果 (12)1、开机运行图 (12)2、自动打铃器源程序 (12)第四部分结束语 (15)第五部分致谢 (18)第六部分参考文献 (19)第一部分设计任务1、毕业设计的主要任务设计一个采用4位数码管显示时间秒、分、时,伴有调时校正电路,响铃控制则是通过作息时间表和定时器来实现自动打铃的单片机控制系统。
对于不同的季节,作息时间可能不同,可以制定多个作息时间表采用开关切换达到目的。
本设计采用了1个开关实现夏季和冬季作息时间的切换,完成一个自动循环。
2、单片机总体设计思路(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏。
(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒。
(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能。
(4)设计打铃执行机构,完成自动打铃功能。
第二部分设计说明1、单片机介绍本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分构成。
通过内部定时产生中断,从而使驱动电铃打铃。
设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生1S信号,这是秒单元加1。
同理,对分单有采用动态扫描LED的显示。
本系统采用四个按键,当时钟时间和设置时间一直时元和时单元计数从而产生秒、分、时的值,通过六位七段显示器进行显示。
由于动态显示法需要数据所存等硬件,接口作,进行打铃,每次打铃30s较复杂,考虑显示只有六位,且系统没有其他浮躁的处理程序。
2、设计说明2.1 AT89C51简介一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.1.2引脚说明VCC:供电电压。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH 编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE 只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
为使该模块化自动打铃系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。
硬件电路包括七段式数码管驱动模块、蜂鸣器驱动模块、按钮控制模块等三大模块。
2.2 P3口一些特殊功能口P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
89C51各部分引脚图下:图2-1 89C51各部分引脚图2.3系统主要硬件电路系统主要硬件电路系统主要硬件电路作为驱动整个打铃系统的电路又分为七段数码显示电路和蜂鸣器驱动电路。
由显示七段数码显示电路和蜂鸣器驱动电路组成的系统硬件主要电路如图图2-2 系统主要硬件电路该系统通过按钮控制(系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮。
调整选择键SET_KEY:P1.0通过选择键选择调整位,选中位闪烁。
增加键ADD_KEY: P1.1按一次使选中位加1。
减少键DEC_KEY:识别后则进行调时快进,此时停止闪烁。
2.4七段数码管AT89C51的计时和定时,在七段数码管上显示出来(实现24小时制电子钟,8位数码管显示,显示时分秒),再通过蜂鸣器(BEEP:P3.7)来实现打铃。
七段式数码管驱动模块的硬件设计,LED数码管显示器内部有七个条形发光二极管和一个小圆点发光二极管组成,其结果图如下所示图2-3 七段数码管因而它的控制原理和发光二极管的控制原理是相同的。
根据各管接线的形式,可分成共阴极型和共阳极型。
其八个接口对应的字形如下表1:数码管字形码表 3蜂鸣器驱动模块的硬件设计2.5蜂鸣器驱动模块本设计中的蜂鸣器驱动模块用到了蜂鸣器(SPEAKER )、三极管、100欧姆的电阻。
将蜂鸣器的一段接地,另一端接三极管的发射极,三极管的基极通过100欧姆的电阻接在三极管的P3.7引脚,三极管的集电极接+5V 的电源。
其电路图如下图所示:图2-4 蜂鸣器驱动模块字形D7D6 D5 D4 D3 D2 D1 D0 编码(共阳极) dpg f e d c b a 0 0 0 1 1 1 1 1 1 C0H 1 0 0 0 0 0 1 1 0 F9H 2 0 1 0 1 1 0 1 1 A4H 3 0 1 0 0 1 1 1 1 B0H 4 0 1 1 0 0 1 1 0 99H 5 0 1 1 0 1 1 0 1 92H 6 0 1 1 1 1 1 0 1 82H 7 0 0 0 0 0 1 1 1 F8H 8 0 1 1 1 1 1 1 1 80H 911111190H3、软件设计3.1自动打铃器软件设计自动打铃器的软件是自动打铃器的另一个重要组成部分。
在硬件设计好的基础上,软件设计的成功与否,直接关系到它能否正常运行。
根据功能要求,电子打铃器软件采用C51编写,包括:主函数、延时函数、键校时函数、显示函数、时分秒生成函数、控制响铃时间函数。
主函数、延时函数、作息时间表、键校时函数、显示函数、时分秒生成与打铃控制函数、响铃时间控制函数。
主函数通过定时器T0(工作方式为1),实现一日的24小时,首先得初始化,正常走时。
主程序调用比较打铃函数,当它与设定的时间相等时,则打铃;利用数码管(其中包含显示函数模块),显示当前时间。
当需要对时间进行校正时,可对此程序进行按键扫描,若有键按下,则调用按键处理函数,修改当前时间,若没有键按下,则返回。
主函数流程图如图8所示。
以下是初始化的部分值:定时/计数器方式控制寄存器:TMOD=01H寄存器的初值: TH0=(65536-50000)/256TL0=(65536-50000)%256;软件控制其启动: TR0=1;3.2按键处理程序流程图这部分程序主要是针对时间调整而设计的,通过按键处理函数读取键值,判断是“时”键,还是“分”键。
若为“时”键,则小时加“1”,当“时”为“24”时时,显示“00”时;若为“分”键,则分钟加“1”,当“分”为“60”分时,显示“00”分。
为防止按键抖动,加10ms延时,消除抖动。
按键处理函数流程图如图图3-1 按键处理程序流程图3.3选择冬夏时间流程图首先根据输入P1.0端口的电平信号,判断当前所用时间表为冬季还是夏季;再通过当前时间与时间表内预先设定好的时间相比较,若相等,即为打铃时间,并打铃(通过延时10s实现),否则继续比较,即返回。
流程图如图图3-2 主流程图3.4作息时间设定根据课题设计要求,自动打铃器实际上就是一个利用单片机控制的电子闹钟。
其基本原理是用电子钟的当前时间与预先设定好的作息时间表作比较,若当前时间与作息表的某时间相符就打铃,每次响铃10秒。
作息时间表选定我校冬、夏两季作息时间。
表2 湖南生物机电职业技术学院夏季、冬季作息时间表第三部分设计成果1、实物运行图图3-3 实物运行图2、自动打铃器源程序/*冬夏两季作息时间自动打铃系统*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define clocknum 22 ;/*22个打铃点*/sbit P10=P1^0 ;/*冬季、夏季选择,1夏季;0冬季*/ sbit P36=P3^6 ;/*蜂鸣器控制*/uintcodesummer[]={600,700,750,800,845,855,940,1000,1045,1055,1140,1430,1515,1 525,1610,1620,1705,1715,1800,1900,2200,2330};/*夏季作息时间表*/Uintcodewinter[]={600,700,750,800,845,855,940,1000,1045,1055,1140,1400,1445,1 455,1540,1550,1645,1655,1740,1900,2200,2300};/*冬季作息时间表*/ucharcodeSegCode[10]={192,249,164,176,153,146,130,248,128,144} ;/*0~9共阳极段码*/uchar HMS[3]={12,0,0},C150ms=0,C250ms=0 ;/*时分秒(开机为12:00)及50毫秒计数器*/void delay(unsigned char time) ;/*延时函数*/ {unsigned char i,j;for(i=0;i<time;i++)for(j=0;j<255;j++);}void KeyBoardScan() ;/*键盘扫描函数*/ {P2=0xff ;/*关闭显示且P2由输出转为输入*/ if(P2!=0xff){delay(12);/*延时消抖,约10ms*/if(P2!=0xff) {/*键识别与处理*/switch(P2){case 0xef:if(++HMS[0]==24)HMS[0]=0;break} ;/*时+1*/case 0xdf:if(--HMS[0]==255)HMS[0]=23;break} ;/*时-1*/case 0xbf:if(++HMS[1]==60)HMS[1]=0;break} ;/*分+1*/case 0x7f:if(--HMS[1]==255)HMS[1]=59;break} ;/*分-1*/while(P2!=0xff) ;/*等待键释放*/ void display() ;/*显示时、分函数*/{P2=0xfe ;/*指向时高位*/P0=SegCode[HMS[0]/10] ;/*显示时高位*/delay(4) ;/*延时约5ms*/P2=0xfd ;/*指向时低位*/if(C150ms/10)P0=SegCode[HMS[0]%10] ;/*显示时低位*/elseP0=0x7f&SegCode[HMS[0]%10] ;/*带小数点显示时低位*/ delay(4) ;/*延时约5ms*/P2=0xfb ;/*指向分高位*/P0=SegCode[HMS[1]/10] ;/*显示分高位*/delay(4) ;/*延时约5ms*/P2=0xf7 ;/*指向分低位*/P0=SegCode[HMS[1]%10] ;/*显示分低位*/delay(8) ;/*延时约3ms*/void main()}TMOD=0x11 ;/*T0、T1定时,均为方式1*/ TH0=(65536-50000)/256 ;/*T0定时50ms*/TL0=(65536-50000)%256ET0=1 ;/*允许T0中断*/ET1=1 ;/*允许T1中断*/PT0=1 ;/*T0高优先级*/EA=1 ;/*开中断*/PT0=1 ;/*T0高优先级*/TR0=1 ;/*启动T0*/while(1){KeyBoardScan()} ;/*扫描键盘*/ {display()} ;/*显示时间*/ void TC0(void)interrupt 1 ;/*T0中断处理函数——产生时分秒*/ {uchar i;uint clock;}第四部分结束语这次的课程设计我选择的是STC89C52RC单片机的自动打铃器的设计,主要的过程:(1)老师给我们提供了课题并在第一天上午给我们耐心的讲解了此次设计所需要掌握的知识,和所需要使用到的软件,并进行了演示,这让我明白自己应该要设计什么,需要哪些要求,但是对于整个设计过程需要计算的一些数据还是没有一个清晰的思维模式。