基于STM32的四位数码管计数器设计与实现

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进,

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

本文介绍了一种基于STM32微控制器的四位数码管计数器的设计与实现。通过使用STM32的GPIO功能和定时器模块,我们实现了一个能够连续计数并在四位数码管上显示结果的简单计数器。文章详细介绍了硬件连接和软件实现的步骤,并提供了相应的源代码。

1. 引言
数码管作为一种常见的显示设备,广泛应用于计时器、计数器、时钟等场景。本文以基于STM32微控制器的四位数码管计数器为例,介绍了如何使用STM32微控制器实现该功能。

2. 硬件连接
在实现四位数码管计数器之前,我们需要将STM32微控制器与数码管进行正确的硬件连接。
通常,使用共阳极数码管时,将数码管的共阳极引脚连接到STM32微控制器的GPIO引脚上,而数码管的片选引脚则连接到STM32微控制器的GPIO引脚。

3. 软件实现
首先,在STM32微控制器上配置GPIO引脚为输出模式,并设置为推挽输出,以便控制数码管的显示。
然后,我们需要配置一个定时器模块,以确定数码管的刷新频率。

下面是基于STM32的四位数码管计数器的实现代码:

// 数码管显示函数
void displayDigit(unsigned char digit, unsigned char number) {GPIO_SetBits(DIGIT1_PORT, DIGIT1_PIN);GPIO_SetBits(DIGIT2_PORT, DIGIT2_PIN);GPIO_SetBits(DIGIT3_PORT, DIGIT3_PIN);GPIO_SetBits(DIGIT4_PORT, DIGIT4_PIN);switch (digit) {case 1:GPIO_ResetBits(DIGIT1_PORT, DIGIT1_PIN);GPIOB->ODR = digitTable[number];break;case 2:GPIO_ResetBits(DIGIT2_PORT, DIGIT2_PIN);GPIOB->ORR = digitTable[number] << 7;break;case 3:GPIO_ResetBits(DIGIT3_PORT, DIGIT3_PIN);GPIOB->ORR = digitTable[number] << 14;break;case 4:GPIO_ResetBits(DIGIT4_PORT, DIGIT4_PIN);GPIOB->ORR = digitTable[number] << 21;break;}
}int main(void) {// 初始化GPIO和定时器while (1) {// 计数并显示结果// 延时一段时间}
}
```

4. 结果与讨论
通过本文的设计与实现,我们成功地实现了基于STM32的四位数码管计数器。当程序运行时,数码管会显示从0开始递增的数值。
通过修改代码,我们可以实现不同的数码管显示效果,如闪烁、旋转、倒计时等。

5. 结论
本文介绍了基于STM32的四位数码管计数器的设计与实现。
通过适当的硬件连接和软件配置,我们成功地实现了一个简单的数码管计数器。这个设计可用作学习STM32的基础项目,也可作为其他更复杂功能的基础。

参考文献:
[1] STM32F103xx Reference Manual, STMicroelectronics
[2] STM32F103xx Datasheet, STMicroelectronics

嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击这里,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦。 

​ 点击链接扫码进入嵌入式交流群 ​https://fss.mpay8.cn/article/dmrjinh2C6fjejm

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

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

相关文章

Docker Compose(容器编排)——9

目录 什么是 Docker Compose生活案例为什么要 Docker ComposeDocker Compose 的安装Docker Compose 的功能Docker Compose 使用场景Docker Compose 文件&#xff08;docker-compose.yml&#xff09; 文件语法版本文件基本结构及常见指令Docker Compose 命令清单 命令清单如下命…

垃圾回收器CMS和G1的区别

CMS和G1的区别 区别一&#xff1a; 使用范围不一样 CMS收集器是老年代的收集器&#xff0c;可以配合新生代的Serial和ParNew收集器一起使用 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用 区别二&#xff1a; STW的时间 CMS收集器以最小的停顿时间为目标的收…

C++11(下)

可变参数模板 C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板. 相比C98/03, 类模版和函数模版中只能含固定数量的模版参数, 可变模版参数无疑是一个巨大的改进, 然而由于可变模版参数比较抽象, 使用起来需要一定的技巧, 所以这块还是比较晦涩的.掌握一些基…

Vue 3项目的运行过程

概述&#xff1a; 使用Vite构建Vue 3项目后&#xff0c;当执行yarn dev命令启动服务时&#xff0c;项目就会运行起来&#xff0c;该项目会通过src\main.js文件将src\App.vue组件渲染到index.html文件的指定区域。 文件介绍&#xff1a; src\App.vue文件 Vue 3项目是由各种组件…

递归实现指数型枚举

title: 递归实现指数型枚举 date: 2023-12-10 19:29:20 tags: 递归 catgories: 算法进阶指南 —> 传送门 题目大意 从 1 ~ n n n 这 n n n 个整数随机选取任意多个&#xff0c;输出所有可能的选择方案 思路 这等价于每个整数可以选或者不选&#xff0c;所有的方案总数共有…

Spring Boot的日志

打印日志 打印日志的步骤: • 在程序中得到日志对象. • 使用日志对象输出要打印的内容 在程序中得到日志对象 在程序中获取日志对象需要使用日志工厂LoggerFactory,代码如下: package com.example.demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public c…

STM32——继电器

继电器工作原理 单片机供电 VCC GND 接单片机&#xff0c; VCC 需要接 3.3V &#xff0c; 5V 不行&#xff01; 最大负载电路交流 250V/10A &#xff0c;直流 30V/10A 引脚 IN 接收到 低电平 时&#xff0c;开关闭合。

Go Fyne 入门

Fyne是一个用于创建原生应用程序的UI工具包&#xff0c;它简单易用&#xff0c;并且支持跨平台。以下是一个简单的Fyne教程&#xff0c;帮助你入门&#xff1a; 1. 安装Fyne 首先&#xff0c;确保你已经安装了Go语言。然后&#xff0c;在终端中运行以下命令来安装Fyne&#x…

android-xml语法

xml解析器 Android的XML文件语法是由Android系统中的解析器解析的。具体来说&#xff0c;Android使用了一个名为"Android Asset Packaging Tool (AAPT)"的工具来解析和处理XML文件。AAPT负责将XML文件编译为二进制格式&#xff0c;并在构建过程中将其打包到Android应…

第2节:Vue3 模板语法

Vue3 的模板语法主要包括以下几个部分&#xff1a; 插值表达式&#xff1a;使用双大括号 {{ }} 包裹变量&#xff0c;可以直接在模板中显示变量的值。 <div>{{ message }}</div>指令&#xff1a;以 v- 开头&#xff0c;后面跟一个自定义的名字&#xff0c;用于操…

从Centos-7升级到Centos-Stream-8

如果在正式环境升级&#xff0c;请做好数据备份以及重要配置备份&#xff01;因为升级会造一部分应用被卸载。 注意&#xff1a;升级前请备份好数据&#xff0c;升级可能会导致ssh的root用户无法登陆、网卡名称发生改变、引导丢失无法开机等问题。 1.安装epel源 yum -y install…

【Spring教程20】Spring框架实战:AOP(面对切面编程)知识总结

欢迎大家回到《Java教程之Spring30天快速入门》&#xff0c;本教程所有示例均基于Maven实现&#xff0c;如果您对Maven还很陌生&#xff0c;请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》&#xff0c;本文的上一篇为《利用 AOP通知获取数据代码…

软件测试(接口测试业务场景测试)

软件测试 手动测试 测试用例8大要素 编号用例名称&#xff08;标题&#xff09;模块优先级预制条件测试数据操作步骤预期结果 接口测试&#xff08;模拟http请求&#xff09; 接口用例设计 防止漏测方便分配工具&#xff0c;评估工作量和时间接口测试测试点 功能 单接口业…

华为OD机试真题-字符串变换最小字符串-2023年OD统一考试(C卷)

题目描述: 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。 输入描述:一串小写字母组成的字符串s 输出描述:按照要求进行变换得到的最小字符串 补充说明:s是都是小写字符组成…

一台是阿里云,一台是腾讯云,一台是华为云,一台是百度云等多种公有云混合安装K8S集群

1. 修改主机名称和添加hosts #永久修改主机名 hostnamectl set-hostname master && bash #在master01上操作&#xff0c;阿里云服务器 hostnamectl set-hostname worker1 && bash #在node01上操作&#xff0c;阿里腾讯云服务器 hostnamectl set-ho…

利用Microsoft Visual Studio Installer Projects打包安装包

利用Microsoft Visual Studio Installer Projects打包安装包 具体步骤步骤1&#xff1a;安装扩展步骤2&#xff1a;创建 Setup 项目步骤3&#xff1a;设置属性步骤4&#xff1a;添加输出步骤5&#xff1a;添加文件步骤6&#xff1a;添加桌面快捷方式步骤7&#xff1a;添加菜单快…

【Table/SQL Api】Flink Table/SQL Api表转流读取MySQL

引入依赖 jdbc依赖 flink-connector-jdbc mysql-jdbc-driver 操作mysql数据库 <!-- Flink-Connector-Jdbc --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc_${scala.binary.version}</artifactId>…

Ubuntu上安装 Git

在 Ubuntu 上安装 Git 可以通过包管理器 apt 进行。以下是在 Ubuntu 上安装 Git 的步骤&#xff1a; 打开终端。你可以按 Ctrl Alt T 组合键来打开终端。 运行以下命令以确保你的系统的软件包列表是最新的&#xff1a; sudo apt update 安装 Git&#xff1a; sudo apt inst…

RT-DERT改进策略:AKConv即插即用,轻松涨点

摘要 提出了一种算法&#xff0c;用于生成任意尺寸卷积核的初始采样坐标。与常规卷积核相比&#xff0c;提出的AKConv实现了不规则卷积核的函数来提取特征&#xff0c;为各种变化目标提供具有任意采样形状和尺寸的卷积核&#xff0c;弥补了常规卷积的不足。在COCO2017和VisDro…

Anaconda文件目录(打开默认路径)更改

Anaconda 文件默认目录更改 每次打开 Anaconda 都在C盘怎么办&#xff0c;如何改为D盘或是其他盘符位置&#xff1f; 可以进行下述操作。 1. 单次修改路径 单次修改路径&#xff1a;在 exe 文件(Anaconda Prompt (Anaconda_py))中写入下面代码&#xff1a; jupyter notebook …