基于单片机控制的教学打铃系统的设计与实现_第1页
基于单片机控制的教学打铃系统的设计与实现_第2页
基于单片机控制的教学打铃系统的设计与实现_第3页
基于单片机控制的教学打铃系统的设计与实现_第4页
基于单片机控制的教学打铃系统的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机控制系统应用方向学年设计任务书学院计算机与信息工程学院专业计算机科学与技术课程名称微机控制系统应用方向题目基于单片机控制的教学打铃系统的设计与实现完成期限2021年7月3日一2021#:8月29日共8周内容及任务一、工程的目的1 .利用单片机设计简单的教学打铃系统;2,掌握设计文档的撰写技巧。二、工程任务的主要内容和要求1,能够用7段数码管或者LCD显示时间;2,能够对当前的时间设置进行校正;3,能够按照学校当前的作息时间进行打铃;4,完成系统设计说明文稿。三、工程设计研究思路1.7月3号到7月8号这段时间组织组员讨论和分析本系统所需的功能,所需的硬件器件,并搭建电路;2.7月9号到8月2

2、1号这段时间进行本系统的程序设计,完成该系统所需的功能模块;3.8月22号到8月27号这段时间完成整个系统程序并进行系统测试;编写学年设计报告文档。四、具体成果形式和要求1.本系统是在proteus仿真软件里进行测试;2,能通过7段数码管显示当前时间;3,能利用蜂鸣器按照学校当前的作息时间进行打铃;4,通过按键可以进行当前时间的校正以及作息时间的修改。进度安起止日期匚作内容排12021年7月3日一2021年7月8日全组人讨论硬件环境设计的思路以及软件设计的思路22021年7月9日一2021年7月15日能够在数码管中显示电子钟并且到一定时间时自动打铃22021年7月16日一2021年8月21日实

3、现能够对当前时间进行校正以及对作息时间进行修改32021年8月22日一2021年8月27日完成整个打铃程序的运行42021年8月28日一2021年8月29日编写学年设计文档主要参考资料M.北京:高等教育出版社,1995.M.北京:电子工业出版社,2021.3孙江宏.Protel99电路设计与应用M.北京:机械工业出版社,2001.4J.电脑编程技巧与维护,2021,117:23-26.5J.科学技术与工程,2021,1131:204-207.6J.湖南农机,2021,45:85-86.7于永.51单片机C语言常用模块与综合系统设计实例精讲M.北京:电子工业出版社,2007.指导教师意见签字:X

4、年X月X日系教研室主任意见签字:X年X月X日实用文档 .基于单片机控制的教学打铃系统的设计与实现设计说明书封面学院名称:滁州学院班级名称:计算机科学与技术专业10级2班学生姓名:方纪锋、贝兴芝、陈文君、陈丹丹、陈竟学号:2021211081、2021211066、2021211073、2021211068、2021211070题目:基于单片机控制的教学打铃系统的设计与实现指导教师姓名:姚光顺起止日期:2021年7月3日一2021年8月29日目录第一局部:正文局部1一、绪论11 设计背景12 主要工作和方法13 本文结构2二、相关知识21 单片机介绍22 显示器简介43 蜂鸣器简介5三、系统设计

5、51 需求分析52 系统硬件电路设计63 软件设计流程图94 显示程序设计105 按键设定程序设计10四、系统实现111功能模块11五、系统测试与数据分析181 元件清单182 调试过程18六、结论19第二局部:参考文献20第三局部:指导教师评语21第四局部:成绩评定21附录22实用文档 .基于单片机控制的教学打铃系统的设计与实现第一局部:正文局部、绪论1 设计背景目前自动打铃系统广泛应用于生活、工作等方方面面,在人们的日常生活中起到重要作用。例如,在学校生活中,每天上下课都离不开打铃器的使用。打铃器可以为上下课的学生和老师们提供时间提醒,同时,也可作为一个提醒学生们作息时间的时间表,让大家有

