51单片机电子时钟课程设计实验报告_第1页
51单片机电子时钟课程设计实验报告_第2页
51单片机电子时钟课程设计实验报告_第3页
51单片机电子时钟课程设计实验报告_第4页
51单片机电子时钟课程设计实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理与应用课程设计总结报告题 目:单片机电子时钟(带秒表)的设计设计人员:张保江江润洲学 号: 20121972132012118029班 级: 自动化1211指导老师: 阮海容目 录1 .题目与主要功能要求 22 .整体设计框图及整机概述 33 .各硬件单元电路的设计、参数分析及原理说明34 .软件流程图和流程说明 45 .总结设计及调试的体会 10附 录1 .图一:系统电路原理图 112 .图二:系统电路 PCB 123 .表一:元器件清单 134 .时钟程序源码 14题目:单片机电子时钟的设计与实现课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合。 培养我们综合

2、运用电子课程中的理论知识解决实际性问题的能力。 让我们对电子电路、 电子元器件、 印制电路板等方面的知识进一步加深认识,同时在软件编程、 排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高, 为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。课程设计的基本任务利用 89C51 单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。主要功能要求最基本要求1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。2)完成硬件实物制作或使用Pruteus 仿真 (注意位驱动应能提供足够的

3、电流) 。3)6位LED数码管从左到右分别显示时、分、秒 (各占用2位),采用24小时标准计时制。开始计时时为 000000 ,到 235959 后又变成 000000 。4)使用3 个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1 。 分、秒加到 59 后再按键即变为00;小时加到23 后再按键即变为00 。在调校时均不向上一单位进位(例如分加到59 后变为00,但小时不发生改变) 。5 ) 软件设计必须使用 MCS-51 片内定时器, 采用定时中断结构, 不得使用软件延时法, 也不得使用其他时钟芯片。6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序

4、。7)掌握硬件和软件联合调试的方法。8)完成系统硬件电路的设计和制作。9)完成系统程序的设计。10 )完成整个系统的设计、调试和制作。11)完成课程设计报告。基本要求1 )实现最基本要求的 110 部分。2 )键盘输入可以控制电子时钟的走时/ 调试。3)设计键盘输入电路和程序并调试。4)掌握键盘和显示配合使用的方法和技巧。提高发挥部分1)另设三个键,分别作小时、分、秒的减1 调校。2)在以上设计的基础上,修改程序制作一个电子秒表。分、秒各占用2 位显示, 1/10 秒、1/100秒各占用1位显示。设定二个键分别作启动/停止、清零(清零应在停止后有效)3)在做完(2)后,将时钟与秒表合二为一,并

5、且在同时使用时互不影响,即可在时钟与秒表之间任意切换,而不影响走时、计秒。整体设计框图及整机概述整体设计框图按键电源电路51单片机整机概述1)开机为走时模式,正常显示时间。在此模式下,时钟可调。2)共设置7个按键,分别为模式键、功能键、加一键、减一键、复位键、秒表启动键、秒 表复位键。按动模式键,模式将在走时 /调时/显示及秒表显示及调整2个模式下切换。3)在时钟模式下,功能键选择是正常走时,还是进入调试(时、分、秒)模式。4)按动加一键可以将值(时、分、秒)加一。5)按动减一键可以将值(时、分、秒)减一。6)按动秒表中开始/暂停按键可以随时控制秒表的开始和停止。7)按动秒表中清零按键时,秒表

6、计的数就会被清除(只有在秒表停止了以后)。8 )按下复位键后,无论是任何状态都会从新开始。9)开机时钟与闹钟都为 00: 00: 00。各硬件单元电路的设计、参数分析及原理说明电源电路元件有限没有制作电源电路部分。使用9V的电池经过7805稳压后进行供电。按键参考书本P232的键盘接口电路原理图,P3 口(除去P3.6)接的是键盘按键。当按键按下后, P3 口被拉成低电平,给单片机一个信号,使单片机产生一个中断。单片机再指令相应的P0口,P2 口产生变化。单片机最小系统参考实验指导书与课本及网络资料设计按键电平复位。LED数码管首先P0 口作为段码输出。由于 P0 口输出级无上拉电阻,故需添加

7、一排阻为其上拉电阻。其次采用共阳极数码管。段码端为低电平时导通LED,此时数码管向 89S51芯片P0 口灌电流,为防止芯片烧坏,还需加1个1 KQ的限流电阻。考虑到数码管的亮度问题, 采用了 PNP 三极管做驱动电路。基极接上1 KQ电阻后再与 P2 口相连(P2.0P2.5i)进行位选。发射极接5V电源,集电极接数码管位选。软件流程图和流程说明软件流程图1)主程序流程图流程图说明初始化:包括定时器赋 初值,初始化各内存单 元。开定时器中断,开等待定时器中断CPU中断。时间显示及调整子程序与秒表显示及调整子程序流程图与调时模式子程序大同小异。/X 0Num11 值<f 为 2?1HXX

