【Proteus仿真】【STM32单片机】数字秒表设计

news2025/1/10 2:50:01

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

系统运行后,数码管默认不显示,当按下K1按下后,启动计时;
可按下K2键记录时间,可记录3次。也可再按下K1键停止,再次按下K1键继续运行;当记录3次完毕后,可按下K3键查询3次记录时间,数码管第2位下面显示.代表第一组成绩,第5位数码管下面显示.代表第二组成绩,最后一位数码管下面显示.代表第三组成绩;在查询程序界面按下K1键可清除数据。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/



//系统数据显示
void sys_data_show(void)
{
	u8 buf[8];
	
	//未查询
	if(sys_ctrl.find==0)
	{
		//显示时间
		buf[0]=gsmg_code[sys_ctrl.min/10];
		buf[1]=gsmg_code[sys_ctrl.min%10];
		buf[2]=0x40;
		buf[3]=gsmg_code[sys_ctrl.sec/10];
		buf[4]=gsmg_code[sys_ctrl.sec%10];
		buf[5]=0x40;
		buf[6]=gsmg_code[sys_ctrl.msec/10];
		buf[7]=gsmg_code[sys_ctrl.msec%10];
	}
	//查询
	else
	{
		buf[0]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][0]/10];
		buf[1]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][0]%10];
		buf[2]=0x40;
		buf[3]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][1]/10];
		buf[4]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][1]%10];
		buf[5]=0x40;
		buf[6]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][2]/10];
		buf[7]=gsmg_code[sys_ctrl.time[sys_ctrl.cnt][2]%10];
		switch(sys_ctrl.cnt)
		{
			case 0: buf[0]|=0x80;buf[4]&=0x7f;buf[7]&=0x7f;break;
			case 1: buf[1]&=0x7f;buf[4]|=0x80;buf[7]&=0x7f;break;
			case 2: buf[2]&=0x7f;buf[4]&=0x7f;buf[7]|=0x80;break;
		}
	}
	smg_display(buf,1);
}

//应用控制系统
void appdemo_show(void)
{
	sys_parm_init();//系统参数初始化
	KEY_Init();
	smg_init();
	SMG_DATAPORT(0x00);//消影
	BEEP_Init();
	TIM2_Init(400-1,70);//定时10ms
	//等待开始键按下
	while(1)
	{
		if(KEY_Scan(0)==KEY1_PRESS)
		{
			sys_ctrl.start=1;
			TIM_Cmd(TIM2,ENABLE); //打开定时器
			break;
		}
	}
	
	while(1)
	{
		sys_data_set();//系统数据设置
		sys_data_get();//系统数据获取
		sys_data_show();//系统数据显示
		sys_fun_ctrl();//系统功能控制		
	}
}

