毕业设计(论文)-多功能定时器设计.doc_第1页
毕业设计(论文)-多功能定时器设计.doc_第2页
毕业设计(论文)-多功能定时器设计.doc_第3页
毕业设计(论文)-多功能定时器设计.doc_第4页
毕业设计(论文)-多功能定时器设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

桂林电子科技大学基础工程设计论文目 录引言11 设计任务11.1 课题11.2 目的11.3 要求12 硬件设计22.1 设计思路22.2 各模块电路22.2.1 时钟电路22.2.2 复位电路32.2.3 按键电路32.2.4 数码管显示32.2.5 声光报警43 软件设计53.1 流程图53.2 定时器中断64 调试64.1 调试方法64.2 调试结果64.3 所遇问题及解决办法65 结论7谢 辞8参考文献9附 录10附录一:系统原理图10附录二:系统PCB图11附录三:元器件清单12附录四:程序清单1318引言目前单片机渗透到我们生活的各个领域,如导弹的导航张志,飞机上的各种仪表控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制盒数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机。摄像机,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。因此,对于单片机的学习、开发与应用更亟不可待。单片机更是凭借着体积小、低功耗、控制强、形式多样等优点,广泛出现在我们的日常生活中,例如我们会经常碰到一些需要倒计时或称之为定时的事情,例如洗衣机设计的倒计时,电风扇的定时,打球赛时的倒计时等等,而这些定时功能都可以考单片机来实现。在电子技术突飞猛进的今天,电子定时器一定会逐步取而代之,这是不言而喻的。其实,完成一些简单定时的定时器多种多样,甚至可动手制作一个简单的定时器,本文就是利用51单片机制作的一个简单的定时器,并能够完成启动、暂停、清零等功能,具有很强的实用性。1 设计任务1.1 课题多功能定时器设计1.2 目的本次基础工程设计的目的是通过利用MCS-51单片机为核心,设计并制作由程序进行控制的可随时调制的功能器,深入研究并完成本次课题的设计方案与测试,进一步掌握51单片机的功能和特点,熟悉软件程序的编写,和对板子的调试方法。1.3 要求利用单片机设计多功能定时器。要求系统包含两个以上定时器,这些定时器可以单独工作,也可以同时工作,且均具有下列功能:。(1) 具有清零、启动和暂停/连续功能;(2)最大定时时间99秒,倒计时计数,用两位数码管显示计时值; (3)定时结束进行声光报警,声音报警用蜂鸣器,光报警用LED;(4)设计按键输入,使定时器能够选择任意一个数值开始倒计时2 硬件设计2.1 设计思路结合课本理论知识,并根据题目要求,以单片机为核心,分各个不同模块,组成整体系统同框图,由此初步得出如图2.1所示系统框图:时钟电路单片机AT89S52数码管显示复位电路声光报警按键电路图2.1 系统框图该系统是由按键控制单片机内部定时器,选择并完成启动、清零等各种功能,再由数码管显示,当倒计时结束时进行声光报警。2.2 各模块电路2.2.1 时钟电路该电路是由单片机的XTAL1,XTAL2两个引脚控制。单片机的时钟信号通常有外部震荡和内部震荡两种电路形式,当使用内部震荡时,XTAL1、XTAL2两个引脚外接石英晶体和微调电容;当使用外部震荡时,两个引脚一端接地,另一端接外部时钟,产生震动时钟脉冲。晶振通常在1.212MHz间,而电容在630pf间,此次设计选择12MHz晶振,而电容对振荡器的频率具有稳定作用。电路如图2.2所示:图2.2 时钟电路2.2.2 复位电路芯片复位功能由引脚RST完成,其通过片内一个施密特触发器与片内复位电路相连,当振荡电路工作时,在该引脚加上一个至少保持两个机器周期的高电平,就能使芯片完成一次复位。MCS-51单片机通常采用上电复位和按钮复位两种方式,上电复位利用电容器充电完成,按钮复位又分为按钮电平复位和按钮脉冲复位,前者将复位端通过电阻与VCC相接,后者利用RC微分电路产生脉冲来达到复位。本次设计采用的是按钮电平复位,来完成对芯片的复位,使定时器回到初始工作装态,电路如图2.3: 图2.3 复位电路2.2.3 按键电路8051有4个并行I/O口,没个即可以用作输入,也可以用做输出。当然它们的功能也完全不同:P0口既可作一般I/O端口使用,又可作地址/数据总线使用;P1口是一个准双向并行口,作通用并行I/O口使用;P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址线使用;P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。本次按键连接P1口,通过软件实现对定时器的控制,电路如图2.4所示:当按下S2,可选择定时器0或定时器1或二者同时工作;当按下S3,为启动定时器;当按下S4,可对定时器进行清零;当按下S5,可以使定时器暂停工作;当按下S6或S7,可进行加1或减1,对定时数值进行设定,最大数值为99。 图2.4 按键电路2.2.4 数码管显示数码管分共阴和共阳两种,共阴就是将七段LED的阴极连接在一起,而共阳正好相反,将阳极相连并加上电压。其显示还分为静态和动态两种,静态即用硬件实现,较为简单,在现实字符时使相应的段恒定发光或不发光;而动态则通过软件控制各LED显示,恰当选择点亮时间和间隔时间,较为常用。本次设计采用四位共阴数码管显示,段选接P0口,其段选码与对应的显示字符如表1。位选由P2口来控制,如给P2.0赋值为0,其余为1,则可使左边第一位数码管点亮。电路图如2.5所示:表1段选码3F065B4F666D7D077F67777C395E7971显示字符0123456789ABCDEF图2.5 数码管显示电路2.2.5 声光报警采用两个声光报警电路,即分别对应定时器0和定时器1,由P3.6口控制定时器0的报警, P3.7口控制定时器1的报警。电路如图2.6所示:图2.6 声光报警该电路采用三极管PNP控制,当给P3.6或P3.7口高电平1时,二极管和蜂鸣器不工作,当给低电平0时,二者同时工作。3 软件设计3.1 流程图本系统程序主要模块由延时函数、按键扫描、数码管显示、定时器中断服务程序、主程序等组成。主程序是整个系统的主体,可以对各个程序进行调用,协调各子程序之间的关系。其流程图如图3.1所示:开始定时器初始化选择定时器工模式判断t0=20? N Y等待中断示倒计时num=0? N Y进行报警数码管显示计时结束,按S5结束报警,重新放回99S倒计时结束图3.1 流程图3.2 定时器中断首先对定时器进行初始化,设置两个定时器的工作方式均为1,则TMOD=0x11。由于晶振频率为12MHz,则时钟周期为1us,设定时时间为50ms,即50ms中断一次,则定时器初值为: TH(0,1)= (65536-50000)/256 TL(0,1)= (65536-50000)%256在定时器中断中需对定时器进行重装初值。4 调试4.1 调试方法本次基础工程设计的调试,采用编程软件keil、程序下载软件及万用表来实现,通过程序的编写,通过下载口将程序下载至芯片中,再查看硬件是否达到要求,如数码管是否亮,二极管、蜂鸣器是否工作,按键功能是否达到等,如果没有,则通过细心修改程序来一步步实现。4.2 调试结果本系统接上+5V电压后,工作的结果如图4.1:当按下S2,选择定时器0或定时器1,或二者同时倒计时的工作模式;按S3启动定时器,数码管显示从99S开始倒计时;按S4,工作中的定时器清零,数码管显示为0;按S6,定时器可加1,相应数码管显示值加1;按S7,定时器可减1,相应数码管显示值减1;倒计时结束,即数码管显示0时对应二极管和蜂鸣器进行报警,按S5可结束报警,按S3重新启动定时器。 图4.1 测试结果4.3 所遇问题及解决办法在调试过程中,会遇到各种各样的问题,例如:(1)声光报警不完善,即二极管灯亮,而蜂鸣器不响,或者进行修改之后二极管不亮,蜂鸣器一直响。改进办法:当使用图2.2.5接法时,二极管亮,而蜂鸣器不响,主要是由于电阻R3太大,导致电流太小,蜂鸣器不响,于是将连接二级管端的电阻短路,如图4.2。或者将蜂鸣器的负端连接到三极管的E端,这种方式也是可行的,如图4.3. 图4.2 定时器0报警 图4.3 定时器1报警(2)当进行中断时,即当按键按下,或报警时,数码管是灭的。改进办法:在程序设计中,将数码管扫描函数放在定时中断中(3)当两个定时器同时结束时,只有一个定时器优先报警,当按下S5暂停,又按S3重新启动后,第二个定时器才会接着计时,再报警,而先报警的定时器会暂时“休克“几秒才继续 进行工作。改进方法:由于程序有一个优先,当两个定时器同时结束时,其执行语句是TR0=0;TR1=0,于是有了一个定时器0优先的判断,而至于定时器会“休克”,我则认为是芯片暂时反应缓慢的因素,与程序无关。5 结论通过本次基础工程设计的制作,使我认识到单片机在当今科技发展领域中的重要地位,深刻了解其特点与发展优势。当然也是难免存在一些缺点的,例如对于本次设计,两个定时器不能同时结束,同时响应等,或许这只是本设计存在的缺陷而已。希望继续努力,使其能得到改善。这次设计的研究与制作,还让我进一步掌握了单片机的理论知识,能够结合软硬件实现功能,而在此过程中遇到的问题,在老师与同学的帮助下也都能逐一解决。还深刻体会到发现与解决问题的技巧与方案,更深觉掌握理论知识真的很重要!希望在日后进一步努力与提高自己的动手实践能力!谢 辞在本次基础工程设计的学习与制作过程中,我得到了老师于同学们的帮助,再次对他们表示深刻的感谢!首先特别感谢我们的指导老师,是他时刻监督我们按时按成任务,耐心给我们讲解与分析制作过程遇到的问题,在这三周里对我们一路的进行指导与帮助,帮助我们解决了许多原理上的难题。还要感谢身边许多可爱的同学们,他们都在有形无形中帮助着我,例如我们会一起制作板子,当不知如何修改PCB图时,会有同学伸出援助之手,或者去缺少某些元器件,最大的莫过于调试出错的时候,而自己又不知道错在哪里,真的是身边的同学给与了我们莫大的支持!我们就是在这样的环境中互相学习,互相帮助,互相进取!最后还要感谢学院给了我们提供的优越环境,使我们在制作的过程中轻松而愉悦!参考文献1白驹珩,雷晓平.单片计算机及其应用(第二版)M.北京:高等教育出版社,2005.9.2郭天祥.新概念51单片机C语言教程M.北京:电子工业出版社,2009.1.3康华光,陈大钦,张林.电子技术基础模拟部分(第五版)M.北京:高等教育出版社,2006.1.4谭浩强.C程序设计(第四版)M.北京:清华大学出版社,2010.6.5黄冰,覃伟年,黄知超.微机原理及应用(第二版)M.重庆:重庆大学出版社,2010.7. 附 录附录一:系统原理图附录二:系统PCB图附录三:元器件清单序 号名 称数 量单价备 注1单片机89C5112单片机底座13四位共阴数码管1共阴4数码管插座15发光二极管26蜂鸣器2712M晶振18按键开关74脚9PNP三极管28550101K*8排阻111100欧电阻1 100欧12500欧电阻 2 500欧134.7K电阻3 4.7K1420pF电容220pF1510uF电解电容110uF161*2插座12脚172*10插座110脚附录四:程序清单#include#define uchar unsigned char#define uint unsigned int/*定义管脚*/sbit S2=P10;/选择定时器0或1,或二者同时工作sbit S3=P11;/启动sbit S4=P12;/清零sbit S5=P13; /连续、暂停sbit S6=P14;/加1sbit S7=P15;/减1sbit Q0=P36;sbit Q1=P37;sbitP20 = P20;sbitP21 = P21;sbitP22 = P22;sbitP23 = P23;/*定义缓冲区及初始化*/uchar code Tab_dp=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar flag=0;uchar t0=0,t1=0;char num0=99,num1=99;/*延时子函数*/void delay( int x) /自定义延时 int i,j;for(i=x;i0;i-) for(j=255;j0;j-) ; /* 蜂鸣器响声函数 */void beep0() Q0=0; delay(100); Q0=1; delay(100); /蜂鸣器0响 void beep1() Q1=0; delay(100); Q1=1; delay(100); /蜂鸣器1响/* 键盘扫描 */ void key() if(S3=0) /启动 delay(5);if(S3=0) while(!S3); if(flag=0) TR0=1;TR1=0; if(flag=1) TR0=0;TR1=1; if(flag=2) TR0=1;TR1=1; if(S4=0) /清零 delay(5);if(S4=0) while(!S4); TR0=0;TR1=0; if(flag=0) num0=0; if(flag=1) num1=0; if(flag=2) num0=0; num1=0; if(S5=0) /暂停 delay(5);if(S5=0) while(!S5); if(flag=0) TR0=0; if(flag=1) TR1=0; if(flag=2) TR0=0;TR1=0; if(S6=0)/加1 delay(5); if(S6=0) while(!S6); TR0=0;TR1=0; if(flag=0) num0+; if(flag=1) num1+; if(flag=2) num0+; num1+; if(num0=100) num0=0; if(num1=100) num1=0; if(S7=0)/减1 delay(5); if(S7=0) while(!S7); TR0=0;TR1=0; if(flag=0) num0-; if(flag=1) num1-; if(flag=2) num0-; num1-; if(num0=-1) num0=99; if(num1=-1) num1=99; /* 数码管显示 */ void Display(char num1,num0) char shi0,ge0,shi1,ge1; shi0=num0/10; ge0=num0%10;shi1=num1/10; ge1=num1%10;P0=Tab_dpshi1;P20=0;P21=1;P22=1;P23=1;/定时器1显示delay(2);P0=Tab_dpge1;P20=1;P21=0;P22=1;P23=1;/定时器1显示delay(2);P0=Tab_dpshi0;P20=1;P21=1;P22=0;P23=1;/定时器0显示delay(2);P0=Tab_dpge0;P20=1;P21=1;P22=1;P23=0;/定时器0显示delay(2);void init()/定时器初始化 TMOD=0x11; /选择方式1 EA=1; /开中断 TH0=(655

温馨提示

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

评论

0/150

提交评论