下载此文档

电子时钟计时器的设计(c语言版 调试完美通过 可直接使用)(附原理图源程序以及完整的文档)汇总.pdf


文档分类:IT计算机 | 页数:约39页 举报非法文档有奖
1/39
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/39 下载此文档
文档列表 文档介绍
该【电子时钟计时器的设计(c语言版 调试完美通过 可直接使用)(附原理图源程序以及完整的文档)汇总 】是由【青山代下】上传分享,文档一共【39】页,该文档可以免费在线阅读,需要了解更多关于【电子时钟计时器的设计(c语言版 调试完美通过 可直接使用)(附原理图源程序以及完整的文档)汇总 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..南人文科技学院程设计报告设计题目:电子时钟的设计系别:通信与控制工程系专业:通信工程班级:09级通信二班学生姓名:袁琦黄文付学号:0941623009416227起止日期:2011年12月20日~2011年12月30日指导教师:王善伟姚毅谢四莲教研室主任:刘建闽:..:指导教师签名:、设计过程中出勤、学****态度等方面评2、、:教研室主任签字:年月日教学系审核意见:主任签字:年月日:..要对电子时钟的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们对未知科学领域的探索。本文利用单片机实现数字时钟计时功能的主要内容。它体积小,成本低、功能强、使用方便、可靠性高等一系列优点,广泛应用于智能产业和工业自动化上。本次设计采用独立式按键进行时间调整,其中STC89C52是核心元件,同时采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外利用DS1302具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。关键词:;LED数码管;8255芯片;DS1302芯片;:......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................15参考文献................................................................16附录一:程序(方案一)..................................................17附录二:程序(方案二)..................................................25:..设计要求(1)采用6位LED数码显示时、分、秒。(2)时制式为24小时制。(3)使用按键开关可实现时、分调整。(4)秒表/时钟功能转换。(5)定时设定提醒的功能。(6)整点提醒(蜂鸣)。(7)DS1302设时,对时,掉电记忆时间的功能。,STC89S52实时控制。如图1所示:P0PA6位LED数码管显示PBSTC89C52单片机8255蜂鸣器定时器P2PC矩阵键盘图1方案一系统方框图1:..DS1302精确计时,单片机STC89C52实时读取时钟显示至6位数码管。如图2所示:,方案一设计简洁,编程比较简单,计时精度不高,准确性不能完全保证。虽硬件简洁、成本更低廉、便于实现,绿色环保,编程简单易写,不能达到提高同学们编程的能力和对单片机及其扩展芯片的学****和深程度的去了解单片机及其更广泛的应用,故在此我们选择挑战,放弃对其选择。虽然我们对其进行了放弃,但我们也把此方法的程序写好以便进行对比。方案二与方案一相比,编程比较复杂,计时精度较高,而且可以灵活运用,可扩展性好,并能充分的利用单片机的有效资源。还可让我们培养我们的自学能力,自己去发掘单片机内部结构及其扩展功能,自己去学会怎样对其他芯片控制的学****方法,使得课程设计具有一定的挑战性,正因如此,故我们选择方案二。2:..(引脚图如图四所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,STC89C52RC设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、等三种封装形式,以适应不同产品的需求。图芯片引脚图引脚功能介绍:VCC(40):+5V;GND(20):接地;P0口(39-32):P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流;3:..P1(1-8):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流;P2口(21-28):P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流;P3口(10-17):P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口;RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;ALE/PROG(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲;PSEN(29):外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现;EA/VPP(31):当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。FLASH编程期间,此引脚也用于施加12V编程电源(VPP);XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入;XTAL2(18):来自反向振荡器的输出。8255A芯片是Intel公司生产的通用可编程并行接口电路,广泛应用于单片机扩展并行I/O口。它具有8个位并行口PA、PB和PC。8255A芯片的内部结构及引脚如图5所示。(1).8255A的内部结构8255A的内部结构有以下几部分组成:、B、C8255A的内部有3个8位并行I/O口:A口、B口、C4:..3个I/O口都可以通过编程选择为输入口或输出口,但在结构和功能上有所不同。A口:含有一个8位数据输出锁存/缓冲器和一个8位输入锁存器。B口:含有一个8位数据输出锁存/缓冲器和一个8位输入锁存器(不锁存)。C口:含有一个8位数据输出锁存/缓冲器和一个8位输入锁存器(不锁存)。当数据传送不需要联络信号时,这3个端口都可以用作输入口或输出口。当A口B口需要有联络信号时,C口可以作为A口和B口的联络信号线。:8255A的三个端口在使用使可分为A、B两组。A组包括A口8位和C口高4位:B组包括B口8位和C口低4位。两组的控制电路中分别有控制寄存器,根据写入的控制字决定两组的工作方式,也可对C口每一位置“1”或清“0”。:数据总线缓冲器是三态双向的8位缓冲器,是8255A与单片机数据总线的接口,8255A的D0~~。数据的输入输出、控制字和状态信息的传递,均可通过数据总线缓冲器进行。:8255A读/写控制逻辑的作用是从CPU的地址和控制总线上接受有关信号,转变成各种控制命令送到数据缓冲器及A组和B组的控制电路,控制A、B、C3个端口的操作。其引脚图如图5所示:图引脚图引脚功能介绍:8255A共有40个引脚,一般为双列直插DIP封装,40个引脚可分为与CPU连接的数据线、地址和控制信号以及与外围设备连接的三个端口线。5:..D0D7:双向三态数据总线。RESET:复位信号,输入,高电平有效。复位后,控制寄存器清0,A口、B口、C口被置为输入方式。CS:片选信号,输入,低电平有效。RD.:读信号,输入,低电平有效。有效时,允许CPU通过8255AD0~D7读取数据或状态信息。WR.:写信号,输入,低电平有效。有效时,允许A1A0:端口控制信号,输入。2位可构成四种状态,分别寻址A口、B口、C口和控制寄存器PA0~PA7:A口数据线,双向。PB0~PB7:B口数据线,双向。PC0~PC7:C口数据/信号线,双向。当8255A工作于方式0时,PC0~PC7分为两组(每组4位)并行I/O数据线;当8255A工作于方式1或方式2时,PC0~PC7为A口、B口提供联络信号。DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,~。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。(1).DS1302的引脚功能及结构DS1302的引脚排列,1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。2两者中的较大者供电。1+,Vcc2给DS1302供电。1时,DS13021供电。X1和X2是振荡源,。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST6:../命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。DS1302的引脚功能以及单片机的连接图如图6图引脚及其与单片机连接的原理图单片机中通常用七段LED构成字型,另外,还有一个小数点发光二极管以显示小数位!这种显示器有共阴和共阳两种!发光二极管的阳极连在一起的(公共端)称为共阳极显示器,阴极连在一起的称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段),a_g,另一个小数点为dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。由于共阴极连接需加驱动,故在这里我采用的是共阳阳极连接。7:..LED为例,各LED公共阳极K0接高电平,若向各控制端a,b,┄,g,dp顺次送入00011110信号,则该显示器显示⒎”字型。共阴极7段LED显示数字0~F、文字、符号及小数点的编码(a段为最地位,dp点为最高位),如图7。图7数码管的驱动显示电路设计在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路是根据我们以前学过的模电电子技术,要想得到我们所要的+6V输出电压,就需将交流220V的电压经过变压器、整流电路、滤波电路和稳压电路四个部分。,为了减少I/O口的占用,常常将按钮排列成矩阵式键盘中,每条水平线和直线在交叉处不直接连通,而是通过一个按钮加以连接。这样,一个端口(如P1口)就能组成4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条就能组成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用8:..矩阵式键盘的按钮识别办法确定矩阵式键盘上何键被按下简绍一种“行扫描法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的,按钮识别办法,如下图示键盘,介绍过程如下。判断键盘中有无键盘按下将全部行线置低电平,然后检测列的电平为低,则表示键盘中有键被按下,而且闭合的键位位于低电平线与4根行线相交叉的4个按钮之中。若所有列线均为高电平,则键盘中无键按下。判断闭合键所在的位置:在确认有键按下后,即可置某根行线为低电平时,其他线为高电平。在确定某根位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列与置为低电平的行线交叉处的按钮就是闭合的按钮。将程序通过串口下载到单片机中,在键盘上按任意键时,将会在数码管上显示对应的字符。为了驱动键盘,同上以8255_PC第四位作为输入,8255PC高四位作为列扫描输出,以此来实现动态扫描显示法。如图8所示:图键盘动态扫描电路设计9:..,时间信息的采集和显示段码的码的存取。分别对各个器件的功能进行编程设计,根据主程序流程图(如下)进行全面的分析。设计中计时主要以定时器T0中断完成,定点闹铃使用峰鸣器来完成。当端口有开关按下时,转入相应的功能程序。其主程序执行流程图如下图9:开始初始化显示NY蜂鸣器响1分是否到闹钟时间钟NNY蜂鸣器响4是否按键是否整点秒YN是否为开启闹钟调节显示时间Y设置闹钟时间图主程序流程图10:..3个内存单元(小时、分钟、秒钟)的BCD码数据,8255的PA口送数码管的位选编码。8255的PB口送段选编码,位选段选编码存放在ROM表中。显示时,先取出位选编码数据,然后送至PA口输出,接着取出段选编码数据送至PB口输出,剩下的数码管以同样地方法送数据直到将3个内存单元的数据分成6个位全部送去数码管显示。数码管显示子程序流程图如图9所示:开始初始化显示数值从RAM中取键码计算存入缓冲区显示延时N六位显示完成?,触发外中断1时,进入闹钟时间设定模式,且不影响T0计时器的功能状态,在键盘上输入对应的数字进行时间设定。当分别按下调节时钟、分钟和秒钟的个位时,时间自动确定,闹钟时间只精确到分钟。闹钟时间设定流程图如图11所示:11:..N达到预设时间?Y闹铃返回图11闹钟时间设定流程图本设计采用动态扫描法,动态扫描法不仅扫描键阵,也可以实现显示,是目前应用十分广泛的一种方法。动态扫描法是采用输出“移动”信号,轮流对各行按键进行检测来实现的。设置行线为输出,列线为输入,当无按键按下时,列输入全为“1”.设计时,将某一行输出为“0”,读取列线值,若其中某一位为“0”,则表明行、列交叉处的按键按下,否则,无按键按下;继续扫描下一行(将下一行输出为“0”),直至全扫描完为止。键盘扫描程序流程图如12图所示:开始初始化地址参数输出列扫描信号读入行信号Y该列有键入按照行列计算键值NN四列扫描完查表得键码Y等待键释放返回图12键盘扫描程序流程图12:..)时间准确性调试硬件调试时可先检查印制版及焊接的质量情况,将电子时钟通电后,显示00:00:00。触发INT0中断开始计时,每过一秒时间就显示变化一次。计时准确,显示稳定。(2)闹铃功能调试将时钟调到11点59分58秒,2秒后,时钟开始定点闹铃,铃声为“嘀-嘀-嘀-嘀”声,持续1分钟报时声自动停止也可以触发功能键来中止闹铃。设计的电子时钟计时精确度较高,并可应用于日常生活中。能够通过键盘对电子时钟进行调整,且调整过程简单方便,易于操作,有较强的人性化设计。并且可通过键盘实现闹铃与时间模式的切换,使电子时钟的功能更加强大。能够进行定时闹铃,计时较准确,基本能实现测试目标。,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后可结合硬件实时调试。,LED显示器动态扫描的频率为167HZ,实际使用观察时完全没有闪烁。由于计时中断程序中加了中断延时误差处理,所以实际计时精度非常高,可满足多种场合的应用需要。13:..×4矩阵30PF电容30PF电容100PF电容100PF电容1K电阻1K电阻蜂鸣器蜂鸣器14:..我完成了此次单片机课程设计。从开始接到课题要求到时钟的实现,再到论文的完成,每走一步对我来说都是新的尝试与挑战。在这次的课程设计中不仅检验了我所学****的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学****相互监督。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程。这次时钟计时器设计的经历也会使我终身受益,我感受到做设计是要用心去做的一件事情,是真正的自己学****的过程和研究的过程,没有学****就不可能有研究的能力,没有自己的研究,就不会有所突破。通过设计,我在老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力。最后,再一次感谢我的老师,老师严谨细致、一丝不苟的作风一直是我学****的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次时钟计时器设计的每个环节,都离不开老师您的细心指导。我懂得了学****的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学****和工作做出了最好的榜样。15:..[1].单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000[2]-51单片机原理及应用[M].北京:***出版社,2006[3]楼然苗,[M].北京:北京航空航天大学出版社,2007[4]夏路易,石宗义.《电路原理图与电路板设计教程》北京希望电子工业出版2002[5]朱定华,.(M)北京:清华大学出版社,200316:..#include<>#include<.h>#defineuintunsignedint#defineucharunsignedchar#definePAXBYTE[0xD1FF]#definePBXBYTE[0xD2FF]#definePCXBYTE[0xD5FF]#definePCONXBYTE[0xD7FF]sbitbuzzer=P3^3;////数码管0-9的段选编码ucharcodetabledu[]={0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28};//数码管各位选编码ucharcodetablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//全局变量定义unsignedlongnum1,num2;ucharshi0,shi1,fen0,fen1,m0,m1,num,num3,aa,,count,temp,count,S,flag,flag1;charhour,min,second,h0,h1,mi0,mi1,s0,s1;voidinit();//初始化函数声明voiddisplay(uchar,uchar,uchar,uchar,uchar,uchar);//显示函数声明voiddelay(uint);//带参数延时函数声明1毫秒voidkeyscan();//键盘扫描函数voidmain(){PCON=0x80;init();while(1)//主体循环{keyscan();//时钟分离部分m1=aa%10;m0=aa/10;fen1=bb%10;fen0=bb/10;%10;/10;//clock分离部分17:..s1=second%10;s0=second/10;mi1=min%10;mi0=min/10;h1=hour%10;h0=hour/10;//clock显示部分if(num3>=1&&num3<=4||count==0)display(shi0,shi1,fen0,fen1,m0,m1);elsedisplay(h0,h1,mi0,mi1,s0,s1);//************整点报时***********//if(aa==0&&bb==0)//报时10秒{TR1=1;//开启定时器1flag=1;//控制整点报时计数num1++}//********闹钟报时*********//if(aa==second&&bb==min&&cc==hour)//闹时一分钟{TR1=1;//开启定时器1flag1=1;//控制闹钟计数num2++}}}//************初始化函数**************//voidinit(){//********定时器0,1初始化********//TMOD=0x11;EA=1;ET0=1;ET1=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR0=1;}voidtime0()interrupt1//定时0时钟函数(控制数码时钟){TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;18:..if(num==20){num=0;aa++;if(aa==60){aa=0;bb++;if(bb==60){bb=0;cc++;==24)cc=0;}}}}voidtime1()interrupt3//1时钟函数(控制整点报时时间){TH1=(65536-1000)/256;TL1=(65536-1000)%256;if(flag==1)num1++;if(flag1==1)num2++;buzzer=~buzzer;if(num1==10000||num2==60000){num1=0;num2=0;buzzer=1;TR1=0;flag=0;flag1=0;}}//************数码管显示函数******************//voiddisplay(ucharshi0,ucharshi1,ucharfen0,ucharfen1,ucharm0,ucharm1){PA=tablewe[0];PB=tabledu[shi0];delay(1);PA=0XFF;19:..PB=0XFF;PA=tablewe[1];PB=tabledu[shi1];delay(1);PA=0XFF;PB=0XFF;PA=tablewe[2];PB=tabledu[fen0];delay(1);PA=0XFF;PB=0XFF;PA=tablewe[3];PB=tabledu[fen1];delay(1);PA=0XFF;PB=0XFF;PA=tablewe[4];PB=tabledu[m0];delay(1);PA=0XFF;PB=0XFF;PA=tablewe[5];PB=tabledu[m1];delay(1);PA=0XFF;PB=0XFF;}//******************************//voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=124;y>0;y--);}//************键盘函数函数******************//voidkeyscan(){PC=0xfe;temp=PC;temp=temp&0xf0;if(temp!=0xf0){delay(5);20:ThedocumentwascreatedwithSpir

电子时钟计时器的设计(c语言版 调试完美通过 可直接使用)(附原理图源程序以及完整的文档)汇总 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数39
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小3.56 MB
  • 时间2024-04-14