stm32f103c8t6 4位数码管显示输入数据代码示例
时间: 2023-05-29 16:03:53 浏览: 120
以下是一个示例代码,可以将输入的数字显示在4位数码管上:
```
#include "stm32f10x.h"
//定义数码管映射数组
const uint16_t DIGITS[10] = {
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5, //0
GPIO_Pin_1 | GPIO_Pin_2, //1
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6 | GPIO_Pin_4 | GPIO_Pin_3, //2
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6 | GPIO_Pin_2 | GPIO_Pin_3, //3
GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_1 | GPIO_Pin_2, //4
GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_2 | GPIO_Pin_3, //5
GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4, //6
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2, //7
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6, //8
GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6 //9
};
//定义显示函数
void display(uint16_t num) {
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_SetBits(GPIOA, DIGITS[num % 10]); //显示个位
GPIO_SetBits(GPIOA, GPIO_Pin_0);
delay_ms(5);
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_SetBits(GPIOA, DIGITS[num / 10 % 10]); //显示十位
GPIO_SetBits(GPIOA, GPIO_Pin_1);
delay_ms(5);
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_SetBits(GPIOA, DIGITS[num / 100 % 10]); //显示百位
GPIO_SetBits(GPIOA, GPIO_Pin_2);
delay_ms(5);
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_SetBits(GPIOA, DIGITS[num / 1000 % 10]); //显示千位
GPIO_SetBits(GPIOA, GPIO_Pin_3);
delay_ms(5);
}
int main(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
GPIO_InitTypeDef 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_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
while (1) {
uint16_t input = 1234; //假设输入的数字是1234
display(input); //显示数字
}
}
```
阅读全文