单片机课程设计89C51数字时钟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-1-单片机课程设计报告课题:基于89C51的数字时钟学院:理学院专业:光信息科学与技术姓名:丁明星学号:090831101指导教师:薛清淮海工学院2010年12月23日-2-摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间。-3-一、设计目的1、学会掌握KeilC51汇编语言程序的设计和调试。2、学会将所学的单片机原理的有关知识应用于实践,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养理论联系实际的学习作风,提高动手能力、分析并解决实际问题的能力。3、使我们进一步了解掌握所学的专业知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解。4、通过设计、分析、调试,培养我们工程意识,激发大家对产品开发的兴趣,及培养对科技革新、开发和创新的基本能力。二、设计要求1.开机时,显示12:00:00的时间开始计时;2.P3.0/AD0控制”秒”的调整,每按一次加1秒;3.P3.1/AD0控制”分”的调整,每按一次加1分;4.P3.2/AD0控制”时”的调整,每按一次加1小时;5.用protues画出原理图并仿真实现,写出源程序;6.在万用板上焊接元件调试;7.写出详细的实验报告。三、所需电子元器件单片机89C51.1个-4-非门74LS04.1个缓冲器74LS373.1个LG3611AH数码管.6个电阻1(1KΩ).8个电阻2(10KΩ).1个电阻3(510Ω).3个电容.(33pf)2个电解电容.1个四设计原理及其框图1.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字钟.⑴晶体振荡器电路晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路.⑵分频器电路分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数.分频器实际上也就是计数器.⑶时间计数器电路时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器.-5-⑷译码驱动电路译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流.⑸数码管数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管.2.数字钟的工作原理设计原理主要利用AT89C51单片机,由单片机的p2口控制数码管的位显示,p1口控制数码管的段显示,p3.0——p3.2与按键相接用于时间校正。整个系统工作时,秒信号产生器是整个系统的时基信号,他直接决定计时系统的精度,将标准信号送入计数器的时钟脉冲。分计数器也采用60进制计数器,每累计60分钟,发出一个“分脉冲”信号,该信号将被送到时计数器。时计数器采用24进制计数器,可以实现对一天24小时的累计。显示电路将“时”“分”“秒”计数器的输出,通过六个八段led显示器现出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”“分”“秒”显示数字进行校对调整。五、各部分电路分析此实时时钟的设计与实现,主要采用了6只LED数码管,89C51内部二进制16位定时器/计数器,可编程中断控制器89C51等芯片,包括显示模块,运算模块和校时模块三大功能模块。1、显示模块:用89C51控制,用数码管的显示功能来设计。显示部分硬件用六只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这8只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的数字。该模块主要是将运算模块和校时模块运算出来并存放在内存单元里的十六进制表示的时位、分位和秒位数值转化为十进制,-6-并通过8只数码管显示出来。CPU直接往LED输出八段代码,省去了硬件译码器。P1口作为8段数据输出口,经74LS04驱动后到达各LED。只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使6只LED依次出现数字显示。2、运算模块:该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现。本实验中用89C51定时器/计数器,但因为89C51供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是89C51工作方式为方式1,产生一个50ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过89C51的IR1号中断来实现,但由于每50ms一次中断请求,所以在中断服务程序必须利用已申请内存单元35H来统计中断请求的次数,只有当35H的值为20时,才能让秒单元内的数值加1。在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。当时加到24时,直接清零。然后转到调用处。3、校时模块:该模块主要功能是修改时、分、秒内存单元的数值。每按一次键,对应的显示值便加1。分、秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变)。注意:在主程序中对时间进行调校前应关闭中断,以防在调校过程中定时中断服务程序也对时间进行修改而造成混淆。-7-4.整体功能:在6块LED数码管上能实现数字时钟的时、分、秒显示,并能对时、分、秒进行加1校对、减1校对和清零。本实验中陪。P3.0键、P3.1键、P3.2键是分别对时、分、秒的加1校对。并且开机时时钟时从120000开始计时的,到235959时在回到000000.六流程图图2定时器中断程序流程图开始↓初始化(定时器、显示区、中断系统、计数单元等)↓开中断↓调用显示子程序↓调用键盘扫描子程序↓有键按下?N-8-↓关中断↓秒键?N↓秒加1处理↓分键?N↓分加1处理↓小时键?N↓小时加1处理图1主程序流程图定时器中断处理↓重送初值↓保护现场↓计数单元加1↓到1秒?N↓秒加1↓秒到60?N↓-9-秒清0、分加1↓分到60?N↓分清0、小时加1↓小时到24?N↓小时清0↓恢复现场↓中断返回七仿真程序和仿真电路图SECONDEQU30HMINITEEQU31HHOUREQU32HJHOURBITP3.0JMINITEBITP3.1JSECONDBITP3.2DATEQU40HCISHUEQU35HORG0000HAJMPMAINORG0BHAJMPSEVERORG50HMAIN:MOVSECOND,#00HMOVMINITE,#00HMOVHOUR,#0CHMOVCISHU,#00HLCALLDISPLAY-10-MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0SETBET0SETBEAJBSECOND,LOOP1LOOP1:JBMINITE,LOOP2LOOP2:SETBP0LECALLDELAYCLKP0A1:LCALLDISPLAYJNBJSECOND,S1JNBJMINITE,S2JNBJHOUR,S3LJMPA1S1:JBJSECOND,A1INCSECONDMOVA,SECONDCJNEA,#60,J0MOVSECOND,#00HINCMINITEMOVA,MINITECJNEA,#60,J0MOVMINITE,#00HINCHOURCJNEA,#24,J0MOVHOUR,#00HJ0:JBJSECOND,A1-11-LCALLDISPLAYSJMPJ0S2:JBJMINITE,A1K1:INCMINITEMOVA,MINITECJNEA,#60,J1MOVMINITE,#00HINCHOURMOVA,HOURCJNEA,#24,J1MOVHOUR,#00HJ1:JBJMINITE,A1LCALLDISPLAYSJMPJ1S3:JBJHOUR,A1K2:INCHOURMOVA,HOURCJNEA,#24,J2MOVHOUR,#00HJ2:JBJHOUR,A1LCALLDISPLAYSJMPJ2DISPLAY:MOVA,#DATADDA,#06HDECAMOVR1,AMOVA,HOURMOVB,#10DIVAB-12-MOV@R1,ADECR1MOVA,BMOV@R1,ADECR1MOVA,MINITEMOVB,#10DIVABMOV@R1,ADECR1MOVA,BMOV@R1,ADECR1MOVA,SECONDMOVB,#10DIVABMOV@R1,ADECR1MOVA,BMOV@R1,AMOVR0,#DATMOVR2,#01HMOVA,R2MOVDPTR,#TABLELP0:MOVP2,AMOVA,@R0MOVCA,@A+DPTRMOVP1,ALCALLDELAY-13-INCR0MOVA,R2JBACC.5,LP1RLAMOVR2,AAJMPLP0LP1:RETDELAY:MOVR7,#8M1:MOVR6,#70M2:DJNZR6,M2DJNZR7,M1RETSEVER:MOVTH0,#3CHMOVTL0,#0B0HINCCISHUMOVA,CISHUCJNEA,#20,DONEMOVCISHU,#00HMOVA,SECONDADDA,#01HMOVSECOND,ACJNEA,#60,NEXTMOVSECOND,#00HMOVA,MINITEADDA,#01HMOVMINITE,ACJNEA,#60,NEXT-14-MOVMINITE,#00HMOVA,HOURADDA,#01HMOVHOUR,ACJNEA,#24,NEXTMOVHOUR,#00HNEXT:LCALLDISPLAYDONE:RETITABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40HEND七硬件调试硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。-15-静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。八心得体会两个星期的课程设计结束了,从中我学到了很多东西且感悟良多,体会到了课本联系实际,学以至用,设计思想,实际动手能力都有所提高.初学单片机时觉得它深奥难懂,枯燥无味,通过课程设计我体会到了编程的灵活性并对它产生了浓厚的兴趣.以前所学过的知识,而且学到了很多在书本上所

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功