6、一个时间意识,形成规律的生物钟,对自身的健康也有很大的好处的。对于那些上课精力过于集中、知识面拓展比拟广的老师的拖堂现象也给了一个下课时间提醒,以免耽误学生们下一节课的上课时间。最原始的打铃器是人工根据时间通过敲钟来提醒,随着技术的开展,开始有了机械式打铃器。随着二十世纪电子技术的开展和二十一世纪半导体技术和集成电路的开展,电子技术开始渗入到各行各业,打铃器也更多的向着智能型转变。设备的智能化离不开单片机的使用。基于以上原因,本学年设计了一款基于单片机的自动打铃系统,使用简单方便。2 主要工作和方法本系统主要完成以下工作:能够通过7段数码管显示时间;能够通过按键对当前的时间设置进行校正;能够按

7、照学校当前的作息时间进行打铃;能够通过按键对学校当前的作息时间进行修改。3 本文结构本文第1局部绪论主要说明了本文的设计背景、主要工作和实现方法。第2局部相关知识介绍了单片机的概念、结构,数码管的相关知识,蜂鸣器的相关知识。第3局部系统设计,阐述了需求分析、系统硬件设计和系统工作流程设计。第4局部系统实现介绍了系统各个功能模块。第5局部系统测试与数据分析,介绍了所用元件和调试过程。、相关知识1单片机介绍单片机概念本系统采用AT89C51系列单片机。AT89C51是一种带4K字节FLASH存储器FPEROMFlashProgrammableandErasableReadonlyMemory的低电

8、压、高性能CMOS位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPUW闪烁存储器组合在单个芯片中,ATMEL勺AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。单片机结构AT89C51的结构如图2-1所示:PIJIPU一PL3一PI.4-PI.JPI.iP1.7RSmPDP3.0/RXDFsjrrKD-P口而一FLMNTI1P3.4Hfl一raarriPkiJWR-PSJ/ID;XTAL2-'XTali一Vtl-17402舞33-14斯5况sU131833

9、少331。黑3111时“w1141321H2?”比U151724II13191210Up*Ee1FHQ,pQL一即NP03-PQ.4-N5mPG.7一函P&EN-Pi,TPLb一P6一”一Pt3一P2.2一P2.)P2.Q图2-1AT89C51管脚图AT89C51的管脚说明如下:VCC供电电压。GND接地。P0:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高

10、。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASHY程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1时,它利

11、用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口也可作为AT89C51的一些特殊功能口,如表2-1所示:表2-1AT89C51特殊功能表管脚备选功能RXD用行输入口TXD用行输出口/INTO外部中断0/INT1外部中断1T0计时器0外

12、部输入T1计时器1外部输入/WR外部数据存储器写选通/RD外部数据存储器读选通RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH®程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于实用文档 .定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH6址上置0。此时,ALE只有在执行MOVXMOV筠令是ALE才起作用。另外,

13、该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。实用文档 ./PSEN4外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET当/EA端保持高电平时,此间内部程序存储器。在FLASHY程期间,此引脚也用于施加12V编程电源VPP。?XTAL1反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2来自反向振荡器的输出。2显示器

14、件简介本系统的显示时间功能是按照一般电子表的显示进行设计的,让其显示6 为数字时间信息即显示时、分、秒,再加上本钱等因素,所以我们选择用7 段数码管进行显示。一般的七段数码管拥有八个发光二极管用以显示十进制0至9的数字,也可以显示英文字母,包括十六进制和二十进制中的英文A至Fa至f。七段数码管由四个直向、三个横向及上右下角一点的发光二极管组成,由以上向条发光体组合出不同的数字。除七段数码管外,还有十四及十六划的显示器,但现时已被点阵显示器所取代。七段数码管分为共阳极及共阴极,共阳极的七段数码管的正极或阳极为八个发光二极管的共有正极,其他接点为独立发光二极管的负极或阴极,使用者只需把正极接电,不

