《2022年自动控制打铃系统设计 .pdf》由会员分享,可在线阅读,更多相关《2022年自动控制打铃系统设计 .pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教学系审核意见:主任签字:年月日简易自动打铃系统设计设计要求1. 基本计时和显示功能( 12 小时制) 。2. 可设置当前时间(包括上下午标志,时、分的数字显示)。3. 能在上午 7:30(早自习)和下午10:30(晚熄灯)定点打铃,且每次打铃均为响铃5s,停 2s,再响 5s。1.方案论证与对比1.1 方案一 采用时钟芯片和键盘实现功能方案一原理框图如图1-1 所示:DS1302芯片蜂鸣器89C52 单片机8255 芯片数码管键盘名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1
2、页,共 18 页 - - - - - - - - - 图 1-1 采用时钟芯片和键盘实现功能该系统用 DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与 STC89C52 进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过 89C52单片机芯片综合控制1,把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。1.2 方案二:采用中断定时实现功能方案二原理框图如图1-2 所示:图 1-2 采用中断定时实现功能该系统以 STC89C52 单片机为核心控制部件。用8255做 I/O 拓展芯片,数码管接8255 的 PA 、PB引脚,用动态扫描的方式显
3、示当前时间。蜂鸣器与单片机的P2.0 口相连,当打铃时间到时,由STC89C52 发出打铃指令。以外部INT0和 INT1 中断按钮实现调时功能。1.3 方案比较本设计要求能实现基本计时和打铃功能。计时和打铃时间设计,方案一中用到了DS1302时钟芯片计时和打铃时间设置;方案二中采用定时器中断来计时并结合软件设置打铃时间。上述两种方案中:方案一的外围硬件电路设计复杂,而且时钟芯片没有得到充分利用,而方案二的软件计时具有硬件开销小,成本低,外围电路设计简单等优点。蜂鸣器中 断数码管8255芯片89C52 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
4、 - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 调时设计,方案一中用矩阵键盘实现调时功能;方案二中采用外部中断0 和 1 的两个按钮来实现调时。上述两种方案中:方案一的软件设计比方案二的难度系数大,使程序易读性不强。综合对计时的精密程度要求不高的本系统,本设计采用方案一来实现功能。2.单元电路设计与论证本设计主要由 STC89C52 单片机芯片与 8255芯片组成的模块为控制核心、 蜂鸣器电路模块实现打铃功能、中断0、1 按钮模块调整当前时间、数码管显示模块显示时间,由以上四大模块构成了本系统,详细电路图见附录一,硬
5、件设计总框图如图2-1:图 2-1 硬件设计总框图2.1 单片机、 I/O 拓展蜂鸣器0PA5PA移位键加一键0PB7PB70DDWRRDRESETCSA82551A0A7.00.0PPWRRDRESET7.2P5289CSTC0.21.22.2PPP2.33.3PP扫描电路89C52 蜂鸣器打铃电路按键8255 I/O拓展引脚数码管外部中断名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 图 2-2 主控电路框图STC89C5
6、2RC是一个低功耗, 高性能 CMOS 8 位单片机, 片内含 8k Bytes ISP的可反复擦写 1000次的 Flash只读程序存储器, 器件采用 ATMEL 公司的高密度、 非易失性存储技术制造,兼容标准MCS-51 指令系统及 80C51引脚结构,芯片内集成了通用8位中央处理器和 ISP Flash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。STC89C52具有如下特点: 40 个引脚,8k Bytes Flash片内程序存储器, 256 bytes的随机存取数据存储器 (RAM ) ,32 个外部双向输入/ 输出( I/O)口,
7、 5 个中断优先级 2 层中断嵌套中断, 2 个 16 位可编程定时 / 计数器,2 个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。其主要特性1如有:与 MCS-51 兼容;8k 可反复擦写 (1000 次)Flash ROM; 全静态工作:0Hz24MHz;三级程序存储器锁定; 256*8 位内部 RAM ;32 可编程 I/O 线;2 个 16 位可编程定时 /计数器; 5 个中断源;可编程串行通道;低功耗的空闲和掉电模式。I/O 拓展采用 8255芯片,单片机用 89C52 ,电路框图如图 2-2 所示。2.2 打铃电路设计采用 P型三极管为蜂鸣器提供5V电源,并把 STC8
8、9C52 的 P2.0 口与三极管的基极相连接,当P2.0 口有低电平输入出时,三极管导通2,蜂鸣器响应,从而实现打铃功能。电路框图如图2-3 所示:图 2-3 打铃电路框图2.3 时间设置电路设计用中断 0 开关作为移位开关并接入SCT89C52 芯片的 P3.2 口, 设置所需调节的显示位;用中断 1 开关作为加一开关并接入SCT89C52 芯片的 P3.3 口,对所选调节位进行加一操作。利用中断按键实现时间设置的电路框图如图2-4 所示:0.2P1K 限流电阻P 型三极管蜂鸣器5V 电源ecb3.3P接加一开关中断 1 按钮5V 电源名师资料总结 - - -精品资料欢迎下载 - - -
9、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - 图 2-4 时间设置电路框图2.4 数码管电路设计8255 的 PA 口控制数码管的位选,低电平有效;PB 口做为段选输出,接1K 欧姆的限流电阻3。如图 2-5 所示:图 2-5 数码管显示电路框图3 系统软件工作流程图3.1 主程序工作流程开 始初始化 8255 芯片和打开中断调用扫秒显示子程序键按下?打铃到?时间设置子程序Y N N 50PAPA70PBPB1K 限流电阻P 型三极管数码管名师资料总结 - - -精品资料欢迎下
10、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 图 3-1 主程序流程图主程序首先设置8255模式,并打开中断0,设置中断为边沿触发模式;其次在死循环中执行读秒显示子程序,当定时器满一秒时,在显示缓冲区中时间加一,等待送入数码管显示;再次按键扫描子程序,如果有中断0 或中断 1 按钮被按下时, 则转入相应功能的子程序中; 最后如果当前显示时间满足预设打铃条件,通过打铃判断子程序跳入对应的打铃方式中执行4。详细主程序见附录二,主程序流程图如图3-1。3.2 定时器中
11、断显示子程序此子程序为本设计的核心之一,首先初始化定时器T0,设置 T0 为工作方式 1,其初始值为 3CB0H(既每次溢出定时50ms) ,并对其循环 20次,然后把时间加1s,并送入显示缓冲区等待显示5。显示时,先取出内存地址中的数据,然后查得对应的显示用段码从 PB 口输出, PA 口将对应的数码管选中供电,就能显示缓冲区中的数据值。为了显示秒位和上下午标志在数码管显示上特加了“”、 “A” 、 “P”这三个特殊字符子。程序流程图如图 3-2:Y恢复现场, 中断返回NT 加一处理1S 到?数码管显示当前时保护现场T0 中断定时器初值校正名师资料总结 - - -精品资料欢迎下载 - - -
12、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 图 3-2 定时器中断显示子程序流程图3.3 中断服务子程序此子程序是为调时时服务的,首先初始化定时器T1,设置 T1 为工作方式 1,其初始值为 3CB0H(既每次溢出定时50ms)1,并对其循环 8 次,然后使数码管被选中的调时位闪烁,子程序流程图如图3-3 所示:图 3-3 T1中断服务程序流程图3.4 时间设定子程序时间设定模块的设计要点是按键的去抖处理与“一键多态” 5的处理。即只涉及 2个键完成了 6 位时间参数的设定
13、。“一键多态”即多种功能的实现思想史,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。秒表时钟调时闪烁T1 中断保护现场闪烁处理秒表 /闪烁?恢复现场,中断返回加 10ms处理移位键中断屏蔽左移一位恢复现场返回计时移位键 /加一键?加一键加一处理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 图 3-4 键盘扫描子程序流程图4.系统功能实际测试4.1 程序实际编译测试在 Keil C51 编译环境下编译过程中所产生的
14、误差主要是在重装初值的过程中大约需要 8 个机器周期,本设计采用在程序开始时对定时器赋初值多加8 个机器周期来消除此误差。最后在 Keil C51 编译环境下编译通过, 0 警告, 0 错误。4.2 系统实际测试实际效果如图 4-2 所示,达到设计要求。图 4-2 实物图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 4.3 软件调试步骤1、打开软件后 , 在 Project菜单中选择 New Project 命令,打开一个新
15、项目。保存此项目,输入工程文件名后,并保存工程文件的目录。2、为项目文件选择一个目标器件,即选择8051 的类型。在 Data base 列表框中选择“ATML 89C52”,确定。3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中, 选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试。4.4 子程序调试步骤子程序调试应一个模块一个模块地进行,首先单独调试各功能子程序, 检查程序是否能够实现预期的功能, 接口
16、电路的控制是否正常等; 最后逐步将各子程序连接起来进行总调试。故调试步骤 6 如下:A、蜂鸣器的调试调试方法:先把打铃程序下载到单片机,让蜂鸣器发声,看是否在正确的时间内实现打铃。B、数码管程序调试正确的显示时间是整个程序的关键之一。调试方法:先把程序下载到单片机,让数码管显示,是否正确的显示时间的变化。C、键盘调时序正确的显示所调的时间是整个程序的关键之一。调试方法:先把键盘程序和显示程序下载到单片机,让数码管显示,是否正确的所调时间的变化。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
17、- 第 9 页,共 18 页 - - - - - - - - - 4.5 调试结果实现计时和显示功能( 12 小时制),可设置当前时间(包括上下午标志,时、分的数字显示),能在上午7:30 和下午 10:30 定点打铃,且每次打铃均为响铃5s,停 2s,再响 5s。4.6 系统误差及性能分析经测试该简易自动打铃系统在一天内会出现时间误差,该误差主要是由于晶振自身的误差所造成的。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累积误差很小,可以忽略。5.设计总结通过这次课程设计, 我们得到了很多收获和体会, 懂得了团队合作的重要性和必要性,以及工程设计的大体过程。第一,巩固和加深
18、了对单片机基本知识和理解,提高了综合运用所学知识的能力。第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。第三,通过实际方案的分析比较,设计计算,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。第四,在这次课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。所以在课程设计的实践中,我们应将实验课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。第五,掌握了比较常用的仪器的使用方法,提高了动手能力。第六,培养了严谨的工作作风和科学态度。总之这次课程设计, 培养了我们综合应
19、用单片机原理及应用的理论知识和理论联系实际的能力;在设计的过程中还培养了我们的团队精神,同学共同协作,一齐商量讨论,解决了许多问题。这一切都令我们受益匪浅,在今后的学习工作中我们会一如既往,不断努力。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - 6.详细仪器清单类型规格数量备注5V直流电源ZH-6003 1 USB232converter U232-P9 1 电阻1k 13个芯片8255 1 片扩展 I/O 芯片STC89
20、C52 1 片晶振12M 1 个蜂鸣器无源1 个数码管3 位共阳极2 个极性电容0.1UF 1 个非极性电容30pf 2 个LED 2 个工作指示灯按键开关3 个单刀双掷开关1 个三极管7 个7. 致谢经过近几天的课程设计,我们组的成员都充分认识到理论知识和实践结合的重要性。经过两年多的理论基础的学习,我们成功的将理论运用如实践,并成功的运用单片机,以前只是在路上看见那些交通灯,但是并没有认真的研究交通灯的内部控制原理,还有单片机上那些芯片的功能和引脚图平常也不是常接触,通过这次城市道口交通灯控制系统设计让我清楚如果想做一个产品该怎样思考。此次课程设计持续的时间较长,对组员的耐心是一种极大的考
21、验,同时学校的支持力度也应该加强,而不应该对学生的提名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - 问表示不解, 对有些程序的编写要及时的给予指导,当然学生也要积极的配合老师的工作,努力将自己所学的知识尽可能的运用到对方案的设计中去。感谢老师的细心指导、和伙伴之间的配合。参考文献1 张鑫 .单片机原理及应用M. 北京:电子工业出版社,2005.8. 2 康光华 .电子技术基础 .模拟部分 M. 北京:高等教育出版社,2006
22、.1. 3 康光华 .电子技术基础 .数字部分 M. 北京:高等教育出版社,2006.1. 4 祁伟 , 杨亭 . 单片机 C51 程序设计教程与实验M. 北京:北京航空航天大学出版社,2006. 5 楼然苗 .李光飞 .单片机课程设计指导M. 北京:北京航空航天大学出版社,2007.4 6 单片机学习网 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 附录附录 1. 整体电路图名师资料总结 - - -精品资料欢迎下载 -
23、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - 附录 2. 详细程序#include reg52.h #include #define PA XBYTE0 xD1FF /*PA 口地址*/ #define PB XBYTE0 xD2FF /*PB 口地址 */ #define PC XBYTE0 xD5FF /*PC 口地址 */ #define CON XBYTE0 xD7FF /*控制字地址 */ #define uchar unsigned char Code C
24、har dis_714=0 xA0,0 xBB,0 x62,0 x2A,0 x39,0 x2C,0 x24,0 xBA,0 x20,0 x28,0 xff,0 x7f,0 x30,0 x70; /* 共阳 LED 段码表0 1 2 3 4 5 6 7 8 9 不亮 - A P*/ code char scan_con8=0 xDF,0 xEF,0 xF7,0 xFB,0 xFD,0 xFE,0 xBF,0 x7f; / 列扫描控制字data char disdata8=0 x08,0 x05,0 x09,0 x02,0 x0b,0 x00,0 x01,0 x0d;/ 计时单元数据初值,共 6
25、个data char dis8=0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x0a,0 x00;/ 显示单元数据 ,共 6个数据data char con1s=0 x00,con04s=0 x00,con=0 x00,con05s=0 x00,d=0 x00;/1 秒定时用sbit key0=P32; /移位键sbit key1=P33; / 加一sbit BEEP=P20; /蜂鸣器接口/*/ /1 毫秒延时程序 / /*/ delay1ms(int t) int i,j; for(i=0;it;i+) for(j=0;j120;j+); /*/ /扫描程序
26、/ /*/ scan() char k; for(k=0;k=6) con=0;TR1=0;ET1=0;TR0=1;ET0=1; if(con=0) if(key1=0) delay1ms(10); while(key1=0); d=con+2; disdatad+; if(disdatad=14) disdatad=0; discon=disdatad;dis6=0 x0a; EA=1; /*/ / 打铃程序/ /*/ Play1() uchar i,t; for(i=0;i100;i+) BEEP=BEEP; delay1ms(t); 名师资料总结 - - -精品资料欢迎下载 - - -
27、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - BEEP=1; Play2() BEEP=1; bell() if(disdata0=0 x00|disdata0=0 x01|disdata0=0 x02|disdata0=0 x03|disdata0=0 x04)&disdata1=0 x00&disdata2=0 x00&disdata3=0 x03&disdata5=0 x07&disdata6=0 x00&disdata7=0 x0c|(disdata0=0 x00|d
28、isdata0=0 x01|disdata0=0 x02|disdata0=0 x03|disdata0=0 x04)&disdata1=0 x00&disdata2=0 x00&disdata3=0 x03&disdata5=0 x00&disdata6=0 x01&disdata7=0 x0d) Play1(); if(disdata0=0 x05|disdata0=0 x06)&disdata1=0 x00&disdata2=0 x00&disdata3=0 x03&disdata5=0 x07&disdata6=0 x00&disdata7=0 x0c|(disdata0=0 x05|
29、disdata0=0 x06)&disdata1=0 x00&disdata2=0 x00&disdata3=0 x03&disdata5=0 x00&disdata6=0 x01&disdata7=0 x0d) Play2(); if(disdata0=0 x07|disdata0=0 x08|disdata0=0 x09)&disdata1=0 x00|(disdata0=0 x00|disdata0=0 x01)&disdata1=0 x01)&disdata2=0 x00&disdata3=0 x03&disdata5=0 x07&disdata6=0 x00&disdata7=0 x
30、0c|(disdata0=0 x07|disdata0=0 x08|disdata0=0 x09)&disdata1=0 x00|(disdata0=0 x00|disdata0=0 x01)&disdata1=0 x01)&disdata2=0 x00&disdata3=0 x03&disdata5=0 x00&disdata6=0 x01&disdata7=0 x0d) Play1(); /*/ /初始化程序 / /*/ clearmen() int i; for(i=0;i=10) disdata0=0;disdata1+; if(disdata1=6) disdata1=0;disda
31、ta2+; if(disdata2=10) disdata2=0;disdata3+; if(disdata3=6) disdata3=0;disdata5+; if(disdata5=10) disdata5=0;disdata6+; if(disdata6=1 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - if(disdata5=2) disdata5=0;disdata6=0;disdata7+; if(disd
32、ata7=14) disdata7=12; dis0=disdata2;dis1=disdata3;dis3=disdata5; dis4=disdata6;dis2=disdata4;dis5=disdata7; ET0=1; /*/ /0.4 秒闪烁中断程序/ /*/ void time_intt1(void) interrupt 3 EA=0;TR1=0;TH1=0 x3C;TL1=0 xB0;TR1=1; con04s+; if(con04s=8) con04s=0 x00; dis7=discon;discon=dis6;dis6=dis7; EA=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -