基于单片机的定时闹钟课程设计报告书(完整资料)_第1页
基于单片机的定时闹钟课程设计报告书(完整资料)_第2页
基于单片机的定时闹钟课程设计报告书(完整资料)_第3页
基于单片机的定时闹钟课程设计报告书(完整资料)_第4页
基于单片机的定时闹钟课程设计报告书(完整资料)_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的定时闹钟课程设计报告书(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)

基于单片机的定时闹钟课程设计报告书(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)任务书一、设计目的本设计主要是对51单片机的一个方面的扩展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,经过多次验证,此设计灵活简便,可以实现显示、定时、修改定时、定时时间到能发出报警声的功能。二、设计要求1、能显示时时—分分—秒秒。2、能够设定定时时间,并修改定时时间。3、定时时间到能发出警报声。目录TOC\o”1-3"\h\z\u_Toc359943168”3。方案说明2HYPERLINK\l”_Toc359943169"4.硬件方案设计2_Toc359943171"4。2时钟电路4HYPERLINK\l”_Toc359943172"4.3数码管显示电路4HYPERLINK\l”_Toc359943173”4.4键盘电路64。5报警电路7HYPERLINK\l”_Toc359943175”5。软件方案设计7HYPERLINK\l”_Toc359943176"5.1系统软件设计7_Toc359943178”5。3LED85.4音响报警电路8_Toc359943181”6。调试9_Toc359943184”9.附录:定时闹钟源程序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数码管的显示电路数码管中二极管电流的计算二极管本身有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); } if(K3==0) { delay(10); if(K3==0) {if(hour1〉0) hour1——; elsehour1=23; } while(!K3); } } break; case4: //模式--闹钟调分 { if(K2==0) { delay(10); if(K2==0) { if(minute1〈59) minute1++; elseminute1=0; } while(!K2); } if(K3==0) { delay(10); //延时去抖 if(K3==0) //减键按下 {if(minute1>0) minute1——; elseminute1=59; } while(!K3); } }break; } } } voidmain(){ M=0; S_flag=0;//闪烁标志位 TMOD=0x10;//定时器以方式定时 TL1=0x18; EA=1;//打开总中断 ET1=1; //允许定时器中断 TR1=1; //开启定时器(开始定时计数) while(1){ key_prc(); display(); } }基于51单片机课程设计报告院系:电子通信工程团组:电子设计大赛1组姓名:指导老师:2目录

