基于STM32F103的计秒设计

news2024/11/7 2:30:42

基于STM32F103的计秒设计

仿真软件:

       Proteus 8.17

编程软件:

       Keil 5

仿真实现:

       在4位数码管上进行计秒显示,每100ms改变一次数值。

数码管原理:

      数码管是一种常用的显示器件,主要用于显示数字和一些字母。其原理主要包括以下几个方面:

1. 结构

数码管通常由多个发光二极管(LED)组成,这些LED按照特定的形状排列,常见的有七段数码管和八段数码管。

七段数码管:由7个段(LED)和1个小点(用于显示小数点)组成,能够显示0-9的数字和部分字母。

八段数码管:在七段的基础上增加了一个额外的LED段,能够显示更多的字符。

2. 工作原理

数码管的工作原理主要基于LED的发光特性。通过控制不同的LED段的亮灭状态,可以形成所需的数字或字母。例如,显示数字"5"时,会点亮特定的LED段。

3. 控制方式

数码管的控制通常有两种方式:

共阳极:所有阳极连接在一起,数字的显示通过控制各个段的阴极来实现。

共阴极:所有阴极连接在一起,通过控制各个段的阳极来显示数字。

4. 驱动电路

数码管通常需要一个驱动电路来提供所需的电流和电压。常用的驱动方式包括:

直接驱动:使用微控制器的I/O口直接驱动数码管,但这种方式不适合大规模或高亮度的应用。

使用驱动芯片:例如74HC595或MAX7219等专用驱动芯片,可以简化电路设计,并实现多位数码管的驱动

电路介绍:

       本次使用的4位共阴数码管,数码管的段选部分接在了PB8-PB15,位选部分接在了PB0-PB3,由于是仿真,就直接使用IO口直连了,没有使用三极管去驱动。

效果图:

程序介绍:

       程序基于keil5开发,使用的是库函数开发。

       STM32与51单片机不同,在使用GPIO时需要先使能对应的GPIO的时钟,然后设置对应的IO口的输入输出模式。本次仿真由于是驱动数码管显示,所以将对应的IO口设置为推挽输出状态。

void F_GPIO_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;//PB0-PB15
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;	
	GPIO_Init(GPIOB,&GPIO_InitStruct);
}

数码管部分:

void F_Display(void)
{
	static uchar i;
	switch(i)
	{
		case 0:GPIO_Write(GPIOB,((SMG_Table[V_ValueData / 1000]) << 8) | 0xFE);i++;break;
		case 1:GPIO_Write(GPIOB,(SMG_Table[V_ValueData / 100 % 10] << 8) | 0xFD);i++;break;
		case 2:GPIO_Write(GPIOB,((SMG_Table[V_ValueData / 10 % 10] | 0x80) << 8) | 0xFB);i++;break;
		case 3:GPIO_Write(GPIOB,(SMG_Table[V_ValueData % 10] << 8) | 0xF7);i = 0;break;
	}
}

Main函数:

int main(void)
{
	F_GPIO_Init();
	TIM3_Int_Init(1000-1,72-1);    //1ms
	while(1)
	{
		if(V_5msTimeCounter >= 5)
		{
			V_5msTimeCounter = 0;
			V_MainLoopCounter++;
			if(V_MainLoopCounter >= 20)//100ms
			{
				V_MainLoopCounter = 0x00;
				V_ValueData++;
				if(V_ValueData >= 10000)
				{
					V_ValueData = 0x00;
				}
			}
		}
	}
}

Main函数进入先对IO口以及定时器进行初始化,主循环设置的是5ms跑一次,连续跑20次就表示到了100ms了,就对V_ValueData加一次,然后显示在数码管上,数码管显示的函数放在了定时器中断里,每1ms刷新一次。从而实现仿真要求!

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

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

相关文章

万圣夜,Codigger

在这个神秘的万圣节&#xff0c;让Codigger&#xff0c;一个专业的分布式操作系统&#xff0c;带领你踏入未知的编程世界&#xff01;就像变装成各种角色一样&#xff0c;Codigger也以其独特的能力和技巧&#xff0c;在数字世界中展现无穷魅力。让我们一起在这个神秘的节日里&a…

探索光耦:光耦——光伏逆变器中的智慧守护者

在全球清洁能源的浪潮中&#xff0c;光伏产业正以前所未有的速度蓬勃发展。作为光伏发电系统的核心设备&#xff0c;光伏逆变器扮演着将直流电转化为交流电的关键角色&#xff0c;其性能直接关系到整个系统的效率和安全性。而在这一复杂而精细的转换过程中&#xff0c;光电耦合…

关于AES加密的思考与总结 | 内容详细

今天心血来潮&#xff0c;想把AES加密的内容做一个总结&#xff0c;方便日后观看查阅。 学艺不精&#xff0c;如有错误&#xff0c;欢迎各位老师批评指正&#xff01; AES简介 AES是目前广泛应用的对称加密算法&#xff0c;主要用于保护电子数据。 对称加密&#xff1a;加密…

航顺芯片HK32MCU版图再扩张,深圳南山新基地助力集成电路核心圈突破

【中国&#xff0c;深圳&#xff0c;2024年10月24日】深圳市南山区&#xff0c;作为中国高新技术产业的重要聚集地&#xff0c;一直是集成电路企业的必争之地。近期&#xff0c;深圳市航顺芯片技术研发有限公司&#xff08;下文简称“航顺芯片”&#xff09;随着高精尖人才团队…

qt配置https请求

