stm32实现加减时分秒前面不足10补0
时间: 2023-04-11 20:02:11 浏览: 71
可以使用 sprintf 函数来实现补零的功能,具体代码如下:
```c
#include <stdio.h>
int main() {
int hour = 9, minute = 5, second = 3;
char time_str[9];
sprintf(time_str, "%02d:%02d:%02d", hour, minute, second);
printf("%s\n", time_str);
return 0;
}
```
输出结果为:09:05:03
相关问题
stm32实现加减时分秒前面不足10补0 并竖屏显示
可以使用sprintf函数将时间格式化为字符串,然后再进行补0操作。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
#include "stm32f4xx.h"
void display_time(uint8_t hour, uint8_t minute, uint8_t second)
{
char time_str[9];
sprintf(time_str, "%02d:%02d:%02d", hour, minute, second);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 16; j++) {
if (time_str[i] & (1 << j)) {
// 在屏幕上显示点亮的像素
} else {
// 在屏幕上显示熄灭的像素
}
}
}
}
int main(void)
{
uint8_t hour = 9, minute = 30, second = 0;
while (1) {
display_time(hour, minute, second);
second++;
if (second == 60) {
second = 0;
minute++;
if (minute == 60) {
minute = 0;
hour++;
if (hour == 24) {
hour = 0;
}
}
}
// 延时一段时间,控制刷新频率
}
}
```
写一段基于北京新大陆物联网STM32 NB-IOT 按键实现年月日和时分秒的加减不足10补0
好的,这个问题我可以回答。基于北京新大陆物联网STM32 NB-IOT,可以通过以下代码实现年月日和时分秒的加减不足10补0:
```
#include <stdio.h>
#include <stdlib.h>
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_tim.h"
int main(void)
{
// 初始化GPIO和定时器
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 9999;
TIM_TimeBaseStructure.TIM_Prescaler = 8399;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_Cmd(TIM2, ENABLE);
// 初始化变量
int year = 2022;
int month = 1;
int day = 1;
int hour = 0;
int minute = 0;
int second = 0;
// 循环处理
while (1)
{
// 获取按键状态
int key1 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
int key2 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7);
int key3 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8);
int key4 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_9);
// 处理按键
if (key1 == 0)
{
year++;
if (year > 9999)
{
year = 0;
}
}
if (key2 == 0)
{
month++;
if (month > 12)
{
month = 1;
}
}
if (key3 == 0)
{
day++;
if (day > 31)
{
day = 1;
}
}
if (key4 == 0)
{
second++;
if (second > 59)
{
second = 0;
minute++;
if (minute > 59)
{
minute = 0;
hour++;
if (hour > 23)
{
hour = 0;
}
}
}
}
// 显示时间
int d1 = year / 1000;
int d2 = (year / 100) % 10;
int d3 = (year / 10) % 10;
int d4 = year % 10;
int d5 = month / 10;
int d6 = month % 10;
int d7 = day / 10;
int d8 = day % 10;
int d9 = hour / 10;
int d10 = hour % 10;
int d11 = minute / 10;
int d12 = minute % 10;
int d13 = second / 10;
int d14 = second % 10;
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d1 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d2 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d3 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d4 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d5 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d6 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d7 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d8 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d9 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d10 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d11 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d12 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (d13 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_4, (d14 == 0) ? Bit_RESET : Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
// 延时
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
while (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == RESET);
}
}
```
这段代码实现了按键加减年月日和时分秒,并且在7段LED上显示时间,不足10的数字会自动补0。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)