找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 55|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F030F4可充电的锂电池桌面时钟

[复制链接]
跳转到指定楼层
楼主
3.7V锂电池供电的0.8寸数码管超亮数码时钟,点亮你的半个房间。电池充电使用TP4054,升压电路使用RY3750这些元件在立创均有大量库存。
夜晚效果图
/**
******************************************************************************
* 文件名程: main.c
* 作    者: 东莞邓凯哥
* 功    能: 主函数
* 硬    件: STM32F030F4P-DesktopClock-V0.1
* 说明:桌面数码管时钟
* 软件版本 V0.0.1(2025/4/20 16:02)
******************************************************************************
**/
#include "main.h"
#include "user_gpio.h"
#include "user_seg.h"
#include "user_adc.h"
#include "user_i2c.h"
#include "user_rcc.h"
#include "type_ntc_tab.h"
#include "timepare.h"
#include "pcf8563.h"


RCC_ClocksTypeDef SRCC_CLOCK;



uint16_t ntc_val,adc_int,ntc_tmp,clpiont;
int16_t ntc_temp;

void seg_display_temp(int16_t data)
{
        if( data < 0 )
        {
                TM1629_DisplayChar(0, 0x11);  // 负温度
        }else{
                TM1629_DisplayChar(0, 0x12);  // 正温度
        }
        
        TM1629_DisplayChar(2, data%1000%100/10);                // 第三位带小数点显示
        TM1629_DisplayChar(4, data%1000%100%10);                  // 第一位显示数字 0
}

void seg_display_clock(int16_t hours,int16_t min,uint8_t piont)
{
        TM1629_DisplayChar(8, hours/10);         
        if( piont )
        {
                TM1629_DisplayPiontChar(10, hours%10);         // 显示中间点 DP
        }else{
                TM1629_DisplayChar(10, hours%10);                 // 不显示DP
        }
        TM1629_DisplayChar(12, min/10);         
        TM1629_DisplayChar(14, min%10);         
}


float Vx1,Rx1,NTC_t1,NTC_t2;
int main(void)
{
        user_rcc_init();
        RCC_GetClocksFreq(&SRCC_CLOCK);
        SysTick_Config(SRCC_CLOCK.SYSCLK_Frequency / 1000);
        user_output_init();
        user_adc_init();
        user_i2c1_init();
        TM1629_Init();
        
//        PCF8563_SetTime(25, 4, 16, 19, 02, 00,3);
               
        while (1)
        {
                if( TimePare.Tim1ms_flag == 1 )                //1ms任务
                {

                        TimePare.Tim1ms_flag = 0;
                        if( ++TimePare.Tim10ms_count >= 10 )
                        {
                                TimePare.Tim10ms_count = 0;
                                TimePare.Tim10ms_flag = 1;
                        }
                        
                        if( ++TimePare.Tim50ms_count >= 50 )
                        {
                                TimePare.Tim50ms_count = 0;
                                TimePare.Tim50ms_flag = 1;
                        }
                }
               
               
               
                if( TimePare.Tim10ms_flag == 1 )        //10ms 任务
                {

                        TimePare.Tim10ms_flag = 0;
                        if( ++TimePare.Tim100ms_count >= 10 )
                        {
                                TimePare.Tim100ms_count = 0;
                                TimePare.Tim100ms_flag = 1;
                        }
                        
                        if( ++TimePare.Tim200ms_count >= 20 )
                        {
                                TimePare.Tim200ms_count = 0;
                                TimePare.Tim200ms_flag = 1;
                        }
                }
               
               
                if( TimePare.Tim50ms_flag == 1 )        //50ms 任务
                {
                        
                        TimePare.Tim50ms_flag = 0;
                }
               
                if( TimePare.Tim100ms_flag == 1 )        //100ms 任务
                {
                        
                        TimePare.Tim100ms_flag = 0;
                        if( ++TimePare.Tim500ms_count >= 5 )
                        {
                                TimePare.Tim500ms_count = 0;
                                TimePare.Tim500ms_flag = 1;
                        }
                }
               
                if( TimePare.Tim200ms_flag == 1 )        //200ms 任务
                {
                        TimePare.Tim200ms_flag = 0;
                }
               
                if( TimePare.Tim500ms_flag == 1 )        //500ms 任务
                {
                        PCF8563_GetTime();
                        seg_display_temp(ntc_temp);
                        clpiont ++;
                        if( clpiont == 1)
                        {
                                seg_display_clock(Times[4],Times[5],1);
                        }else if(clpiont >= 2)
                        {
                                seg_display_clock(Times[4],Times[5],0);
                                clpiont = 0;
                        }
                        TimePare.Tim500ms_flag = 0;
                        if( ++TimePare.Tim1s_count >= 2 )
                        {
                                TimePare.Tim1s_count = 0;
                                TimePare.Tim1s_flag = 1;
                        }
                        
                        if( ++TimePare.Tim4s_count >= 8 )
                        {
                                TimePare.Tim4s_count = 0;
                                TimePare.Tim4s_flag = 1;
                        }
                }
               
                if( TimePare.Tim1s_flag == 1 )                //1000ms 任务
                {
                        TimePare.Tim1s_flag = 0;
                }
               
                if( TimePare.Tim4s_flag == 1 )                //4000ms 任务
                {
                        TimePare.Tim4s_flag = 0;
                }
        }
}

void DMA1_Channel1_IRQHandler()
{
        if( DMA_GetITStatus(DMA1_IT_TC1) )
        {
                ntc_tmp += ADC_Buffer[0];
                adc_int++;
                if(adc_int>=16)
                {
                        ntc_val = ntc_tmp>>4;
                        adc_int = 0;
                        ntc_tmp = 0;
                        ntc_temp = get_type_ntc_temp(ntc_val);
                }
                DMA_ClearITPendingBit(DMA1_IT_TC1); //清除DMA1通道1传输结束标志
        }
}

202504265.jpg (2.45 MB, 下载次数: 0)

202504265.jpg

202504264.jpg (1.99 MB, 下载次数: 0)

202504264.jpg

202504263.jpg (1.99 MB, 下载次数: 0)

202504263.jpg

202504262.jpg (2.63 MB, 下载次数: 0)

202504262.jpg

STM32F030F4_Desktop_Clock_V0.1.7z

931.49 KB, 下载次数: 0, 下载积分: 黑币 -5

Schematic_STM32F030F4_Desktop_Clock_V0.1_2025-04-26.pdf

177.46 KB, 下载次数: 0, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表