您好,欢迎访问三七文档
广广东东工工贸贸职职业业技技术术学学院院单片机C程序课程设计报告书题目:电子钟设计报告姓名:李楚森学号:1201322指导老师:刘益标设计时间:2014年5月广东工贸职业技术学院单片机C程序课程设计报告2单片机课程设计报告摘要:数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。从有利于学习的角度考虑,这里主要介绍以中小规模集成电路设计数字钟的方法。经过了数字电路设计这门课程的系统学习,特别经过了关于组合逻辑电路与时序逻辑电路部分的学习,我们已经具备了设计小规模集成电路的能力,借由本次设计的机会,充分将所学的知识运用到实际中去。本次课程设计要求设计一个数字钟,基本要求为数字钟的时间周期为24小时,数字钟显示时、分、秒,数字钟的时间基准一秒对应现实生活中的时钟的一秒。供扩展的方面涉及到定时自动报警、按时自动打铃、定时广播、定时启闭路灯等。因此,研究数字钟及扩大其应用,有着非常现实的意义。广东工贸职业技术学院单片机C程序课程设计报告3目录一、设计目的……………………………4二、设计任务……………………………4三、硬件分析与方案选择………………4四、电子钟设计程序框图………………8五、电子钟的主程序……………………15六、功能说明……………………………20七、原理图………………………………21八、检测与调试…………………………21九、总结与体会…………………………22广东工贸职业技术学院单片机C程序课程设计报告4一.设计目的1)学习51单片机内部定时/计数器的原理及应用;2)了解使用单片机处理复杂逻辑的方法;3)掌握多位数码动态显示的方法;4)掌握独立式按键的读键和处理方法。二.设计任务以51单片机AT89C51作为控制元件,设计一个数字电子钟。1)基本要求①用AT89C51单片机的定时/计数器T0产生数字电子钟的基本计时单位——秒;②显示时、分、秒,其中分和秒为六十进制,时为二十四进制。计满60秒,分加1;计满60分,时加1;计满24时,返回00-00-00重新开始计时。③时、分、秒之间用“-”隔开,例如9时25分45秒显示为09-25-45;④开机时显示时间为00-00-00;⑤在P1口接4个按钮开关,分别用于调节秒、分、时以及时间复位。每按下一次秒、分、时按钮,秒、分、时对应增1;按下复位按钮,时间被复位为00-00-00。2)进阶要求①在P1口另接4个按钮开关,其中一个用于切换时间设定和闹钟设定,当时间设定有效时,可设定时间;当闹钟设定有效时,可设定闹钟时间。②在P2.0引脚接一个发光二极管,当计时到闹钟设定时间的前5秒发光二极管开始闪烁,持续10秒后熄灭。三.硬件分析与方案选择1.系统的组成与原理方框图本系统由单片机最小系统、时间设定电路、闹钟设定电路、8位数码管动态显示电路、闹钟响应模拟电路组成,如图1所示。广东工贸职业技术学院单片机C程序课程设计报告5图1系统硬件组成框图2.系统电路模块1)AT89C51单片机最小系统系统,如图2所示。图2AT89C51单片机最小系统系统2)时间设定和闹钟设定电路,如图3所示。①时间设定:在P1口的P1.0~P1.3引脚接4个按钮开关,分别用于调节秒、分、时以及时间复位。每按下一次秒、分、时按钮,秒、分、时对应增1;按下复位按钮,时间被复位为00-00-00。②闹钟设定:在P1口的P1.4~P1.6引脚另接3个按钮开关,分别用于设定闹钟的秒、分、时。图中P1.7引脚的按钮开关用于切换时间设定和闹钟设定,当时间设定有效时,可设定时间;当闹钟设定有效时,可设定闹钟时间。闹钟设定电路时间设定电路8位数码管动态显示电路闹钟响应模拟电路AT89C51单片机广东工贸职业技术学院单片机C程序课程设计报告6图3时间设定和闹钟设定电路3)8位数码管动态显示电路,如图4所示。本实训需用8个数码管,为节约I/O口资源,采用动态显示方法。这8位数码管的分配自左向右依次为:第一、二位显示“时”,第三位显示隔离符“-”,第四、五位显示“分”,第六位显示显示隔离符“-”,第七、八位显示秒。广东工贸职业技术学院单片机C程序课程设计报告7图48位数码管动态显示电路4)闹钟响应模拟电路,如图5所示。在P2.0引脚接一个发光二极管,当计时到闹钟设定时间的前5秒发光二极管开始闪烁,持续10秒后熄灭。图5闹钟响应模拟电路广东工贸职业技术学院单片机C程序课程设计报告8四.电子钟设计程序框图1)计时中断函数设计使用定时/计数器0的中断方式来实现计时,方法是设置定时/计数器0工作于方式1,定时50ms为基本时间单元,每次计数溢出,TF0被置1,向CPU申请中断。将计时功能用中断函数实现,每中断一次,基本时间单元增1,中断20次即为1s,此时“秒”加1并将基本时间单元清0;“秒”加到60时,“分”加1,并将“秒”清0;“分”加到60时,“时”加1,并将“分”清0;时加到24时,将“时”、“分”、“秒”和基本时间单元都清0。流程图如下。TCNT=20?开始T0初始化基本时间单元TCNT增1秒加1,TCNT清0秒=60?分加1,秒清0分=60?时加1,分清0时=24?TCNT、时、分、秒清0结束是否是否是否是否广东工贸职业技术学院单片机C程序课程设计报告92)时间显示内容处理函数和闹钟显示内容处理函数定义一个数组dispbuf[8],用于存放时、分、秒及其分隔符,通过下面函数存放时、分、秒的十位、个位和分隔符。程序中SECOND:秒;MINITE:分;HOUR:时。定义一个数组dispnz[8],用于存放闹钟设定的时、分、秒及其分隔符,通过下面函数存放闹钟时、分、秒的十位、个位和分隔符。程序中SECOND1、MINITE1、HOUR1分别为闹钟设定的秒、分、时。3)时间动态扫描显示函数和闹钟设置动态扫描函数在程序开始,定义一个数组存放数码管显示的段码表,ucharcodetable[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x39,0x00};将时间显示内容数组dispbuf[8]存放的内容进行动态显示,函数名为SCANDISP(),如下所示广东工贸职业技术学院单片机C程序课程设计报告10将闹钟显示内容数组dispbuf[8]存放的内容进行动态显示,函数名为SCANDISPNZ(),如下所示4)时间设定及复位按键扫描和键值处理函数广东工贸职业技术学院单片机C程序课程设计报告115)闹钟设定按键扫描和键值处理函数广东工贸职业技术学院单片机C程序课程设计报告12广东工贸职业技术学院单片机C程序课程设计报告136)主函数是否否切换开关断开开始时间和闹钟显示初始化T0初始化,开放T0中断熄灭闹钟响应模拟灯执行时间设定及复位按键扫描和键值处理函数执行闹钟设定按键扫描和键值处理函数广东工贸职业技术学院单片机C程序课程设计报告147).主体模块划分五.电子钟的主程序#includereg51.h#defineucharunsignedchar;voidDISPLAY();voidDISPLAYNZ();voidKEY_TEST();voidKEY1_TEST();voidSCANDISP();voidSCANDISPNZ();voidalarm();ucharmsec=0;广东工贸职业技术学院单片机C程序课程设计报告15ucharSECOND=0;ucharSECOND1=0;ucharMINITE=0;ucharMINITE1=0;ucharHOUR=0;ucharHOUR1=0;uchari,value,p,q,n,t;uchardispbuf[]={0,0,0,0,0,0,0,0};uchardispnz[]={0,0,0,0,0,0,0,0};ucharscan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucharcodetable[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x39,0x00};sbitS_SET=P1^0;sbitM_SET=P1^1;sbitH_SET=P1^2;sbitRESET=P1^3;sbitS1_SET=P1^4;sbitM1_SET=P1^5;sbitH1_SET=P1^6;sbitTRIGGER=P1^7;sbitP2_0=P2^0;bitrestar;bitarmbit;bitrtimbit;bittimbit;voiddelay(unsignedm){if(TRIGGER==0){while(m--){DISPLAYNZ();}}else{while(m--){DISPLAY();}}}voidmain(){restar=0;armbit=0;rtimbit=0;TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1){DISPLAY();KEY_TEST();while(!TRIGGER)广东工贸职业技术学院单片机C程序课程设计报告16{DISPLAYNZ();KEY1_TEST();}if((armbit==1)&&(rtimbit==0)){if((HOUR==HOUR1)&&(MINITE==MINITE1)&&(SECOND==SECOND1))timbit=1;if(timbit==1)alarm();}if(restar==1){msec=0;MINITE=0;SECOND=0;HOUR=0;TH0=0x3c;TL0=0xb0;restar=0;}}}voidKEY_TEST(){DISPLAY();P1=0xff;restar=0;if(S_SET==0){delay(20);if(S_SET==0){SECOND++;if(SECOND==60){SECOND=0;}while(SECOND==0)DISPLAY();}}if(M_SET==0){delay(20);if(M_SET==0){MINITE++;if(MINITE==60){MINITE=0;}while(MINITE==0)DISPLAY();}}if(H_SET==0){delay(20);if(H_SET==0){广东工贸职业技术学院单片机C程序课程设计报告17HOUR++;if(HOUR==24){HOUR=0;}while(HOUR==0)DISPLAY();}}if(RESET==0){delay(20);if(RESET==0){restar=1;}}}voidKEY1_TEST(){DISPLAYNZ();P1=0xff;rtimbit=1;if(S1_SET==0){delay(20);if(S1_SET==0){SECOND1++;if(SECOND1==60){SECOND1=0;}while(S1_SET==0)DISPLAYNZ();armbit=1;}}if(M1_SET==0){delay(20);if(M1_SET==0){MINITE1++;if(MINITE1==60){MINITE1=0;}while(M1_SET==0)DISPLAYNZ();armbit=1;}}if(H1_SET==0){delay(20);if(H1_SET==0){HOUR1++;if(HOUR1==24){广东工贸职业技术学院单片机C程序课程设计报告18HOUR1=0;}while(H1_SET==0)DISPLAYNZ();armbit=1;}}rtimbit=0;}voidDISPLAY(){SCANDISP();dispbuf[6]=SECOND/10;dispbuf[7]=SECOND%10;
本文标题:电子钟设计报告
链接地址:https://www.777doc.com/doc-7319694 .html