资源描述:
《工程设计结题报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、工程设计结题报告数字时钟设计组号:6作者:指导老师:日期:2007年7月29日一功能要求制作一个电子时钟,该时钟能够正确显示分秒,且分秒都能显示两位数。同时具有跑表功能。二方案论证按系统功能要求,决定控制系统采用AT89C52单片机。系统除能确保实现要求的功能外,还可以方便地进行其它的扩展。电子时钟系统设计方案框图如下所示AT89C52P1P34位LED显示上电复位电源电路串口通信三系统硬件电力的设计单片机的P1口,P3.0-P3.3端口作为4为LED数码管显示控制。P3.5端口按狃可用作时钟显示
2、和调节转换/秒表显示转换,P3.6端口按钮可用作:时间调节/秒表工作转换。四系统程序的设计2.4.1主函数系统上电后,程序先将P2口置0,然后调用显示子函数和A/D转换测量子函数并进入循环。系统默认为循环显示8个通道的电压值,每个通道的数据显示时间在1S左右,电压测量的周期为8ms。主函数执行的流程图如图2.3所示。2.4.2显示子函数显示功能采用动态扫描发实现4位数码管的数值显示。测量所得的A/D转换数据放在8个定义的ad_data[8]内存单元中,测量所得的A/D数据在显示时需要经过转换变成十
3、进制BCD码。列扫描采用扫字代码,每位LED显示器显示时间为1ms,每路电压数据显示时间约为1s。图2.2数字电表电路原理图五调试及性能分析2.5.1调试与测试采用KeiC51ver7.09版的C编译器进行C程序编译及调试,同时进行硬件电路板的设计制作,烧好程序后进行软件联调1 程序调试 程序编写好烧入芯片,装在电路板上基本能记时。但是由于数码管(共阳)的亮度不够硬件又加上了三极管,结果显示就乱了。将程序扫描数组的数据取反后,芯片就能够正常工作,时钟的调试和显示都正常了。可是当用秒表的时候又发现
4、了新的问题,当手动停止秒表跑动的时候数码管的显示就不清楚,数码管里一些不应该亮的发光二极管也出现不同程度的发光,使得显示的数据不正常。为了解决这个问题就修改了跑表的子函数,在这个子函数的末加上了延时(delay1ms(1))以及赋值(P3=0xff)。最后数码管显示都正常了。通过这次实验,我们对单片机以原理的了解以及利用C语言来编程序都有了很大的进步。单片机的原理和程序的编辑,是设计的关键部分,我们应该尽最大的努力去学好他们,这对我们以后的学习也是非常有用的。2硬件调试在这次实验中,由于我们用的上
5、次是实验板,所以在硬件上并没有做过多的改动。但我们上次实验中有些部分的原理不是很理解,所以做的作品不是很理想。其中数码管不是很亮是最大的问题,所以我们在这次的实验中做了改进:我们加入了9015的三极管。结果数码管的显示果然好了很多,基本达到所需要求。六源程序:#includeunsignedcharcodetable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsignedcharcodepow
6、er[4]={0xfe,0xfd,0xfb,0xf7};unsignedchartime[4]={1,0,0,0};//时间数组unsignedchardingshi[4]={0,0,0,0};//定时数组unsignedcharpaomiao[4]={0,0,0,0};//跑秒数组unsignedchartemp[4];//跑秒临时数组unsignedcharcount=0;//计数变量unsignedchark,n,t;//延时函数delay1ms(unsignedchart){unsigne
7、dchari,j;for(i=0;i8、dingshi[2]=0;dingshi[3]=0;}if(P3_5==0)break;//响应按键}}//定时用的设定秒钟函数voidalarm2(){while(1){for(k=0;k<2;k++){P1=table[dingshi[k]];P3=power[k];delay1ms(1);}if(P3_6==0)dingshi[0]++;while(P3_6==0);if(dingshi[0]==10){dingshi[1]++;dingshi[0]=0;}if(dingsh