- UID
- 373967
- 帖子
- 8874
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 84
- 威望
- 977
- 存款
- 34822
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 455 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-24
|
以下是使用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();
}
}
} |
|