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

66秒倒計時單片機

發布時間:2022-06-26 07:39:26

單片機60秒倒計時程序怎麼寫啊!!!這個圖的!!!急用啊!!!!

/*代碼你可以參考一下,晶振按11.059200MHz寫的。
提示一下,按你這模擬是不能做實物的,要加上限流電阻*/

#include"reg52.h"

unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共陽數碼管段選

voidmain()
{
TMOD=0x01;
TH0=0xFC;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;

while(1);
}

voidTimer0Interrupt(void)interrupt1
{
staticunsignedinti=0;
staticchartime=60;

TH0=0xFC;
TL0=0x66;

P3=table[time%10];
P2=table[time/10];

i++;
if(i>=1000)
{
i=0;
time--;
if(time<0)
{
time=60;
}
}

}

⑵ 單片機 60秒倒計時

我是用匯編語言做的,如果顯示的速度不理想 你改下延時程序段的數值就OK了,課堂上這個60S倒計時的課題用了很多方法做過

ORG 0000H
LJMP START
ORG 0100H

START:MOV R0, #59
MOV DPTR, #TABLE
LOOP:LCALL DISPLAY
DEC R0
CJNE R0,#0,LOOP
JMP START

DISPLAY:MOV A, R0
MOV B, #10
DIV AB
MOV R1, A
MOV R2, B
MOV R3, #50
LOOP1:MOV A, R2
LCALL CHANG
CLR P2.6
LCALL DLY10MS
SETB P2.6
MOV A, R1
LCALL CHANG
CLR P2.7
LCALL DLY10MS
SETB P2.7
DJNZ R3, LOOP1
RET

CHANG:MOVC A, @A+DPTR
MOV P0, A
RET

DLY10MS:MOV R6, #256
D1:MOV R7, #256
NOP
NOP
NOP
NOP
DJNZ R7, $
DJNZ R6, D1
RET

TABLE:DB 28H,7EH,0A4H,64H,72H,61H,21H,7CH,20H,60H

END

⑶ 單片機六十秒倒計時程序

;數碼管段選接P2口,位選接P3.0和P3.1,
;採用定時器T0定時10ms,60H為1s計數單元,計數100次為1sORG 0000H ;程序從0地址開始
LJMP MAIN ;跳到MAIN處執行
ORG 000BH ;定時器T0
LJMP TIME0
ORG 0030H
MAIN:MOV TMOD,#01H ;設置T0工作在模式1
MOV TH0,#0D8H ;賦初值,定時10ms
MOV TL0,#0F0H
MOV IE,#82H ;開CPU中斷,開定時器0中斷
MOV R3,#60
SETB TR0 ;啟動T0定時器工作
MOV 60H,#100 ;給60H單元賦初值
CLR 4FH ;清零4FH單元
DISPLAY: ;顯示子程序
MOV DPTR,#TAB ;DPTR指向編碼表位置
MOV A,R3 ;將R3的內容復制到A
MOV B,#10
DIV AB ;A除B,商給A,余數給B
MOVC A,@A+DPTR ;根據A的值取出編碼表中的編碼
MOV P2,A ;由P1口輸出A的內容
CLR P3.0 ;清零P2.0
SETB P3.0 ;置位P2.0 MOV A,B
MOVC A,@A+DPTR ;根據A的值取出編碼表中的編碼
MOV P2,A ;由P1口輸出A的內容
CLR P3.1 ;清零P2.1
SETB P3.1 ;置位P2.1
JNB 4FH,DISPLAY ;判斷1秒時間是否到,沒有到,則跳轉到DIAPLAY處
CLR 4FH ;1秒到,清4FH
LJMP DISPLAY ;調用顯示子程序 TIME0:MOV TH0,#0D8H ;賦初值
MOV TL0,#0F0H
DJNZ 60H,TT ;60H單元自減1,判斷是否為0,不為0則跳轉到TT處
MOV 60H,#100 ;60H單元為0,則重新給其賦值100
SETB 4FH ;同時置位4FH單元
DEC R3 ;R3自加1
CJNE R3,#00H,TT ;判斷R3是否為0,否則跳轉TT處
CLR TR0
TT:RETI
TAB: ;編碼表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共陰
END ;程序結束

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

