導航:首頁 > 操作系統 > 單片機流水燈亮了

單片機流水燈亮了

發布時間:2022-05-22 07:09:50

A. 單片機流水燈全亮,我亦有同樣問題在看見最佳回答後仍不知如何解決,附網上搜索的最佳回答於問題補充中

單片機默認復位後或者上電後的所有引腳輸出都為高電平,這是為了方便讀取數據。所以,你的單片機在上電之後就是全亮,因為你的LED燈是正極接在了單片機的輸出口上了,LED的負級接的地。這樣晶元上電後,燈就全亮了。有可能你的晶元沒有設置上電復位電路,就是說程序並沒有在晶元上電之後就運行。所以就停在燈全亮這里了。單片機有上復位引腳,有的是上電後高電平脈沖復位,有的是低電平脈沖復,你用的時候要看一下對應型號的晶元手冊上是怎麼表示的。復位引腳的引腳名上有一個橫線說明是低電平復位,沒有橫線說明是高電平復位。電上復位就是加一個電容和阻組成,上電時的這個高電平或者低電平的脈沖時間的要求(一般是12個機器周期),讓晶元復位。這個時候單片機才完成開始硬體時鍾和寄存器初始化同步,接下來才能正常運行程序。
還有一種情況就是你用的是P0口,沒有接上拉電阻,P0口只有低電平沒有高電平。

B. 單片機流水燈實驗原理

上一節我們介紹了什麼是匯流排的方法,以及如何通過十六進制來控制IO口。並把我們的之前單點操作的流水燈進行了改進,成為了一個新的更加簡潔的程序。這回,就再用匯流排方法,來實現流水燈的更加多樣化的操作。

這次,我們要實現正向流水結束後再反過來流水,如此循環。然後再間隔閃爍。然後再累積流水,最後結束。

正向流水結束,再反過來。這個如何實現呢,我們需要使用到一些運算方法。

第一個是移位指令<<。

由於數字對比不強,看的不是很清晰,所以把數字給換成紅色了。

<<這個標志符的意思是,向左移動一位,就像下邊這樣:

1111 1111》1111 111_

移動完成後,會發現,最低位空出來了,此時程序會自動去填補一個0。於是就成了:

1111 1111》1111 111_》1111 1110

第一次移位1111 1110,第二次在第一次基礎上移位1111 1100,第三次在第二次基礎上移位1111 1000,如此循環,就可以一直把所有位都變成0。

我們在看下一句"|",這個符號是或的意思,我們知道,邏輯中的或,是說只要有其一為一,結果就是一。所以,我們把1100|0001,結果就是頭兩個一和最後一個一留下來,第三位因為都是0,所以就是0.結果就是1101了。當再次移位後,數據就變成1010了,我們再次跟0001取或,最後一位就再次置1,結果就是1011,從結果上看,1110》1101》1011……就是0在不斷的左移。

通過這個方法,可以讓每一位都會單獨置零。然後再給以一定時間的延時,就會看到流水燈了。

如果我們不賦初值0xfe會出現什麼情況?

就會出現,移位產生一個0,在或運算時就會被重新置1,如此循環,就進入不到第二個LED,也就不會出現流水燈了。可以自己嘗試下。

向右流水,效果是一樣的,需要注意的是初值更改為左側為0,就是0x7f,0111 1111,然後移位符號>>,還有取或的語句需要用0x80,1000 0000.

基本上是在左移位的基礎上稍作修改即可。

接下來是閃爍的。

閃爍,我們用的是間隔LED的方法,就是隔一個亮一個,埠輸出是1010 1010。翻譯成十六進制就是0xaa。這次用到的是一個取反的運算,就是把每一位的0變成1,1變成0,然後延時一段時間,再次取反,循環幾個周期,就看起來像是不斷閃爍。取反的操作相對好理解一些,就是這一位,現在是1,那麼取反後就是0,就是0和1的變換。

最後是一個累積點亮LED。

這個程序就是把第一個我們向左移位的函數,進行了更改,取消了賦初值,不用取或了,這樣就可以對比著理解,各個語句的作用,如果不使用,會產生什麼結果。如果我們的第一個函數不用取或這一步,那最終輸出結果就和這個現象一樣了。

所以,我們在寫程序時,需要認真,仔細分析自己需要的結果,然後對照程序進行簡單的演算。保證每一段都是可以輸出想要的結果,不然累積到最終,幾百行的代碼,看起來就會頭疼的,尤其是在沒有標注釋的情況下,有時就會忘記自己為什麼要寫這一句。

好的,這篇先說到這里,有問題或建議可以留言或私信給我。

想了解更多精彩內容,快來關注小亮談電氣

更多多內容,歡迎關注百家號:小亮談電氣。微信公眾號:電氣學苑。

