導航:首頁 > 操作系統 > 51單片機用中斷燈亮2秒熄1秒

51單片機用中斷燈亮2秒熄1秒

發布時間:2022-10-04 08:38:29

❶ 51單片機怎麼用匯編實現流水燈循環點亮,要求亮1秒熄滅,等待一秒後下一個才點亮

嘿嘿 俺可以幫你噢
1 給你一個演算法
可以利用定時計數器0 定時50毫秒 允許中斷 再設置一個軟體計數器(初始值為20)
每當定時器定時時間到即50毫秒 計入中斷服務程序後 軟體計數器減1
等於0時 表示1秒鍾到( 要重新給軟體計數器送初值) 同時根據用戶標志FAL1=1 則
顯示內容左移 同時顯示 並將用戶標志FAL1取反
否則 顯示全滅 並將用戶標志FAL1取反。具體指導,可以參見右上角的網路私信。

呵呵 滿意就選滿意回答

❷ 求實現51單片機按下按鈕LED燈亮1秒後熄滅

外部中斷的優先順序是高於定時器中斷的。首先是觸發外部中斷嘛,在外部中斷程序裡面開定時器中斷,定時器設置為50ms,這個直接裝初值大概46000(晶振12m)的樣子,具體你自己算一下。然後在調用定時器中斷程序裡面肯定是要有個標志位的,這個標志位會累加n個定時器時間直到8s,然後在這個定時器中斷程序裡面不斷檢測3.2口電平就行了,如果變回高電平就把燈在點亮(比如在這句直接將flag賦到設定的技術最大值)就行了。最好用下降沿觸發,低電平觸發容易出問題總感覺,可能你程序邏輯是完全正確的,但是模擬或者實物的時候會出問題。

❸ 51單片機控制led燈亮兩秒滅一秒 用單片機編程,不用c語言。用中斷和循環兩種,謝謝

您好,這樣:
P0=0x00;
if(a==20)
{
a=0;
P0=0x01;
}

如果你是要實現一秒鍾亮,一秒鍾滅,你可以這樣
D=0x00;
while(1)
{
if(a==20)
{
a=0;
D=~D;
}
}其中D是led對應的一個io口(一定要先定義D)

❹ 求實現51單片機按下按鈕LED燈亮1秒後熄滅

要實現51單片機按下按鈕LED燈亮1秒後熄滅,這很簡單,檢測到按下按鈕後點亮LED燈並開始計時,1秒到就滅燈。用定時器定時並用中斷方式,計中斷次數,定時×次數=1秒即可。

❺ 51單片機定時器定時 2秒燈亮 3秒燈滅,如此循環

如果想實現無限循環那就採用死循環方式,可以無限的循環如while(1){};然後設定定時器定時時間為1s(此值需要根據單片機確定是否可以設定這么大),其次,設定一個變數對時間進行計數,根據計數情況做出相應的改變,程序可以這樣設定:
unsigned
char
gucledstatus
=
0x00;
//全局變數,表示燈當前的狀態
0為滅,1為亮
volatile
unsigned
int
gustimecnt;
//全局變數對時間計數
int
main()
{
//增加定時器初始化並開放中斷
while(1)
{
if(gucledstatus
==
0x01)
//當前為亮狀態
{
if(gustimecnt
>=
7200)
//兩個小時時間到
{
gustimecnt
=
0x00;
//清零
gucledstatus
=
0x00;
//燈為滅狀態
//此處加程序代碼,控制燈為滅的狀態
}
else
{
//此處加程序代碼,控制燈為亮的狀態,此處會重復執行,可以進行控制
}
}
else
if(gucledstatus
==
0x00)
//燈為滅的狀態
{
if(gustimecnt
>=
3600)
//1個小時
{
gustimecnt
=
0x00;
gucledstatus
=
0x01;
//亮狀態
//增加程序代碼,控制燈亮
}
else
{
//增加程序代碼,控制燈滅,此處會重復執行,可以進行控制
}
}
}
return
0;
}
在中斷函數中,對gustimecnt進行遞增即可!

❻ 用定時器實現51單片機上LED燈每隔兩秒亮暗閃爍

你用的是幾個燈啊?比如說8個燈吧,用p0口,
就是直接講p0口與led直接相連就行了啊,注意led的另一端要接在一起,共地或者高電平都可以,但是為了保護led,最好在每個小燈上串上一個電阻(若單片機採用的是5v電壓,電阻可選用500歐左右的就可以了),以減小通過led的電流。剩餘的就是單片機的最小系統了,沒什麼好說的吧,就是晶振,復位而已。
程序嘛,也很簡單啊,你說用定時器,每個兩秒如果單純用一個定時器的話肯定不夠用的,要結合循環判斷語句,比如你採用12m的晶振,並且將定時中斷時間定為50ms,那麼設置一個變數,每20次就是一秒了,所以40次就是兩秒。這樣的話,每個40次就讓led的狀態(用0和1表示亮與滅)改變就可以了。main函數中應該設置一個死循環函數,可用while(1),讓單片機不斷的循環工作。

❼ 51單片機 定時器問題 (LED小燈 每隔一秒亮滅一次)

TF0 初始值為0。

TR0 = 1; //啟動計數器0
啟動後,TH0TL0就會自動加一。

如下:
B800
B801
B802
……
當加到0000時,TF0就自動為1。

閱讀全文

與51單片機用中斷燈亮2秒熄1秒相關的資料

熱點內容
簡訊刪除助手文件夾 瀏覽:686
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:277
沈陽用什麼app租房車 瀏覽:857
00後高中生都用什麼app 瀏覽:238
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:807
醫療程序員招聘 瀏覽:598
住宿app可砍價是什麼意思 瀏覽:133