基于单片机控制的教学打铃系统的设计实现分析.doc

上传人:可**** 文档编号:48812670 上传时间:2022-10-07 格式:DOC 页数:36 大小:622KB
返回 下载 相关 举报
基于单片机控制的教学打铃系统的设计实现分析.doc_第1页
第1页 / 共36页
基于单片机控制的教学打铃系统的设计实现分析.doc_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《基于单片机控制的教学打铃系统的设计实现分析.doc》由会员分享,可在线阅读,更多相关《基于单片机控制的教学打铃系统的设计实现分析.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、21年7月16日2021年8月21日实现能够对当前时间进展校正以及对作息时间进展修改32021年8月22日2021年8月27日完成整个打铃程序的运行42021年8月28日2021年8月29日编写学年设计文档主要参考资料1 X凤言.电子电路根底M.:高等教育,1995.2 戴佳.51单片机C语言应用程序设计实例精讲M.:电子工业,2021.3 孙江宏. Protel 99 电路设计与应用M.:机械工业,2001.4 王水富.基于8051的自动打铃系统设计J.电脑编程技巧与维护,2021,117:23-26.5 王书杰.基于校园网络的自动打铃系统设计J.科学技术与工程,2021,1131:204-

4、207.6 王娟.基于单片机的多功能定时打铃钟设计J.XX农机,2021,45:85-86.7 于永51单片机C语言常用模块与综合系统设计实例精讲M:电子工业,2007.指导教师意见签字: 年月日系教研室主任意见签字: 年月日基于单片机控制的教学打铃系统的设计与实现设计说明书封面 学院名称: XX学院 班级名称: 计算机科学与技术专业10级2班 学生XX: 方纪锋、贝兴芝、陈文君、陈丹丹、陈竞 学 号:2021211081、2021211066、2021211073、2021211068、2021211070 题 目: 基于单片机控制的教学打铃系统的设计与实现 指导教师 姓 名: 姚光顺 起止

5、日期: 2021年7月3日2021年8月29日 . .word. .目录第一局部:正文局部1一、绪论11 设计背景12 主要工作和方法13 本文构造2二、相关知识21 单片机介绍22 显示器简介43 蜂鸣器简介5三、系统设计51 需求分析52 系统硬件电路设计63 软件设计流程图94 显示程序设计105 按键设定程序设计10四、系统实现111 功能模块11五、系统测试与数据分析181 元件清单182 调试过程18六、结论19第二局部:参考文献20第三局部: 指导教师评语21第四局部:成绩评定21附录22. .word. .基于单片机控制的教学打铃系统的设计与实现第一局部:正文局部一、绪论1 设

6、计背景目前自动打铃系统广泛应用于生活、工作等方方面面,在人们的日常生活中起到重要作用。例如,在学校生活中,每天上下课都离不开打铃器的使用。打铃器可以为上下课的学生和教师们提供时间提醒,同时,也可作为一个提醒学生们作息时间的时间表,让大家有一个时间意识,形成规律的生物钟,对自身的安康也有很大的好处的。对于那些上课精力过于集中、知识面拓展比拟广的教师的拖堂现象也给了一个下课时间提醒,以免耽误学生们下一节课的上课时间。最原始的打铃器是人工根据时间通过敲钟来提醒,随着技术的开展,开场有了机械式打铃器。随着二十世纪电子技术的开展和二十一世纪半导体技术和集成电路的开展,电子技术开场渗入到各行各业,打铃器也

7、更多的向着智能型转变。设备的智能化离不开单片机的使用。基于以上原因,本学年设计了一款基于单片机的自动打铃系统,使用简单方便。2 主要工作和方法 本系统主要完成以下工作: 能够通过7段数码管显示时间;能够通过按键对当前的时间设置进展校正; 能够按照学校当前的作息时间进展打铃; 能够通过按键对学校当前的作息时间进展修改。3 本文构造本文第1局部绪论主要说明了本文的设计背景、主要工作和实现方法。第2局部相关知识介绍了单片机的概念、构造,数码管的相关知识,蜂鸣器的相关知识。第3局部系统设计,阐述了需求分析、系统硬件设计和系统工作流程设计。第4局部系统实现介绍了系统各个功能模块。第5局部系统测试与数据分