15、同的负极接地就能控制七段数码管显示不同的数字。3蜂鸣器简介蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器工作原理:当接通电源后1.515V直流工作电压,多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声电磁式蜂鸣器工作原理:接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。三、系统设计1需求分析设计任务能够通过7段数码管显示时间; 能够通过按键对当前的时间设置进行校正; 能够按照学校当前的作

16、息时间进行打铃; 能够通过按键对学校当前的作息时间进行修改。根本要求该系统具备以下几点根本要求:根本计时和显示功能用24小时制进行显示。能够设置当前时间。能够实现根本打铃功能,按照表3-1显示的时间进行打铃。表3-1作息时间表上午下午晚上7:50预备铃14:10预备铃19:20预备铃8:00弟一节课上14:20第五节课上19:30第九节课上8:45弟15:05第五节课卜20:15第九节以下8:55弟.二节课上15:15第六节课上20:25第八课上9:40弟.二节课T16:00第六节课r21:10第八课r10:00弟.三节课上16:20第七节课上10:45弟.二节课卜17:05第七节以下10:5

17、5第四节课上17:15第八节课上11:40第四节课下18:00第八节以下性能指标该系统具备以下性能指标:时钟:时2位、分2位、秒2位,时分秒用“-分开。校对键:设置键,左移/右移键,加减键,确定/取消键,添加键。响铃:蜂鸣器。2系统硬件电路设计分析完单片机教学打铃系统原理及特点后,设计了以下硬件系统。总体方案设计本系统是基于单片机AT89C51的教学打铃系统。系统硬件电路包括:AT89C5H1片机的最小系统硬件电路、时钟电路、显示电路、打铃电路。本系统的结构框图如图3-1所示:图3-1系统结构图硬件电路图该系统的硬件电路如图3-2所示:F32DIliTrP ,旧近 mwT1301 , hl时祗

18、"叫&U 口 肛皿I 闻刈 R33MI3 闻 IMM1I 但此 NHW1 用wr闫空卬利 Pt*/ P2-iCiflP2MU 片防餐LSH J ND 壬旧I >图3-2硬件电路图按键电路本系统接有8个按键,按键的一端接地。另一端分别单片机的P1.0P1.7口。按键从上到下的功能分别是:设置按键、加按键、减按键,左移按键、右移按键、确定按键、取消按键和修改闹铃按键。按键电路模块如图3-3所示:E=L*J2-18_2_>XTAL1叩卿口口,口邮 D4 ,口邺 D2!XTA15P.和E3PD.WDI 中口5也口5RSTPDTADIP2MS PZ1JM q加1 口PSEN

19、口23mlRLEP2.412函色驯门股的*P2.TJW15P113P3JWX0P1r1F38lffXDP12F32flNl5"PI 3PIM而-P1.<灯 WUP15P3ST1P1j6内听P1Jp葡而29_ X 311231567号不M51 T 2 1- 4 ft- 7- 1 1 1 1 1 1 1 一 一 一 厂_|I2: q i等图3-3按键电路模块图显示电路根据设计要求,该系统采用共阴极数码管,其公共端接单片机的P0口。数码管显示电路使用AT89C51的动态显示功能,数码管的八段a、b、c、d、e、f、g、dp接入单片机的P2口,数码管分别显示:“时、“一、”分、”一、”

20、秒。数码管显示电路如图3-4所示:WMi虫0一1_1:.±-T=EiTNgzl-ctJ ,下nainFHUM产FrF"仃 FCtCJm ILLl FC Rg FC-WllI. 母S|34 FC冲E ILJl'LIlFrulkLL图3-4显示电路图P3.7端输打铃电路打铃电路接P3.7:当前时间与程序设定时间相同时,出高电平的方波,即打铃。打铃电路模块如图3-5所示:J1工>XTAJ电小口PQLlJftJIPDjaftJSISXTAHPCOftHJPDiSftK出型乂KTpmr焦野P2WP3.1MFZ-ZEI:=iF笛If4AV?12513PZfiH,打胸临J_

