導航:首頁 > 操作系統 > 倒計時器51單片機

倒計時器51單片機

發布時間:2025-08-21 21:40:46

Ⅰ 如何用單片機做一個簡單的倒計時器

一般我們用定時器來做計時器,實現時間得加。每次中斷發生,用一個變數自增來判斷時間是否到1S,到了之後清零這個變數,另一個時間變數自增來作時間得增加。現在就是要把這個自增的時間變數改為自減,判斷當小於0時,又賦初值,然後繼續自減判斷。

Ⅱ 51鍗曠墖鏈篴t89s52鎬庝箞鍋0-9縐掑掕℃椂錛屾眰澶т漿瑙g瓟

鐢ㄤ竴涓鍏遍槾鏁扮爜綆℃帴鍦≒0鍙o紝鐢盤0鍙h緭鍑烘電爜銆傚啀鐢ㄥ畾鏃跺櫒瀹氭椂50ms錛岄噰鐢ㄤ腑鏂鏂瑰紡錛屽逛腑鏂璁℃暟20嬈″氨鏄涓縐掋傜敤涓涓鍙橀噺璁$掞紝鍒濆間負9錛屾瘡涓縐掑噺涓錛屽苟閫丳0鏄劇ず銆備豢鐪熷浘濡備笅銆

Ⅲ 求大神編一道51單片機實現多種倒計時功能

這個不算太難,只要利用標識符進行判斷即可


標識符就是一個變數,常使用字元型變數作為標識符,佔用空間小


每一種狀態都用標識符表示出來,例如狀態0,狀態1,狀態2 ..................狀態254


字元型變數的值范圍是 0 ~ 254 共255個值,夠你用的了


給你一個類似的程序,我自己寫的,你作為參考吧


程序的組成是:兩個按鍵,一組四位數碼管,兩個LED發光二極體


程序的功能是:按下按鍵A,兩個LED同時點亮,並延時10秒(時間隨意修改)

按下按鍵B,兩個LED同時熄滅,並延時10秒(時間隨意修改)

無按鍵按下時,兩個LED交替點亮,達到閃爍的效果


程序如下,並加了注釋,若滿意請採納!


#include <reg51.h> //51單片機通用頭文件

unsigned int i,t,h; char fe;

sbit a=P3^7; sbit b=P3^6; sbit led=P2^7; sbit lad=P2^6;//按鍵及LED埠定義

char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼

/***************************************************************************/

void YS(char hs){char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}//延時函數

/***************************************************************************/

void XS(int xs) //數碼管顯示

{

char d1,d2,d3,d4;

d1=(xs/1)%10; d2=(xs/10)%10; d3=(xs/100)%10; d4=(xs/1000)%10;

P0=table[d1]; P1=0xf7; YS(10); P1=0xff;//個位顯示

P0=table[d2]; P1=0xfb; YS(10); P1=0xff;//十位顯示

P0=table[d3]; P1=0xfd; YS(10); P1=0xff;//百位顯示

P0=table[d4]; P1=0xfe; YS(10); P1=0xff;//千位顯示

}

/***************************************************************************/

void main()

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TMOD=0x01; TR0=1; ET0=1; EA=1;

led=0;lad=1;

while(1)

{

XS(h);//調用數碼管顯示函數

if(a==0){h=10;fe=0;}//按鍵 A, LED 亮10秒

if(b==0){h=10;fe=1;}//按鍵 B, LED 滅10秒

}

}

/***************************************************************************/

void t0()interrupt 1//定時器 0 中斷

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++; t++;

if(h>0){t=0;}//如果按鍵按下,屏蔽 t 計數,

if(t>=5){t=0;led=~led; lad=~lad;}//t計數,用於兩個LED閃爍

if(i>=20)//還是原來的時間判斷

{

i=0;

if(h>0&&fe==0){h--;led=0;lad=0;}//如果是狀態 0 同時點亮兩個LED

if(h>0&&fe==1){h--;led=1;lad=1;}//如果是狀態 1 同時關閉兩個LED

}

if(h==0&&led==0&&lad==0){led=1;lad=0;}//此句防止數碼管倒計時後兩個LED繼續同時點亮

}

/***************************************************************************/

Ⅳ c51單片機定時器30秒倒計時程序,一個按鍵控制開始,另一個按鍵控制暫停和繼續

#include<reg51.h>
unsignedcharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsignedcharsec=30,scanled;
unsignedchardisdat[2];
sbitkeys=P1^0;
sbitkeyc=P1^1;
sbitfmq=P3^0;

voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
voiddischg()
{
disdat[0]=sec/10;
disdat[1]=sec%10;
}
voidt0isr()interrupt1 //秒計時
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
if(sec>0&&flag==0)sec--;
}
dischg();
}
voidt1isr()interrupt3 //顯示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case0:
P2=0xfe;
P0=ledtab[disdat[1]];
break;
case1:
P2=0xfd;
P0=ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=2;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=0;
ET0=1;
ET1=1;
EA=1;
fmq=0;
scanled=0;
while(1)
{
if(keys==0)
{
while(keys==0);
TR0=1;
}
if(keyc==0)
{
while(keyc==0);
TR0=~TR0;
}
}
}

閱讀全文

與倒計時器51單片機相關的資料

熱點內容
在阿里雲伺服器如何打開伺服器 瀏覽:307
創建進程的命令 瀏覽:30
如何加密吃雞 瀏覽:721
青春pdf下載 瀏覽:682
期貨交易技術pdf 瀏覽:642
手機解壓加密文件的軟體 瀏覽:891
程序員那麼可愛姜媽 瀏覽:398
vivo手機編譯時間為什麼晚了 瀏覽:816
matlab命令行窗口 瀏覽:704
php網站開發實例pdf 瀏覽:80
倒計時器51單片機 瀏覽:915
三菱fx1n加密程序 瀏覽:644
python雲計算器 瀏覽:913
解壓縮密碼是多少 瀏覽:88
phpnamespace報錯 瀏覽:754
浙江國稅發票伺服器地址 瀏覽:770
cmd比較文件內容命令 瀏覽:508
壓縮面膜含化學物么 瀏覽:656
linux如何打開python文件 瀏覽:62
手機為什麼連接谷歌伺服器 瀏覽:673