51單片機實現數碼管99秒倒計時,其實很簡單,就是使用定時器中斷來實現。目的就是學習怎樣用單片機實現倒計時,從而實現一些延時控制類的東西,99秒只是一個例子,你完全可以做出任意倒計時如10秒倒計時程序。定時器定時時間計算公式:初值X=M(最大計時)-計數值。
初值,換算成十六進制,高位給TH0,低位給TL0,如果用定時器0的話。
M(最大計時)如果是16位的,就是2的16次方,最大定時,65535 微秒,實現1秒定時,可以通過定時10毫秒,然後100次改變一次秒值即可。10*100毫秒=1S
計數值:你要定時多長時間,如果定時1毫秒,就是1000微秒,(單位為微秒),如果定時10毫秒,就是10000(微秒),當然,最大定時被定時器本身位數限制了,最大2的16次方(16位定時計數器),只能定時65.535毫秒。定時1S當然不可能1S定時器中斷。
下面為實現99秒倒計時C語言源程序
/*了解定時器,這樣的話,就可以做一些基本的實驗了,如定時炸彈~~,10秒後打開關閉繼電器*/
/*數碼管,12M晶振*/
#include <reg52.h>
#define uchar unsigned char
sbit p11=P1^1; //連的是繼電器。。
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shiwei;
uchar gewei;
void delay(unsigned int cnt)
{
while(--cnt);
}
void main()
{
TMOD|=0x01; /*定時器0 16位定時器 X=65535-10000(10毫秒)=55535=D8F0(十六進制)定時10ms
*/
TH0=0xd8;
TL0=0xf0;
IE=0x82; //這里是中斷優先順序控制EA=1(開總中斷),ET0=1(定時器0允許中斷),這里用定時器0來定時
TR0=1; //開定時器0
while(1)
{
P0=shiwei; //99的十位
P2=0; //99的個位,
delay(300); //動態掃描數碼管延時
P0=gewei;
P2=1;
delay(300);
}
}
void tim(void) interrupt 1 using 1 //定時器0中斷
{
static uchar second=99,count; //99隻是一個數,可以任意改,因為這里只學習怎樣實現倒計時
TH0=0xd8; //定時10毫秒
TL0=0xf0;
count++;
if(count==100) //10毫秒定時,10*100=1000(毫秒)=1秒
{
count=0;
second--;
if(second==0)
{
p11=0; //這里讓繼電器動作,當然動作之後,要復位才能等下次倒定時再動作。
second=99; //回到99再循環來,當然,可以做其他的控制,
}
shiwei=tab[second/10]; //數碼管10位
gewei=tab[second%10]; //數碼管個位
}

閱讀全文

與66秒倒計時單片機相關的資料

熱點內容
諾貝爾pdf 瀏覽:967
雲伺服器快速安裝系統原理 瀏覽:788
蘋果騰訊管家如何恢復加密相冊 瀏覽:115
手機軟體反編譯教程 瀏覽:858
sqlserver編程語言 瀏覽:650
gpa國際標准演算法 瀏覽:238
伺服器編程語言排行 瀏覽:947
怎麼下載快跑app 瀏覽:966
小紅書app如何保存視頻 瀏覽:170
如何解開系統加密文件 瀏覽:809
linux切換root命令 瀏覽:283
c編譯之後界面一閃而過怎麼辦 瀏覽:880
怎麼看ic卡是否加密 瀏覽:725
lgplc編程講座 瀏覽:809
cnc手動編程銑圓 瀏覽:723
cad中幾種命令的意思 瀏覽:327
oraclelinux安裝目錄 瀏覽:136
安卓系統可以安裝編譯器嗎 瀏覽:572
javajson實體類 瀏覽:692
板加密鋼筋是否取代原鋼筋 瀏覽:69