8、析,介绍了所用元件和调试过程。二、相关知识1 单片机介绍单片机概念本系统采用AT89C51系列单片机。AT89C51是一种带4K字节 FLASH存储器FPEROMFlash Programmable and Erasable Read Only Memory的低电压、高性能CMOS 8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 单片机构造AT89C51的构造如图2-

9、1所示:图2-1 AT89C51管脚图AT89C51的管脚说明如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘

10、故。在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口

11、,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口也可作为AT89C51的一些特殊功能口,如表2-1所示:表2-1 AT89C51特殊功能表管脚备选功能P3.0RXD串行输入口P3.1TXD串行输出口P3.2/INT0外部中断0P3.3/INT1外部中断1P3.4T0计时器0外部输入P3.5T1计时器1外部输入P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通 RST:复位输入。当振荡器复位器件时,要保持RST脚两

12、个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周

13、期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源VPP。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2:来自反向振荡器的输出。2 显示器件简介本系统的显示时间功能是按照一般电子表的显示进展设计的,让其显示6为数字时间信息即显示时、分、秒,再加上本钱等因素,所以我们选择用7段数码管

14、进展显示。一般的七段数码管拥有八个发光二极管用以显示十进制0至9的数字,也可以显示英文字母,包括十六进制和二十进制中的英文至a至f。七段数码管由四个直向、三个横向及上右下角一点的发光二极管组成,由以上向条发光体组合出不同的数字。除七段数码管外,还有十四及十六划的显示器,但现时已被点阵显示器所取代。七段数码管分为共阳极及共阴极,共阳极的七段数码管的正极或阳极为八个发光二极管的共有正极,其他接点为独立发光二极管的负极或阴极,使用者只需把正极接电,不同的负极接地就能控制七段数码管显示不同的数字。3 蜂鸣器简介蜂鸣器是一种一体化构造的电子讯响器,采用直流电压供电,广泛应用于电子产品中作发声器件。蜂鸣器

15、主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器工作原理:当接通电源后1.515V直流工作电压,多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器工作原理:接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。三、系统设计1 需求分析 设计任务 能够通过7段数码管显示时间; 能够通过按键对当前的时间设置进展校正; 能够按照学校当前的作息时间进展打铃; 能够通过按键对学校当前的作息时间进展修改。 根本要求该系统具备以下几点根本要求: 根本计时和显示功能用24小时制进展显示。

16、能够设置当前时间。 能够实现根本打铃功能, 按照表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第二节课下16:00第六节课下21:10第十节课下10:00第三节课上16:20第七节课上10:45第三节课下17:05第七节课下10:55第四节课上17:15第八节课上11:40第四节课下18:00第八节课下性能指标该系统具备以下性能指标: 时钟:时2位、分2位

17、、秒2位,时分秒用“-分开。 校对键:设置键,左移/右移键,加减键,确定/取消键,添加键。 响铃:蜂鸣器。2 系统硬件电路设计分析完单片机教学打铃系统原理及特点后,设计了以下硬件系统。 总体方案设计本系统是基于单片机AT89C51的教学打铃系统。系统硬件电路包括:AT89C51单片机的最小系统硬件电路、时钟电路、显示电路、打铃电路。本系统的构造框图如图3-1所示:图3-1 系统构造图 硬件电路图 该系统的硬件电路如图3-2所示:图3-2 硬件电路图 按键电路本系统接有8个按键,按键的一端接地。另一端分别单片机的P1.0P1.7口。按键从上到下的功能分别是:设置按键、加按键、减按键,左移按键、右

18、移按键、确定按键、取消按键和修改闹铃按键。按键电路模块如图3-3所示:图3-3 按键电路模块图 显示电路根据设计要求,该系统采用共阴极数码管,其公共端接单片机的P0口。数码管显示电路使用AT89C51的动态显示功能,数码管的八段a、b、c、d、e、f、g、dp接入单片机的P2口,数码管分别显示:“时、“、“分、“、“秒。数码管显示电路如图3-4所示:图3-4 显示电路图 打铃电路打铃电路接P3.7:当前时间与程序设定时间一样时,P3.7端输出高电平的方波,即打铃。打铃电路模块如图3-5所示:图3-5 打铃电路图3 软件设计流程图图3-6 主程序流程图4 显示程序设计利用12MHz中断做时钟源进

