基于stm32开发板,实现数码管静态显示

时间: 2024-05-10 09:18:03 浏览: 8
首先,需要连接数码管到stm32开发板上,并确定数码管的引脚连接方式。 假设使用的是常见的共阴数码管,其引脚连接方式如下: 数码管的每一位使用4个引脚控制,其中3个引脚为共阴引脚(COM1、COM2、COM3),另1个引脚为片选引脚(DIG1~DIG4),共计12个引脚。 在程序中,需要将每一位数码管对应的4个引脚设置为输出模式,并通过GPIO口输出相应的电平信号,以控制数码管的显示内容。 以下是一个简单的代码示例: ```c #include "stm32f10x.h" // 数码管引脚定义 #define COM1_PIN GPIO_Pin_0 #define COM1_PORT GPIOA #define COM2_PIN GPIO_Pin_1 #define COM2_PORT GPIOA #define COM3_PIN GPIO_Pin_2 #define COM3_PORT GPIOA #define DIG1_PIN GPIO_Pin_3 #define DIG1_PORT GPIOA #define DIG2_PIN GPIO_Pin_4 #define DIG2_PORT GPIOA #define DIG3_PIN GPIO_Pin_5 #define DIG3_PORT GPIOA #define DIG4_PIN GPIO_Pin_6 #define DIG4_PORT GPIOA // 数码管显示表 const uint8_t SEGMENT_TABLE[] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F, // 9 }; // 数码管显示函数 void Display(uint8_t digit, uint8_t value) { // 关闭所有数码管 GPIO_ResetBits(COM1_PORT, COM1_PIN); GPIO_ResetBits(COM2_PORT, COM2_PIN); GPIO_ResetBits(COM3_PORT, COM3_PIN); GPIO_ResetBits(DIG1_PORT, DIG1_PIN); GPIO_ResetBits(DIG2_PORT, DIG2_PIN); GPIO_ResetBits(DIG3_PORT, DIG3_PIN); GPIO_ResetBits(DIG4_PORT, DIG4_PIN); // 选择要显示的数码管 switch (digit) { case 0: GPIO_SetBits(DIG1_PORT, DIG1_PIN); break; case 1: GPIO_SetBits(DIG2_PORT, DIG2_PIN); break; case 2: GPIO_SetBits(DIG3_PORT, DIG3_PIN); break; case 3: GPIO_SetBits(DIG4_PORT, DIG4_PIN); break; default: break; } // 显示对应的数字 GPIO_Write(GPIOB, SEGMENT_TABLE[value]); } int main(void) { // 初始化GPIO口 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = COM1_PIN | COM2_PIN | COM3_PIN | DIG1_PIN | DIG2_PIN | DIG3_PIN | DIG4_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_Init(GPIOB, &GPIO_InitStructure); // 循环显示数字 uint8_t digit = 0; uint8_t value = 0; while (1) { Display(digit, value); // 数码管切换 digit++; if (digit >= 4) { digit = 0; value++; if (value >= 10) { value = 0; } } // 延时一段时间 for (volatile int i = 0; i < 10000; i++) { } } } ``` 该代码将数码管连接到PA0~PA2和PA3~PA6引脚上,并通过PB0~PB7控制数码管的显示内容。在主函数中,循环显示数字0~9,并进行数码管的切换和延时操作。

相关推荐

最新推荐

recommend-type

启明欣欣stm32f103rct6开发板原理图

启明欣欣stm32f103rct6开发板原理图 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈...
recommend-type

华清远见STM32MP157开发板FS-MP1A硬件手册一览

FS-MP1A开发板是基于ST(意法半导体)公司的STM32MP1系列微处理器而设计的开发板,该系列处理器提供了集成 Arm® Cortex®-A7 和 Cortex®-M4 两种内核的异构架构,在实现高性能且灵活的多核架构以及图像处理能力基础...
recommend-type

STM32开发板上音频播放程序的设计

使用STM32,使用C语言编程开发WAV格式的音频播放器。支持大部分WAV文件
recommend-type

基于STM32的红外遥控实验

本章,我们将向大家介绍如何通过STM32来解码红外遥控器的信号。...在本章中,我们将利用STM32的输入捕获功能,解码开发板标配的这个红外遥控器的编码信号,并将解码后的键值TFTLCD模块上显示出来。
recommend-type

嵌入式实验报告 stm32f103 跑马灯实验 GPIO口操作

熟悉编译环境,尝试独立进行工程的创建、编译、下载。通过阅读 STM32 芯片手册了解关于 GPIO 的相关内容,并且通过编程实现 LED 流水灯控制。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。