21、心口FXDX1.1ra.i/moJ1二PimNE13P33/1NT1_5_111匕T15PiarLPIEpa副眼F1JHJ.r/iED"tH-tNsJU上受理一祭一-4一H-S-1JTF1TATOCS1SOUNCER图3-5打铃电路图实用文档 .3软件设计流程图执行修改作息时间程序-Y;:修改键=0?校正时钟程序Y执行响铃图3-6主程序流程图4显示程序设计利用12MH讣断做时钟源进行计时,每20次中断秒加1。流程图如图3-7所示:开始图3-7定时中断程序流程图5按键设定程序设计本系统接有8个按键从上到下的功能分别是:设置按键、加按键、减按键,左移按键、右移按键、确定按键、取消按键和修

22、改闹铃按键。当P1口输出低电平时,按键被按下,执行校正时钟操作和修改作息时间操作。校正时钟程序流程图Y显示当前时间Y图3-8校正时钟程序流程图修改作息时间流程图校正时钟程序图3-9修改作息时间流程图四、系统实现1功能模块时钟显示模块设置确定时钟是利用定时器T0溢出中断方式,通过设置T0参数确定计时的基数,再对基数的计数确定出秒数,分钟数和时数。再用数码管将时间显示出来,其模块程序如下:/电子钟中断处理函数voidtime()interrupt1/定时器0中断TH0=(65536-50000)/256;设置T0参数,定时50msTL0=(65536-50000)%256;if(temp>1

23、9)/定时20次,50ms*20=1stemp=0;second+;/秒加加if(second>59)second=0;minute+;/分加加if(minute>59)minute=0;hour+;/时加加if(hour>23)hour=0;elsetemp+;数码管显示函数/voidshow()P0=dis0;P2=dis1second%10;delay(40);/显示秒P0=dis1;P2=dis1second/10;delay(40);P0=dis2;P2=dis110;delay(40);P0=dis3;P2=dis1minute%10;delay(40);/显示分

24、P0=dis4;P2=dis1minute/10;delay(40);P0=dis5;P2=dis110;delay(40);P0=dis6;P2=dis1hour%10;delay(40);/显示时P0=dis7;P2=dis1hour/10;delay(40);1,最大能计时65536次,所以在该函数中最大能定时50ms;由于显示是按秒进行显示的,所以需要定时20次才能到达1s。然后再显示函数中显示当前时间,其中P0口是用来选择用哪个数码管显示,P2口是用来显示当前数码管的数值。时钟校正模块设置当数码管显示的时间与实际时间不符时,可对其数码管显示的时间进行校正,点击设置键进入时间调整的状态

25、,可用加减键,左移右移键对秒,分,时进行调整。最后点击确定或取消键完成时间校正。其模块程序如下:加时间/voidadd()if(setflag>0)if(lr=0)/修改秒的个位second+;if(second>=60)second=0;if(lr=1)/修改秒的十位second=second+10;if(second>=60)second=0;if(lr=3)/修改分的个位minute+;if(minute>=60)minute=0;if(lr=4)/修改分的十位minute=minute+10;if(minute>=60)minute=0;if(lr=6)/

26、修改时的个位hour+;if(hour>=24)hour=0;if(lr=7)/修改时的十位hour=hour+10;if(hour>=24)hour=0;/减时间voidreduce()if(setflag>0)if(lr=0)/修改秒的个位second-;if(second<0)second=0;if(lr=1)/修改秒的十位second=second-10;if(second<0)second=0;if(lr=3)/修改分的个位minute-;if(minute<0)minute=0;if(lr=4)/修改分的十位minute=minute-10;if

