资源描述:
《基于stc89c52的数字电子钟的设计与开发》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、JDFJKDHFKAHGJHLKFHJHAKHFLJKDHFKLJASHDFKJHAKLDFHDLSFHKLDSJ制作和调试(50分)设计报告(50分)评定等级指导教师湖州师范学院求真学院信息与工程系单片机应用系统设计总结报告题目:基于STC89C52的数字电子钟设计专业电子科学与技术班级092835班姓名姚宇飞学号09283524指导教师吴小红万东辉信息与工程系2011年4月14日DFSGSJDFKGHERUHJKDHKLSHDKJHKSHKFHLKGHDLSFGHDSKLFHGLDKSFHGLKFGDSJDFJKDHFKAHGJHLKFHJHAKH
2、FLJKDHFKLJASHDFKJHAKLDFHDLSFHKLDSJ设计任务:1.采用STC单片机和键盘,设置4位LED数码管显示的电子时钟;2.上电时,显示12:00并且“:”间隔500ms闪烁,其中“:”代表秒功能;3.具有闹钟设定,闹铃功能;4.通过键盘可修改时间。发挥功能:1.实现时钟整点“嘟”声提示功能;2.实现秒表功能。秒表具有计时开始,计时结束,及时复位等功能。总体设计:原理图中应该包括8052芯片,晶振复位系统,按键大概4个,蜂鸣器,数码管1.首先分析数码管,此次课程设计的数码管为共阳极,所以低电平有效。且管脚分别为P1^4,P1^5,
3、P1^6,P1^7;2.蜂鸣器P3^2必须接低电平有效;3.按键是一个矩阵按键,一定要进行键盘扫描,4*3型的~~管脚分别是P2^7,P2^6,P2^5,P2^4,P2^3,P2^2,P2^1,P2^0,在扫描的时候必须另P2^4接低电平有效。4.晶振是12MHZ;还有电阻阻值详细见电路图设计流程图:走时——时钟分修改——时钟时修改——闹钟分修改——闹钟时修改——走时说明:状态的修改由按键1的按下的次数决定,时钟,闹钟的调时用按键2和按键3,按键2调上,按键3调下,按键4用了返回走时状态。原理图:程序#include#include<
4、intrins.h>#defineuintunsignedint#defineucharunsignedchar//按键端口定义sbitkey1=P2^0;//定义按键--功能键DFSGSJDFKGHERUHJKDHKLSHDKJHKSHKFHLKGHDLSFGHDSKLFHGLDKSFHGLKFGDSJDFJKDHFKAHGJHLKFHJHAKHFLJKDHFKLJASHDFKJHAKLDFHDLSFHKLDSJsbitkey2=P2^1;//按键定义--增加键sbitkey3=P2^2;//按键定义--减少键sbitkey4=P2^3;//按键定义
5、--确定键sbitbeep=P2^4;//蜂鸣器端口sbitspeaker=P3^2;//数码管端口sbitcom1=P1^4;sbitcom2=P1^5;sbitcom3=P1^6;sbitcom4=P1^7;//全局变量定义uintz=0;ucharflag=1;uchartemp=0;ucharnum1=0,num4=0;//设置按键按下次数ucharspeaker_num;ucharsecond_miao_ting;ucharsecond_min_ting;ucharsecond_miao=0;ucharsecond_min=0;ucharcl
6、k_hour=12,clk_min=0,clk_miao=0;ucharalm_hour=0,alm_min=0;ucharcount=0,count1=0;ucharT0_int_nums;//T0中断次数ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};//数码管正码ucharcodetable1[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82,0x7f};//数码管倒码//voidjinwei
7、();voidzhengdian();//延时程序voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--);for(j=1060;j>0;j--);}//显示子程序voiddisplay(){if(num1==0&&num4==0){DFSGSJDFKGHERUHJKDHKLSHDKJHKSHKFHLKGHDLSFGHDSKLFHGLDKSFHGLKFGDSJDFJKDHFKAHGJHLKFHJHAKHFLJKDHFKLJASHDFKJHAKLDFHDLSFHKLDSJif(count<50){com4=0;com
8、3=1;com2=1;com1=1;//显示时钟时的十位P0=table[clk_hour/1