/*******************************************************************************
* 函 数 名         : TIM2_IRQHandler
* 函数功能		   : TIM2中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void TIM2_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM2,TIM_IT_Update))
	{
		sys_ctrl.msec++;
		if(sys_ctrl.msec>=100)
		{
			sys_ctrl.msec=0;
			sys_ctrl.sec++;
			if(sys_ctrl.sec>=60)
			{
				sys_ctrl.sec=0;
				sys_ctrl.min++;
				if(sys_ctrl.min>=60)sys_ctrl.min=0;
			}
		}			
	}
	TIM_ClearITPendingBit(TIM2,TIM_IT_Update);	
}





三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【记录成长】大学时光已过半, 分享我的大二暑期实习经历

你好,我是cpt,本文章记录我大二暑期找实习的过程,以及工作中的点点滴滴,还有一些经验分享,希望能够帮助到你。 实习投递 (BOSS 1k沟通 10面) 投递 我是2023.6.16 才开始投递的 当时真的很晚了 基本很少hc 而且小公司…

Vuex —— 状态管理 | Module

在前面讲到了关于Vuex数据状态管理的内容,讲了Vuex的五大核心属性,在这五大核心属性中就 state、mutation 和 actions 在前面介绍 Vuex 状态管理和讲 Vuex 中的同步和异步操作已经比较熟悉了,getter 是基于state 的计算属性,vue 中…

用青龙面板实现阿里云盘每日签到

什么是青龙面板 ? 青龙面板 是支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 青龙面板从功能上看,和群晖的 计划任务 很像,都可以定时执行一个任务,并发送通知,只是青龙面板更强大一些。 安装 在群晖上以…

【校招VIP】测试计划之系统测试

考点介绍: 系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。测试重点是整个系统的运行以及与其他软件的兼容性。 测试计划之系统测试-相关题目及解析内容可点击文章末尾链接查看&#xff…

静力水准仪的安装方式

监测系统的安装 概括 初次安装监测系统时,需结合现场施工情况遵循先后主次的顺序操作,合理的规划安装顺序可避免安装过程的失误造成的返工; 正常顺序为: 1.确定测量基准点的位置和监测点的位置并作出标记; 2.对基…

引入ojdbc6 11.2.0.3版本

IntelliJ IDEA使用Maven导入一些依赖包&#xff0c;在pom.xml中引入ojdbc6 11.2.0.3版本一直失败&#xff0c;下载不了.jar文件 <dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.3</version…

【Linux】分布式版本控制工具git

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【Linux】…

Autosar模块介绍:Memory_1(模块概述)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍&#xff1a;Memory_1(模块概述 1 参考文献2 术语及缩写3 模块在架构中位置及作用 1 参考文献 [1] AUTOSAR_SWS_NVRAMManager.pdf [2] AUTOSAR_SRS_MemoryServices.pdf [3] AUTOSAR_SRS_MemoryHWAbstractionLayer.pdf [4] AUTOS…

dbeaver连sqlserver默认数据库

url:jdbc:sqlserver://localhost:1433

Pytorch-CNN-CIFAR10

文章目录 model.pymain.py运行图 model.py import torch.nn as nn import torch.nn.functional as F import torch.nn.init as init class CNN_cls(nn.Module):def __init__(self,in_dim):super(CNN_cls,self).__init__()self.conv1 nn.Conv2d(in_dim,32,1,1)self.pool1 nn.…

云原生微服务治理 第五章 Spring Cloud Netflix 之 Ribbon

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第四章 Spring Cloud Netflix 之 Ribbon 文章目录 系列文章目录[TOC](文章目录) 前言1、负载均衡1.1、服务端负载均衡1.2、…

JavaScript系列从入门到精通系列第五篇:JavaScript中的强制类型转换包含强制类型转换之Number,包含强制类型转换之String

文章目录 前言 一&#xff1a;强制类型转换 1&#xff1a;强制类型转换为String (一)&#xff1a;方式一&#xff1a;调用被转换类型的toString()方法 (二)&#xff1a;方式二&#xff1a;调用String函数 2&#xff1a;强制类型转换为Number (一)&#xff1a;方式一&…

【Proteus仿真】【STM32单片机】大棚远程监测控制

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后&#xff0c;LCD1604显示传感器检测的环境温湿度、土壤湿度、光照强度、CO2浓度和阈值&#xff1b;可通过上位机远程观察传感器采集的数据显示&#xff1b;可通过K3键进入阈值设置模式&#xf…

如何使用大型语言模型LLMs作为历史课程的教学工具?#提示工程技巧

Mixlab从2018就开始分享过一些关于教育的内容&#xff1a; GPT-4等对教育的未来意味着什么&#xff1f;2023-05-05 学习的目的是什么&#xff1f;我喜欢的教育产品应该是这样的 2019-07-08 你是 Infinite Learner 吗&#xff1f;2018-05-27 今天继续教育的话题&#xff0c;我们…

基于微信小程序的超市售货管理平台设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

通过内网穿透,在Windows 10系统下搭建个人《我的世界》服务器公网联机

文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …

浅谈电气防火保护器在地下商场的应用 安科瑞 缪阳扬

摘 要&#xff1a;近年来&#xff0c;我国城市发展速度加速。很多城市大力建造地下建筑设施&#xff0c;比如地铁、地下停车场和地下商场等。地下商场属于人员密集型建筑&#xff0c;其防火设计一直令相关的专家头疼。由于人员密集&#xff0c;防火处理不好将酿成灾难性的后果。…

软件定制APP开发步骤分析|小程序

软件定制APP开发步骤分析|小程序 软件定制开发步骤&#xff1a; 1.需求分析&#xff1a; 这是软件定制开发的第一步&#xff0c;也是最关键的一步。在这个阶段&#xff0c;软件开发团队需要与客户进行沟通&#xff0c;了解客户的具体需求和期望。通过讨论和交流&#xff0c;确…

【C++】左值和右值

基本概念左值和右值左值引用和右值引用 右值引用使用场景和意义左值引用的使用场景左值引用的短板右值引用和移动语义编译器优化移动赋值move右值引用引用左值右值引用的其他使用场景 完美转发万能引用forward 模板函数 基本概念 左值和右值 左值 左值&#xff08;lvalue&…

tp5连接多个数据库

一、如果你的主数据库配置文件都在config.php里 直接在config.php中中定义db2&#xff1a; 控制器中打印一下&#xff1a; <?php namespace app\index\controller; use think\Controller; use think\Db; use think\Request; class Index extends Controller {public fun…