19、展计时,每20次中断秒加1。流程图如图3-7 所示:s图3-7 定时中断程序流程图5 按键设定程序设计本系统接有8个按键从上到下的功能分别是:设置按键、加按键、减按键,左移按键、右移按键、确定按键、取消按键和修改闹铃按键。当P1口输出低电平时,按键被按下,执行校正时钟操作和修改作息时间操作。校正时钟程序流程图图3-8 校正时钟程序流程图 修改作息时间流程图图3-9 修改作息时间流程图四、系统实现1 功能模块 时钟显示模块设置确定时钟是利用定时器T0 溢出中断方式,通过设置T0参数确定计时的基数,再对基数的计数确定出秒数,分钟数和时数。再用数码管将时间显示出来,其模块程序如下:/电子钟中断处理函

20、数void time()interrupt 1 /定时器0中断 TH0=(65536-50000)/256; /设置T0参数,定时50ms TL0=(65536-50000)%256; if(temp19)/定时20次,50ms*20=1s temp=0; second+; /秒加加if(second59) second=0; minute+; /分加加if(minute59) minute=0; hour+; /时加加 if(hour23) hour=0; else temp+; /数码管显示函数void show() P0=dis0; P2=dis1second%10; delay(40)

21、; /显示秒P0=dis1; P2=dis1second/10; delay(40);P0=dis2; P2=dis110; delay(40);P0=dis3; P2=dis1minute%10; delay(40); /显示分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;由