8、 0/ Num11 值为 3?/>H1 F 返回 .分钟数值加1, 键值清零小时数值加1, 键值清零总结设计及调试体会硬件设计部分: 首先要通过计算与参考资料等决定参数。 而后通过仿真软件等调试,确定参数无误后再开始用AD画原理图,进而生成PCB进行布板。在焊板子的时候,也出现了问题,不小心将7805 焊成了7905,结果又调试了一个时间。软件设计部分: 设计软件首先要考虑要做的功能, 确定出合理的算法。 合理的算法不仅要可以实现功能, 而且在添加功能的时候要方便灵活。 有的人为了实现某种功能用了各种各样的方法来实现, 结果程序结构吃死, 当想要添加功能或者修改其他功能的时候, 将修改程

9、序大部分结构, 也就是说要破坏程序现有的结 构。关于调试: Keil 软件调试单片机程序的时候,编译通过并不代表程序是正确的。 编译通过只能说明程序没有语法上的错误。 进行软件仿真或者下载到开发板上进行调试, 经常会出现各种各样的错误。 许多超出预期效果的现象往往是一些微小错误引起的。 例如没有现场保护跟恢复现场等, 所以养成良好的编程习惯也很重要。 有些想达成某些功能而添加的语句, 实际上确一点效果也没有。 举个编程中的小问题: 当有按键按下时, 我们都要有软件防抖。 正常的方法是调用一个延时。在实际调试中,要跳过这个抖动,需要100MS 左右。如果使用正常的延时,会导致按键按下时CPU10

10、0Ms内无法进行其他操作,也就是说。平均 1S内100Ms不调用显示子程序,这样就会导致亮度降低。这时候,考虑到显示子程序一次有十几毫秒, 就特别写了一个程序来作为按键防抖的延时, 实际上效果也是很不错的。 这个想法就是在修改了多次程序未达到想要的效果 (有按键按下时显示亮度不降低)后最终想出来的办法。最后在做完板, 焊完电路后, 在接通电源之前, 要用万用表仔细检查电路是否有连接错,以免烧坏芯片和数码管。设计课设的 其他体会 : 态度要积极, 不要认为很简单就不紧不慢。 很多东西并不是自己设想的那么顺利,有时候一个小问题可以花上你半天甚至一天的时间。 虽然自己在程序上并没遇到太大的问题, 但

11、是因为态度不够积极, 对于没画过的PCB图迟迟不去下手,在周四晚上才解决。本以为周五一天可以做完板并完成整机调试, 可是各种突发事件让自己措手不及。 发现板来不及做完后才将程序功能进行扩展。 这是我在这次实验中的一个教训, 也让我明白了对于自己不能太 过于自信,态度决定一切。图一:系统电路原理图BBB.B. BBBB.W'lro MLWg kaisrm面,kWlTFiRIHU-TttHii除丑fi?FA”:你中如J5Jrujj旭fml I:n Inwri图二:系统电路PCB在protues中调试的结果在开发板上实现的效果(见实物)在焊的PCB板子上效果(见实物)在 protues 里的

12、仿真以及在开发板上实现和自己做实物所看到的现象是不一样的。在protues里不用接三极管(NPN)就可以实现效果,但是在自己做板子的时候就不行了,因为 51 单片机的输出的电流不能驱动数码管发光, 需要一个增加驱动的 9014 三极管。 另外, protues里的复位按键不起作用(软件里就是这样设计的)。将在PCB上实现的程序用在开发板上又出现了问题, delay( 3)这个延时子程序不合理,出现了闪烁的问题,所以将 delay (3)改成了 delay (1),这样问题就解决了。我是将三极管加在了段选上,又加了限流电流,这样做数码管也能点亮。另一方面,一样的程序用在不同的显示上,现象也是不一

13、样的。所以,我需要不断地修正定时器的装值。TH1=(65536-49997)/256;/ 重装初值TL1=(65536-49997)%256;TH0=(65536-8000)/256;TL0=(65536-8000)%256;经过实际测量,这个数值是最合适的,一个小时一秒不差。表一:元器件清单器件名称数量电池一个Lm7805一个自锁开关一个51单片机一个LED两个极性电容一个非极性电容两个晶振一个10K电阻九个1K电阻两个按键七个100电阻八个PNP三极管八个4位数码管(共阴)两个时钟程序源码# include <reg51.h># define uchar unsigned ch

