stm32f103r6数码管0到9编程代码
时间: 2023-05-16 10:02:00 浏览: 412
protues仿真,基于stm32f103r6的串口通信,支持数据收发,数码管显示
5星 · 资源好评率100%
要写出使用STM32F103R6控制数码管从0到9显示的编程代码,需要做如下步骤:
1. 首先,需要了解自己使用的数码管的显示方式以及编号规则。常见的数码管一般是7段数码管,每个数字的显示都需要点亮一部分数码管的LED灯,不同的数码管可能会将LED灯编号方式不同。因此,我们需要先确认好自己使用的数码管的规则。
2. 确认好数码管的规则后,我们需要对STM32F103R6进行引脚的配置。可以通过手册查询到不同引脚的功能以及编号,需要对不同引脚进行配置,将其连接到数码管对应的LED灯上。
3. 接下来,我们可以开始写代码了。代码中需要定义数码管对应的引脚以及不同数字所对应LED灯的编号,然后通过控制引脚的高低电平以及对应LED灯的亮灭来显示不同的数字。
下面是一个简单实例,使用STM32F103R6控制数码管从0到9连续显示。
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 清空GPIO结构体
GPIO_StructInit(&GPIO_InitStructure);
// 打开GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 配置GPIOD的PB1 ~ PB8引脚为输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 定义数组存储不同数字对应的LED灯编号
uint8_t digital[10] = {0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b};
// 循环显示数字0~9
for(int i = 0; i < 10; i++)
{
// 将对应引脚拉高,点亮对应LED灯
GPIO_SetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8);
// 延时一段时间
for(int j = 0; j < 20000; j++);
// 将对应引脚设为低电平,熄灭对应LED灯
GPIO_ResetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8);
// 将对应数字的LED灯点亮
GPIO_SetBits(GPIOB, digital[i]);
// 延时一段时间
for(int j = 0; j < 20000; j++);
}
return 0;
}
以上代码仅为示例,实际编写时需要根据自己所使用的具体数码管规则进行相应更改。
阅读全文