27、(minute<0)minute=0;if(lr=6)/修改时的个位hour-;if(hour<0)hour=0;if(lr=7)/修改分的十位hour=hour-10;if(hour<0)hour=0;时钟校正的核心技术也就是对选择的时间进行加减来实现校正。为了方便对时、分、秒的校正,本模块设计了左移、右移的功能,通过按键选择要修改的时、分、秒。作息时间修改模块设置当需要修改某个作息时间时,可选择某个作息时间进行修改,先点击修改键进入作息时间修改的状态,再点击左移右移键选择修改哪个作息时间,然后点击设置键对作息时间进行调整,可用加减键,左移右移键对秒,分,时进行调整。最后点

28、击确定或取消键完成作息时间修改。其模块程序如下:switch(key_code)/判断选择哪个按钮case0xfe:set();break;/点击设置按钮case0xfd:add();break;/加时间case0xfb:reduce();break;/减时间case0xf7:lr+;if(lr>7)lr=0;break;/左移加case0xef:lr-;if(lr<0)lr=7;break;/右移减case0xdf:cancel();break;/取消时间的校正case0xbf:save();break;/保存时间的校正voidupdate()TR0=0;/停止计时secondu

29、=second;minuteu=minute;houru=hour;hour=bell_hourchance;minute=bell_minutechance;second=0;此模块中当点击设置键、加减键以及左移右移键的程序实现同作息时间修改模块设置里的设置键、加减键以及左移右移键的程序实现。打铃模块设置将当前的时间与设置的打铃时间进行比照,假设两个时间相同时那么开始打铃,假设时间不相同那么不打铃,其模块程序如下:/定时器1控制打铃的时间voidbellTime()interrupt3TH1=(65536-50000)/256;/设置定时器1的初始参数TL1=(65536-50000)%25

30、6;SPK=!SPK;/给蜂鸣器赋值,让其响,实现打铃。if(+time_count=400)/响铃时间time_count=0;Bell_Time=0;/到时间后关闭响铃/电子钟中断处理voidtime()interrupt1/定时器0中断uchari;flag1=0;flag2=0;flag3=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(temp>19)/定时20次temp=0;second+;if(second>59)second=0;minute+;if(minute>59)minute=0;hour+;if(ho

31、ur>23)hour=0;elsetemp+;if(second=0)/用于判断该时间是否为打铃时间flag1=1;if(t=0)/找到第一个打铃的时间for(i=t;i<23;i+)/找到第一个打铃的时间if(minute=bell_minutei)/判断当前的时间与目前打铃的时间是否相等flag2=1;if(hour=bell_houri)flag3=1;if(flag2=1&&flag3=1)t=i;/得到第一个打铃时间在数组里的位置break;if(t>0)/找到第一个闹铃后其他的闹铃按如下处理if(bell_minutet=0&&be

32、ll_hourt=0)kk=1;if(minute=bell_minutet)flag2=1;if(hour=bell_hourt)flag3=1;if(flag1=1&&flag2=1&&flag3=1&&kk=0)/当前时间与打铃时间相等实用文档 .t+;Bell_Time=1;flag1=0;flag2=0;flag3=0;if(kk=1)t=0;为了更精确的控制打铃的时间,此模块利用定时器控制打铃的时间,每加一秒就进行判断当前时间是否与打铃时间相等,假设相等,这让蜂鸣器响。五、系统测试与数据分析1元件清单元件清单如表5-1所示:表5-1元

33、件清单表元件名称个数AT89C517SEG-MPX8-CC-BLUESOUNDERBUTTON2调试过程时钟显示模块系统运行时如图5-1所示:口日-5BU11918294XTAL1XTAL2RSTALE EAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/n

34、NHP3.4/T0P3.5/T1P3.6/WRP3.7/RD.39373635:34T33212223一2426二 27 :28 101213-1415 16LS1SOUNDER实用文档 .图5-1时钟显示效果图校正时钟模块当显示时间与当前时间不相符时,需要校正时钟。例如,系统显示时间如图5.2.1所示,当前时间为8:00,调试过程如下:按下设置键,时钟停止,进入校正状态;按下左移/右移键,选择对时、分或秒的校正;按下加/减键,校正时钟到当前的时间;按下确定键,校正成功;按取消键回到原本显示时间。经过以上调试过程,可以校正成功,此时系统如图5-2所示:门口一门门一门口DUUUU1918U1XT

