基于51单片机的电子时钟设计_第1页
基于51单片机的电子时钟设计_第2页
基于51单片机的电子时钟设计_第3页
基于51单片机的电子时钟设计_第4页
基于51单片机的电子时钟设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1-《单片机原理及应用》课程设计报告专业:班级:姓名:指导教师:二0一*年**月**日

课程设计任务书一、设计题目LED数字显示电子时钟二、设计要求1、方案论证,确定总体电路原理图。2、元器件选择,设计PCB图(或用万能电路实验板搭线)。3、绘制程序流程图,编写C语言源程序。4、安装调试,实现数字时钟的基本功能,即能正确显示时、分、秒;可调整时间;秒闪功能。三、设计报告内容1、写出设计方案(包括方案对比,方案确定),给出完整的电路原理图和设计程序流程图。2、对所设计方案的实现进行全面分析。3、编程调试方法和程序清单。4、安装调试过程,出现的各种现象,总结经验和体会。*5、进一步完善的设想。目录TOC\o"1-3"\u一.课程设计目的 -1-二.课程设计题目描述和要求 -1-三.课程设计报告内容 -1-3.1、设计思路 -1-3.2、方案设计与论证 -2-3.2.1数码管显示选择方案 -2-3.2.2数码管驱动选择方案 -3-3.3、设计原理、程序及流程图 -3-3.3.1流程图 -3-3.3.2电路原理图 -4-3.3.3C语言程序及说明 -4-3.4、protues仿真图,及作品成型图 -12-3.4.1protues仿真图 -12-3.4.2实践电路板照片 -13-3.5安装与调试结果 -14-3.5.1电路安装 -14-3.5.2电路调试 -15-3.5.3软件调试 -15-3.5.4性能测试 -15-四.总结 -15-参考书目 -16-LED数字显示电子时钟一.课程设计目的:1、巩固和加深对单片机原理知识的理解和运用;2、进一步提高学生综合运用所学知识的能力;3、培养学生综合分析问题、发现问题和解决问题的能力。二.课程设计题目描述和要求:1、方案论证,确定总体电路原理图。2、元器件选择,设计PCB图(或用万能电路实验板搭线)。3、绘制程序流程图,编写C语言源程序。4、安装调试,实现数字时钟的基本功能,即能正确显示时、分、秒;可调整时间;秒闪功能。三.课程设计报告内容:3.1、设计思路:3.1.1根据所需实现的功能画出程序流程图,如3.5所示。3.1.3.1.3用软件延时对K1,K2,K3进行两级防抖。启动系统,中断初始化,定时器0只用来做计时,定时器1根据需要可选择进入定时模式或者计数模式。3.1.4当先按下K1时,进入外部中断0,主函数调用时间显示函数,定时器1处于计数工作模式,num=num+1,num为1时按K2,K3对小时进行加减来调整小时位,num=2按K2,K3对分进行调整,当num=3按K2,K3对秒进行调整,当num=4时就对num进行清零,跳出时间调节。3.1.5当先按下K2时,进入外部中断1,cmd=cmd+1,主函数调用秒表显示函数,进入秒表状态,此时将定时器1的工作模式改为计时,使其每10ms进行一次中断,并设定当cmd位偶数时进行秒表计时,当cmd为奇数时停止秒表计时。K1用来对秒表进行清零,在秒表处于00-00-00状态时,按K1退出秒表,进入时间显示状态。3.2、方案设计与论证:单片机模块驱动模块按键模块LED显示模块电源模块 图1系统整体框图整个系统用单片机作为中央控制器,由单片机执行采集芯片内部时钟信号,时钟信号通过单片机I/O口传给单片机,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LED的显示及相关的控制功能。系统设有按键模块用于对时间进行调整及扩展多个小键盘。3.2.1数码管显示选择方案方案一:静态显示。静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小电流能获得较高的亮度,且字符不闪烁。但因当所需显示的位数较多时,静态显示所需的I/O口数较大,造成资源的浪费。方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。显示器的亮度与导通电流、点亮时间及间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采用方案二。3.2.2数码管驱动选择方案方案一:上拉电阻驱动方式。数码管段码与接有上拉电阻的单片机芯片I/O口相连,通过编程,单片机芯片即控制段码电平的高低。该方式经费低,但实物制作较复杂。方案二:7407芯片驱动方式。数码管段码与7407芯片B口相连,7407芯片A口与单片机芯片I/O口,通过编程,单片机芯片即可控制段码电平的高低。该方式实物制作简单,增强驱动数码管段码能力。从实物制作简易程度与驱动数码管段码能力角度出发,本数字电子钟数码管驱动选择设计采用方案二。3.3、设计原理、程序及流程图:3.3.1流程图启动启动是否进入秒表显示对中断初始化选择秒表显示功能选择时间显示功能是否是否启动秒表是否进入调时各时间调整是运行秒表是否否3.3.2电路原理图3.3.3C语言程序及说明#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcount=0,num=0,temp=0,cmd=0;sbitLED=P1^0;sbitH=P3^2;sbitM=P3^3;uchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharsec=11,min=11,hour=11,a=0,b=0,c=0; //定义时钟的时分秒以及秒表的分秒10ms;voiddelay(uinti) //延时2ims;{uintj;for(;i>0;i--)for(j=124;j>0;j--);} voidinit() //中断初始化{ET0=1;TMOD=0x51;TH0=(65536-25000)/256;TL0=(65536-25000)%256;ET1=1;TH1=0xff;TL1=0xff;IT0=1;IT1=1;TR0=1;TR1=1;EA=1;}voidBss() //两级防抖{H=1;M=1; //调时按钮防抖if(H==0){delay(20); H=1; if(H==0) { delay(20); H=1; if(H==0) { EX0=1; } } }if(M==0) //调分按钮防抖{delay(20); M=1; if(M==0) { delay(20); M=1; if(M==0) { EX1=1; } } }}voiddisplay() //时钟显示{ P0=tab[hour/10%10]; if(num==1&&temp==1) P2=0xff; else P2=0xfe; delay(1); P0=tab[hour%10]; if(num==1&&temp==1) P2=0xff; else P2=0xfd; delay(1); P0=tab[min/10%10]; if(num==2&&temp==1) P2=0xff; else P2=0xfb; delay(1); P0=tab[min%10]; if(num==2&&temp==1) P2=0xff; else P2=0xf7; delay(1); P0=tab[sec/10%10]; if(num==3&&temp==1) P2=0xff; else P2=0xef; delay(1); P0=tab[sec%10]; if(num==3&&temp==1) P2=0xff; else P2=0xdf; delay(1);}voiddisplaym() //秒表显示{P0=tab[a/10%10]; P2=0xfe; delay(1); P0=tab[a%10]; P2=0xfd; delay(1); P0=tab[b/10%10]; P2=0xfb; delay(1); P0=tab[b%10]; P2=0xf7; delay(1); P0=tab[c/10%10]; P2=0xef; delay(1); P0=tab[c%10]; P2=0xdf; delay(1);}voidT0_int()interrupt1using1 //中断T0用于计时{TH0=(65536-25000)/256;TL0=(65536-25000)%256;count++;if((num!=0)&&(count%10==0)) //用于调时数字闪烁temp=~temp;if(count%10==0)LED=~LED;if(count==20){count=0; sec=sec+1; if(sec==60) { sec=0; min=min+1; if(min==60) { min=0; hour=hour+1; if(hour==24) hour=0; } } }}voidT1_int()interrupt3using2 //中断T1用于可在时间校准的减与计时之间进行切换{if(cmd!=0) //满足条件T1进入计时功能{TH1=(65536-5000)/256; TL1=(65536-5000)%256; if(cmd%2==0) { c=c+1; if(c==100) { c=0; b=b+1; if(b==60) { b=0; a=a+1; } } } }else //不满足秒表条件,进入计数功能{TH1=0xff;TL1=0xff;switch(num){case1:hour=hour-1;if(hour<=0)hour=23;break; case2:min=min-1;if(min<=0)min=59;break; case3:sec=sec-1;if(sec<=0)sec=59;break; default:break; } }}voidI1_int()interrupt2using3 //外部中断1用于调时的加跟秒表的控制{EX1=0;switch(num){case0:TMOD=0x11;cmd=cmd+1;break; //当外部中断未被启用时进入秒表case1:hour=hour+1;if(hour>=24)hour=0;break; case2:min=min+1;if(min>=60)min=0;break; case3:sec=sec+1;if(sec>=60)sec=0;break; default:break; }}voidI0_int()interrupt0using3 //外部中断0用于校准时间在时、分、秒之间进行切换{EX0=0;if(cmd!=0&&(a!=0||b!=0||c!=0)) //对秒表进行清零{a=0;b=0;c=0; }else if(cmd!=0&&(a*b*c==0)) //清零后退出秒表{cmd=0; TMOD=0x51; TH1=0xff; TL1=0xff; }elseif(cmd==0) //调时切换{temp=1; //启动数字闪烁num=num+1;if(num==4){temp=0; //关闭字符闪烁num=0; //推出调时功能 } }}voidmain() //主函数{ init(); LED=0; while(1) { if(cmd==0) //如不满足秒表条件就进入时间显示 display(); else displaym(); Bss(); } }3.4、protues仿真图,及作品成型图3.4.1protues仿真图3.4.2实践电路板照片LED数字显示电子时钟正面(关闭)LED数字显示电子时钟正面(开启)LED数字显示秒表状态3.5安装与调试结果:3.5.1电路安装安照电路原理图把元器件安装到已打好的铜板对应的位置,把个元器件固定在铜板后,用导线把对应的元器件的引脚相连接,再用焊锡焊接好即可。注意事项:(1)元器件的布局应尽量集中,且各个元器件间引脚的连线应尽量短、不弯曲,跳线尽量少。(2)各个元器件引脚的焊接不要虚焊。3.5.2电路调试把相应编译好的目标程序代码加载到单片机芯片AT89S51,可接上5V电压源即开始进行硬件电路的调试工作。如果显示结果不符合设计要求,即检查电路各连接点是否正确连接,再次进行硬件电路的调试工作,或是检查代码程序是否符合硬件电路的设计,若有错即进行相应的修改,编译后,再进行硬件电路的调试工作。如此反复操作,直到调试出正确结果。3.5.3软件调试(1)在计算机上运行程序调试软件Keil,进行程序调试。(2)利用Proteus软件进行仿真模拟。(3)加载程序代码到单片机芯片AT89S51中,进行模拟仿真。若出现错误,查看错误后进行相应修改再进行调试与模拟仿真,直到调试出正确结果。3.5.4性能测试系统上电后进行功能的测试,通过测试观察到,系统上电后数码管上显示时间:11-11-11。通过测试,本作品设计实现了数字电子钟的基本功能,且系统工作稳定。经过全组组员一起调试及验证,计时误差为1.0秒。四.总结:本次课程设计的题目是LED数字显示电子时钟。经过本组同学的共同努力,终于调试成功,并经过测试数据显示,系统的可靠性已经基本能够达到实际电子钟的设计要求,同时本单片机数字电子钟系统具有扩展性。本设计从经济实用的角度出发,采用美国Atmel公司的单片机AT89S51与显示驱动芯片7407作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、电源输入等电路并用C语言编写主控芯片的控制程序,研制了一款可以调时并带有秒表功能的电子时钟。使用单片机制作的电子时钟具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于体育赛事和车站、办公室及家庭等场所,有一定的实用性。此电子时钟严格按照要求设计,基本达到了预期效果,能够正确的显示时分秒的计时,算上是一次比较成功的设计了。实验中遇到了不少问题,但我们一起改进和综合了如下。1.按键问题。此设计中,很多功能选择是通过按键开关实现的。在仿真中发现,调整数值时,有时按键反应太快,按一次,跳了几下,使设置时间

温馨提示

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

评论

0/150

提交评论