qt应用版本 windows 32位 先说下心理路程&#xff0c;你能遇到的我都遇到了&#xff0c;你能想到的我都想到了&#xff0c;怎么解决看这一篇就够了&#xff0c;从上午12点到晚上12点几乎没离开电脑&#xff08;除了吃饭&#xff09;&#xff0c;对于openssl这种用的时候无感&am…

LVGL-从入门到熟练使用

LVGL简介 LVGL&#xff08; Light and Versatile Graphics Library &#xff09;是一个轻量、多功能的开源图形库。 1、丰富且强大的模块化图形组件&#xff1a;按钮 、图表 、列表、滑动条、图片等 2、高级的图形引擎&#xff1a;动画、抗锯齿、透明度、平滑滚动、图层混合等…

【判断推理】翻译推理

7.1 等价推出 等价推出指的是将题干逻辑关系和选项逻辑关系分别翻译后&#xff0c;二者完全一致。考察的是对翻译规则的掌握&#xff0c;常用知识点有命题的传递和原命题、逆否命题等价。 题干中无逻辑关联词的部分不需要关注&#xff0c;直接寻找带有逻辑关联词的语句即可。 …

圣麟易安中医:微搭助力中医诊所实现数字化问诊接诊

“只用了下班时间&#xff0c;每天写一点点&#xff0c;2个月就基于微搭搭建出来了现在问诊小程序和接诊管理后台&#xff0c;大概节约70%的工作量吧” ——项目负责人 邓小静 私人中医诊所也能定制小程序&#xff0c;传统中医诊所如何实现服务流程的智能化和个性化&#x…

基于SSM校园生活电子商城管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;餐厅信息管理&#xff0c;菜品类型管理&#xff0c;闲置物品管理&#xff0c;订单管理&#xff0c;系统管理 用户账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xf…

python mac vscode 脚本文件的运行

切换到脚本文件的目录下 路径的修改 当前文件组织形式&#xff1a; 脚本文件在文件夹下&#xff1a; 赋予权限&#xff1a;chmod x ./scripts/fscd_test.sh 运行&#xff1a;./scripts/fscd_test.sh

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下&#xff1a; import turtle # 导入turtle库&#xff0c;用于图形绘制 import random # 导入random库&#xff0c;生成随机数 import math # 导入math库&#xff0c;进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

【大数据学习 | kafka】kafka的整体框架与数据结构

1. kafka的整体框架 首先kafka启动以后所有的broker都会向zookeeper进行注册&#xff0c;在/brokers/ids中以列表的形式展示所有的节点&#xff0c;在/controller节点中使用独享锁实现broker的选举&#xff0c;其中一个机器为主节点。其他的为从节点&#xff0c;选举的根本原则…

SpringBoot获取resources目录下的文件

在 Spring Boot 项目中&#xff0c;获取 resources 目录中的文件路径通常涉及到访问类路径资源&#xff08;classpath resources&#xff09;。Spring Boot 提供了一些工具类和方法&#xff0c;可以方便地访问这些资源。以下是一些常见的方法&#xff1a; 首先&#xff0c;我们…

Mybatis-plus-扩展功能

Mybatis-plus-扩展功能 一&#xff1a;代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器&#xff0c;通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码&#xff0c;极大的提升了开发效率。 功能的演示&#xff1a…

数据可视化工具深入学习:Seaborn 与 Plotly 的详细教程

数据可视化工具深入学习&#xff1a;Seaborn 与 Plotly 的详细教程 数据可视化是数据分析中不可或缺的一部分&#xff0c;能够有效地帮助我们理解数据、发现模式和传达信息。在众多可视化工具中&#xff0c;Seaborn 和 Plotly 是两个非常流行且强大的库。本文将深入探讨这两个…

DAY14|二叉树Part02|LeetCode: 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

目录 LeetCode: 226.翻转二叉树 基本思路 C代码 LeetCode: 101. 对称二叉树 基本思路 C代码 LeetCode: 104.二叉树的最大深度 基本思路 C代码 LeetCode: 111.二叉树的最小深度 基本思路 C代码 LeetCode: 226.翻转二叉树 力扣题目链接 文字讲解&#xff1a;LeetCode…

区块链国赛题目--食品溯源(模块三)

区块链国赛题目–食品溯源(模块三) 任务 3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件 login.js、组件管理文件components.js 中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功 能完整性,示例页面如下: 具体要求如下: (1)有明…

学习笔记:Netty网络编程框架

学习视频&#xff1a;Java网络编程教程——Netty深入浅出 参考笔记&#xff1a;网络编程 Netty 前言一、NIO 基础1. NIO三大核心组件1.1 缓冲区 Buffer1.1.1 创建Buffer的方式1.1.2 HeapByteBuffer与DirectByteBuffer1.1.3 Buffer初体验1.1.4 Buffer三个重要参数 1.2 通道 Chan…

牛客网剑指Offer-树篇-JZ27 二叉树的镜像

题目 来源&#xff1a;JZ27 二叉树的镜像 描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。 数据范围&#xff1a;二叉树的节点数 0≤n≤1000 &#xff0c; 二叉树每个节点的值 0≤val≤1000 要求&#xff1a; 空间复杂度 O(n) 。本题也有原地操作&#xff0c;即…

Axure设置文本——元件动作三

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;设置文本 主要内容&#xff1a;掌握文本框的类型、属性、设置文本赋值的过程 应用场景&#xff1a;各种输入框、数据的重复赋值&#xff1b;多种小…