单片机数字电子钟_第1页
单片机数字电子钟_第2页
单片机数字电子钟_第3页
单片机数字电子钟_第4页
单片机数字电子钟_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE1目录1课程设计目的与要求 11.1设计目的 11.2设计要求 12硬件设计 22.1方案设计 22.2电路设计 22.3原理图及PCB图 32.4制板 32.5系统调试 33软件设计 43.1流程图 43.2程序清单 54设计结果与调试 64.1软件调试 64.2硬件调试 64.3误差分析 64.4教学建议 6结束语 7致谢 8参考文献 9附录 101课程设计目的与要求1.1设计目的了解数字钟的原理,从而学会制作数字钟。通过数字钟的制作进一步的了解在制作中用到的各种中小规模集成电路的作用及使用方法。学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。学习并掌握单片机的使用和编程方法。1.2设计要求可调整时间的数字时钟。只显示分、秒,采用动态显示模式。通过按键可对时钟进行选位和加减的时间调整,调整时选中位进行闪烁。可实现时间暂停和重新启动。计时精确。时+1=24?秒+1=60?时+1=24?秒+1=60?脉冲溢满20?分+1=60?分清零,时加1时清零中断返回图3定时中断流程图秒清零,分加1秒加1定时中断口3.2程序清单根据原理图,写出相应的程序,程序清单详见附录A4设计结果与调试4.1软件调试软件为老师所提供提供,其原理在上面以作说明。软件部分是先参考书上的例子,然后自己根据硬件电路写程序,本次编程采用的是C语言。刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。4.2硬件调试把程序烧入单片机,上电后,按下开始\停止按键,时钟便从000000开始每秒加1计时,再次按下开始\停止按键,时间暂停,进入调时状态。按秒按键,秒个位闪烁并加1;按下调分按键,分个为闪烁并加1;按下调时按键,分个为闪烁并加1。当再次按下开始\停止按键时,时钟又运行。当按下复位键时,时间显示消失。经以上调试所要求的功能均以实现。4.3误差分析在调试过程中,最初几次数码管显示有一定的问题,但最后发现是位控线和段控线的焊接存在问题。在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而你开启定时器和开启LED灯顺序上是有先后的,这个过程需时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到12MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.4教学建议最开始学习单片机时,是对单片机不感兴趣的,上课也是一直只是抱着完成任务的心态,直到后来,上了第一次单片机实验课,王老师通过各种问题,让我们巩固上课所学知识,通过实际解决问题,才慢慢发现单片机是一门很有趣的课程,并且每当你解决一个问题时,你会充满成就感。希望王老师再接再厉,对我们之后的学弟学妹,也以同样的心态对待。相信,他们也会像我们一样,痛并快乐着!结束语这个学期即将结束,从刚开学,老师就说我们的课程设计从第一节课开始。在这个学期里,我学到了很多,对单片机有了更深刻的认识,也对自己的不足有了清醒的认识。虽然我在上课时,觉得理论很容易,但是当具体写程序时,发现还是有各种各样的问题出现。开学时画PCB图,一点都不熟练,出了不少错误。在焊接过程中,也出现了不少虚焊的情况。通过这次的课程设计,使我注意到了以上几点,应在以后的学习中加以注意。通过这次机会不但练习了编程,而且还对AT89S52单片机又加深了一些认识,练习了定时器,中断等。课程设计很快就这样过去了。我们每个人都学到了很多东西,同时也感觉到了自己的不足,它将对我们以后参加工作有很大的帮助,有利于我们以后走上工作岗位。致谢在整个课程射界的过程中,同学给予的帮助很重要,他们是我成功的关键,尤其在焊接时,一个人很容易疏忽大意,而我们一起时,轻松愉快也不容易出问题,再就是遇到困难时,首先自己会仔细考虑,实在想不出来,我们会在一起思考找问题,每次问题的解决都会充满成就感。在设计过程中,老师给予了我们很多帮助,其实在每次单片机实验的时候,老师就是通过各种各样的问题,来让我们更加好的学习单片机。没有单片机实验带给我们扎实的基础,这次课程设计也不会这么顺利,取得成功。非常感谢老师的帮助!参考文献1、马忠梅,单片机的C语言Windows环境编程宝典[M],北京:北京航空航填天大学出版社,2003.6;1,MaZhongmei,microcontrollerClanguageWindowsenvironmentprogrammingbook[M],Beijing:BeijingUniversityofAeronauticsaviationdaysPress,2003.6;2、李光飞,单片机C程序设计指导[M],北京:北京航空航天大学出版社,2003.01;2,LiGuangfei,microcontrollerCprogramdesigntheguidance[M],Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2003.01;3、李光飞,单片机课程设计实例指导[M],北京:北京航空航天大学出版社,2004.9。3,LiGuangfei,SCMcurriculumdesignexamplestoguide[M],Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2004.9.附录附录A:程序清单:#include<reg52.h>#include<intrins.h>/*共阳数码管字型码数组*//*0,1,2,3,4,5,6,7,8,9,p.,灭,-*/charcodedis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff,0xbf};/*显示缓冲数组(存放显示信息的字型码的序号)*/charfind_code[8];chartime;sbitp12=P1^2;/********************************************************///函数名:voidDelayX1ms(uintcount)//功能:延时时间为1ms//调用函数://输入参数:count,1ms计数//输出参数://说明:总共延时时间为1ms乘以count,crystal=12Mhz/********************************************************/#defineucharunsignedchar#defineuintunsignedintucharsec=0,min=0,hour=0;voidDelayX1ms(uintcount){uintj;while(count--!=0){for(j=0;j<80;j++);}}/*显示函数*/voiddisp(){chari,j=0xfe;chark;for(i=0;i<8;i++){P2=j;k=find_code[i];P0=dis_code[k]; DelayX1ms(1);j=_crol_(j,1);} }/*************************************************************************函数原型:keychuli();*功能:处理与键盘相连的P1口的内容,作为键值。************************************************************************/ucharkeychuli(){uchark;k=P1;//P1口内容送Kk=~k;//取反return(k);//返回键值}/*************************************************************************函数原型:key();*功能:键盘扫描函数,函数返回值即键值。************************************************************************/ucharkey(){ucharkeyzhi,keyzhii;//键盘按键键值临时存放keyzhi=keychuli();//调P1口处理函数if(keyzhi!=0)//有键动作延时去抖动,否则函数返回 { disp(); disp(); keyzhi=keychuli();//再次调P1口处理函数 if(keyzhi!=0)//真正有键按下,取键值并暂存 { keyzhii=keyzhi;while(keyzhi!=0)//判按键是否释放,没有释放延时去抖动等待释放{ disp(); disp();keyzhi=keychuli(); } keyzhi=keyzhii;//按键释放后恢复按键键值 } }return(keyzhi);//返回按键键值}voidINTT0()interrupt1{staticucharclick=0;//定时器0定时中断次数TH0=0x3c;TL0=0xb0;//设置初始值50ms为循环20次为1ms,12MHz ++click;if(click>=20)//是否到1秒,到1秒,秒加1,否则函数返回 { click=0; if(++sec>=60)//加到60秒,秒清0 { sec=0; if(++min>=60)//分加1,是否到60分,否则函数返回 { min=0;//加到60分,分清0 if(++hour>=24)//时加1,是否到24小时,否则函数返回 { hour=0;//加到24小时,时清0 }}} }find_code[0]=sec%10; find_code[1]=sec/10; find_code[2]=12; find_code[3]=min%10; find_code[4]=min/10; find_code[5]=12; find_code[6]=hour%10;find_code[7]=hour/10;//LED显示缓冲区时间值更新}voidmain(){ while(1){ find_code[0]=11; find_code[1]=11; find_code[2]=11; find_code[3]=11; find_code[4]=11; find_code[5]=11; find_code[6]=11; find_code[7]=10; disp(); switch(key()) { case0x01:TMOD=0x01;//定时器1,工作方式1TH0=0x3c;TL0=0xb0;//50ms中断一次EA=1;ET0=1;TR0=1; while(1) { find_code[0]=0; find_code[1]=0; find_code[2]=12; find_code[3]=0; find_code[4]=0; find_code[5]=12; find_code[6]=0; find_code[7]=0; disp(); while(1) {mm:disp(); if(key()==0x01)//进入调整状态 { while(1) { TR0=0; disp(); switch(key()) {case0x01: {TR0=1;gotomm;break;} //进入运行状态 case0x02: //时调整 {hour++; if(hour==24) hour=0; break; } case0x04: // 分调整 {min++; if(min==60) min=0; break; } case

温馨提示

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

评论

0/150

提交评论