大家好,欢迎来到IT知识分享网。
当今社会在很多比赛中,都要用到时间的长短来衡量比赛的结果。本设计是一个利用单片机控制的多功能秒表系统。
功能描述
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(); //调用设置函数 } } } }
源文件获取
关注公众号【电子开发圈】,首页发送 “秒表” 获取;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152948.html