C. 單片機蜂鳴器響三下停止,流水燈亮

單片機蜂鳴器響三下停止,流水燈亮,出現這樣的情況是系統出了問題,在預警報警,所以你要把機器關掉進行檢查維修。

D. 單片機流水燈全亮在滅在亮的程序怎麼寫

你流水燈都寫好了 全亮全滅還不簡單啊,設置 P0=0X00 (假設低電平亮,高電平滅) 在延遲一下 在P0=0XFF 在延時 不就OK了 把這幾個指令打包下放到一個子程序里 你用按鍵控制的時候就讓按鍵執行這個子程序 如果是 主程序循環的 話就放進主程序

E. 單片機流水燈

P0口控制,先奇數亮再偶數亮,循環三次;一個燈上下循環三次;兩個分別從兩邊往中間流動三次;再從中間往兩邊流動三次;不過這個程序實現的應該是這樣的
先奇數亮再偶數亮,循環三次;一個燈上下循環三次;兩個分別從兩邊往中間流動;再從中間往兩邊流動(延時0.1s)
#include< reg52.h>
#include< intrins.h>//頭文件
#define uint unsigned int
#define uchar unsigned char//聲明用unit代替unsigned int,下個同理
void delay();
void main()
{ uchar temp,temp1,temp2,a,b;
while(1)
{ for(b=3;b>0;b--)
{ temp=0xaa;
P0=temp;
delay();
temp=0x55;
P0=temp;
delay();//調用延時函數
}
for(a=3;a>0;a--)
{ temp=0xfe;
for(b=7;b>0;b--)
{ P0=temp;
temp=_crol_(temp,1);
delay();
P0=temp;
delay();
}
}
temp1=0xfe;
temp2=0x7f;
for(a=8;a>0;a--)
{
temp=temp1&temp2;
P0=temp;
delay();
temp1=_crol_(temp1,1);
temp2=_cror_(temp2,1);
}
}
}
void delay()
{ uint a,b;
for(a=100;a>0;a--)
for(b=100;b>0;b--);
} //延時函數
希望可以幫助到您

謝謝

F. 單片機8個流水燈從led8亮到led1每次亮一個並保存已亮燈狀態

摘要 這個流水燈是很普通的一種花樣,假設LED接P1口,程序如下:

G. 單片機點亮八位共陽極流水燈,陽極開路,燈也亮,但不是很亮,陽極接vcc後,就很亮了,什麼原因呢

正常,這是虛電多少伏,因為正極對車身沒有通路,量出來的都是懸空的虛電。

H. 51單片機通電後流水燈一直亮著,且一直響,這是為什麼

哥們描述清楚一點 晶元剛剛上電會留存原來的程序 可能原來晶元里就有流水燈和蜂鳴器的程序

I. 單片機 流水燈怎樣全部閃爍 五次之後停止

可以用for循環試試unsingned char i;for(i=0;i<5;i++)//流水燈閃爍程序。

若干個燈泡依次點亮就叫流水燈,它用在夜間建築物裝飾方面。例如在建築物的稜角上裝上流水燈,可起到變換閃爍美不勝收的效果。

單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能。

集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

J. 52單片機中用中斷程序中有的流水燈中斷結束後怎麼還亮著

把P1=0xff放到while循環里 是正解 這樣是不會導致數碼管閃爍的 因為沒看到電路圖,但是程序應該是沒有問題的,你可以將程序改回原來的樣子在試試看,如果數碼管不閃爍,那麼就用改用邊沿觸發方式吧,程序還原不變在EX0=1後面加上 TCON=1;就行了

閱讀全文

與單片機流水燈亮了相關的資料

熱點內容
雲伺服器建設原理 瀏覽:258
javajunit4for 瀏覽:845
華為伺服器如何進陣列卡配置 瀏覽:435
apache伺服器ip地址訪問 瀏覽:718
如何買到安卓手機預裝軟體 瀏覽:537
冤罪百度雲不要壓縮 瀏覽:87
蘇州雲存儲伺服器 瀏覽:175
解壓收納原聲 瀏覽:385
java注冊驗證 瀏覽:375
火花app怎麼上推薦 瀏覽:980
什麼app能游戲投屏到電視上 瀏覽:455
伺服器託管到雲端是什麼意思 瀏覽:836
app保存草稿怎麼用 瀏覽:808
安卓如何進入proumb 瀏覽:144
主機虛擬雲伺服器 瀏覽:619
刪除分區加密的空間會不會恢復 瀏覽:706
京東app客戶上門怎麼看搜索量 瀏覽:741
怎麼在農行app購買黃金 瀏覽:46
c型開發板和單片機 瀏覽:146
虛擬機建立用戶的模板文件夾 瀏覽:905