基于单片机的电子秒表设计

发布时间:2020-03-20 13:48:11

一、设计任务

(一)基本任务:

1. 应用AT89S51单片机设计单片机实现数字秒表(LED显示0--59秒)电路;

2. 选用2LED数码显示,实时显示两位秒,采用按键式实现秒表的走、停和清零。

3. 硬件设计:根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;

4. 软件设计:根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;

5.原理图设计:根据所确定的设计电路,利用ProtelProteus等有关工具软件绘制电路原理图、PCB板图、提供元器件清单;

二、设计原理

应用AT89S51单片机设计单片机实现数字秒表(LED显示秒)电路;

2LED数码显示表,采用按键式实现

软时钟是利用单片机内部的定时器/计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(250um),然后用系统中断(对250um计数4000次),合计延时一秒钟秒计59清零。然后通过数码管把它们的内容在相应位置显示出来即可。

在具体处理时,定时器/计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器/计数器初始化、调用显示子程序和控制子程序。

三、方案与论证

模块一:定时器中断服务子程序;可以调用中断来调用子程序。

模块二:主函数的设置

模块二:延时程序;可以有效的利用人们的暂留效应。

模块三:控制LED管的数字的加运算秒表开始加计数

四、设计内容

(一)系统框图和设计原理图

设计框图:

设计原理图:

(二)软件设计流程图

五、总结

通过本次设计,对单片机的独立按键,LED的动态显示有了进一步的认识,并能基本掌握和运用。

六、参考文献

《单片机实验指导书》 刘强 段纯爽主编

附录:设计源程序

#include

#define KEY P1_7

#define CON P2

#define DATA P0

#define unchar unsigned char

#define unint unsigned int

unchar second=0;

unint count=4000;

/*51实验箱共阳极笔段码(0123456789)*/

//unchar code table[]={0x84,0xf5,0x46,0x54,0x35,0x1c,0x0c,0xd5,0x04,0x14};

/*标准共阴极笔段码(0123456789)*/

unchar code table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极笔段码(标准)

void delay();

void display();

void tmr0_int() interrupt 1

{

count--;

if(!count)

{

second++;

count=4000;

}

}

void main()

{

TMOD=0X02;//定时器0工作在方式2

TH0=0X06;

TL0=0X06;//定时器0计数初值

IE=0X82;//开总中断和定时器0中断

TR0=1;

while(1)

{

display();

}

}

void delay()

{

unchar a,b;

for(a=4;a>0;a--)

for(b=248;b>0;b--);

}

void display()

{

if(second>59)

{

second=0;

}

if(second>9)

{

CON=0XFE;

DATA=table[second/10];

delay();

CON=0XFF;

CON=0XFD;

DATA=table[second%10];

delay();

CON=0XFF;

}

else

{

CON=0XFD;

DATA=table[second%10];

}

}

基于单片机的电子秒表设计

相关推荐