自己设计的单片机打铃系统
单片机电子闹钟程序亲自编写-可用
单片机电子闹钟程序(亲自编写-可用)————————————————————————————————作者:————————————————————————————————日期:学校电子钟,有闹钟功能,按键可调时间,可调打铃时间,打铃时间长短显示,每个模块有功能注释。
其中正常时间显示和闹钟时间显示可用一个开关来调整。
芯片选择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();}}电路图:分四部分显示:如果在学习这个程序过程中有什么问题,可以发邮件到询问。
单片机闹钟设计程序报告
单片机闹钟设计程序报告1. 引言闹钟作为人们日常生活中的常用物品,不仅有叫醒人们起床的功能,还可以作为提醒的工具。
随着科技的进步,单片机闹钟逐渐取代了传统的机械闹钟,成为人们生活中不可或缺的一部分。
本报告旨在介绍一个基于单片机的简单闹钟设计程序。
2. 设计方案本设计方案使用了单片机和数码管作为主要硬件,通过对单片机的编程,实现了闹钟的基本功能,包括时间设置、闹钟时间设置、闹钟触发、蜂鸣器报警等。
2.1 硬件设计硬件方面,本设计基于某型号的单片机和数码管。
单片机通过相关的引脚与数码管相连,通过控制引脚的电平来显示不同的数字。
2.2 软件设计软件方面,本设计使用C语言编程实现。
主要的功能包括获取当前时间、显示时间、设置时间、设置闹钟时间、闹钟触发检测、蜂鸣器报警等。
3. 程序实现3.1 初始化设置在程序的开始部分,需要对单片机进行初始化设置。
包括设置引脚的输入输出模式、设置计时器、设置中断等。
3.2 时间显示为了实现时间显示的功能,我们需要通过单片机的计时器来不断获取当前时间,并将其转换为时、分、秒的格式。
然后通过数码管显示出来。
3.3 时间设置通过给单片机的某个引脚接入按钮,实现时间设置功能。
当按钮被按下时,单片机进入时间设置模式。
此时,用户可以通过另外的按钮来逐个调整时、分、秒的数值。
3.4 闹钟时间设置类似于时间设置,闹钟时间设置也需要通过按钮来实现。
用户可以按下对应的按钮来设置闹钟的时、分,设置完毕后,单片机会将设置的时间保存起来。
3.5 闹钟触发检测在每一次时间显示的循环中,程序都会检测当前时间是否与闹钟时间相符。
如果相符,则触发闹钟,蜂鸣器开始报警。
3.6 蜂鸣器报警通过单片机的一个输出引脚,连接到蜂鸣器,实现蜂鸣器的报警功能。
当闹钟触发时,单片机会给对应的引脚输出一个高电平,从而使蜂鸣器发声。
4. 总结通过对单片机闹钟设计程序的实现,我们成功实现了闹钟的基本功能,包括时间设置、闹钟时间设置、闹钟触发、蜂鸣器报警等。
单片机课程设计(“叮咚”门铃)
“叮咚”门铃1.实验任务当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。
2.电路原理图图4.19.13.系统板上硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2.在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;(3.把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;4.程序设计方法(1.我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。
(2.在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。
(3.“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。
6.汇编源程序T5HZ EQU 30HT7HZ EQU 31HT05SA EQU 32HT05SB EQU 33HFLAG BIT 00HSTOP BIT 01HSP1 BIT P3.7ORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB ET0SETB EANSP: JB SP1,NSPLCALL DELY10MSJB SP1,NSPSETB TR0MOV T5HZ,#00HMOV T7HZ,#00HMOV T05SA,#00HMOV T05SB,#00HCLR FLAGCLR STOPJNB STOP,$LJMP NSPDELY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETINT_T0: INC T05SAMOV A,T05SACJNE A,#100,NEXTMOV T05SA,#00HINC T05SBMOV A,T05SBCJNE A,#20,NEXTMOV T05SB,#00HJB FLAG,STPCPL FLAGLJMP NEXTSTP: SETB STOPCLR TR0LJMP DONE NEXT: JB FLAG,S5HZINC T7HZMOV A,T7HZCJNE A,#03H,DONEMOV T7HZ,#00HCPL P1.0LJMP DONES5HZ: INC T5HZMOV A,T5HZCJNE A,#04H,DONEMOV T5HZ,#00HCPL P1.0LJMP DONE DONE: RETIEND7.C语言源程序#include <AT89X51.H> unsigned char t5hz; unsigned char t7hz; unsigned int tcnt;bit stop;bit flag;void main(void){unsigned char i,j;TMOD=0x02;TH0=0x06;TL0=0x06;ET0=1;EA=1;while(1){if(P3_7==0){for(i=10;i>0;i--)for(j=248;j>0;j--);if(P3_7==0){t5hz=0;t7hz=0;tcnt=0;flag=0;stop=0;TR0=1;while(stop==0);}}}}void t0(void) interrupt 1 using 0 {tcnt++;if(tcnt==2000){tcnt=0;if(flag==0){flag=~flag; }else{stop=1; TR0=0;}}if(flag==0){t7hz++;if(t7hz==3){t7hz=0;P1_0=~P1_0; }}else{t5hz++;if(t5hz==4) {t5hz=0;P1_0=~P1_0; }}}。
基于单片机自动打铃系统设计
目录第一部分设计任务 (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位微处理器,俗称单片机。
基于单片机无线控制的多功能打铃仪设计
表2 G P S 接收测试
l 旦 坚 I 里l
不 同动作 。
l
8 : 0 o 1 0 : 0 0 1 2 : 0 0 1 6 : 0 0 1 8 : 0 0 2 0 : 0 0 2 4 : O 0
巡检控制包为3 个字节 ,0 B :命令字 , 不同的命 令代 表
( 6 ) 传感 器巡 检包 ( 子机接 收 )
! l !
l 里 I 兰 呈 I
l
I
】
巡检控制包为2 个字节 , O B : 命令字 , 不 同的命令代表 不 同动作 ;1 B :I D 号 ,存放子机2 的I D 地址 ; 2 B : 传感器 型
号 ;3 B : 传感器动作
2 ol 3. 07
进行打铃时 间比较
进行打铃时 间比较
N
间是 为l 2 点
切换为0 0 信道并发射检 测信号,对子机进行检 测, 等待子机应答
一
Y
时间是否为 打铃时间
N
切换为o 0 信道并发射 打铃信号
J r Y
L—]
子机指示灯保持长亮I ຫໍສະໝຸດ l 子机指示灯灭 I m m I m I
2 . 4 报警功 能
如果 有报 警 按键 按下 去 , 则 停 下子 机工 作 ,子机 切
.
换 到C H 3 信 道 向主机发送 报警信 号 ,并 打铃 ,直到警 报解 1 0 B( H) I l B I 2 B l 3 B I 4 B l 5 B 除 。如果外 接有无 线传 感器 ,子机通 过C H 5 信 道巡检 各传 打铃控制包为6 个字节 , : 命令字 ,不 同的命令代表
l
l! 旦l
上课铃响系统设计
1.1 课题的选题背景和意义 ......................................1 1.2 课题的系统论证 ............................................1 第二章 系统硬件设计 ..............................................................................................4 2.1 系统原理框图 ................................................4 2.2 硬件电路原理图 .............................................4 2.3 硬件电路介绍 ...............................................4
基于单片机的自动打铃系统
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)单片机打铃系统设计前言随着现代科技的发展,管理水平的完善,具有自动提示功能的打铃器能够为企业节省人力资源,减少开支,对做到一体化管理具有很大的帮助。
打铃器清单原理图及程序
单片机项目——打铃器设计朱琳指导老师:张小明老师班级:09信息一班目录1………………………………………摘要2……………………………………任务3……………………….......硬件图及其设计说明4………………………..使用说明5…………………….结束语6…………….致谢摘要本设计是采用单片机技术的打铃器,目前以单片机技术的应用为核心的产品种类非常丰富。
应用我们所学过的知识和查阅相关资料,我制作了这个单片机技术为基础的打铃器,这是一个简单的实用的单片机电子设计产品。
我们通过书本上的知识,再通过每一次上课张老师让我们独立完成自己的项目,自己动脑筋,自己解决。
实在没办法的,可以请教张老师指点1,2 在一个半月里的努力与奋斗,有了今天的成果,之前我都没想到我会完成这个任务的。
本打铃器设计是以单片机技术为核心,采用了中小规模集成度的单片机制作的功能较为完善的电子闹钟。
硬件设计应用了成熟的数字钟电路的基本设计方法以,并详细介绍了系统的工作原理。
硬件电路中使用了除AT89C52外,另外还有LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件。
在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的C语言,实现的功能包括‘时时-分分’显示、可设置多组时间、定时时间到能发出10秒的报警声。
整体进行仿真并调试构成了整个完整的打铃器的设计。
最后通过反复的林洋板的实际烧片仿真,该系统能够实现所有要求的功能包括:(1)能显示‘时时-分分’。
(2) 可设置多组时间(3)定时时间到蜂鸣器能发出铃声。
当然这个系统仍然是属于比较简单的单片机应用系统,要设计功能更强的更复杂的系统还需要我进一步的学习。
任务1.1设计任务1、设计一个打铃器程序2、先通过keil软件仿真。
3、再根据原来的程序基础上对硬件进行仿真4、然后通过修改程序把它移到林洋开发板上5、最后通过实验进行对打铃器的功能添加与修改。
6、写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、程序清单;1.2设计目的(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)针对课题设计方案的分析、选择、比较、熟悉单片机所用系统开发、研制的过程,软硬件设计的方法、内容及步骤;(4)掌握打铃器的工作原理。
基于89C51的简易打铃系统
目录引言 (5)1.硬件组成与方案设计 (5)1.1硬件组成 (5)1.2方案设计 (6)2.单元电路设计 (4)2.1时钟电路设计........................................ 错误!未定义书签。
2.2 复位电路设计 (6)2.3打铃电路设计 (10)2.4键盘与单片机连接电路设计 (10)2.5 8255芯片及连接图电图 (10)3.系统软件工作流程图 (10)3.1主程序工作流程 (10)3.2读秒显示子程序 (11)3.3中断服务子程序 (12)3.4时间设定子程序 (12)4.系统功能实际测试 (13)4.1程序实际编译测试 (13)4.2 软件调试步骤 (13)4.3子程序调试步骤 (13)4.4调试结果 (14)4.5系统误差及性能分析 (14)5.设计总结 (14)参考文献 (15)附录A.整体电路图 (16)附录B.源程序 (17)简易自动打铃系统设计引言电子打铃课题设计着重于实践和动手能力的培养,通过阅读并学习本论文可以大概了解单片机的发展及其工作方法,了解汇编语言,掌握一定的MCS—51单片机知以及用指令编程方法和技巧。
能用MCS—51单片机指令编制出一些实用的小程序。
另一方面通过本论文可以了解电子打铃打铃器的时钟走时、显示、定时器等的工作方式以及时钟控制打铃编程方法。
时钟走时是利用定时器计数进行的,显示由键盘显示接口电路与五个数码显示组成,利用可实现对键盘、显示器的自动扫描并且可以减轻对CPU的负担,具有显示稳定、程序简单、不会出现误动作的特点。
时钟控制就是利用键盘输入一个时设定的时间值,再经过程序中的比较判断程序来控制时钟走。
1.硬件组成与方案设计1.1硬件组成硬件组成如图1.1所示:图1.1芯片和键盘实现功能1.2 方案设计该系统用DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与STC89C51进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过89C51单片机芯片综合控制,把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。
基于单片机的自动打铃系统设计很完整
摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
简易自动打铃系统的出现,使学校上下课铃声得以有效管制,对于减轻学校管理人员工作量、提高学校各工作效率,减少管理人员因忘记打铃,从而导致老师拖延课程时间起到明显效果。
本系统采用单片机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秒。
基于单片机的简易电子时钟设计
基于单片机的简易电子时钟设计引言:电子时钟是人们日常生活中广泛应用的一种设备,基于单片机的电子时钟可以实现精确的时间显示、闹钟设置、定时功能等。
本设计将使用单片机控制电子时钟的各种功能,通过一个LCD显示屏来显示时间和其他信息。
一、设计目标:1.实现准确显示时间功能;2.设计带有闹钟设置的功能;3.实现定时功能。
二、设计原理:该电子时钟工作原理主要是通过单片机将外部的时钟信号进行调整和处理,然后控制液晶显示屏显示时间。
电子时钟的核心是单片机,通过单片机的计时功能实现时钟的准确显示,并通过输入设备设置闹钟功能和定时功能。
三、设计流程:1.系统初始化:首先,将单片机初始化,设置时钟和计时器的相关参数,开启显示屏的显示功能。
2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。
3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。
4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。
四、硬件设计:1.单片机选择:选用一款适合的单片机,如51系列单片机。
2.时钟电路:通过外部晶振或者RTC芯片来提供准确的时钟信号。
3.输入设备:使用按键作为输入设备,用于设置闹钟和定时功能;4.显示屏:选用合适的液晶显示屏,用于显示时间。
五、软件设计:1.系统初始化:设置时钟和计时器的相关参数,开启显示屏的显示功能。
2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。
3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。
4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。
六、实验结果:本设计可以准确显示时间,并可以设置闹钟和定时功能。
当闹钟和定时时间到达时,会触发相应的动作,实现了基本要求。
自动控制打铃系统设计
教学系审核意见:主任签字:年月日简易自动打铃系统设计设计要求1.基本计时和显示功能(12小时制)。
2.可设置当前时间(包括上下午标志,时、分的数字显示)。
3.能在上午7:30(早自习)和下午10:30(晚熄灯)定点打铃,且每次打铃均为响铃5s,停2s,再响5s。
1.方案论证与对比1.1方案一采用时钟芯片和键盘实现功能方案一原理框图如图1-1所示:DS1302芯片蜂鸣器89C52单片机8255芯片数码管键盘图 1-1 采用时钟芯片和键盘实现功能该系统用DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与STC89C52进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过89C52单片机芯片综合控制[1],把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。
1.2方案二:采用中断定时实现功能方案二原理框图如图1-2所示:图 1-2 采用中断定时实现功能该系统以STC89C52单片机为核心控制部件。
用8255做I/O 拓展芯片,数码管接8255的PA 、PB 引脚,用动态扫描的方式显示当前时间。
蜂鸣器与单片机的P2.0口相连,当打铃时间到时,由STC89C52发出打铃指令。
以外部INT0和INT1中断按钮实现调时功能。
1.3方案比较本设计要求能实现基本计时和打铃功能。
计时和打铃时间设计,方案一中用到了DS1302时钟芯片计时和打铃时间设置;方案二中采用定时器中断来计时并结合软件设置打铃时间。
上述两种方案中:方案一的外围硬件电路设计复杂,而且时钟芯片没有得到充分利用,而方案二的软件计时具有硬件开销小,成本低,外围电路设计简单等优点。
蜂鸣器中 断 数码管8255芯片89C52调时设计,方案一中用矩阵键盘实现调时功能;方案二中采用外部中断0和1的两个按钮来实现调时。
上述两种方案中:方案一的软件设计比方案二的难度系数大,使程序易读性不强。
综合对计时的精密程度要求不高的本系统,本设计采用方案一来实现功能。
基于单片机的教学打铃控制器设计
基于单片机的教学打铃控制器设计随着社会的快速发展和教育的变革,学校的管理也越来越智能化。
其中,教学打铃系统尤其是一项必需的管理手段。
然而,在传统的打铃系统中,存在诸多问题,例如频繁出现的故障、安装和维护成本高昂以及难以满足不同场合的多样化需求等。
因此,基于单片机的教学打铃控制器应运而生,成为教学管理的重要工具。
基于单片机的教学打铃控制器是一种高效可靠、精度高、注册应用广泛的数字化打铃系统。
与传统打铃系统相比,它使用单片机作为核心控制器,实现程序控制,程序实时性好,可靠性高。
同时,该系统具有更多的功能,如定时功能、周计划功能、多语言查询等,能够满足各种不同的场合与需求。
该系统的硬件主要包括打铃控制器、时钟电路、显示器、键盘等部分。
打铃控制器采用单片机,通过输入、处理、输出的方式实现了控制信号的转换与传递。
时钟电路则可精确地控制打铃时间,增强了系统的稳定性。
显示器和键盘则起到人机交互的作用,在更方便且人性化的操作中发挥了至关重要的作用。
在软件方面,该控制器系统主要设计功能包括实时时钟、计时计划、语音提示、多级权限等。
实时时钟功能可根据自行设定的时间表档案精确设置铃声播放时间。
计时计划则可以通过统计不同的节次和课程时间来实现不同的课程的铃声控制。
在语音提示功能中,您可以将语音文件录入系统,并实现系统的语音提示功能。
多级权限功能可以有效地实现不同权限的用户对铃声的控制,从而避免了教学管理中出现的非法操作和误操作等。
在教学管理中,基于单片机的教学打铃控制器有着广泛的应用,特别是在学校、科研机构、实验室等场所。
其优越的性能和丰富的功能使其成为教学管理的不可或缺的一部分。
通过该系统,学校教育管理人员可以更好地实现对铃声的管理和控制,有效地提高学校的学习效率。
总之,基于单片机的教学打铃控制器是一种高效、精准且具备广泛应用前景的数字化打铃系统。
它的应用为学校教学管理提供了较好的解决方案,不仅便捷高效,而且成本低廉、维护简单。
教学打铃系统的设计
教学打铃器柳州运输职业技术学院指导老师:梁德坚万选明项目队员:卢为宇钟静来目录目录 (1)摘要 (2)1、系统设计 (3)1.1任务 (3)1.2要求 (4)2、方案设计和论证 (4)2.1 控制部分 (4)2.2 时钟部分 (5)2.3 显示部分 (5)3、系统硬件电路设计 (6)3.1设计思路 (6)3.2各模块电路设计 (6)3.2.1 键盘电路 (6)3.2.2 电源和继电器控制电路图及说明 (7)3.2.3 DS1337时钟芯片电路图及说明 (8)4、软件设计 (9)4.1I2C总路线的编程 (9)1 / 174.1.1 I2C总线工作原理 (9)4.1.2 I2C总线的数据传输 (10)4.1.3读写操作 (11)4.2程序结构图 (11)4.2.1 主程序流程图 (12)4.2.2中断流程图 (14)5、测试结果 (14)6、总结 (15)7、结束语 (15)参考文献 (15)摘要本系统主要以SPCE061A单片机作为控制核心,用DS1337C时钟芯片来计算当前时间。
并通过LCD来显示当前时间和日期,以及设置打铃的数据。
设置的数据用FLASH来存储,以达到掉电后数据不丢失的目的。
本打铃器最多可以设置30路打铃时间,每天循环可设定双休日或单休日不打铃。
掉电后时间能保持当前时间和所设置好的数据,不用每次掉电后都要设置当前时间和设置的数据。
关键字: SPCE061A DS1337C时钟芯片 FLASH1、系统设计1.1任务设计一个可设置多路打铃时间点的教学打铃器。
3 / 171.2要求(1)可以实时显示当前时间。
(2)可以用键盘设定多个预定打铃时间。
(3)掉电后时间能和当前时间同步。
(4)预定打铃时间点的数据掉电后不丢失。
2、方案设计和论证本项目设计的是一个教学打铃器,根题目的要求,我们设计了以下几个方案并进行论证。
2.1 控制部分方案一:采用AT89S51单片机实现,此单片机软件编程自由度大,不但可用编程实现各种控制算法和逻辑控制,而且价格也很便宜。
自动打铃系统实验报告
12 12目录一、 设计要求 (1)1.1项目功能概述1.2设计环境二、 总体设计要求 (1)2.1系统总体结构框图、模块划分 ........................ 1 2.2系统软件流程图 ..................................... 2 三、 详细设计 .. (2)3.1模块1 .......................................................... 2 3.1.1硬件设计1. 该模版块功能2. 芯片选择(各芯片功能、引脚等介绍) 3.该模块的硬件连接( 附上该模块硬件链接图) 3.1.2软件设计该模块所用的主要函数及其功能说明 3.2模版23.2.1硬件设计 (2)1.芯片选择(芯片介绍)2.该模块的硬件连接3.1.2软件设计该模块所用的主要函数及其功能介绍四、详细制作 (6)4.1原理图制作过程、遇到的问题及处理方法 ............... 6 4.2 PCB 图制作过程、遇到的问题及处理方法 .............. 7 4.3 PCB 板制作过程、遇到的问题及处理方法 .............. 8 4.4元器件焊接过程、遇到的问题及处理方法 4.5烧写程序的步骤 . (9)4.6整机调试过程、遇到的问题及处理方法五、小结……5、1收获125.2体会六、参考资料 (13)七、总结 (13)一、设计要求1.1项目功能概述系统正常工作时,在液晶屏的第一行用汉字显示”自动打铃系统”,第二行会显示当前时间,在随后的四行显示最近要打铃的时间,即将要打铃的时间用黑底白字显示,四行时间一页.如果该页的最后一个时间打过铃后,自动翻页,将下一页的4个打铃时间显示出来;用户可以通过按键修改当前时间或打铃时间.1.2设计环境Keil uVisio n2PADS LayoutPADS Router二、总体设计要求2.1系统总体结构框图、模块划分805RS232图11-2 MAX232串行通信电路團C3卄805RiD TiDTGNDGNDTM RxDvcc £图114 MAX232串行通信电路图CI+VccG5DCl- iriouTC2+RUN oRIOITTI IN T2our T2M -Rib R2OUT■- CS + Vccv+ GW Cl-C2+ HOLTRIIHC2-RlOb'I讥 Tim T2OUT T2QI R 和 R2OU T8052.2系统软件流程图图 发送数据程序流程图 接收数据稈序流稈图■>详细设计3.1模块13.2硬件设计3.3各单元的功能描述(1) 对单片机进行编程,使主要功能由软件控制实现,从而简化硬件电路。
基于单片机的校园打铃系统设计说明书
信息职业技术学院毕业设计说明书(论文)设计题目: 基于单片机的校园打铃系统设计专业: 应用电子技术班级: 应电08-2学号:姓名:指导教师:二〇一〇年九月十日信息职业技术学院毕业设计(论文)任务书学生学号班级应电08-2 专业应用电子技术姓名设计(或论文)题目基于单片机的校园打铃系统设计指导教师姓名职称工作单位及所从事专业联系方式备注工程师学01设计(论文)内容:利用单片机做为主控器件,设计一校园打铃系统的硬件部分:1.实现打铃时间的设置和修改;2.显示当前日期、时间;3.掉电情况下计时工作正常进行、能保存以前设置的时刻。
基本要求:1.正确选择元器件完成相应功能;2.设计整机电路、明晰系统工作原理;3.系统仿真;4.完成说明书撰写。
进度安排:第3~6周:选题及查找相关资料主要查找与课题相关的资料;第7周:相关资料的整理并对其进行理解;第8周:对毕业论文的资料进行初步的整理;第9周:期中检查;第10周:对论文进行修改及进行仿真实验;第11周:对毕业论文进行排版;第12周:检查排版及内容;第13周:加深对毕业论文的理解准备答辩;第14周:检查毕业设计论文的地方准备答辩;第15周:答辩。
主要参考文献、资料(写清楚参考文献名称、作者、出版单位):[1]苏平.单片机原理与接口技术.北京:电子工业出版社,2003[2]林伸茂.8051单片机彻底研究实习篇.北京:人民邮电出版社,2005[3]韩志军.单片机应用系统设计.北京:机械工业出版社,2005[4]陈坤.电子设计技术.成都:电子科技大学出版社,1997[5]郑应光.模拟电子线路(一).南京:东南大学出版社,2005[6]李秀忠.单片机应用技术.北京:人民邮电出版社,2007审批意教研室负责人:见年月日备注:任务书由指导教师填写,一式二份。
其中学生一份,指导教师一份。
目录摘要 .................................................... 0矚慫润厲钐瘗睞枥庑赖。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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只按键用来调整时间,另一只为强制打铃按钮调整选择键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 ;程序结束。