【Proteus仿真】【STM32单片机】比赛计时计分系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真STM32单片机控制器,使用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;TIM_Cmd(TIM2,ENABLE);//打开定时器}//暂停else if(key==2){beep_alarm(100,10);sys_ctrl.start=0;TIM_Cmd(TIM2,DISABLE);//关闭定时器 }//更换节次else if(key==3){beep_alarm(100,10);sys_ctrl.start=0;TIM_Cmd(TIM2,DISABLE);//关闭定时器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 appdemo_show(void)
{sys_parm_init();//系统参数初始化key_matrix_init();BEEP_Init();lcd1602_init();//LCD1602初始化TIM2_Init(500-1,71);//定时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仿真】【STM32单片机】比赛计时计分系统设计相关推荐
- 【Proteus仿真】【51单片机】比赛计时计分系统设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602显示模块.矩阵按键模块.蜂鸣器等. 主要功能: 系统运行后 ...
- 51单片机 Proteus仿真 基于单片机的篮球计分器设计 LCD
基于单片机的篮球计分器设计 设计LCD显示篮球比分牌 通过加分按钮可以给A队或B队加分 设计对调功能,A队和B队分数互换,意味着中场交换场地 显示比赛倒计时功能 创新内容:如显示第几小节
- 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)
编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...
- 利用Proteus仿真STM32实现按键控制LED灯设计
1. 前言 Proteus是英国著名的EDA工具(仿真软件),从原理图布图.代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计.是世界上唯一将电路仿真软件.PC ...
- 基于STM32单片机水位检测系统仿真设计
文章目录 主要功能 仿真图 程序(提供源文件源码) 本设计基于STM32单片机水位检测系统仿真设计(proteus仿真+程序) 仿真图proteus 8.11 程序编译器:keil 5 编程语言:C语 ...
- Proteus简单入门教程以及使用Proteus仿真STM32F103单片机和Arduino单片机
工欲善其事必先利其器,有条件的朋友直接使用开发板学习即可,但有时候手边没有实物开发板可以用,那么可以借助一些仿真软件运行我们的程序,Proteus算是使用的比较多的一种仿真软件,我们使用它来做STM3 ...
- 【软件相关】Proteus仿真STM32记录
文章目录 0 前期教程 1 前言 2 先说说建议的流程 3 需要注意的事项 3.1 供电网配置不要忘了 3.2 ADC模块的使用 3.3 元器件查询手册 4 一些小技巧 4.1 快速添加标号 4.2 ...
- 使用 Proteus 仿真 STM32
使用 Proteus 仿真 STM32 创建项目 新建工程 完成 连接元器件 编辑元件 Program File Crystal Frequency 配置供电网 后续 创建项目 新建工程 一直下一步就 ...
- 9、★♥★基于STM32单片机的颜色检测仪设计♥☆
9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 文章目录 9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 引言 1.系统概述 1.1.设计任务 1.2.设计要求 2.方案设计与论证 2.1.芯 ...
最新文章
- java android下载文件_Android 下载文件(jsp做的服务器上)下载下来和源文件大小不一...
- 深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构
- JAVA 捕获异常所遇BUG
- 常量指针与指针常量勘误
- 1 QM配置-基本配置-维护工厂等级设置
- AspNetCore中使用Ocelot之 IdentityServer4(1)
- 人机协同、数据驱动,云时代SOC的演进之路
- OpenCV之线性混合操作
- html能转成stp吗,3DMax怎么转出成stp/igs文件呢?
- PC版Android系统声卡驱动,android下调试声卡驱动之概述
- Markdown编辑器——Editor.md的使用
- Linux基础入门到精通之虚拟机中安装Linux系
- 西瓜书研读——第三章 线性模型: 线性判别分析 LDA
- 【渝粤题库】广东开放大学 风险投资 形成性考核
- SSTI 模板注入url_for和get_flashed_messages之[WesternCTF2018]shrine
- C语言|博客作业07
- 基站、WiFi、IP定位原理介绍与区别
- python生成指定长度的列表_python怎样创建具有一定长度和初始值的列表
- ros和carla的联合
- C语言函数体内无条件的大括号
热门文章
- 用命令行编译java文件
- web图片铺满网页_CSS中如何设拉伸背景图片铺满屏幕
- tdd干扰波形_TDD-LTE上行干扰定位方法及排查指导手册.doc
- 定时启动软件的脚本。同时也适用于定时打开游戏。
- AD20怎样生成PCB文件??
- Excel取消工作簿密码【忘记工作簿密码的解决方法】
- 用java设计一个动物声音 模拟器,Java语言 设计一个动物声音“模拟器”(用接口实现)...
- linux下mq通道的命令,Linux下MQ的安装
- 爱尔康与好大夫在线达成合作​;武田达泽优获批进入中国 | 跨国药企在中国...
- 企业上市IPO的必要条件