51单片机的定时闹钟功能设计方案说明_第1页
51单片机的定时闹钟功能设计方案说明_第2页
51单片机的定时闹钟功能设计方案说明_第3页
51单片机的定时闹钟功能设计方案说明_第4页
51单片机的定时闹钟功能设计方案说明_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...任务书一、设计目的本设计主要是对51单片机的一个方面的扩展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,经过屡次验证,此设计灵活简便,可以实现显示、定时、修改定时、定时时间到能发出报警声的功能。二、设计要求1、能显示时时—分分—秒秒。2、能够设定定时时间,并修改定时时间。3、定时时间到能发出警报声。目录1.绪论12.方案论证13.方案说明24.硬件方案设计24.1单片机STC89C5224.2时钟电路44.3数码管显示电路44.4键盘电路64.5报警电路75.软件方案设计75.1系统软件设计75.2键盘程序75.3LED85.4音响报警电路85.5程序流程图86.调试97.小结108.参考文献119.附录:定时闹钟源程序121.绪论系统采用单片机STC89C52作为本设计的核心元件,在其根基上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示器。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。外围器件有LED显示驱动器及相应的显示数字电子钟设计与制作可采用单片机来完成。由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其本钱也有所降低,所以在该设计与制作中采用单片机STC89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。另外,STC89C52的指令系统和引脚与8051完全兼容,片内有512B的RAM、32条I/O口线、3个16位定时计数器、4个外部中断、一个7向量4级中断构造〔兼容传统51的5向量2级中断构造〕等。在LED显示器中,分成静态显示和动态显示两类,在这个设计的最小系统中主要用了它的动态显示功能,动态显示器利用了人视觉的短暂停留,在数据的传输中是一个一个传输的,且先传输低位。2.方案论证单片机作为核心的控制元件,使得电路的可靠性比拟高,功能也比拟强大,而且可以随时的更新系统,进展不同状态的组合。本系统采用单片机STC89C52作为本设计的核心元件,利用两个4位7段共阴LED作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,蜂鸣器发出报警声,提示预先设定时间到。电路由以下局部组成:时钟电路、复位电路、控制电路、LED显示、报警电路,芯片选用STC89C52单片机。系统根本框图如图2.1所示:图2.1系统根本框图3.方案说明此设计主要是通过单片机系统,综合运用定时器、中断、数码显示等知识设计一个可定时的电子钟。它包括系统总体方案及硬件设计,软件设计,Proteus软件仿真等局部。系统总体方案及硬件设计是本设计的重要组成局部,在这局部详细介绍了时钟原理,硬件设计,数码管LED,以及在设计过程中考虑到技术指标,机型的选择,器件的选择等一系列问题。硬件设计的主要任务是根据总体设计要求,以及在所选机型的根基上,确定系统扩展所要用的存储器,I/O电路及有关外围电路等然后设计出系统的电路原理图。合理的软件构造是设计出一个性能优良的单片机应用性系统软件的根基,因此必须充分重视。在本设计中采用应用广泛的C语言。用Proteus软件仿真检查设计是否合理。4.硬件方案设计4.1单片机STC89C52STC89C52是一个低电压,高性能CMOS型8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器〔ROM〕和512B的随机存取数据存储器〔RAM〕,器件采用STC公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的STC89C52提供了高性价比的解决方案。其引脚图如以以下图4.1所示:图4.1STS89C52STC89C52具体介绍如下:1〕主电源引脚〔2根〕VCC(40):电源输入,接+5V电源GND(20):接地线2〕外接晶振引脚〔2根〕XTAL1(19):片内振荡电路的输入端XTAL2(18):片内振荡电路的输出端3〕控制引脚〔4根〕RST/VPP(9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(30):地址锁存允许信号PSEN(29):外部存储器读选通信号EA/VPP(31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。4〕可编程输入/输出引脚〔32根〕STC89C52单片机有4组8位的可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位〔8根引脚〕,共32根。PO口〔39~32〕:8位双向I/O口线,名称为P0.0~P0.7P1口〔1~8〕:8位准双向I/O口线,名称为P1.0~P1.7P2口〔21~28〕:8位准双向I/O口线,名称为P2.0~P2.7P3口〔10~17〕:8位准双向I/O口线,名称为P3.0~P3.74.2时钟电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中STC89C52单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz~12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。STC89C52单片机的时钟电路如图4.2所示。图4.2时钟电路4.3数码管显示电路单片机中通常使用7段LED,LED是发光二极管显示器的缩写。LED显示器由于构造简单,价格廉价,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。LED显示器是由假设干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。LED显示器有多种形式,如:“米〞字型显示器,点阵显示器和七段数码显示器等,在单片机系统中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字符,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种,如图4.3.1所示为4为7段共阴数码管的引脚图。图4.3.14段共阴数码管引脚图采用高亮共阴型s位数码管,为示区别,显示秒的两个数码管个头较小,另外4个较大。共阴数码管连接线路如下:一般用7个发光二极管构成显示数字和符号,另外还用一段发光二极管显示小数点。这种显示器一般分为两种,共阳极显示器和共阴极显示器,共阳极显示器是把每个二极管的正端连在一起,共阴极显示器是把每个二极管的阴极连在一起。一只显示器是有8个发光二极管构成,当把某段加正向电压时,则该段所对应的笔划亮,不加正向电压则暗,为了保护各段不受损坏需要加限流电阻,无论是共阳极显示器还是共阴极显示器,它的8段排列顺序都是一样的:A段、B段、C段、D段、E段、F段、G段和DP段。在单片机中通常使用7段LED。数码管的显示电路如以以下图4.3.2所示:图4.3.2数码管的显示电路数码管中二极管电流的计算二极管本身有2V的电压降,一般二极管电流取10mA,则需添加的电阻为R=〔U-ULed〕/ILed,代入相关数值,即为300Ω。本设计中,选用的电阻为470Ω,则电流为I=〔U-ULed〕/R´,代入实际数值,即为6.4mA,能够满足显示效果。4.4键盘电路设计方案中使用的是3个开关键组成的键盘电路,如以以下图4.4所示:图4.4键盘电路图4.5报警电路设计方案中,采用的是蜂鸣器和PNP型三极管组成的报警电路。如以以下图4.5所示:图4.5报警电路5.软件方案设计5.1系统软件设计该系统软件主要有主程序模块,定时中断服务程序,中断等待服务程序,键盘程序,显示子程序服务程序等六大模块组成,因为C语言容易理解和记忆,所以我们用C语言来写此程序。5.2键盘程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有键按下,便转向相应的子程序处理,处理完毕后再返回。5.3LED七段LED由七个发光二极管按日字排开,所有发光二极管的阳极连在一起成共阳极,阴极连在一块称共阴极接法。当采用芯片驱动时不需要加限流电阻,其他情况下一般应外接限流电阻。动态显示电路有显示块,字形码封锁驱动器,字位锁存驱动器三局部组成。5.4音响报警电路在STC89C52外围的一个管口上加蜂鸣器,通过软件与硬件的结合可实现定时闹钟功能。5.5程序流程图图5.5程序流程图6.调试设几个按键从左往右为K1,K2,K3。K1与P1.0相连,K2与P1.1相连,K3与P1.2相连。按一下启动开关,显示为时间显示。按一下K1,进入时间显示的小时设定状态;按两下K1,进入时间显示的分钟设定状态;按三下K1,进入定时的小时设定状态;按四下K1,进入定时的分钟设定状态;按五下K1,退出设定,进入当前时间显示状态;K2和K3分别是对当前设定值的加和减。如以以下图6.1和6.2所示。图6.1调时仿真效果图图6.2定时仿真效果图7.小结在做课程设计的过程中,我进一步认识到全面专业知识以及逻辑思考方式对研究问题的重要性,同时我也更加具体的掌握了课程设计的根本方法。经过不断的努力,我终于完成了这次课程设计,总的来说,我学到了不少的东西,知道了理论联系实际的重要性。在设计过程中我遇到了很多的困难,但没放弃,查阅了许多相关的书籍,自己独立思考和借鉴了前人的许多优秀成果,并与所学的知识严密的结合了起来。我相信这过程对我今后的学习和工作有着积极的影响,并搭好了平台。通过这次设计,我对这门课有了更好的理解,尤其结合了这几年学的相关的专业知识,对各门课都有了一个较全面的理解。这必将对我以后的学习和工作有很大的帮助。本次课程设计的定时闹钟电路,可以满足人们的根本要求,但因为知识水平有限,此电路中存在一定的问题,虽可以通过增加电路解决,但过于复杂和现有水平有限,本次设计就未深入涉及,想要更好的改良电路,需要进一步的努力,如果有好的意见,希望教师给予支持指导。8.参考文献[1]何立民.单片机应用技术选编10.北京:北京航空航天大学出版社[2]林立.单片机原理及应用.北京:电子工业出版社[3]沙占友等.单片机外围电路设计.西安:电子工业出版社[4]江力.蔡骏.王艳春.董泽芳.单片机原理与应用技术.北京,清华大学出版社[5]潘永红.柳殊.单片机原理与应用.西安,西安电子科技大学出版社9.附录:定时闹钟源程序#include<reg52.h>unsignedcharled[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//用一维数组定义0-9、横杠、全灭unsignedchara[8]; unsignedcharsecond=0,minute=0,hour=1;unsignedcharminute1=0,hour1=0;unsignedcharb[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //扫描unsignedchark=0;unsignedinttemp; //记录毫秒为秒的变量unsignedcharM,S_flag; //M是模式,更新时间的种模式加上正常模式 S_flag闪烁标志sbitK1=P1^0;sbitK2=P1^1;sbitK3=P1^2;sbitBEEP=P3^3;voiddelay(unsignedn) //0.2毫秒{intx,y;for(x=0;x<n;x++)for(y=0;y<24;y++);}voidtime1()interrupt3 //定时器中断函数{TH1=0xfc; //定时msTL1=0x18;temp++;if(temp==1000) //配合定时器定时s{ temp=0; second++; } if(second==59) { second=0; if(minute<59) minute++; else { minute=0; hour++; hour%=24; } }if(hour1==hour&&minute1==minute&&second<10) //闹钟时间到{if(M==0)BEEP=!BEEP;}if(temp%250==0)//每msS_flag=!S_flag; //闪烁标志位取反if(k==8)k=0; P0=a[k]; P2=b[k++]; delay(1); P2=0xff; } voiddisplay(){ switch(M) { case0: { a[0]=led[hour/10]; a[1]=led[hour%10]; a[2]=led[10]; a[3]=led[minute/10]; a[4]=led[minute%10]; a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10]; }break; case1: { if(S_flag==1) { a[0]=led[hour/10]; a[1]=led[hour%10]; } else { a[0]=led[11]; a[1]=led[11]; } a[2]=led[10]; a[3]=led[minute/10]; a[4]=led[minute%10]; a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10]; }break; case2: { a[0]=led[hour/10]; a[1]=led[hour%10]; a[2]=led[10]; if(S_flag==1) { a[3]=led[minute/10]; a[4]=led[minute%10]; } else { a[3]=led[11]; a[4]=led[11]; } a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10]; }break; case3: { if(S_flag==1) { a[0]=led[hour1/10]; a[1]=led[hour1%10]; } else { a[0]=led[11]; a[1]=led[11]; } a[2]=led[10]; a[3]=led[minute1/10]; a[4]=led[minute1%10]; a[5]=led[11]; a[6]=led[11]; a[7]=led[11]; }break; case4: { a[0]=led[hour1/10]; a[1]=led[hour1%10]; a[2]=led[10]; if(S_flag==1) { a[3]=led[minute1/10]; a[4]=led[minute1%10]; } else { a[3]=led[11]; a[4]=led[11]; } a[5]=led[11]; a[6]=led[11]; a[7]=led[11]; } }} voidkey_prc(){ if(K1==0) { delay(10); //延时去抖 if(K1==0) //按K1进展模式切换 {M++; if(M==5)M=0; } while(!K1);//等待按键释放 } if(M!=0){switch(M){case1: //模式--调时{ if(K2==0) { delay(10); //延时去抖 if(K2==0)//加键按下 { if(hour<23)hour++; elsehour=0; } while(!K2); //等待按键释放 } if(K3==0) { delay(10); if(K3==0) { if(hour>0)hour--; elsehour=23; } while(!K3); } }break; case2: //模式--调分 { if(K2==0) { delay(10); if(K2==0) { if(minute<59)minute++; elseminute=0; } while(!K2); } if(K3==0) { delay(10); if(K3==0) { if(minute>0)minute--; elseminute=59; } while(!K3); } }break; case3: //模式--闹钟调时 { if(K2==0) { delay(10); if(K2==0) { if(hour1<23) hour1++; elsehour1=0; } while(!K2);

温馨提示

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

评论

0/150

提交评论