冰楓論壇

標題: STC15W204S-35I-SOP8製作時分秒倒數計時器 [打印本頁]

作者: 洪嵐峰    時間: 2023-4-5 06:41
標題: STC15W204S-35I-SOP8製作時分秒倒數計時器
以下是使用STC15W204S-35I-SOP8芯片製作時分秒倒計時器
電路圖、引腳連接和示例代碼。

電路圖:


         +-----------+
         |           |
         |           |
    VCC -+ 1     8 +- GND
    P3.4 -+ 2     7 +- P3.3
    P3.5 -+ 3     6 +- P3.2
         |           |
         |           |
         +-----------+
引腳連接:

P3.2連接一個4位共陽極數碼管的第1位
P3.3連接一個4位共陽極數碼管的第2位
P3.4連接一個4位共陽極數碼管的第3位
P3.5連接一個4位共陽極數碼管的第4位
示例代碼:


#include <STC15W204S.H>

unsigned char count_second = 59;
unsigned char count_minute = 59;
unsigned char count_hour = 23;

void delay_ms(unsigned int ms)  // 延時函數
{
    unsigned int i,j;
    for(i=0; i<ms; i++)
        for(j=0; j<110; j++);
}

void display_time()  // 顯示時間函數
{
    P3 &= 0x0F;  // 數碼管全部清零
    P3 |= (count_second % 10);  // 顯示秒的個位數
    P3 |= ((count_second / 10) << 4);  // 顯示秒的十位數
    delay_ms(5);
    P3 &= 0x0F;
    P3 |= (count_minute % 10);  // 顯示分的個位數
    P3 |= ((count_minute / 10) << 4);  // 顯示分的十位數
    delay_ms(5);
    P3 &= 0x0F;
    P3 |= (count_hour % 10);  // 顯示時的個位數
    P3 |= ((count_hour / 10) << 4);  // 顯示時的十位數
    delay_ms(5);
}

void main()
{
    TMOD = 0x01;  // 定時器0工作在模式1
    TH0 = 0x3C;  // 定時器0初值
    TL0 = 0xAF;
    TR0 = 1;  // 啟動定時器0
    while(1)
    {
        if(TF0 == 1)  // 定時器0溢出
        {
            TF0 = 0;  // 清除溢出標誌
            count_second--;
            if(count_second == 0xFF)
            {
                count_second = 59;
                count_minute--;
                if(count_minute == 0xFF)
                {
                    count_minute = 59;
                    count_hour--;
                    if(count_hour == 0xFF)
                    {
                        count_hour = 23;
                    }
                }
            }
            display_time();
        }
    }
}




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