..................................课程设计报告论文题目单片机-电子钟专业班级学生姓名学号指导教师宁波技师学院电气技术系二零一三年九月..................................摘要数字钟是一种用数字电路技术实现时、分、秒计时的装置,在现实生活中,各种数字钟已得到非常广泛的使用.数字钟的设计方法有许多种,例如可用中小规模集成电路组成数字钟,也可以利用好单片机来实现数字钟等。这些方法都各有特点,其中利用中小规模集成电路组建数字钟,原理简单,但由于集成电路集成度有限,对于需要实现较多功能的电路设计比较复杂,对于制作者焊接和布线有比较高的要求。用单片机实现的电子钟具有结构简单,并便于功能的扩展,但需要涉及到汇编以及C语言编写程序,对设计者有较高的要求。..................................1引言数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置广泛用于个人家庭,车站,码头,办公室等公共场所,成为人民日常生活中不可少的必须品,由于数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生活带来极大的方便,而且大大地扩展了钟表原先的报时功能。比如定时自动报警,校时自动打铃,自动启闭路灯等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用有着非常现实的意义。..................................2.总体设计方案2.1系统设计方案本次设计的题目是可以正常的显示时、分、秒。本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件,同时采用四位一体数码管动态显示“时”、“分”、“秒”的现代计时装置。它具有显示直观,校时功能等特点,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。本次设计可分为两部分:硬件部分、软件部分。硬件部分包括:AT89C51单片机四位一体显示器。主要由AT89C51单片机、显示输出电路、按钮输入电路等几大部分组成。具体说来,系统智能控制部分由单片机及其相关的外围电路组成,外围电路包括复位电路、数字钟电路、键盘设计。利用单片机将复位电路、显示电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。2.2结构框图..................................3硬件设计3.1时钟电路89C51片内没有一个由反向放大器所构成的震荡电路,XTAL1和XTAL2分别是振荡电路的输入端和输出端。内部方式时钟电路只要在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就能产生自激震荡,晶体频率可以在1.2MHZ到12MHZ之间,电容值在5PF到30PF之间,电容可起频率微调作用,在5PF到30PF之间,频率越高,电容值越小C120pFC220pFX1CRYSTAL..................................3.2复位电路按键电平复位是通过复位端经电阻与VCC接通而实现的,也是一个高电平有效电路,无极电容C的两端不能突变,所以Ua=Vcc,Uab=Ua-Ub,Ub=Ua-UabR91kR101kC322uFRST..................................3.3四位一体数码管显示EA/VP31XTAL119XTAL218RESET9RD17WR16INT012INT113T014T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/P30TXD11RXD10GND20VCC40U18751R14.7kR2R3R4R5R6R7R8Q19012Q29012Q39012Q49012R9100R10100R11100R12100R13100R14100R15100R16100R194.7KR204.7KR214.7KR224.7K1234J1CON4abcdefgdp1234J2四位数码管vcc..................................4软件设计4.1主程序流程图开始初始化调节时间正常计时结束功能键yY请在此放置您的文字LED显示YN..................................4.2初始化voidcsh(void){TMOD=0X11;TH0=0XF8;TL0=0X30;smg=0xff;EA=1;ET0=1;minute=0;minute1=0;TH1=0xd8;TL1=0xf0;TR1=1;ET1=1;lsd_4=1;..................................4.3数码管显示voidsmgxs(void){if(xtw==1){xt_en4=1;smg=smgxsm[qw];xt_en1=0;}if(xtw==2){xt_en1=1;smg1=smgxsm[bw];if(dp_en==1){smg=smg1&0x7f;}else{smg=smg1;..................................}xt_en2=0;}if(xtw==3){xt_en2=1;smg=smgxsm[sw];xt_en3=0;}if(xtw==4){xt_en3=1;smg=smgxsm[gw];xt_en4=0;}}..................................4.4数码管关闭voidsmggb(void){smg=0xff;}4.5按键处理voidkey_cl(void){if(zqz==0){if(ziqz==1&&dqz==1){smg_en=!smg_en;TR0=1;}if(ziqz==2&&dqz==2){smg_tz=!smg_tz;}if(ziqz==3&&dqz==3)..................................{sj_xz=!sj_xz;}if(ziqz==4&&dqz==4){sjsz++;if(sjsz==5){sjsz=0;}}if(ziqz==7&&dqz==7){clock_en=1;}if(sjsz==1){lsd_1=0;if(ziqz==5&&dqz==5){minute1++;if(minute1=10)..................................{minute1=0;minute++;}if(minute=6){minute=0;minute1=0;}}if(ziqz==6&&dqz==6){minute1--;if(minute1==-1){minute1=9;minute--;}if(minute==-1){minute1=9;minute=5;..................................}}}if(sjsz==2){lsd_1=1;lsd_2=0;if(ziqz==5&&dqz==5){hour1++;if(hour1=10){hour1=0;hour++;}if(hour=2&&hour1=4){hour=0;hour1=0;}}if(ziqz==6&&dqz==6)..................................{hour1--;if(hour1==-1){hour1=9;hour--;}if(hour==-1){hour=2;hour1=3;}}}if(sjsz==3){lsd_3=0;lsd_2=0;if(ziqz==5&&dqz==5){c_hour1++;if(c_hour1=10)..................................{c_hour1=0;c_hour++;}if(c_hour=2&&c_hour1=4){c_hour=0;c_hour1=0;}}if(ziqz==6&&dqz==6){c_hour1--;if(c_hour1==-1){c_hour1=9;c_hour--;}if(c_hour==-1){c_hour=2;c_hour1=3;..................................}}}if(sjsz==4){lsd_3=0;lsd_1=0;lsd_2=1;if(ziqz==5&&dqz==5){c_minute1++;if(c_minute1=10){c_minute1=0;c_minute++;}if(c_minute=6){c_minute=0;c_minute1=0;}..................................}if(ziqz==6&&dqz==6){c_minute1--;if(c_minute1==-1){c_minute1=9;c_minute--;}if(c_minute==-1){c_minute1=9;c_minute=5;}}}}}..................................5制作与调试在决定做数字钟的时候,先在PROTUES上画好图,进行仿真,刚开始的时候出现了几个错误,用错了了几个元器件,经过几次修改之后,终于在PROTUES上做好了,接着到Protel99S进行画图,因为已经在PROTUES上画好图了,所以只要对着PROTUES画图就可以了,基本上没什么困难,但有些图在图库上没有,要自己手动去画,花了比较上的时间,还有一个四位一体数码管的管脚,只要一画错,基本上就很麻烦了,所以画封装的时候,一定要搞懂四位一体数码管管脚是怎么接的,另外有几个元器件封装也要自己画。在Protel99S上画完图之后打印给老师看,老师看了之后给我指出了几个小错误,而且跟我一样的有很多,以前根本没注意到过,总是认为自己看的懂就行了,现在知道不仅要自己看的懂,别人也一样要看得懂,不然画图就没意义了,改好之后又给老师看了一遍,老师觉得没问题就给我签字了,去把器件领好。领好之后在Protel99S上画原理图,画完之后发现因为封装原因有好几个地方需要修改,浪费了比较长的时间,画好之后去打印出来给老师去看,老师说三极管的封装不对,太小了,会出问题,看了一下,发现真的有点小,改好之后检查一下,看看还有没有不够大的,发现按键貌似也有点小,很难放进去,于是把按钮的封装也改了一下,经过元器件一个一个放置之后,又给老师看了看,老师说没问题就去做电路板吧,于是当天晚上就开始加夜班,争取把电路..................................板早点完成,还好晚上人也不是很多,也就十多个,也就在腐蚀电路板的时候等了一些时间,其余的时候没人跟你抢,板完成之后就开始焊元器件了,不过因为之前腐蚀和打孔的时候有几个孔比较难焊,所以那几个焊的比较难看,之前数字钟的程序写过,已经烧进单片机里面了,所以直接插进去就行了,结果是失望的,但庆幸的是,最起码电路没接错,只是反应跟预期的不一样而已,反了一下,老师说有人看表是这样看的,还不累死,只能程序改一下,把位选通改了一下,又把程序烧到单片机内,还好,成功了,不然估计要崩溃了,确定没问题之后给老师看过,就把电路板上交了。..................................6结论通过这次实习,我发现了自己的很多的坏习惯,有一些是经常犯的,已经不是一次两次了,明明知道是你对的,但有时候就是控制不住去犯了,比如粗心大意,经常出一些小问题,可是出的问题不是很难的那种,只要注意点根本就可以避免。还发现自己的很多不足,有时候有点懒散,专业知道学的也不够扎实,希望经过以后的时间能够改正这些坏习惯。..................................附录1系统实物图....