14、ar# define uint unsigned int uchar code table=/指示灯0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 ;sbit led=P1A1; sbit qiehuan_key=P3A7;/秒表和时钟模式切换按键sbit sp_key=P3A4;sbit clf_key=P3A5;sbit func_key=P3A1;sbit add_key=P3A2;sbit sub_key=P3A3;uchar k1_bit=0;秒表中开始/暂停按键/秒

15、表中清零按键时钟换位按键(时、分、秒)/时钟加1按键/时钟减1按键/切换按键标志位 uchar Shi1,shi2,fen1,fen2,miao1,miao2,fen3,fen4,miao3,miao4,num9,num10;uint num1,num2,num3,num4,num5,num6,num7,num8,num11;void delay(uint xms) / 延时函数uint i,j;for(i=xms;i>0;i-) for(j=110;j>0;j-);void init()EA=1;TMOD=0X11;择第 1 种工作方式TH0=(65536-10000)/256;

16、TL0=(65536-10000)%256;ET0=1;TR0=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;ET1=1;TR1=1;void mode_key()当 K1_bit 为 0 时显示时钟,为if(qiehuan_key=0) delay(5);if(qiehuan_key=0) / 中断初始化函数/ 开总中断/ 定时器工作方式选择,定时器 0 和定时器 1 都选定时器0装初值,定时10ms (用于秒表)/ 开定时器0 开关/ 开定时器0 小开关/ 定时器 1 装初值,定时50ms (用于时钟)/ 开定时器1 开关/ 关定时器1 小开关

17、/ 模式选择键,本程序两种模式,分别是时间显示、秒表。1 时进入秒表k1_bit+;if(k1_bit=2)k1_bit=0;while(!qiehuan_key);void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2) / 显示时钟 函数shi1=num1/10;shi2=num1%10;fen1=num2/10;fen2=num2%10;miao1=num3/10;miao2=num3%10;P2=0xff;P0=tableshi1; / 第一位P2=0xfe;delay(3);P

18、2=0xff;P0=tableshi2; / 第二位P2=0xfd;delay(3);P2=0xff;P0=0x40;/ 第三位P2=0xfb;delay(3);P2=0xff;P0=tablefen1; / 第四位P2=0xf7;delay(3);P2=0xff;P0=tablefen2; / 第五位P2=0xef;delay(3);P2=0xff;P0=0x40;/ 第六位P2=0xdf;delay(3);P2=0xff;P0=tablemiao1; / 第七位P2=0xbf;delay(3);P2=0xff;P0=tablemiao2; / 第八位P2=0x7f;delay(3);P2=

19、0xff;显示void display0(uchar fen3,uchar fen4,uchar miao3,uchar miao4,uchar num9,uchar num10) / 秒表函数fen3=num8/10;fen4=num8%10;miao3=num7/10;miao4=num7%10;num9=num6;num10=num5;P2=0xff;P0=tablefen3; / 第一位P2=0xfe;delay(3);P2=0xff;P0=tablefen4; / 第二位P2=0xfd;delay(3);P2=0xff;P0=0x40;/ 第三位P2=0xfb;delay(3);P2

20、=0xff;P0=tablemiao3; / 第四位P2=0xf7;delay(3);P2=0xff;P0=tablemiao4; / 第五位P2=0xef;delay(3);P2=0xff;P0=0x40;/ 第六位P2=0xdf;delay(3);P2=0xff;P0=tablenum9; / 第七位P2=0xbf;delay(3);P2=0xff;P0=tablenum10; / 第八位P2=0x7f;delay(3);P2=0xff;void key_miaobiao()if(k1_bit=1)if(sp_key=0)delay(5);if(sp_key=0)TR0=TR0;while

21、(!sp_key)display0(fen3,fen4,miao3,miao4,num9,num10);if(TR0=0)led=0;if(clf_key=0)delay(5);if(clf_key=0) led=1;while(!clf_key) num5=num6=num7=num8=0;void keyscan()/ 时钟按键扫描if(func_key=0)delay(5);if(func_key=0)led=0;num11+;while(!func_key);if(num11=1)TR1=0;if(num11=2)TR1=1;if(num11=3)TR1=1;if(num11=4)num11=0;TR1=1;if(num11!=0)if(add_key=0)delay(5);if(add_key=0)while(!add_key);if(num11=1)(num3+;if(num3=60)num3=0;)if(num11=2)(num2+;if(num2=60)num2=0;)if(num11=3)(num1+;if(num1=24)num1=0;)if(sub_key=0)(delay(5);if(sub_key=0)(while(!sub_

温馨提示

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

评论

0/150

提交评论