久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 506|回復: 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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚州精品天堂中文字幕 | 国产一区二区 | 日韩视频一区在线观看 | 久久久国产精品入口麻豆 | 天堂久久网 | www.日韩 | 伊人伊成久久人综合网站 | 国产亚洲一区精品 | 国产电影一区二区三区爱妃记 | 日日夜夜精品免费视频 | 拍戏被cao翻了h承欢 | www久久国产 | 欧美片网站免费 | 一区二区三区高清 | 99影视| 国内毛片毛片毛片毛片 | 精品麻豆剧传媒av国产九九九 | av特级毛片| 欧美精品在线免费观看 | 精品国产乱码久久久久久闺蜜 | 久草福利| 一区在线视频 | 亚洲精品视频在线看 | 国产精产国品一二三产区视频 | 日韩高清黄色 | 高清人人天天夜夜曰狠狠狠狠 | 亚洲一区二区三区视频在线 | 国产精品欧美一区二区三区不卡 | 精产嫩模国品一二三区 | 国产乱码精品一区二区三区五月婷 | 国产福利在线播放 | 亚洲免费精品一区 | 国产精品视频一区二区三区不卡 | 亚洲一区中文字幕在线观看 | 91在线看片| 国产999精品久久久久久 | 欧美一级www片免费观看 | 国产精品久久久久久一区二区三区 | 日韩精品一区二区三区在线观看 | 欧美日韩精品一区 | 国产精品久久久久aaaa九色 |