04 基于 STM32 的时钟展示程序

前言

我们经常会看到 各个场合下面有 基于数码管 的时钟程序

比如 在车站, 教室, 办公室 等等 各个场合都有

然后 这里就是做一个 简单的 时钟程序 展示程序

测试用例

每一秒钟更新时间, 然后 迭代更新 天, 时, 分 等等

然后 主流程 基于 天, 时分秒 渲染数码管

复制代码
#include "utils.h"

u8 emptyLedCols[8] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};

/**
 * main related
 */
long counter = 1;

long baseDay = 24;
long baseHour = 15;
long baseMinute = 30;
long baseSecond = 30;


/**
 * reset all
 */
void resetAll();

u32 genDateNumber();

void incrementSecond();


void main() {

    u32 dateNumber;

    resetAll();

    while (1) {

		dateNumber = genDateNumber();
        lightTubeByInt(dateNumber);
        // 计算和渲染貌似挺花时间, 这里 incrementSecond 的频率调整一下
        if(counter % 100 == 0) {
            incrementSecond();
        }

		delay_ms(5);
        counter++;

    }
}

void resetAll() {
    u8 i;
    printLedWord(8, emptyLedCols);
	BEEP = 1;
    for(i=0; i<8; i++) {
        ledCtl(i, 0);
    }
}

u32 genDateNumber() {
    u32 result = 0;
    result = baseDay;

    result = result * 100;
    result += baseHour;

    result = result * 100;
    result += baseMinute;

    result = result * 100;
    result += baseSecond;
    return result;
}

void incrementSecond() {
    baseSecond ++;
    if(baseSecond == 60) {
        baseSecond = 0;

        baseMinute++;
        if(baseMinute == 60) {
            baseMinute = 0;

            baseHour ++;
            if(baseHour == 24) {
                baseHour = 0;

                baseDay ++;
                if(baseDay == 31) {
                    baseDay = 1;
                }
            }
        }
    }
}

展示效果

当前状态

下一秒

下一秒

相关推荐
一川月白7098 小时前
51单片机---硬件学习(电子琴、主从应答模式、modbus模型、DS18B20传感器显示温度)
嵌入式硬件·51单片机·串口通信·异步通信·串行通信·同步通信·并行通信
逼子格8 小时前
【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
数据库·单片机·嵌入式硬件·51单片机·proteus·定时器·硬件工程师
2401_888423099 小时前
51单片机-按键、蜂鸣器、定时器模块及中断
单片机·嵌入式硬件·51单片机
东亚_劲夫10 小时前
STM32—SPI协议
stm32·单片机·嵌入式硬件
♞沉寂11 小时前
c51串口通信原理及实操
单片机·51单片机·c51
猫头虎12 小时前
2025最新超详细FreeRTOS入门教程:第一章 FreeRTOS移植到STM32
stm32·单片机·嵌入式硬件·机器人·硬件架构·freertos·嵌入式实时数据库
清风66666614 小时前
基于STM32单片机的酒驾检测设计
stm32·单片机·嵌入式硬件·毕业设计·课程设计
恒森宇电子有限公司14 小时前
IP5326_BZ 支持C同口输入输出的移动电源芯片 2.4A的充放电电流 支持4LED指示灯
c语言·开发语言·单片机
涂山苏苏⁠15 小时前
STM32之ADC
stm32·单片机·adc
曙曙学编程15 小时前
stm32——NVIC,EXIT
c语言·c++·stm32·单片机·嵌入式硬件