冰楓論壇
標題:
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 冰楓