0
点赞
收藏
分享

微信扫一扫

基于单片机的秒表计时器系统设计(#0400)


当今社会在很多比赛中,都要用到时间的长短来衡量比赛的结果。本设计是一个利用单片机控制的多功能秒表系统。

功能描述

1、采用51单片机作为控制芯片;

2、数码管前两位显示分钟,后两位显示秒;

2、正计时、倒计时可以切换;

3、倒计时时间可设置,计时结束蜂鸣器报警;

4、计时过程中最多可记录10个时刻点,过后可翻阅记录的数据;

基于单片机的秒表计时器系统设计(#0400)_计时器

按键说明

K1:开始/停止计时;倒计时设置模式下,设置位加1;

K2:计时进行中按下,记录时间点;倒计时设置模式下,设置位切换;

K3:计时值归零;

K4:正/倒计时模式切换(计时停止状态下操作);

K5:进入/退出倒计时设置模式(计时停止状态下操作);

电路设计

采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

基于单片机的秒表计时器系统设计(#0400)_单片机_02

仿真设计

采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

基于单片机的秒表计时器系统设计(#0400)_秒表_03

主程序设计

void main()
{
uc h,g,k;
init();
clr();

while(1)
{
display(); //刷屏显示数码管
alarm();
if(key1==0) //开始/暂停按钮
{
delay(5);
if(key1==0)
{
TR0=~TR0;
while(!key1) display();
}
}
if(key2==0) //记录按钮
{
delay(5);
if(key2==0)
{
if(TR0==1)//当在运行中按下记录键则存储记录
{
for(g=1;g<10;g++)
{
for(k=0;k<4;k++)
{
val[g-1][k]=val[g][k]; //低位存储的数据向高位移一位
}
}
for(h=0;h<4;h++)
{
val[9][h]=num[h];//将当前时间存储
}
}
else//在停止状态下按下记录键查看记录,按动一次序列递减一次,即查看上一次记录
{
for(h=0;h<4;h++)
num[h]=val[val_index][h];//将当前时间存储
val_index--;
if(val_index<0)
val_index=9;
}
while(!key2) display(); //按键释放
}
}
if(key3==0) //复位按钮
{
delay(5);
if(key3==0)
{
clr(); //将数据清零
while(!key3) display(); //按键释放
}
}
if((key4==0)&&(TR0==0)) //模式选择按钮,仅在停止状态下有效
{
delay(5);
if(key4==0)
{
mode=~mode; //正计时倒计时切换
while(!key4) display();
}
}
if((key5==0)&&(TR0==0)) //时间设置,仅在停止状态下有效
{
delay(5);
if(key5==0)
{
while(!key5)
display();
setup(); //调用设置函数
}
}
}
}

源文件获取

 

举报

相关推荐

0 条评论