一、摘要………………3二、系统方案的设计…3三、硬件资源…………5四、硬件总体电路搭建……………13五、程序流程图…………14六、设计感想……………14七、参考文献……………16附录………17附录1程序代码………………17一、摘要本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led关键词:STC89C51单片机DS18B20温度芯片温度控制,LED报警提示.二、系统方案的设计1、设计要求基本功能:不加热时实时显示时间,并可手动设置时间;设定加热水温功能。人工设定热水器烧水的温度,范围在20~70度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度;设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。2、系统设计的框架本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间.其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。图1系统设计框架3工作原理温度传感器DS18B20从设备环境的不同位置采集温度,单片机STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(加热器),这里采用通过LED1和LED2取代!!!当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLED提示。加热器继电器2加热器继电器2三、硬件资源1、器件选择:1。51单片机一块STC89c51STC8951是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In—systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS—51指令系统及STC8951引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC8951可为许多嵌入式控制应用系统提供高性价比的解决方案。STC8951具有如下特点:40个引脚,8kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信,片内时钟振荡器。此外,STC8951设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位.同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求.由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用STC8951单片机作为主控芯片。主控模块采用单片机最小系统是由于STC8951芯片内含有8kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。其单片机的外围引脚有40个,分别是:第20脚和40脚分别是电源,即GND和Vcc;第9脚是复位脚RST;第18脚是时钟XTAL2脚,片内振荡电路的输出端;第19脚是时钟XTAL1脚,片内振荡电路的输入端;第29脚:~PSEN脚,当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上;第30脚:ALE/~PROG,当访问外部数据存储器时,ALE(地址锁存)的输出用于锁存地址的低字节;第31脚:~EA/Vpp为程序存储器内外部选通信号;P0^0-P0^7.P1^0—P1^7。P2^0-P2^7.P3^0-P3^7.这32个引脚为数据的输出及输入引脚,即I/0口;单片机图如下:2、8位7段共阴数码管一个7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,如图4.9所示.共阴数码管共阴数码管共阴数码管的编码为:0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x33,0x7C,0x73,0x630,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F3、温度显示DS18B20一个DS18B20采用3脚TO—92封装或8脚的SOIC封装,如图1所示。各引脚的功能:GND为电压地;DQ为单数据总线;V为电源电压;NC为空引脚.图1DS18B20引脚图DS18B20的DQ单数据总线与单片机P3.7连接,GND电压地、V电源电压分别和电压地和5伏直流电源连接.本文设计的系统主机只对一个DS18B20进行操作,因此不需要读取ROM编码以及匹配ROM编码,只要跳过ROM命令,就可以进行如下温度转换和读取操作。(1)CCH—跳过ROM,直接向DS18B20发送温度变换命令.(2)44H—读暂存器。读内部RAM中9字节的温度数据.(3)BEH—写暂存器。发出向内部RAM的第2、3字节写上、下限温度数据命令,紧跟该命令之后,再传送两字节数据。DS18B20在出厂时默认配置为12位,其中最高位为符号位,即温度值共11位,单片机在读取数据时,一次会读两字节共16位,读完后将低11位的二进制数转换为十进制后再乘以0.0625变为所测的温度值。另外,还需要判断温度的正负。前5个数字为符号位,这5位同时变化,我们只需判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反再加一再乘以0。0625才可以得到实际的温度值。前5位为0时,读取的温度为正值,只要将测得的数值乘以0.0625即可得到实际温度值.由于提前给DS18B20赋了上限、下限值,所以当温度超过上限或者不足下限时,会伴有LED灯闪烁和蜂鸣器响作为警报.4、按键在按下键时,实际情况下,都会出现抖动。其直观图如下:按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法,本文用的是软件延时的消抖方法。5、74HC573锁存器高性能硅门CMOS器件SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)相当于图上的Dx-Qx相通,I/0口可以进行数据交换。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。在这里我们是将LE接高电平,把锁存器当作驱动器,驱动数码管的显示;6、晶振其晶振的运用,在这地方我们用的是12MHz,主要用在单片机的最小系统中,参照单片机最小系统图示;电阻.电容。导线等(一)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC89C52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4KFLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图2所示:图2单片机最小系统(二)温度传感器电路采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上.本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为20℃~70℃,测温精度为士0.5(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量.(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉.另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短.在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,其接口电路如图4所示。图4温度传感器接口(三)按键接口电路本课题设计采用的键盘模块,其接口原理图如下图8所示:图8键盘模块电路四、硬件总体电路搭建五、程序流程图六、设计感想首先通过此次课程设计,让我们对所学的计算机控制技术理论知识更加熟悉了解,对理论学习时没有掌握牢固的一些知识以及一些在学习中存在的漏洞进行学习并加以弥补,也让我们明白学习一门课程就要认真地对待,掌握牢固,并要在实践中加以运用。只有能运用自如的知识才是属于自己的东西。比较熟练,在学习此软件过程中其次,此次课程设计我们尝试用proteus软件进行仿真设计。对于proteus,我们之前对它的一些应用比较熟悉,所以此次运用起来通过查找图书馆的资料以及在网上的学习让我们意外收获了一些其他的知识,拓展了知识面,也丰富了自己的阅历。第三,通过这次课程设计,我们学会了单片机完成某一项功能,需要从两个方面入手:一是软件的实现即汇编语言程序的编写,二是硬件电路的实现。两方面比较,程序编写时相对较难的一部分。我们团组认为这是一个建模的过程,即将实际的控制问题转换成我们所熟悉的数学模型,这是一个很抽象的问题,有时真的是难以想象。所以我们觉得这种困难最好的解决办法就是通过平时的积累,多多学习。此次设计培养了我们对于计算机控制设计的一些兴趣,当看着自己设计的东西,通过仿真可以出现自己期望的结果时,那种愉悦的心情是前所未有的,同时当出现问题,通过自己查找资料检查电路之后排除问题的过程也锻炼了我们对于学习的一种深入和坚持,锻炼了我们独立思考的能力和最初的创新意识,让我们真正体会到学习的乐趣。第五,我们再次巩固了一些以前的东西,仿真软件的运用,课程设计的书写,计算机的一些应用软件的应用,以及对word的了解也更深入了.最后一点,也使最深刻的体会,就是在设计过程中,基本上用到的都是我们学过的一些原理,所以学以致用在这次设计中可谓体现的淋漓尽致,要把所学的知识联系起来综合运用。这些都将成为我们以后的工作学习的铺路石,使我们在大学里收获的最实用的东西,而不是仅仅只是纸上谈兵,而是通过我们亲自动手来完成的经验对每个人来说都是一笔财富,所以这次《单片机控制技术》课程设计对我们来说绝对是一次难得的锻炼的机会。七、参考文献[1]马彪《单片机应用技术》同济大学出版社[2]郭天祥《51单片机C语言教程》电子工业出版社[3]陈海宴《51单片机原理及应用》北京航空航天大学出版社附录………附录1程序代码………………1:main主函数#include"ds18b。h"#include〈reg52.h>sbitadd=P3^0; //ﻩ 加sbitcut=P3^1;ﻩ//ﻩ 减sbitset=P3^2;ﻩ//ﻩ设置sbitp00=P0^0;sbitp01=P0^1;sbitp02=P0^2;sbitp03=P0^3;ﻩ//ﻩ//位选控制声明sbitp04=P0^4;sbitp05=P0^5;sbitp06=P0^6;sbitp07=P0^7;sbitLled=P2^0; //低于温度下限值此灯点亮sbitHled=P2^1; //高于温度上限值此灯点亮sbitLHled=P2^2;//达到加热预设时间此灯点亮unsignedchartab4[4]={0};ﻩ//ﻩ 定义一个tab4号数组用来存放温度的上限值与下限值unsignedchartab8[9]={0};ﻩﻩ//unsignedchartab9[6]={0}; //定义一个tab9号数组用来存放用户的给定的加热时间unsignedcharcodetab7[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//位选控制查表的方法控制unsignedcharcodetab[]={ﻩ0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//共阳数码管数字码uchartab1[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};//定义一个tab1号数组用来存放温度转换值unsignedcharshi=10,fen=35,miao,L; //你懂得不用多讲unsignedcharLED;ﻩ//定义一个char变量用来控制数码管上的秒的闪烁unsignedchartt,i,flag=0;unsignedintwen;//定义一个无符号整形变量用来存放温度返回值unsignedcharTH,TL;ﻩ//存放用户的设定的温度上下限值voiddelay(unsignedintZ)//ﻩ延时函数{unsignedintx,y; for(x=Z;x〉0;x-—) for(y=110;y〉0;y--);ﻩ}voidinit()ﻩ//初始化ﻩ{ P2=0xff; P3=0xff;TMOD=0x11;//开启定时器0,1TH1=(65536-5000)/256;//5MsTL1=(65536—5000)%256;EA=1;ET1=1; //你懂得不用多讲TR1=1;TH0=(65536—50000)/256;//50MsTL0=(65536-50000)%256;ET0=1;//你懂得不用多讲TR0=1;ﻩ}voidmain(){ init();//初始化I/O端口即定时器0.1;ﻩ while(1) { if((flag==0)||(flag==1))//当第一次按下设置键进入手动设置当前时间ﻩﻩ { ﻩ ﻩtab8[4]=fen/10;tab8[5]=fen%10;tab8[6]=shi/10;tab8[7]=shi%10;ﻩﻩﻩwen=dispaly();ﻩ ﻩtab1[2]=wen/100; ﻩtab1[1]=wen%100/10; //你懂得不用多讲 ﻩ tab1[0]=wen%10;ﻩﻩﻩﻩtab8[8]=tab1[2]*10+tab1[1]; ﻩﻩfor(L=0;L<50;L++)ﻩ ﻩ ﻩfor(i=0;i<8;i++) ﻩ ﻩﻩ{ﻩﻩ P1=0; P1=tab[tab1[1]];ﻩp00=0;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2); ﻩ ﻩ P1=tab[tab1[2]];ﻩp00=1;p01=0;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2);ﻩ if(LED>=20){P1=0x02;ﻩp00=1;p01=1;p02=1;p03=1;p04=1;p05=0;p06=1;p07=1;delay_ms(2);}ﻩﻩ ﻩﻩif(LED>=40){LED=0;P1=0x02;ﻩp00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2);}ﻩﻩﻩ ﻩif(flag==1){P1=0x02;ﻩp00=1;p01=1;p02=1;p03=1;p04=1;p05=0;p06=1;p07=1;delay_ms(2);} ﻩ ﻩﻩP1=tab[tab8[6]];ﻩp00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=0;delay_ms(2);ﻩ ﻩﻩ P1=tab[tab8[7]];ﻩp00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=0;p07=1;delay_ms(2);ﻩ ﻩﻩﻩP1=0x9c; p00=1;p01=1;p02=0;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2);ﻩ ﻩ ﻩP1=tab[tab8[4]]; p00=1;p01=1;p02=1;p03=1;p04=0;p05=1;p06=1;p07=1;delay_ms(2); ﻩ ﻩ P1=tab[tab8[5]];ﻩp00=1;p01=1;p02=1;p03=0;p04=1;p05=1;p06=1;p07=1;delay_ms(2); }ﻩ ﻩ}ﻩ ﻩ ﻩﻩif((flag==2)|(flag==3))//当第二或者第三次按下设置键进入温度上下限门槛设置ﻩ ﻩ{ﻩﻩ ﻩtab4[2]=tab8[2]/100;tab4[1]=tab8[2]%100/10;tab4[0]=tab8[2]%10;//Hﻩtab[2] ﻩ ﻩtab4[6]=tab8[3]/100;tab4[5]=tab8[3]%100/10;tab4[4]=tab8[3]%10;ﻩ//Lﻩtab[3] ﻩﻩ for(i=0;i<8;i++)ﻩﻩ ﻩ ﻩ { ﻩ ﻩ//动态扫描 ﻩﻩ ﻩP1=tab[tab4[i]];if(i==3) P1=0x6e;if(i==7) P1=0x1c;ﻩ ﻩﻩ ﻩP0=tab7[i];ﻩ ﻩ delay(5); ﻩ ﻩ }ﻩﻩ ﻩ}ﻩﻩ ﻩ if(flag==4)//当第四次按下设置键进入用户给定加热时间设置 ﻩ {ﻩﻩﻩﻩﻩﻩ tab9[1]=TL%10;tab9[2]=TL/10;tab9[4]=TH%10;tab9[5]=TH/10;ﻩ ﻩ ﻩﻩ for(i=0;i<8;i++)ﻩﻩ ﻩ ﻩ {ﻩ ﻩ ﻩ ﻩP1=tab[tab9[i]];if((i==3)||(i==0))P1=0x02;if((i==7)||(i==6))P1=0x02; ﻩﻩ P0=tab7[i]; ﻩ ﻩ delay(5);ﻩ ﻩ } ﻩﻩ }ﻩ }}voidtimer1()interrupt3{TH0=(65536—5000)/256;//5MsTL0=(65536—5000)%256; ﻩﻩﻩﻩ ﻩ ﻩ ﻩ ﻩ ﻩ ﻩ ﻩ//开辟一个每隔5Ms扫描按键检测是否邮件按下if(add==0){delay(10);if(add==0){while(!add);if(flag==4)TL++;if(flag==1){fen++;if(fen==60)fen=0;}if(flag==2)tab8[2]++;if(flag==3)tab8[3]++; }ﻩﻩ} //你懂得不用多讲if(cut==0){delay(10);if(cut==0){while(!cut);if(flag==4)TH++;if(flag==1){shi++;if(shi==24)shi=0;}if(flag==2)tab8[2]-—;if(flag==3)tab8[3]--; }ﻩ }ﻩﻩ ﻩ//你懂得不用多讲if(set==0){delay(10);if(set==0){while(!set);flag++;if(flag==5)flag=0;ﻩ}ﻩ } ﻩif(flag==1){TR0=0;}if(flag==3){TR0=1;} //当第一次按下设置键关闭定时器0,if(tab8[8]<=tab8[3])Lled=0;elseLled=1;ﻩ//判断当前温度是否低于预设温度ﻩ若是开启LED提示if(tab8[8]〉=tab8[2])Hled=0;elseHled=1; ////你懂得不用多讲if(TL〉=60)TL=0;if(TH>=24)TH=0;if((fen>=TL)&&(shi>=TH))LHled=0;elseLHled=1; //判断用户预设加热时间是否达到若是开启LED}voidtimer0()interrupt1{ TH1=(65536-50000)/256;TL1=(65536—50000)%256; //你懂得不用多讲ﻩ ﻩ ﻩﻩ ﻩﻩ ﻩ ﻩ ﻩﻩ ﻩﻩﻩﻩ tt++;LED++;if(tt〉=18){tt=0;miao++;}if(miao==60){fen++;miao=0;ﻩ}ﻩif(fen==60){shi++;fen=0;} if(shi==24)shi=0;}2:ds18B20.h库文件#include”ds18b。h”#include<reg52.h〉#include<intrins。h〉#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7; ////定义p37用来操控DS18B20voiddelay_us(uinta)//微妙机延时子函数{do{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}while(——a);}voiddelay_ms(uinta)//毫秒级延时子函数{ucharx,y;for(x=a;x>0;x——)for(y=110;y>0;y—-);}uchards18b20_reset()//复位DS18B20{uchara;DQ=0;delay_us(60);DQ=1;delay_us(9);if(DQ)a=1;delay_ms(2);returna;}voidds18b20_write(uchara) //写{uchari;for(i=0;i〈8;i++){DQ=0;if(a&0x01)DQ=1;elseDQ=0;delay_us(5);DQ=1;//至高下一位数据准备a>〉=1;}}uchards18b20_read()//读{ucharj,b;for(j=0;j〈8;j++){DQ=0;b>〉=1;DQ=1;if(DQ)b=b|0x80;delay_us(2);DQ=1;ﻩ//至高为下一位数据准备}returnb;}unsignedintdispaly()ﻩ///启动温度转化并返回温度转换至{uintH,L;ds18b20_reset();ds18b20_write(0xcc);ds18b20_write(0x44);delay_ms(20);ds18b20_reset();ds18b20_write(0xcc);ds18b20_write(0xbe);L=ds18b20_read();H=ds18b20_read();H=H*256+L;H=H*0.625;returnH;}ﻩ3:18B20头文件#ifndef__DS18B20_H__#define__DS18B20_H__#defineucharunsignedchar#defineuintunsignedintuintoutput(void);voiddelay_ms(uinta);#endif前言20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高.同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间.所以有必要制作一个定时系统。随时提醒这些容易忘记时间的人。而钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。随着生活水平的提高,人们越来越追求人性化的事物。传统的时钟已不能满足人们的需求。而现代的时钟不仅需要模拟电路技术和数字电路技术而且更需要单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用.数字钟通过数字电路实现时、分、秒.数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品.由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。多功能数字钟的应用非常普遍。由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。

本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机STC89C52为核心元件同时采用LCD1602显示“时"、“分"、“秒”的现代计时装置.另外具有校时功能,秒表功能,定时器功能和继电器控制外围电路功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。目录TOC\o"1—3"\h\z\uHYPERLINK\l”_Toc407187440"前言1_Toc407187444”1.2课题研究的目的和意义1HYPERLINK\l”_Toc407187445"1.3应解决的主要问题及达到的技术要求2_Toc407187462”2.2按键的选择32.3显示器的选择3_Toc407187465"2.5发音部分的设计4HYPERLINK\l”_Toc407187466"2。6显示器驱动电路4HYPERLINK\l”_Toc407187467"2。7电源的选择4HYPERLINK\l”_Toc407187468"第3章数字电子钟的设计原理和方法53.1设计原理53.2硬件电路的设计5_Toc407187472”3。2.2键盘电路的设计6HYPERLINK\l”_Toc407187473”3.2。3时钟电路6_Toc407187475"3.2.5继电器电路73.2.6LCD1602电路7_Toc407187478"3.3软件部分的设计8HYPERLINK\l”_Toc407187479"3。3。1主程序部分的设计8HYPERLINK\l”_Toc407187480”总结11HYPERLINK\l"_Toc407187481”附录12摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本设计以STC89C52芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用LCD1602来进行显示。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境.介绍并使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。关键词:单片机,定时器,中断,闹钟,LCD1602第1章课题的背景1。1课题的来源随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求.现代的时钟不仅需要模拟电路技术而且需要数字电路技术和单片机技术,增加时钟的功能。数字电子钟可利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差;尽管如此数字钟还是可以改进和提高,比如选用更精密的元器件.但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。1.2课题研究的目的和意义20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间.忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的.而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的.因此,研究数字钟及扩大其应用,有着非常现实的意义。1.3应解决的主要问题及达到的技术要求使用STC89C52单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。定时闹钟的基本功能如下:同时设置一个夜晚的全芯片休眠功能,当定时时间到后,激活单片机同时启动报警,以起到一个节能的作用.显示格式为“时时:分分”。由LED闪动来做秒计数表示.一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下:K1-设置现在的时间.K2-显示闹钟设置的时间。K3-设置闹铃的时间。K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。设置当前时间或闹铃时间如下。K1—时调整。K2-分调整。K3—设置完成。K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响.第2章方案的选择和论证2。1单片机型号的选择通过对多种单片机性能的分析,最终认为STC89C52是最理想的电子时钟开发芯片。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS—51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。2。2按键的选择方案一:4×4矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。

方案二:独立式按键。如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。如果选择此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单。

由于并不需要经常修改时间和设置闹铃时间,而且方案二的程序简单,按键少、成本低,因此,选择方案二.2.3显示器的选择方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带.但液晶显示器的驱动电路复杂,使用起来有一定的难度.

方案二:用数码管作为显示器.数码管的驱动电路简单,使用方便,其缺点是功耗较大。 由于液晶显示器功耗低,显示的内容灵活,因此选择方案一。2。4计时部分的选择如果使用时钟芯片,系统就不怕掉电且时间精确。但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。2。5发音部分的设计通过三极管放大后驱动蜂鸣器工作。2.6显示器驱动电路采用LCD1602显示所需显示的字符,需要用电位器调节背光。2.7电源的选择如果是用电池供电,就比较方便携带,但需要经常更换电池。况且,本系统的体积较大,即使使用电池供电也不能随身携带,因此,用电池供电不大合适,所以用5V外部稳压电源来供电。第3章数字电子钟的设计原理和方法3.1设计原理系统原理图STC89C52STC89C52LCD1602晶振继电器LCD1602晶振继电器蜂鸣器蜂鸣器按键按键图3-1系统原理图3。2硬件电路的设计STC89C52单片机简介STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能.具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。3。2.2键盘电路的设计键盘采用4个独立按键实现对时钟和闹钟的设定及修改.时钟电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中STC89C52单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1。2MHz~12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20

温馨提示

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

评论

0/150

提交评论