【Proteus仿真】【51单片机】比赛计时计分系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用LCD1602显示模块、矩阵按键模块、蜂鸣器等。
主要功能:
系统运行后,LCD1602默认显示第1节次比赛时间、AB得分。默认是12分钟倒计时,在未开始比赛时,可通过S4键设置时间,S8和S12键调节时间。时间设置好后,可按下S1键开始,比赛过程中,可按下S2键暂停,比赛过程中或结束后,可按下S3键改变节次,共4节次,每节次的默认时间是12分钟。比赛过程中,可通过S5-S7键调节A队得分,可通过S9-S11键调节B队得分。比赛时间结束,蜂鸣器报警。
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*///系统开机界面显示
void sys_open_show(void)
{lcd1602_clear();lcd1602_show_string(2,0,"1-- : ");lcd1602_show_string(2,1,"A:000--B:000");
}//系统数据显示
void sys_data_show(void)
{while(1){//显示倒计时时间lcd1602_show_nums(5,0,sys_ctrl.min,2,0x80);lcd1602_show_nums(8,0,sys_ctrl.sec,2,0x80);//显示节次lcd1602_show_nums(2,0,sys_ctrl.cnt,1,0);//显示AB得分lcd1602_show_nums(4,1,sys_ctrl.score_a,3,0x80);lcd1602_show_nums(11,1,sys_ctrl.score_b,3,0x80);//设置时间闪烁指示switch(sys_ctrl.mode){case 1://分lcd1602_show_string(5,0," ");delay_ms(50);lcd1602_show_nums(5,0,sys_ctrl.min,2,0x80);break;case 2://秒lcd1602_show_string(8,0," ");delay_ms(50);lcd1602_show_nums(8,0,sys_ctrl.sec,2,0x80);break;}break;}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_matrix_flip_scan();//开始if(key==1){beep_alarm(100,10);sys_ctrl.start=1;TR0=1;//打开定时器}//暂停else if(key==2){beep_alarm(100,10);sys_ctrl.start=0;TR0=0;//关闭定时器 }//更换节次else if(key==3){beep_alarm(100,10);sys_ctrl.start=0;TR0=0;//关闭定时器sys_ctrl.cnt++;if(sys_ctrl.cnt>4)sys_ctrl.cnt=1;//更换节次,每次重新开始时间sys_ctrl.min=12;sys_ctrl.sec=0; }//如果还未开始,修改时间if(sys_ctrl.start==0){//设置if(key==4){sys_ctrl.mode++;if(sys_ctrl.mode>=3)sys_ctrl.mode=0;}//加else if(key==8){switch(sys_ctrl.mode){case 1://分sys_ctrl.min++;if(sys_ctrl.min>=60)sys_ctrl.min=0;break;case 2://秒sys_ctrl.sec++;if(sys_ctrl.sec>=60)sys_ctrl.sec=0;break; } }//减else if(key==12){switch(sys_ctrl.mode){case 1://分sys_ctrl.min--;if(sys_ctrl.min<0)sys_ctrl.min=59;break;case 2://秒sys_ctrl.sec--;if(sys_ctrl.sec<0)sys_ctrl.sec=59;break; } }}//比赛中,得分统计else{ switch(key){case 5://A队加1分sys_ctrl.score_a+=1;break;case 6://A队加2分sys_ctrl.score_a+=2;break;case 7://A队加3分sys_ctrl.score_a+=3;break;case 9://B队加1分sys_ctrl.score_b+=1;break;case 10://B队加2分sys_ctrl.score_b+=2;break;case 11://B队加3分sys_ctrl.score_b+=3;break;}}
}//系统功能控制
void sys_fun_ctrl(void)
{//比赛结束,蜂鸣器报警if(sys_ctrl.overflag){sys_ctrl.overflag=0;lcd1602_show_nums(8,0,sys_ctrl.sec,2,0x80);beep_alarm(8000,10);}
}//应用控制系统
void app_control_sys(void)
{sys_parm_init();//系统参数初始化lcd1602_init();//LCD1602初始化time0_init();//初始化定时器0,定时10mssys_open_show();//系统开机界面显示while(1){sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制 }
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
【Proteus仿真】【51单片机】比赛计时计分系统设计相关推荐
- 【Proteus仿真】【STM32单片机】比赛计时计分系统设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块.矩阵按键模块.蜂鸣器等. 主要功能: 系统 ...
- 51单片机 Proteus仿真 基于单片机的篮球计分器设计 LCD
基于单片机的篮球计分器设计 设计LCD显示篮球比分牌 通过加分按钮可以给A队或B队加分 设计对调功能,A队和B队分数互换,意味着中场交换场地 显示比赛倒计时功能 创新内容:如显示第几小节
- 使用proteus仿真51单片机来实现十字路口红绿灯
一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...
- Proteus仿真51单片机生日快乐音乐播放器
实验名称:基于51单片机音乐播放器 实验目的: 声音的音调不同是因为声音的频率不同造成的.那么,就可以通过单片机发送不同频率的脉冲信号给蜂鸣器,来达到让蜂鸣器发出不同音调声音的目的.不同频率的脉冲信号 ...
- Proteus仿真--51单片机最小系统
1.单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路.时钟电路.复位电路. 下面着重介绍时钟 电路和复位电路. 1)时钟电路 单片机工作时,从取指令到译码 ...
- proteus仿真-51单片机定时器程序
定时器0初始化和定时器中断函数 void Timer0Init() {TMOD|=0x01;//0000 0001,最后2位-工作方式的选择,这里选择16位定时器'01'TH0 = (65536-10 ...
- 【Proteus仿真】【51单片机】电子密码锁设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶.矩阵按键.蜂鸣器.EEPROM模块.继电器模块等. ...
- 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)
本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...
- 基于51单片机的火灾检测设计(仿真+程序+原理图+论文报告)
本设计: 基于51单片机的火灾检测设计(仿真+程序+原理图+论文报告) Proteus仿真版本:proteus7.8 原理图:Altium Designer 程序编译器:keil 4 编程语言:C语言 ...
最新文章
- rstudio 修改代码间距_Windows电脑使用Rstudio会有多少错误呢
- 什么是百度竞价创意断句符
- .net生成excel并弹出保存提示框(转载)
- 汉字正字表达式解决方案
- ios把数据传递到另一个页面_iOS 委托 页面之间传递数值
- freecodecamp_如何对freeCodeCamp文章提供反馈
- [缓存]迅雷下载原理
- 听说你还不懂面向对象??
- 关于JVM中YGC的来龙去脉
- 将字符串转为16进制数_Python 如何将字符串转为字典
- 【leetcode】刷题暂告一个段落
- [渝粤教育] 武汉理工大学 复变函数与积分变换 参考 资料
- lzw编码过程详解_【手打】LZW编码的C/C++实现
- linux基础期末考试免费,linux基础期末考试试题.doc
- 浅谈大数据广告下个人隐私保护,开发者视角的广告原理
- Kindle倒下,iReader接力
- ENSP下载还有其他资料地址
- 计算机组成原理 学后感,【计算机组成原理实验心得体会】_计算机组成原理实验心得_计算机组成原理实验感想...
- 《人机交互技术》第二章 感知和认知基础
- 一键生成IOS App Icon工具
热门文章
- 工业相机的速度(帧频/行频)
- mac apache加载php,Apache 2.4没有加载php5.5与Mac OS 10.8
- 7Z命令在linux下的使用
- TemporalAdjusters.firstDayOfNextYear
- Shader_GLSL、HLSL API异同对比
- PHP PEAR网站遭黑客入侵,官方软件安装包被篡改
- l7sa008b故障代码_奥克斯空调故障显示代码E1E2E3E4E5E6E7E8E9
- 1.android入门不能忽视的问题之出现“ClassNotFoundException: Didn't find class ...Activity on path: DexPathLis”错误
- 【236】◀▶IEW-Unit01
- 淘宝开店怎么做运营?