stm32f103c8t6配置三位静态数码管显示133的工程
时间: 2023-07-29 07:05:52 浏览: 124
好的,以下是配置stm32f103c8t6控制三位静态数码管显示133的工程步骤:
1. 首先,在Keil或其他编译器中创建一个新的工程,并且将stm32f103c8t6的库文件添加到工程中。
2. 接着,在工程中创建一个新的.c文件,用于编写控制数码管的代码。
3. 在代码中定义数码管的引脚,以及数码管显示的数字。例如:
```c
#define DIGIT1_Pin GPIO_Pin_0
#define DIGIT1_Port GPIOB
#define DIGIT2_Pin GPIO_Pin_1
#define DIGIT2_Port GPIOB
#define DIGIT3_Pin GPIO_Pin_2
#define DIGIT3_Port GPIOB
int digit[3] = {1, 3, 3}; // 数码管显示的数字
```
4. 在代码中初始化数码管引脚的状态。例如:
```c
void initGPIO(){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = DIGIT1_Pin | DIGIT2_Pin | DIGIT3_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DIGIT1_Port, &GPIO_InitStructure);
}
```
5. 在代码中编写数码管动态扫描的函数。例如:
```c
void showDigit(int num){
switch(num){
case 0:
GPIO_ResetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_ResetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_ResetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 1:
GPIO_SetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_ResetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_ResetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 2:
GPIO_ResetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_SetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_ResetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 3:
GPIO_SetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_SetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_ResetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 4:
GPIO_ResetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_ResetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_SetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 5:
GPIO_SetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_ResetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_SetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 6:
GPIO_ResetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_SetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_SetBits(DIGIT3_Port, DIGIT3_Pin);
break;
case 7:
GPIO_SetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_SetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_SetBits(DIGIT3_Port, DIGIT3_Pin);
break;
}
}
```
6. 在代码中编写数码管的控制函数,将显示的数字依次输出到每个数码管上。例如:
```c
void showNumber(int num){
int i;
for(i = 0; i < 3; i++){
showDigit(digit[i]);
switch(i){
case 0:
GPIO_SetBits(DIGIT1_Port, DIGIT1_Pin);
break;
case 1:
GPIO_SetBits(DIGIT2_Port, DIGIT2_Pin);
break;
case 2:
GPIO_SetBits(DIGIT3_Port, DIGIT3_Pin);
break;
}
delay_ms(5); // 延时5ms
GPIO_ResetBits(DIGIT1_Port, DIGIT1_Pin);
GPIO_ResetBits(DIGIT2_Port, DIGIT2_Pin);
GPIO_ResetBits(DIGIT3_Port, DIGIT3_Pin);
}
}
```
7. 在代码中添加主函数,并在主函数中调用初始化函数和数码管控制函数。例如:
```c
int main(){
initGPIO();
showNumber(133);
while(1);
return 0;
}
```
以上是配置stm32f103c8t6控制三位静态数码管显示133的工程步骤,希望能对你有所帮助。
阅读全文