当今社会在很多比赛中,都要用到时间的长短来衡量比赛的结果。本设计是一个利用单片机控制的多功能秒表系统。
功能描述
1、采用51单片机作为控制芯片;
2、数码管前两位显示分钟,后两位显示秒;
2、正计时、倒计时可以切换;
3、倒计时时间可设置,计时结束蜂鸣器报警;
4、计时过程中最多可记录10个时刻点,过后可翻阅记录的数据;
按键说明
K1:开始/停止计时;倒计时设置模式下,设置位加1;
K2:计时进行中按下,记录时间点;倒计时设置模式下,设置位切换;
K3:计时值归零;
K4:正/倒计时模式切换(计时停止状态下操作);
K5:进入/退出倒计时设置模式(计时停止状态下操作);
电路设计
采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
仿真设计
采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
主程序设计
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(); //调用设置函数}}}
}
源文件获取
关注公众号【电子开发圈】,首页发送 “秒表” 获取;