单片机实验报告——数字钟设计班级:学号:姓名:时间:一.实验目的1、进一步熟悉C的语法知识和keil环境;2、熟练掌握一些常用算法;3、熟悉keil的编写、下载、调试过程;4、了解单片机的工作原理和电路图;5、熟悉单片机的外围电路功能模块、LED灯、数码管模块以及键盘;6、熟练焊接技术。二.实验器件三.数字钟设计原理数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。通常使用石英晶体振荡电路构成数字钟。数字钟电子钟由以下几部分组成:按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。按键开关振荡电路89C51单片机控制器4位数码管显示7407列驱动四.流程图主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。图2.4中断服务程序流程图五.51单片机系统的硬件连接1、STC单片机最小系统硬件电路图如下返回2、硬件电路的设计该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。六.程序设计HOUREQU3AH;赋值伪指令MINEQU3BHSECEQU3CHBUFFEQU3DHORG0000HAJMPMAINORG000BH;主程序入口AJMPPTF0ORG0033H;跳转到标号PTF0执行;**************************************************************;主程序MAIN:MOVHOUR,#00H;时,分,秒,标记清零MOVMIN,#00HMOVSEC,#00HMOVBUFF,#00HMOVSP,#0EFH;设堆栈指针MOVTH0,#0ECH;定时器赋初值MOVTL0,#78HMOV40H,#100;设循环次数MOV41H,#2MOVTMOD,#1;写TMODMOVIP,#2;写IPMOVIE,#82HMOVR5,#0;开中断SETBTR0;启动定时器PTF0:SETBP1.2MOVTH0,#0ECHMOVTL0,#78HINCR5MOVR6,BUFFCJNER6,#00H,BBMOVDPTR,#TAB1LJMPLOOP0BB:MOVDPTR,#TABLOOP0:CJNER5,#1,LOOP1ACALLLOP0AJMPJKLOOP1:CJNER5,#2,LOOP2ACALLLOP1AJMPJKLOOP2:CJNER5,#3,LOOP3ACALLLOP2AJMPJKLOOP3:ACALLLOP3MOVR5,#0JK:DJNZ40H,PTFORXRLBUFF,#0FFHMOV40H,#100JNBP1.1,JFJNBP1.2,JSMOVR7,41HCJNER7,#1,AAAA:DJNZ41H,PTFORMOV41H,#2MOVA,SEC;秒加1ADDA,#1DAAMOVSEC,ACJNEA,#60H,PTFORMOVSEC,#0;秒清零JF:MOVA,MIN;分加1ADDA,#1DAAMOVMIN,ACJNEA,#60H,PTFORMOVMIN,#0;分清零ACALLLEDJS:MOVA,HOURADDA,#1DAAMOVHOUR,A;时加1CJNEA,#24H,PTFOR;时加到24时否?是,清零MOVHOUR,#0PTFOR:RETILOP0:MOVA,MIN;显示分钟的个位ANLA,#0FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0F0HCLRP2.4CLRP0.4RETLOP1:MOVA,MIN;显示分钟的十位SWAPAANLA,#0FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0F0HCLRP2.5CLRP0.4RETLOP2:MOVA,HOUR;显示时钟的个位ANLA,#0FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0F0HCLRP2.6RETLOP3:MOVA,HOUR;显示时钟的十位SWAPAANLA,#0FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0F0HCLRP2.7CLRP0.4RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;不带小数点的字型码TAB1:DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点的字型码END七.系统调试及结果分析硬件调试硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。取好两跟短的导线,一根导线的其中一端接地,另一端接P2.4~P2.7口中的一个口,若数码管亮,再用另一根导线,其中异端接地,另一端与P0.0~P0.7依次接触,看数码管各段的亮灭情况,从而判断每个数码管各段的好坏及电路的是否正确。软件调试在LCA51编译器下进行汇编程序的编写,以子程序为单位调试,一段一段的编译与访真,最后结合电路板,进行整机联调。结果分析由于中断中对堆栈的处理需要花费时间,所以为了减小误差,实现数字钟的走时精度,应当在编程时尽量使中断次数比较少。八.注意事项1.在焊接电路板之前,应事先画好硬件原理图,把每一根精确排布,合理布局好各类元器件。2.焊接时要注意焊接工艺,由于是通用板,质量不是太高,如果不注意,上面的小铜片很容易损坏,容易导致虚焊。3.电路板及访真机接电源操作时,要注意正负极,并且严格的操作要求进行操作,以免造成元器件和仿真机的损坏。4.在进行程序的编写时,应该熟悉所使用的每一条指令和程序的各项要求。5焊接器件时,应该先焊接小器件,再焊接大器件,先焊接低器件,再焊接高器件。6安装芯片时,应该注意1号脚的位置,如果安装错误,会造成芯片的损坏。7焊接完一个模块都要用万用表检测电源和地是否出现短接,如果出现短路,需要检测出现短路的地方。8在保证焊接准确度的前提下,应该尽可能考虑美观程度。九.心得体会基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数。从而,使数字钟的精度仅仅取决于单片机的产生周期电路和定时器T0硬件电路的精确度;另外,程序较为简洁,具有可靠性较好的可读性和较好的可读性。如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。我在这次的数字钟设计过程中很是受益匪浅。通过对自己大学三年时间所学的知识的回顾,并充分发挥对所学知识的理解和对设计内容思考和书面表达能力,最终顺利完成了。这为自己今后进一步深化学习,积累了一点的宝贵经验。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或者实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。通过这次的课程设计我发现,只有理论水平提高了,才能够把理论和实际内容相结合,我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题。