35、AL1XTAL2RSTALE EA235e78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AI89C51P0.0/AD0 P0.1/AD1P0.2/AD2 P0.3/AD3P0.4/AD4 P0.5/AD5 P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXD P3.1/TXD P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373 3635 343 3321.22 23一242526.27 28g017

36、图5-2校正后显示效果图修改作息时间模块假设需要修改作息时间,按照如下调试过程:按下修改键,时钟显示第一个打铃时间;按下左移/右移键,选择要修改的打铃时间;按下设置键,进入修改打铃时间状态此过程和校正时钟过程相同;按下确定键,修改打铃时间成功,显示当前时间;按下取消键,显示当前时间。经过以上调试过程,可以修改成功。打铃模块当系统显示时间与设定打铃时间相同时,打铃。六、结论本文阐述了自动打铃系统的工作原理、体系结构等。并设计实现了一个自动打铃系统,能够校对当前时间,选择适宜的打铃时间,适合学校、工厂等管理机构。实用文档 .为了更好的实现自动打铃系统,我们首先对本系统的功能需求进行了分析并搭建了模

37、拟电路;然后开始分模块进行软件设计,第一步我们是实现时钟显示模块即能够在数码管中显示当前的时间,第二步是实现打铃模块即按照作息时间表依次打铃,第三步是实现校正当前时钟模块,第四步是实现作息时间修改模块;当全部模块都完成后,开始对实现的系统进行测试,通过测试数据的分析,系统能够很好的实现设计需求中的各种功能,但是程序还没有到达最优,需要进一步的优化和开发。通过本次设计,我们对所学的专业知识有了很好的回忆和实践,提高了自己的动手和思考能力,这对我们自身的开展有了很大的帮助,同时在此期间,我们查阅了很多的书籍和资料,从中我们学到了很多课本上没有的知识,拓展了自己的知识面,如果没有前期的准备工作是没法

38、很好的完成此次设计的,所以多学、多看、多想、多动手才是学好知识的必要素质,这对我们未来的开展和进步有着至关重要的作用。第二局部:参考文献M.北京:高等教育出版社,1995.M.北京:电子工业出版社,2021.3孙江宏.Protel99电路设计与应用M.北京:机械工业出版社,2001.4J.电脑编程技巧与维护,2021,117:23-26.5J.科学技术与工程,2021,1131:204-207.6J.湖南农机,2021,45:85-86.7于永.51单片机C语言常用模块与综合系统设计实例精讲M.北京:电子工业出版社,2007.学生签名:填表日期:年月日第三局部:指导教师评语第四局部:成绩评定指

39、导教师签名:填表日期:年月附录/打铃系统#include"reg51.h"#defineucharunsignedchar#defineuintunsignedintsbitSPK=P3A7;/蜂鸣器bitBell_Time=0;/到打铃时间标志uchartemp=0;/记录电子钟的计数次数uinttime_count=0;/记录打铃时间的计数次数charsecond,minute,hour;/记录时间ucharseconds,minutes,hours;/用于保存按下设置按钮时的时间值ucharsecondu,minuteu,houru;/用于保存按下修改按钮时的时间值u

40、charflag1,flag2,flag3,t;/标记是否可以打铃uintcodedis1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/共阴数码管0-9,0xBF为“-,1表示点亮ucharcodedis=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/选择哪个数码管,0表示选中ucharbell_hour=7,8,8,8,9,10,10,10,11,14,14,15,15,16,16,17,17,18,19,19,20,20,21,0;/小时的时间ucharbell_minute=50,0,

