《基于单片机自动打铃控制系统毕业设计.doc》由会员分享,可在线阅读,更多相关《基于单片机自动打铃控制系统毕业设计.doc(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于单片机自动打铃控制系统毕业设计目 录摘要.ABSTRACT.目录.第1章 设计方案论证.1 1.1 概述.11.2设计要求.11.3设计方案选择.21.3.1 方案一:数字电路设计的自动打铃系统.21.3.2 方案二:基于单片机的自动打铃系统设计.2 1.3.3 方案确定.2 1.4 基本方案 .3 1.4.1 设计课题简要概述.3 1.4.2 系统软硬件划分.3 1.4.3 单片机选型.3 1.5 总体设计框图.3第2章硬件电路设计.42.1 基本原理概述.42.2主要原件参数与功能简介.4 2.2.1 主控器AT89S51.4 2.2.2 外部存储电路AT24C02.52.3 单元电
2、路的设计.72.3.1显示电路设计.72.3.2 键盘接口电路设计.82.3.3响铃电路设计.9 2.4 电源电路的设计.10 2.5 总体运行进程.10第3章软件电路设计与流程图.113.1基本原理概述.113.1.1中断服务程序设计.113.1.2显示程序设计和按键判断与按键处理程序设计.113.2流程图.123.2.1系统主程序流程图.123.2.2 系统定时中断流程图.13第四章 系统测试与仿真.14 4.1 系统调试.14 4.1.1 软件调试.14 4.1.2 硬件调试.14 4.1.3 硬件软件联调.14 4.2 仿真效果.15 总结.16参考文献.17致 谢.18附 录一.19
3、附 录二.20第1章 设计方案论证1.1 概述电铃广泛应用于学校、机关与工矿企事业单位,可实现作息时间的固定周期打铃,提示人们工作、学习或是休息。本文用单片机AT89S51作为控制芯片,开发了一种新型实用的电铃控制电路。本电铃控制电路的优点:不再使用于电池做备用电源;数据存储时间达十年;平时万年历显示;打铃时显示不中断。电铃控制电路体积小、功耗低、可靠性好、性价比高。随着社会的发展,科学技术水平的日益提高,多种多样性能良好的电子产品逐渐取代了很多旧式的手动器件,比如说这件基于单片机设计的电铃控制器,不仅能够非常准确的预定的时刻响铃,而且还能够设定多个定时点,更方便的是,它还能够直观的显示星期、
4、时、分、秒等信息,为人们的使用带来了很多方便。自动控制在人们的生活中可以说“无孔不入”,小到遥控儿童玩具,大到冰箱空调的智能化,都表达了科学技术的进步。特别是单片机(SingleChip Microcomputer SCM)技术的应用,不但降低了生产成本,同时也方便了消费者,使操作简洁、安全。单片机的应用使许多复杂的事情,都能够简单、方便的实现了。用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低,可靠性好等特点,充分发挥了单片机的控制优势。本打铃器可用于作息时间控制,方便了广大师生。1.2设计要求 它可以作为时钟电路来显示时间,进行设置,定时打铃。按照自顶向下设计方法划分自动打
5、铃系统的功能。可分为:时间设置电路,计时电路,显示电路和定时打铃控制电路等。按表1-1作息时间的设计:容时间起床6:30早自习7:30-8:10第一节课8:20-9:00第二节课9:10-9:50第三节课10:00-10:40第四节课10:50-11:30第五节课13:30-14:10第六节课14:20-15:00第七节课15:20-16:00第八节课16:10-16:50晚自习19:00-20:30熄灯22:301.3 设计方案选择1.3.1 方案一:数字电路设计的自动打铃系统利用函数信号发生器来进行脉冲信号输出,利用74160N来设置十进制和六进制的进位输出。利用数码显示器来显示时间,利用
6、或门、与门、非门、与非门、等电路元件进行组合实现打铃的控制。1.3.2 方案二:基于单片机的自动打铃系统设计单片机部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的作息时间是否相同,相同者,则进行报时处理并控制打铃,不相同则返回主程序。1.3.3 方案确定方案一的设计只能事先设定
7、打铃时间不能完全自动打铃,且在修改打铃时间上存在一定的困难。而方案二中的设计能完全实现自动化,诠释了我们这次毕业设计的主题。并在修改打铃时间上有了很大的方便,只需修改一部分程序便能实现不同的需要。因此我选择方案二进行设计。1.4 基本方案1.4.1 设计课题简要概述自动打铃装置用于工厂、学校等地的时间控制,本设计是按照学校作息时问设定的,模拟了电了钟显示时、分、秒。还根据学校的作息时间按时打铃,本系统有4 个按钮,分别用来调时、调分、秒和强制打铃与强制关铃,以保证始终与标准时间相吻合。首先设计出本系统的硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。1
8、.4.2 系统软硬件划分由于需要最小系统设计,因此,极大地介于系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统时仅有程序存储器和时钟与复位电路的单片机系统。1.4.3 单片机选型根据课题的具体容,任务要求,计时、校时、定时、键盘显示等功能,经多方面考虑,所选系统选项用与MSC-51单片机完全兼容的AT89S51 低功耗单片机。1.5 自动打铃系统框图 单片机AT89S51 键盘控制电路发光管指示 响铃电路晶振复位电路数码管显示路电源电路 图1-1自动打铃系统框图第二章 硬件电路设计2.1 基
9、本原理概述本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4 部分构成。通过部定时产生中断,从而使驱动电铃打铃。设定51 单片机工作在定时器工作方式1 ,每100ms产生一次中断,利用软件将基准100ms 单元进行累加,当定时器产生10 次中断就产生lS 信号,这是秒单元加1 。同理,对分单元和时单元计数从而产生秒,分,时的值,通过六位七段显示器进行显示。由于动态显示法需要数据所存等硬件,接口较复杂,考虑显示只有六位,且系统没有其他浮躁的处理程序,所有采用动态扫描LED 的显示。本系统采用四个按键,当时钟时间和设置时间一直时,驱动程序动作,进行打铃,每次打铃30S2.2 主要原件参数与
10、功能简介2.2.1 主控器AT89S51Atmel公司生产的AT89S51 单片机用高性能的静态89S51 设计,由先进工艺制造,并带有非易失性FLASH 程序存储器,它是一种高性能、低功耗的8 位CMOS 微处理芯片,市场应用最多,主要特点有:有4K 的FLASH 程序存储器128字节部RAM电源控制模式:时钟可停止和恢复,空闲模式,掉电模式6个中断源、两个DAT1指针、看门狗定时器4个中断优先级32个8位I/O口全双工增强型UART2个16位定时/计数器图2-1 AT89S51引脚功能图2.2.2 AT24C02在系统运行时,为保障系统的稳定运行与掉电保护,在设计过程中必须采取措施。在系统
11、上电运行后,若系统意外掉电,会导致预置数据的丢失,故需要选择易用、引脚少且掉电不丢失的EEPROM,因此本系统选用24C02存储器,从而大大提高系统的可靠性。24C02的特点:与400KHz 总线兼容;1.8到6.0伏工作电压围;低功耗CMOS技术;写保护功能:当WP为高电平时进行入写保护状态;1,000,000编程/擦除周期;可保存数据100年;温度围:商业级、工业级和汽车级等。24C02的引脚结构图如图2-3所示。图2-2 24C02引脚结构图引脚说明:A0,A1,A2地址输入引脚,走位硬件寻址的依据,同种芯片可同时连接8片;Vcc,Gnd电源,接地引脚,1.8-6.0v;Wp写保护,当W
12、p接地时,允许对器件的正常读写操作;当Wp接高电平时,写保护,只能进行读操作;SDA串行地址/数据输入/输出端口,双向传输,漏极开路,需外接上拉电阻到Vcc(典型阻值为10k);SCL串行时钟输入,高低电平不同状态与SDA配合,执行不同的命令。工作原理器件寻址:24C02的器件寻址示意图如图2.5所示,前八位是地址信号,从最高位(MSB)开始,其中前四位是固定值1010,后三位有管脚A0、A1、A2的基地情况确定。最后一位是读写控制信号,0表示写,1表示读。若与SDA线发送过来的地址比较一致,则器件输出应答0,否则将返回等待状态。器件部地址寻址是在器件寻址之后,对256个字节进行寻址,直接传送
13、8位地址信号(00-FF)对应于器件部的地址。图2-3 24C02寻址AT24C02的开始和完毕信号时序如图2-4所示。图2-4 24C02开始完毕信号AT24C02的应答信号如图2-5所示,无论主从,每接收1个字节都要给出1个应答信号。图2-5应答信号写操作:字节写一次只写一个字节,24C02的字节写如图2-6所示。图2-6 24C02字节写先由主机发送起始命令,再发送器件地址,当主机接收到器件的ACK应答后,便继续发送部字节地址,当接收到ACK应答后继续发送数据,当8位数据发送完毕之后,主机接收到器件的ACK应答,在发送停止信号。读操作:当前地址读示意图如图2-7所示。图2-7 24C02
14、当前地址读部地址计数器存放着上一次访问时最后一个地址加1的值,只要芯片有电,该值就被保存。当读到最后页的最后字节,该地址变为0;当读到某页的页尾时,该地址转向该页页首。2.3 单元电路的设计2.3.1显示电路设计显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码,用74LS164 来驱动数码管扫描只需7ms 。74LS164 部位8 个D 触发器,用以实现数据的串行移位,74LS164 位TTL 单向8 位移位寄存器,可实现串行输入并行输出,CPU 位时钟输入端,可接到串行口TXD 端。每个时钟信号的上升沿加到
15、CP 端时,移位寄存器移一位,8 个时钟脉冲过后,8 为二进制数个部移入74LS164中,MR 为复位端,当该位为低电平时,移位寄存器各位复O 。当它为高电平时时钟脉冲才起作用。图2-8 显示电路2.3.2 键盘接口电路设计由于键盘只有四个,采用独立式按钮,分别与8051 的P3.0, P3.1, P3.2 相连,用普通按钮10K 上拉电阻,用查询法完成读健功能。图2-9 按键电路2.3.3 响铃电路设计响铃电路用到了蜂鸣器、三极管、1K电阻。蜂鸣器两端分别接地和三极管。三极管一段电源另一端与电阻相连并接入AT89S51的P3.7接口。图2-10 响铃电路2.4 电源电路的设计单相桥式整流电路
16、其构成原则就是保证在变压器副边电压U2的整个周期,负载上的电压和电流方向始终不变。设变压器副边电压为U2为有效值,当U2为上正周时二极管D1、D3导通,D2与D4经受反向电压,输出为上正下负。220V交流电经变压器降压,次级电压U2为12V,这里对变压器效率并无特别要求。桥式整流输出平均电压为Uo=0.9U2。7805为集成三端稳压器,输出+5V的直流电压,输出交流噪声小,温度温定性好。当U2为负半周时D2与D4导通,D1与D3经受为U2,输出同样为上正下负,这样D1、D3与D2、D4交替导通,使通过稳压管W7805的电压始终为上正下负,电流方向也不变。电路图如下图 图2-11 电源电路2.5
17、 总体运行进程首先实现24小时制电子钟,在8位数码管显示,显示为时分秒,实现的格式为:23-59-59。到达预定时间启动蜂鸣器开始打铃,打铃的方式分为起床、熄灯和上下课铃两种。系统使用了4个按键,3只按键用来调整时间,另一只为强制打铃按钮。通过选择键选择调整位,选中位闪烁,按增加键为选中位加1,按减少键为选中位减1。按强制打铃按钮是实现强制打铃或者强制关闭打铃。 第三章 软件电路设计与流程图3.1 基本原理概述主程序首先是初始化部分,主要是计时单元清零,中断初始化,堆栈指针初始化,启动定时器工作,然后是调用显示子程序。主程序的起始存储地址是0000H单元,但由于本系统用了定时器T0的中断,中断
18、服务程序入口地址为000BH,因此从0000H单元起存放一条短调转指令AJMP,使真正的主程序从0300H单元开始存放。3.1.1 中断服务程序设计单片机部的定时/计数器T0定时100ms,即0.1s,10次中断即为1秒,60秒为1分,60分为1小时,24小时为一天,如此循环,从而实现计时功能。编写中断服务程序关键要注意:1.现场保护,本系统中是累加器A和程序状态字PSW值的保护。2.计时处理时采用的确十进制,因此时,分,秒单元加1后要进行十进制调整,即要执行DAA指令,还要注意的是时计到24就回零,分和秒计到60就回零。3.中断返回前的现场恢复。3.1.2 显示程序设计和按键判断与按键处理程
19、序设计显示采用的是动态显示,段控和位控都经过反相器,显示的字形代码是共阳的显示代码,位控信号输出时是高电平有效,在校时时,采用的是点亮小数点信位调节器标志,哪位小数点亮表示调整的是该为的值。显示子程序的第一部分是拆字,显示缓冲区是2FH2AH;第二部分是查字型码,输出段控和位控信号,由于采用的是动态显示,所以每出输出一位的段控和位控信号要延时一定的时间,使LED显示器显示的字符时稳定的。按键判断程序有编写时应注意按键的去抖动,该系统采用的是延时去抖动的方法,延时是通过调用子程序来实现的,每个按键按下后都要等待释放后再返回。按键处理程序中的按键式校时的,所以进入按键处理程序后就关闭定时中断,对于
20、动能键注意设置显示标志。3.2 流程图3.2.1 系统主程序流程图图3-1 系统主程序流程图 当硬件一通上电,程序就开始走时、初始化,如果程序无错误,显示电路显示00-00-00,同时比较打铃时间,如果走时到了预设的打铃时间,则会判定打铃程序、并执行打铃程序、同时在LED屏上显示打铃;进入按键检测程序状态,当检测到有键按下时,获取按键值并对其进行处理;返回到开头程序进行循环执行。3.2.2 系统定时中断流程图图3-2 系统定时中断流程图 如上图所示,当程序进入走时程序也就是定时中断程序,对当时的一个现场进行一次保护,然后就进入100mS的延时状态,对其清零,然后走时,当循环到十次延时程序时对其
21、进行一次中断,产生秒单元并清零,否则就退出程序;当秒单元走时到60次时产生分单元并清零,否则就退出程序;当分单元走时到60次时产生时单元并自清零,否则退出程序;当时单元走时24次时,对秒单元、分单元、时单元都清零,一天便完毕。第4章 系统测试与仿真4.1系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:LED驱动模块的调试,数据存储模块的调试,PC机通信模块的调试等,最后将各模块组合后进行整体测试。4.1.1硬件调试对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。4.1.2软件
22、调试 软件调试采用单片机仿真器WAVE6000L与微机,将编好的程序进行调试,主要是检查语法错误。4.1.3硬件软件联调 将调试好的硬件和软件进行联调,主要调试系统的实现功能。4.2仿真结果 此系统的仿真效果很好,能实现设计要求和目的所规定的容。下面是两幅仿真结果图: 图4-1图4-2总 结完成自动打铃系统设计的毕业设计我能综合运用电子技术课程中的所学到的理论知识来完成自动打铃机的设计和分析电路,学会了在虚拟的环境下创建电路,计算和调整参数,我能灵活的应用protcl99se 软件画图,并且掌握了一定的单片片机知识,通过这门课的设计我还有以下几点收获:1、有利于基础知识的掌握通过这次设计我亲手
23、做,自己思考,将理论知识上升到实践的高度,从而进一步打破了单片机的神秘面纱。2、有利于逻辑思维的锻炼。在许多常规可生的日常学习中我们不难发现这样一个现象,不少学生的思维常处于混乱的状态,写作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果,程序设计是公认的,最能直接有效的训练学生的创造思维,培养分析问题解决问题的能力的方法之一。即使见到陌生的程序,从任务分析,确定算法界面布局,缩写代码到调试运行,都能顺利完成。整个过程需要我们有条理的构思,这之间有猜测设计,判断思维的抽象思维训练,又有分析问题解决问题,预测日标等能力的培养。- 15 - / 66 参考文献【1】 红卫。基于单
24、片机的智能系统设计与实现。电子工业。2005。【2】 志良。单片机原理与控制技术。机械工业。2009。【3】 涵芳,徐爱卿。MCS-51/96系列单片机原理与引用。航空航天大学。1996。【4】 光弟。单片机基础。航空航天大学。1992。【5】 育才,苏学成。单片微型计算机应用系统设计与实现。东南大学。1990。【6】 林毓梁。单片机原理与应用。机械工业。2009。【7】 宏丽,王静霞。单片机基础教程。人民邮电。2009。【8】 唐继贤。51单片机工程引用实例。航空航天大学。2009。【9】 星寒,小波,王庚兰。从0开始教你学单片机。航空航天大学。2008。致 谢大学即将告别,三年的大学生活很
25、短暂,突然回首,仿佛一切就发生在昨日,在此我要感谢所有关心我、帮助过我的人。首先在本文的撰写过程中,导师梁建华给予了我细心的指导和关心,使我克服了众多困难终于完成了毕业设计的撰写工作。导师渊博的知识、严谨XX的治学态度与敬业精神,给我留下了深刻的印象,并将在我今后的人生道路上产生深远的影响,在此论文完成之际,谨向导师致以崇高的敬意和衷心的感谢!其次呢,我要感谢所有教育过我的老师们与我可爱的同学们,谢谢你们细心的教我,帮助我,让我在这三年的大学里度过了我人生最宝贵的三年,让我学会了怎么做人、怎么做事。最后,我要感谢的是我的家人、谢谢你们一直以来对我默默的支持和理解,让我无比感动,在此深深地向你们
26、表示感谢。再一次感谢所有关心我、帮助我的人! 学生签名: 王 斌 阳 日 期: 附 录一 总体电路原理图附 录二 源程序清单BEEP EQU P3.7 ;定义蜂l 鸣器(电铃)控制信号输出口ORG 0000H ;程序入日地址LJMP STARTORG 000BH ;定时器0中断入日地址LJMP TIMER_OORG 0300H/ * * * * 程序开始,初始化* * * * /START :SETB BEEP ;关闭蜂鸣器(电铃)SETB 48H ;使用一个bit 位用于调时闪烁标志SETB 47H ;使用一个bit 位用十产生脉冲用十调时快进时基CLR 45H ;关闭响铃方式标志MOV R
27、I,#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;设定定时器01 作方式1MOV THO, #3CHMOV TLO, #0B0H;赋定时初值,定时50msSETB TRO;启动定时器0MOV SP, #4OH;重设堆栈指针/ * * * * 主程序* *
28、* * /MAIN :CJNE R1, #00H, MAIN1;是否为正常走时状态LCALL BIJIAO1;调用起床、熄灯打铃比较子程序LCALL BIJIAO2;调用上、下课少打铃比较子程序LCALL DALING ;调用响铃方式执行子程序MAIN1 :LCALL DISPLAY;调用显示子程序LCALL KEY_SCAN;调用按键检测子程序JZ MAIN;无键按下则返回重新循环LCALL SET_KEY;调用选择键处理子程序 46H, MAIN ;如果已进行长按调招(调时快进),则不再执行下面的单步调整LCALL ADD_KEY;调用增加键处理子程序LCALL DEC_KEY; 躺用减少
29、键处理子程序LCALL DALING_KEY;处理强制打铃/强制关闭铃声键LJMP MAIN;重新循环程序完毕(主程序中引用到的字程序如下)/ * * * * 定时中断服务程序* * * * * /TIMER_O: PUCH ACC PUCH PSW;保护现场MOV THO,#3CHMOV TLO, #0B0H;重新赋定时初值CPL 47H;产生脉冲用于调时快进时基INC 24HMOV A, 24HCJNEA, #l0, ADD_TIME;产0.5秒基准时钟,用于调时闪烁CPL 48H;取反调时闪烁标志位MOV 24IJ, #00HADD_TIME:INC 20HMOV A,20HCJNEA,
30、 #20, RETI1;产生l秒基准时钟MOV 20H, #O0H;一秒钟时间到,清零20HMOV A ,21HADD A,#01HDA A ;做十进制调整MOV 21H, ACJNEA, #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;恢复现场RET1;中断返回/ * * * * 显示处理* * * * /DISPLAY:MOV A,#21H;秒ANL A,#0FHMOV 2FH,A;转换出秒个位,存入2FHMOV A,21HANL A, #OFOHSWAP AMOV 2EH, A;转换出秒十位,存入2EH 46H, MIN;如果长按按键(调时快进),则跳过闪烁处理CJNE R1, #3, MIN;如果R1为3,