详细代码讨论加我QQ:1271370903
1.1设计目的
??本设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现LED显示,显示时间为0~9999.99秒,计时精度为0.01秒,能正确地进行计时。其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
1.2设计方案
??本文主要研究基于单片机的秒表设计,主要是控制电路设计,数码管显示的设计,和软件程序的编写。该计时采用单片机定时器精确延时,秒表计时精度0.01秒。有启动,暂停,复位,提醒等功能。
1.3设计任务
??采用四位数码管显示,AT89C51单片机控制,按键启动,暂停,复位,提醒功能等,计时精度00.00-9999.99秒。
1.4 设计要求
??课题需要以MCS-51系列单片机为核心,结合外围电路,制作一款时间参数测量系统。 具体要求如下: (1)提出基于单片机的时间测量系统实现方案。 (2)制作完整的硬件电路图并编写完整的源程序,实现时间参数的测量。 (3)误差要求小于1%。
2.总体方案设计
??按模块划分可分为单片机最小系统电路、按键控制、数码管显示、三个子模块。电路结构划分可以划分为:晶振电路、复位电路、按键电路、显示电路。本次设计的核心是单片机控制模块,所以此设计是单片机应用系统的一种应用。系统采用AT89C51单片机作为核心控制单元,开始按键按下,数码管开始从0.00计时,直到按下暂停按钮,数码管时间显示,如继续计时,继续按下开始按钮,如果此次计时结束重新计时,按下清零按钮从0.00开始。
3.系统软件流程图
4. 电路总体仿真图
5.仿真开始
时间显示从0.00开始
按下开始键开始计时,暂停键看当前时间18.52秒
结束,按清零键,回到原始
6.相关代码
uchar tt,i,flag,mm;
uint num,num1,num2;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint xms)
{
uint xx,yy;
for (xx=xms;xx>0;xx--)
for(yy=110;yy>0;yy--);
}
void display()
{
uchar qian,bai,shi,ge;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
P0=0x00;
P0=table[num2/10];
P2=table1[0];
delay(5);
P0=0x00;
P0=table[num2%10]|0x80;
P2=table1[1];
delay(5);
P0=0x00;
P0=table[qian];
P2=table1[2];
delay(5);
P0=0x00;
P0=table[bai]|0x80;
P2=table1[3];
delay(5);
P0=0x00;
P0=table[shi];
P2=table1[4];
delay(5);
P0=0x00;
P0=table[ge];
P2=table1[5];
delay(5);
}
void keyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(!s1);
TR0=0;
}
}
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
TR0=1;
}
}
if(s4==0)
{
delay(10);
if(s4==0)
{
while(!s4);
TR0=0;
num=0;
num2=0;
}
}
}
|