41、45,55,40,0,45,55,40,10,20,5,15,0,20,5,15,0,20,30,15,25,10,0;/分的时间,秒的时间都为0charlr;/记录左右移动的位置ucharflag=0;/用于记录点击移动按钮后移到第一位让其闪动ucharlr1=0;/设置第一位的闪动标志ucharflag4=1;/用于记录点击取消按钮后第一位不闪ucharff=0;/用于判断第一次是右移后再次左移闪ucharkey_code;/用于按键去抖时赋予P1口的值charchance,t1;/chance表示选择哪个打铃时间修改,t1用于标志变量ucharsetflag=0;/在使用加,减,保存,取

42、消按钮时,用于和修改打铃时间相区别ucharupdateflag=0;ucharkk=0;/用于标志到数组的0:0:0/延迟函数voiddelay(uinttt)uchari,j;for(i=0;i<tt;i+)for(j=0;j<30;j+);/数码管显示函数voidshow()if(lr>=1)lr1=0;flag=1;/用于记录点击移动按钮后再移到第一位让其闪动else/点击移动按钮,当lr>7,那么lr=0;即第一位闪if(flag=1&&flag4=1)lr1=1;if(flag=1&&flag4=1&&ff=1

43、)lr1=1;P0=dis0;P2=dis1second%10;if(lr1=1)delay(7);elsedelay(40);P0=dis1;P2=dis1second/10;if(lr=1)delay(7);elsedelay(40);P0=dis2;P2=dis110;delay(40);P0=dis3;P2=dis1minute%10;if(lr=3)delay(7);elsedelay(40);P0=dis4;P2=dis1minute/10;if(lr=4)delay(7);elsedelay(40);P0=dis5;P2=dis110;delay(40);P0=dis6;P2=d

44、is1hour%10;if(lr=6)delay(7);elsedelay(40);P0=dis7;P2=dis1hour/10;if(lr=7)delay(7);elsedelay(40);/制打铃时间voidbellTime()interrupt3TH1=(65536-50000)/256;TL1=(65536-50000)%256;SPK=!SPK;if(+time_count=400)/响铃时间time_count=0;Bell_Time=0;/到时间后关闭响铃/断处理voidtime()interrupt1/定时器0中断uchari;flag1=0;flag2=0;flag3=0;定

45、时器 1 控子钟中TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(temp>19)/定时20次temp=0;second+;if(second>59)second=0;minute+;if(minute>59)minute=0;hour+;if(hour>23)hour=0;elsetemp+;if(second=0)/用于判断该时间是否为打铃时间flag1=1;if(t=0)/找到第一个闹铃的时间,可能不是数组里的第一个值for(i=t;i<23;i+)if(minute=bell_minutei)flag2=1;i

46、f(hour=bell_houri)flag3=1;if(flag2=1&&flag3=1)t=i;/得到第一个闹铃在数组里的位置break;if(t>0)/找到第一个闹铃后其他的闹铃按如下处理if(bell_minutet=0&&bell_hourt=0)kk=1;if(minute=bell_minutet)flag2=1;if(hour=bell_hourt)flag3=1;if(flag1=1&&flag2=1&&flag3=1&&kk=0)t+;Bell_Time=1;flag1=0;flag2=0

47、;flag3=0;if(kk=1)/如果到0:0:0时,将从第一个闹铃开始t=0;/设置时间函数voidset()TR0=0;lr1=1;seconds=second;minutes=minute;hours=hour;/取消时回到原来的时间/修改作息时间函数voidupdate()TR0=0;secondu=second;minuteu=minute;houru=hour;/用于点击修改后回到点击时的时间hour=bell_hourchance;minute=bell_minutechance;second=0;/加时间函数voidadd()if(setflag>0)if(lr=0)s

48、econd+;if(second>=60)second=0;if(lr=1)second=second+10;if(second>=60)second=0;if(lr=3)minute+;if(minute>=60)minute=0;if(lr=4)minute=minute+10;if(minute>=60)minute=0;if(lr=6)hour+;if(hour>=24)hour=0;if(lr=7)hour=hour+10;if(hour>=24)hour=0;减时间函数/voidreduce()if(setflag>0)if(lr=0)second-;if(second<0)second=0;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论