自己设计的单片机打铃系统
基于单片机的打铃系统
![基于单片机的打铃系统](https://img.taocdn.com/s3/m/c8c6292f640e52ea551810a6f524ccbff121cae9.png)
基于单片机的打铃系统一、系统简介打铃系统是一种用于管理学校、工厂、办公室等场所时间的设施,它可以自动地、准确地实现时间的管理。
本文所介绍的打铃系统基于单片机开发,通过编程实现各种铃声的播放,实现按时响铃的功能。
二、系统硬件组成打铃系统基于AT89S52单片机实现。
除了单片机之外,还需要以下硬件:1.时钟电路:用于提供准确的时钟信号。
2.按键:用于设定铃声和时间,以及启动和停止铃声。
3.位选器:用于选择哪个七段数码管进行显示。
4.七段数码管:用于显示当前时间和设定的时间。
5.蜂鸣器:用于播放铃声。
6.电源模块:用于提供系统所需的电源。
三、系统程序实现1.时钟模块时钟模块是整个打铃系统的核心模块,它通过内部定时器实现时钟计时。
定时器的具体参数需要根据外部晶体振荡器的频率进行设置。
在计时过程中,将当前时间实时显示在七段数码管上,并提供按键设置时间的功能。
2.铃声模块铃声模块主要负责蜂鸣器的控制,通过控制蜂鸣器的高低电平来实现各种铃声的播放。
在设定的时间到达时,蜂鸣器会自动响起预先设置好的铃声。
当按下停止键时,蜂鸣器会停止响铃。
四、系统优化设计为了提高打铃系统的稳定性和可靠性,需要进行一些优化设计。
其中的一些优化设计包括:1.电源管理:系统的电源管理非常重要,可以通过使用稳压器等组件来提高系统的抗噪声性能和稳定性。
2.按键处理:按键可以使用中断或轮询的方式进行处理,使用中断方式可以提高系统的实时性。
3.时钟精度:系统的时钟精度非常关键,需要使用高精度的外部晶体振荡器并进行一定的校准以提高时钟的准确性。
四、系统应用本文所介绍的打铃系统可以广泛应用于学校、工厂、办公室等场所。
它可以帮助管理者准确地掌握各个时间点,提高管理效率和准确性。
同时,通过优化设计可以大大提高系统的性能和稳定性。
五、总结打铃系统是一种非常实用的设施,通过单片机等电子技术的应用,可以实现自动化、智能化的时间管理。
本文介绍了基于单片机的打铃系统的硬件组成和程序实现,以及针对性的优化设计,以期为相关领域的读者提供一些借鉴和参考。
基于单片机自动打铃系统设计
![基于单片机自动打铃系统设计](https://img.taocdn.com/s3/m/dbfe00eb0912a2161579296a.png)
目录第一部分设计任务 (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位微处理器,俗称单片机。
单片机电子闹钟程序亲自编写-可用
![单片机电子闹钟程序亲自编写-可用](https://img.taocdn.com/s3/m/f9a7effc804d2b160a4ec036.png)
单片机电子闹钟程序(亲自编写-可用)————————————————————————————————作者:————————————————————————————————日期:学校电子钟,有闹钟功能,按键可调时间,可调打铃时间,打铃时间长短显示,每个模块有功能注释。
其中正常时间显示和闹钟时间显示可用一个开关来调整。
芯片选择STC89C52程序:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//定义显示段码uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};uchar codebbtime[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar clock[]={0,0,0,0};uchar clock1[]={12,30,0};uchar weikong[6];uchar bbduration=4;uchar lingtime=9;//学校打铃时间组uchar shangwu1[]={8,30};uchar shangwu2[]={10,0};uchar shangwu3[]={10,20};uchar shangwu4[]={11,50};uchar xiawu1[]={13,30};uchar xiawu2[]={15,00};uchar xiawu3[]={15,15};uchar xiawu4[]={16,45};//按键定义sbit mode=P1^7;sbit sec_clr=P1^0;sbit min_set_add=P1^3;sbit min_set_sub=P1^4;sbit hour_set_add=P1^1;sbit hour_set_sub=P1^2;sbit bb_set_add=P1^5;sbit bb_set_sub=P1^6;sbit speaker=P2^6;//延时函数void delay(unsigned int t){while(t--);//时钟进位函数void clockjinwei(){clock[0]++;if(clock[0]==20){clock[1]++;clock[0]=0;if(clock[1]==60){clock[2]++;clock[1]=0;if(clock[2]==60){clock[3]++;clock[2]=0;if(clock[3]==24)clock[3]=0;}}}}//定时器0中断服务函数void timer0(void) interrupt 1 using 1 {TMOD=0x01;TH0=0x3c;TL0=0xb0;clockjinwei();}//时钟分位显示函数void fenwei(){weikong[0]=clock[3]/10;weikong[1]=clock[3]%10;weikong[2]=clock[2]/10;weikong[3]=clock[2]%10;weikong[4]=clock[1]/10;weikong[5]=clock[1]%10;}//闹钟分位显示函数void naofen(){weikong[0]=clock1[0]/10;weikong[1]=clock1[0]%10;weikong[2]=clock1[1]/10;weikong[3]=clock1[1]%10;weikong[4]=clock1[2]/10;weikong[5]=clock1[2]%10; }//闹钟定时显示函数void naozhongdisplay(){uchar z,s;uchar x=0x01;naofen();for(z=0;z<6;z++){P2=0;P0=table[weikong[z]];P2=x;x=_crol_(x,1);for(s=0;s<255;s++);}}//时钟显示函数void display(){uchar i,j;uchar x=0x01;fenwei();for(i=0;i<6;i++){P2=0;P0=table[weikong[i]];P2=x;x=_crol_(x,1);for(j=0;j<255;j++);}}//总显示函数void zhongxian(){if(mode==1)delay(100);if(mode==1)display();if(mode==0)delay(100);if(mode==0)naozhongdisplay();}//按键处理程序void key_set(){zhongxian();P1=0xff;if(min_set_add==0){delay(100);if(min_set_add==0){if(mode==1){clock[2]++;if(clock[2]==60){clock[2]=0;}while(min_set_add==0)zhongxian();}}if(mode==0){clock1[1]++;if(clock1[1]==60){clock1[1]=0;}while(min_set_add==0)zhongxian();}}//if(min_set_sub==0){delay(100);if(min_set_sub==0){if(mode==1){clock[2]--;if(clock[2]==0)clock[2]=59;}while(min_set_sub==0)zhongxian();if(mode==0){clock1[1]--;if(clock1[1]==0)clock1[1]=59;}while(min_set_sub==0)zhongxian();}}//if(hour_set_add==0){delay(100);if(hour_set_add==0){if(mode==1){clock[3]++;if(clock[3]==24){clock[3]=0;}while(hour_set_add==0)zhongxian();}if(mode==0){clock1[0]++;if(clock1[0]==24){clock1[0]=0;}while(hour_set_add==0)zhongxian();}}}//if(hour_set_sub==0){delay(100);if(hour_set_sub==0){if(mode==1){clock[3]--;if(clock[3]==0)clock[3]=23;}while(hour_set_sub==0)zhongxian();if(mode==0){clock1[0]--;if(clock1[0]==0)clock1[0]=23;}while(hour_set_sub==0)zhongxian();}}//if(sec_clr==0){delay(100);if(sec_clr==0){clock[1]=0;}while(sec_clr==0)zhongxian();}}//闹钟响铃函数void bb(){if(clock[1]<=bbduration){speaker=1;delay(100);speaker=0;}else speaker=0;}//打铃函数void daling(){if(clock[1]<=lingtime){speaker=1;delay(100);speaker=0;}else speaker=0;}//时间比较函数void bijiao(){if(clock[3]==shangwu1[0]){if(clock[2]==shangwu1[1])daling();}if(clock[3]==shangwu2[0]){if(clock[2]==shangwu2[1])daling();}if(clock[3]==shangwu3[0]){if(clock[2]==shangwu3[1])daling();}if(clock[3]==shangwu4[0]){if(clock[2]==shangwu4[1])daling();}if(clock[3]==xiawu1[0]){if(clock[2]==xiawu1[1])daling();}if(clock[3]==xiawu2[0]){if(clock[2]==xiawu2[1])daling();}if(clock[3]==xiawu3[0]){if(clock[2]==xiawu3[1])daling();}if(clock[3]==xiawu4[0]){if(clock[2]==xiawu4[1])daling();}}//闹钟比较void naobijiao(){if(clock[3]==clock1[0]){if(clock[2]==clock1[1]||clock[2]==clock1[1]+1||clock[2]==clock1[1]+2) bb();}}//响铃时长显示函数void bbtimeshow(){P3=bbtime[bbduration];if(bbduration>15)bbduration=0;}//响铃按键处理函数void bbtime_set(){bbtimeshow();if(bb_set_add==0){delay(100);if(bb_set_add==0)bbduration++;while(bb_set_add==0)bbtimeshow();}if(bb_set_sub==0){delay(100);if(bb_set_sub==0)bbduration--;while(bb_set_sub==0)bbtimeshow();}}//主程序void main(){EA=1;ET0=1;TR0=1;while(1){key_set();bijiao();bbtime_set();naobijiao();}}电路图:分四部分显示:如果在学习这个程序过程中有什么问题,可以发邮件到询问。
单片机自动控制打铃系统设计
![单片机自动控制打铃系统设计](https://img.taocdn.com/s3/m/e5a9dc07561252d380eb6ea8.png)
单片机自动控制打铃系统,是以一片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位同时操作的,只能全部作为输入或输出,而不能将一部分做输入,另一部分做输出。
基于单片机的自动打铃系统及仿真
![基于单片机的自动打铃系统及仿真](https://img.taocdn.com/s3/m/53681bc46294dd88d0d26bef.png)
摘要在人们的日常生活中,控制系统已经走入了千家万户,对于学校生活来说,按时打铃提醒学生上下课是一件必不可少的事情,遗忘的打铃工作军都是依靠人为进行计时,按时打铃,第一打铃的时间并不精确,同时也浪费较多的人力,造成了很大的浪费,论文以此为切入点,结合已经学习的51单片机的知识,设计了一种自动打铃的自动化系统,改善了学校打铃工作的现状,节约了人力、物力、财力。
关键词:定时打铃;DS1302时钟;LCD1602液晶显示ABSTRACTWith the improvement of social life, a variety of automatic control system quickly into people's lives, for school life, the bell on time to remind students to attend classes is an essential thing, forgotten bell work The military relies on man-made timing, the bell on time, the first ringing time is not precise, but also a waste of more manpower, resulting in a great waste of paper as a starting point for the design of a 51-based microcontroller Automatic school timely bell system, while using LCD1602 LCD real-time display time to improve the status of the bell work. Improve the automation of this work.Key words:timing bell; DS1302 clock; LCD1602 liquid crystal display目录摘要 (1)ABSTRACT (2)第1章绪论 (5)1.1选题背景及研究意义 (5)1.2课题设计的主要内容 (5)第2章方案的总体设计 (7)2.1主控芯片的选择 (7)2.2显示模块 (7)2.3时钟模块的选择 (8)第3章系统硬件设计 (9)3.1各个主要模块功能介绍 (9)3.1.1系统主要芯片和元器件的介绍及应用 (9)3.1.2 DS1302 时钟模块介绍 (9)3.1.3 LCD液晶显示模块介绍 (13)3.1.4 蜂鸣器模块 (15)3.2单片机最小系统的设计 (16)3.2.1 时钟脉冲电路 (16)3.2.2复位电路 (16)3.3硬件设计总图 (17)第4章软件程序设计 (19)4.1软件程序整体设计 (19)4.1.1程序流程图 (19)4.2程序模块设计 (20)4.2.1 DS1302时钟显示与调节程序设计 (20)4.2.2 LCD1602显示程序设计 (21)4.2.3蜂鸣器程序设计 (22)第5章系统仿真 (23)5.1 PROTEUS软件简介 (23)5.2仿真结果 (23)参考文献 (25)致谢 (26)第1章绪论1.1 选题背景及研究意义随着社会的发展和自动化水平的提高,各种物品都在向着自动化方向运行和进展,本片的论文也是如此,为了解决学校日常生活中的打铃问题,开展了自动打铃系统的研制毕业课程设计,充分发挥了所学知识,将其用于学生的日常生活中,方便了老师的同时也方便了学生的日常生活,基于当前已经有较多产品投入了日常的生活中去,论文将以一些常见的自动打铃产品为依托进行仿造设计,从而完成整体的毕业设计任务。
基于单片机的自动打铃器设计
![基于单片机的自动打铃器设计](https://img.taocdn.com/s3/m/3dd1cd72f342336c1eb91a37f111f18583d00cab.png)
基于单片机的自动打铃器设计随着社会的发展和科学技术的进步,大部分单位对于时间有严格的管理制度,能够实现在预定时间进行打铃的设备也成为必需品。
本文单片机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两种直流电源,再加可充电电池作备用电源,停电时保持时钟和作息时间表。
交流供电时给电池充电。
现在,专用的日历时钟芯片很多,性能也很好,尤其是精度可以很高,省电,使用方便。
单片机课程设计报告之自动打铃系统
![单片机课程设计报告之自动打铃系统](https://img.taocdn.com/s3/m/c38c02fe52d380eb63946dd7.png)
单片机课程设计之自动打铃系统这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的根底上增加了一些容,不想继续做了,还有一门考试要复习。
设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。
〔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口输出数码管位选信号。
课程设计报告---自动打铃系统
![课程设计报告---自动打铃系统](https://img.taocdn.com/s3/m/ed3dcee7c8d376eeaeaa3127.png)
目录一、设计任务和性能指标 (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所示。
单片机打铃系统设计(完整)
![单片机打铃系统设计(完整)](https://img.taocdn.com/s3/m/af954f45284ac850ac024233.png)
目录前言................................................................... . (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)单片机打铃系统设计前言随着现代科技的发展,管理水平的完善,具有自动提示功能的打铃器能够为企业节省人力资源,减少开支,对做到一体化管理具有很大的帮助。
基于单片机的自动打铃系统设计很完整
![基于单片机的自动打铃系统设计很完整](https://img.taocdn.com/s3/m/4e42b9d5a6c30c2258019e36.png)
摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
简易自动打铃系统的出现,使学校上下课铃声得以有效管制,对于减轻学校管理人员工作量、提高学校各工作效率,减少管理人员因忘记打铃,从而导致老师拖延课程时间起到明显效果。
本系统采用单片机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秒。
课程设计单片机(时钟打铃系统)
![课程设计单片机(时钟打铃系统)](https://img.taocdn.com/s3/m/1016f4e8767f5acfa1c7cda2.png)
目录第1章概述 (2)1.1 设计要求 (2)1.2 设计目的 (2)1.3 设计意义 (2)第2章系统总体方案选择与说明 (3)第3章硬件电路设计 (4)3.1 按键控制模块 (4)3.2 时间显示模块 (5)3.3 打铃模块 (6)第4章应用软件设计 (8)4.1系统软件设计思想 (8)4.2 系统主程序 (8)4.3 中断子程序 (9)4.4 按键扫描子程序 (11)第5章系统仿真调试 (12)5.1 软件简介 (12)5.2软件仿真 (12)第6章硬件调试与结果分析 (15)结束语 (17)致谢 (18)参考文献 (19)附录A 系统硬件电路原理图 (20)附录B 程序清单 (21)评分表 (29)第1章概述1.1 设计要求本设计要求设计学校作息时间控制器,其设计实现的功能主要有:使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED闪动作为秒计数表示,到响应时间打铃,可冬夏季切换。
可以设定作息时间,并进行到时提示。
能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。
1.2 设计目的增强对单片机的认识,与理解,提高时间能力与水平。
学会使用proteus仿真软件,充分把所学电路、模数电理论与实践结合,了解和掌握单片机设计软件与硬件设计结合过程、方法和实现,以及掌握单片机的内部模块的应用。
1.3 设计意义用单片机及c语言编程模拟学校作息时间,到时打铃,以及冬季夏季手动切换打铃时间。
第2章系统总体方案选择与说明由按键控制模块控制单片机最小系统的时间、月份、年以及打铃时间,在有单片机控制数码管显示以及蜂鸣器。
本次设计实现的功能主要有:使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED小数点闪动作为秒计数表示。
可以设定作息时间,并进行到时提示。
能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。
由按键输入控制设置年月日以及当前时间、并可设置闹钟定时,时间到由蜂鸣器发出响声。
基于51单片机对自动打铃系统的设计
![基于51单片机对自动打铃系统的设计](https://img.taocdn.com/s3/m/776f3360e45c3b3567ec8b2e.png)
}
void Increase_Minute()
{
if(++m》59)
{
m=0;Increase_Hour();
}
DSY_BUFFER[3]=DSY_CODE[m/10];
DSY_BUFFER[4]=DSY_CODE[m];
}
void Decrease_Minute()
if(h==16 else cc=dd=1;
if(h==18 else cc=dd=1;
if(h==18 else cc=dd=1;
if(h==19 else cc=dd=1;
if(h==21 else cc=dd=1;
if(h==22else cc=dd=1; }
else cc=dd=1;
if(h1==6)
{ m--;
if(m《0)m=59;
DSY_BUFFER[3]=DSY_CODE[m/10];
DSY_BUFFER[4]=DSY_CODE[m];
}
void Increase_Hour1()
{
if(++h1》7)h1=1;
DSY_BUFFER[6]=DSY_CODE[h1/10];
DSY_BUFFER[7]=DSY_CODE[h1];
uchar DSY_BUFFER[]={0,0,0xBF,0,0,0xff,0,0};//时间显示时-分模式
uchar DSY_BUFFER1[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //模式显示段//
uchar Scan_BIT;//位选择//
uchar DSY_IDX;//段选择//
基于单片机的教学打铃控制器设计
![基于单片机的教学打铃控制器设计](https://img.taocdn.com/s3/m/76ade85ba517866fb84ae45c3b3567ec102ddcfe.png)
基于单片机的教学打铃控制器设计随着社会的快速发展和教育的变革,学校的管理也越来越智能化。
其中,教学打铃系统尤其是一项必需的管理手段。
然而,在传统的打铃系统中,存在诸多问题,例如频繁出现的故障、安装和维护成本高昂以及难以满足不同场合的多样化需求等。
因此,基于单片机的教学打铃控制器应运而生,成为教学管理的重要工具。
基于单片机的教学打铃控制器是一种高效可靠、精度高、注册应用广泛的数字化打铃系统。
与传统打铃系统相比,它使用单片机作为核心控制器,实现程序控制,程序实时性好,可靠性高。
同时,该系统具有更多的功能,如定时功能、周计划功能、多语言查询等,能够满足各种不同的场合与需求。
该系统的硬件主要包括打铃控制器、时钟电路、显示器、键盘等部分。
打铃控制器采用单片机,通过输入、处理、输出的方式实现了控制信号的转换与传递。
时钟电路则可精确地控制打铃时间,增强了系统的稳定性。
显示器和键盘则起到人机交互的作用,在更方便且人性化的操作中发挥了至关重要的作用。
在软件方面,该控制器系统主要设计功能包括实时时钟、计时计划、语音提示、多级权限等。
实时时钟功能可根据自行设定的时间表档案精确设置铃声播放时间。
计时计划则可以通过统计不同的节次和课程时间来实现不同的课程的铃声控制。
在语音提示功能中,您可以将语音文件录入系统,并实现系统的语音提示功能。
多级权限功能可以有效地实现不同权限的用户对铃声的控制,从而避免了教学管理中出现的非法操作和误操作等。
在教学管理中,基于单片机的教学打铃控制器有着广泛的应用,特别是在学校、科研机构、实验室等场所。
其优越的性能和丰富的功能使其成为教学管理的不可或缺的一部分。
通过该系统,学校教育管理人员可以更好地实现对铃声的管理和控制,有效地提高学校的学习效率。
总之,基于单片机的教学打铃控制器是一种高效、精准且具备广泛应用前景的数字化打铃系统。
它的应用为学校教学管理提供了较好的解决方案,不仅便捷高效,而且成本低廉、维护简单。
单片机自动打铃系统设计
![单片机自动打铃系统设计](https://img.taocdn.com/s3/m/6692a7d5de80d4d8d05a4f9c.png)
. 1自动打铃系统----学校上下课自动打铃设计设计人:要求:(1)实现上下课的打铃,并通过语音提示上下课;(2)按下开机键,显示当前年月日时间,在LCD液晶屏显示年,月,日,星期,时,分,秒,年-月-日-星期显示在第一行,格式xx-xx-xx-星期x;时分秒显示在第二行,格式xx-xx-xx(24小时格式);(3)能够设置当前时间;(4)使用语音芯片提示上下课,上课时提示:“亲爱的同学们,上课了”,重复2遍,下课时提示:“亲爱的同学们,下课了“,重复2遍。
(5)允许使用时钟芯片。
. . . w d .-《摘要》单片机的外接石英晶体振荡器能提供稳定、准确的基准频率,并经12分频后向部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息。
如果石英晶体振荡器的频率信号为6MHZ,设定定时器定时工作方式1下,定时器为3CBOH,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数自动打铃系统,是以一片8位单片机为核心的实时时钟及控制系统。
我们知道到60,则向时计数器进位,如此周而复始的连续计数,便可获得时、分、秒的信号,建立一个实时时钟。
接下来便可以进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)是否相同,如有相同者,则进行报时处理并控制打铃,如有不相同则返回主程序,如此便实现了报时控制的要求。
《关键词》单片机;时间设置电路;计时电路;显示电路;定时打铃控制电路可修编XX信息职业技术学院毕业设计(论文)《引言》始的无人问津到现在的随处可见,红绿灯,记分牌,电子秒表,遥控器,电饭煲,电视等只要是电子产随着科技的不断发展,各种芯片都得到了很好的发展,80C51 同样如此,从开品,都会和芯片有关,其实芯片并不是什么神秘的高科技,它只是里面装了一些己编好的程序而己.而这里要介绍的是用汇编语言来编程的一个系统,它能够让一个学校或企业集团实现打铃自动化,总之,一个需要时间系统的机构实现自动提醒功能。
基于单片机的校园打铃系统设计设计说明
![基于单片机的校园打铃系统设计设计说明](https://img.taocdn.com/s3/m/040dc5425901020206409c2a.png)
基于单片机的校园打铃系统设计设计说明信息职业技术学院毕业设计说明书(论文)设计题目: 基于单片机的校园打铃系统设计专业: 应用电子技术班级: 应电08-2学号:姓名:指导教师:二〇一〇年九月十日目录摘要 (1)第1章绪论 (2)第2章方案设计与论证 (3)2.1系统方案选择与比较 (3)2.1.1 控制模块方案选择 (3)2.1.2 显示模块方案选择 (4)2.2.3 存储模块方案选择 (4)2.2总体方案设计思想 (5)第3章硬件电路设计 (6)3.1控制模块设计 (6)3.1.1 单片机AT89C51简介 (6)3.1.2 单片机时钟电路复位电路介绍 (7)3.2打铃模块 (8)3.3存储模块 (8)3.3.1 实时时钟DS1302简介 (8)3.3.2 存储器24C02C (10)3.4键控模块 (12)3.4.1 独立式键盘介绍 (12)3.4.2 键盘接口及键位的功能介绍 (13)3.5显示模块 (13)3.5.1 数码管的组成及工作原理 (14)3.5.2 数码管的显示 (14)第4章整机原理 (16)4.1整机原理图 (16)4.2整机电路原理 (16)第5章软件设计 (18)5.1打铃系统流程图 (18)5.2读时间日期显示流程图 (18)5.3LED显示流程图 (19)5.4主程序流程图 (20)第6章仿真和调试 (21)6.1调试软件的介绍 (21)6.2调试的操作步骤 (21)6.3仿真软件对于本设计的仿真 (22)结论 (25)参考文献 (26)附录1 整机原理图 (27)附录2 元件明细表 (28)附录3 源程序 (29)摘要本设计以单片机AT89C51为控制核心,与DS1302、24C02C和LED等组成校园打铃系统,运用实时时钟芯片DS1302实现时间控制,同时运用LED七段数码管完成当前的年、月、日、时、分、秒和星期以及打铃时间的显示,再利用键盘可以对系统当前时间以及打铃时间进行调节、存储、清空操作,并且使用外部存储器24C02C完成打铃时间的存储。
基于AVR单片机的上下课自动打铃系统的实现
![基于AVR单片机的上下课自动打铃系统的实现](https://img.taocdn.com/s3/m/beed8bbae009581b6bd9ebfe.png)
基于AVR单片机的上下课自动打铃系统的实现
昨晚花一晚上把这些资料整理了一下,全部发出来了。
由于补课没有铃。
3 月份做了这个东西,已实际使用,稳定运行一个学期。
上运行图:
硬件如下:AVR ATmega16 单片机,开发板(用到上面的:继电器、LED 走马灯、两个按钮)、门铃、LED 若干、16Mhz 无源晶振。
硬件照片:开发板:AVR 单片机:晶振:
好了照片晒完了,下面开始正文原理图如下:好吧我的能耐真大,这电路图不是用什么CAD 专业软件画的,而是用Windows 画图板用鼠标一笔一划画的。
所以效果不是很好,凑合着看吧,知道个大概就行了。
(开发板上肯
定还有其他资源,电路图中的资源也不止开发板上的。
这个电路图是本系统的原理图而不是开发板的全部电路图,画的只是和本系统有关的东西,开发板上其他无关的就不画了,也不需要画)tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。
(1)按照设计标准,画出系统框图和系统硬件电路图。
(2)完成该课题的程序设计,提交程序设计框图及程序设计清单。
(3)提交课程设计报告二、设计要求(一)基本要求(1)基本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
(2)能设置当前时间(含上、下午,时,分)(3)能实现基本打铃功能,规定:上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。
下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理(4) 每天8节课的上下课打铃功能,规定如下:8:00 上课,8:45下课,8:55上课,9:40下课;10:00 上课,10:45下课;10: 55上课,11:40下课;2:00上课,2:45下课,2:55上课,3:40下课,4:00上课,4:45下课,4:55上课,5:40下课每次铃声5秒。
(二)发挥部分(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。
(2)增加调整起床铃、熄灯铃时间的功能。
(3)特色和创新自选。
三、设计步骤(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编写:最后更新: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 ;一秒钟时间到,清零20HMOV 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 ;转换出秒个位,存入2FHMOV 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以消除前置0MOV 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,$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 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 ;如增加键按下直接清零秒RET/*****减少键处理子程序*****/DEC_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: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: 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秒停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_DALINGSETB BEEPRETEXIT_DALING: RETEND ;程序结束。