22、于显示是按秒进展显示的,所以需要定时20次才能到达1s。然后再显示函数中显示当前时间,其中P0口是用来选择用哪个数码管显示,P2口是用来显示当前数码管的数值。 时钟校正模块设置当数码管显示的时间与实际时间不符时,可对其数码管显示的时间进展校正,点击设置键进入时间调整的状态,可用加减键,左移右移键对秒,分,时进展调整。最后点击确定或取消键完成时间校正。其模块程序如下:/加时间void add() if(setflag0) if(lr=0) /修改秒的个位 second+; if(second=60) second=0; if(lr=1) /修改秒的十位 second=second+10; if(

23、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; /减时间void reduce() if(setflag0) if(lr=0) /修改秒的个位 second-;if(second0) second=

24、0; if(lr=1) /修改秒的十位 second=second-10; if(second0) second=0; if(lr=3) /修改分的个位 minute-; if(minute0) minute=0; if(lr=4) /修改分的十位 minute=minute-10; if(minute0) minute=0; if(lr=6) /修改时的个位 hour-; if(hour0) hour=0; if(lr=7) /修改分的十位 hour=hour-10; if(hour7)lr=0; break; /左移加case 0xef:lr-; if(lr19)/定时20次 temp=0

25、;second+;if(second59) second=0; minute+;if(minute59)minute=0; hour+; if(hour23) hour=0; else temp+; if(second=0) /用于判断该时间是否为打铃时间 flag1=1; if(t=0) /找到第一个打铃的时间 for(i=t;i0) /找到第一个闹铃后其他的闹铃按如下处理 if(bell_minutet=0&bell_hourt=0) kk=1; if(minute=bell_minutet) flag2=1; if(hour=bell_hourt) flag3=1; if(flag1=1

26、&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 元件清单表元件名称个数AT89C5117SEG-MPX8-CC-BLUE1SOUNDER1BUTTON82 调试过程 时钟显示模块 系统运行时如图5-1所示:图5-1 时钟显示效果图 校正时钟模块当显示时间与当前时间不相符时,

27、需要校正时钟。例如,系统显示时间如图5.2.1所示,当前时间为8:00,调试过程如下: 按下设置键,时钟停顿,进入校正状态; 按下左移/右移键,选择对时、分或秒的校正; 按下加/减键,校正时钟到当前的时间; 按下确定键,校正成功; 按取消键回到原本显示时间。经过以上调试过程,可以校正成功,此时系统如图5-2所示:图5-2 校正后显示效果图修改作息时间模块假设需要修改作息时间,按照如下调试过程: 按下修改键,时钟显示第一个打铃时间; 按下左移/右移键,选择要修改的打铃时间; 按下设置键,进入修改打铃时间状态此过程和校正时钟过程一样; 按下确定键,修改打铃时间成功,显示当前时间; 按下取消键,显示

28、当前时间。经过以上调试过程,可以修改成功。打铃模块当系统显示时间与设定打铃时间一样时,打铃。六、结论本文阐述了自动打铃系统的工作原理、体系构造等。并设计实现了一个自动打铃系统,能够校对当前时间,选择适宜的打铃时间,适合学校、工厂等管理机构。为了更好的实现自动打铃系统,我们首先对本系统的功能需求进展了分析并搭建了模拟电路;然后开场分模块进展软件设计,第一步我们是实现时钟显示模块即能够在数码管中显示当前的时间,第二步是实现打铃模块即按照作息时间表依次打铃,第三步是实现校正当前时钟模块,第四步是实现作息时间修改模块;当全部模块都完成后,开场对实现的系统进展测试,通过测试数据的分析,系统能够很好的实现

29、设计需求中的各种功能,但是程序还没有到达最优,需要进一步的优化和开发。通过本次设计,我们对所学的专业知识有了很好的回忆和实践,提高了自己的动手和思考能力,这对我们自身的开展有了很大的帮助,同时在此期间,我们查阅了很多的书籍和资料,从中我们学到了很多课本上没有的知识,拓展了自己的知识面,如果没有前期的准备工作是没法很好的完成此次设计的,所以多学、多看、多想、多动手才是学好知识的必要素质,这对我们未来的开展和进步有着至关重要的作用。第二局部:参考文献1 X凤言.电子电路根底M.:高等教育,1995.2 戴佳.51单片机C语言应用程序设计实例精讲M.:电子工业,2021.3 孙江宏. Protel

30、99 电路设计与应用M.:机械工业,2001.4 王水富.基于8051的自动打铃系统设计J.电脑编程技巧与维护,2021,117:23-26.5 王书杰.基于校园网络的自动打铃系统设计J.科学技术与工程,2021,1131:204-207. 6 王娟.基于单片机的多功能定时打铃钟设计J.XX农机,2021,45:85-86.7 于永51单片机C语言常用模块与综合系统设计实例精讲M:电子工业,2007.学生签名: 填表日期: 年 月 日第三局部: 指导教师评语第四局部:成绩评定指导教师签名: 填表日期: 年 月 附录/打铃系统#includereg51.h#define uchar unsign

31、ed char#define uint unsigned intsbit SPK=P37;/蜂鸣器bit Bell_Time=0;/到打铃时间标志uchar temp=0;/记录电子钟的计数次数uint time_count=0;/记录打铃时间的计数次数char second,minute,hour;/记录时间uchar seconds,minutes,hours; /用于保存按下设置按钮时的时间值uchar secondu,minuteu,houru;/ 用于保存按下修改按钮时的时间值uchar flag1,flag2,flag3,t;/标记是否可以打铃uint code dis1=0x3f

32、,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/共阴数码管0-9,0xBF为“-,1表示点亮uchar code dis=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/选择哪个数码管,0表示选中uchar bell_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; /小时的时间uchar bell_minute=50,0,45,55,40,0,45,55,40,10,20,5,15,0,20,5,15,0,20

33、,30,15,25,10,0; /分的时间,秒的时间都为0 char lr;/记录左右移动的位置uchar flag=0;/用于记录点击移动按钮后移到第一位让其闪动uchar lr1=0;/设置第一位的闪动标志uchar flag4=1; /用于记录点击取消按钮后第一位不闪uchar ff=0;/用于判断第一次是右移后再次左移闪uchar key_code;/用于按键去抖时赋予P1口的值char chance,t1; /chance表示选择哪个打铃时间修改,t1用于标志变量uchar setflag=0; /在使用加,减,保存,取消按钮时,用于和修改打铃时间相区别uchar updateflag=0; uchar kk=0; /用于标志到数组的0:0:0/延迟函数void delay(uint tt) uchar i,j;for(i=0;itt;i+) for(j=0;j=1) lr1=0; flag=1;/用于记录点击移动按钮后再移到第一位让其闪动else/点击移动按钮,当lr7,那么lr=0;即第一位闪 if(flag=1&flag4=1) lr1=1; if(flag=1&flag4=1&

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