導航:首頁 > 操作系統 > 單片機閃爍實驗

單片機閃爍實驗

發布時間:2022-09-05 01:19:42

1. 單片機 8個LED燈隨機閃爍怎麼做

1、首先在電腦中新建項目:Keil uVision4 51單片機LED閃爍編程,如下圖所示。

2. 下面怎麼實現的單片機閃爍

首先,這個程序不會讓LED閃爍;如果閃爍,需要加循環語句,如下:
假如P2口接LED 陰極,陽極通過上拉電阻接Vcc的話;

void main() //程序開始
{

while(1)//作用:讓下面4條語句往復循環
{
P2 = 0x00; //現在P2口為低電平,LED導通,發光
delay(600); // 相當於等一會;目的是讓LED一段時間,不然你看不出變化
P2 = 0xff; //同上,P2口高電平,LED兩端都為高電平,不發光;
delay(600); // 同上等待;
}
}

3. 單片機定時器使二極體1S閃爍的實驗:TMOD=0x03;TH0=6;TL0=6;//裝初值,問題是為什麼等於6

TOMD=0x03,是定時器工作方式3,分為兩個8為定時器,每個定時器計數最大值為255,計數到最大255,再加1,產生中斷,相當於計數從0到256。
假設你的晶振頻率為12M,機器周期為1M,那麼機器一周期時間為1/f=1/1M=1微秒。定時器3的最大計數為255,最大的計數時間為256微秒,想要以1秒閃爍,TH0=6;TL0=6;每次計數都是記(256-6=250)微秒,中斷次數1秒除以250微秒。現在明白為什麼初值為6沒

4. 單片機流水閃爍燈的實驗目的

學習基礎知識。

5. 對於下面的51單片機LED閃爍實驗C程序,為什麼LED會一直不停地閃爍,而不是閃爍一次呢

因為你的代碼後面的「空白」處都是復位命令,所以你的代碼執行完了就復位了,就閃啦。。

6. 單片機燈閃爍怎樣操作的

嘿嘿
俺來幫你解答
1
單片機燈閃爍的實現方法:
主要就是控制小燈的亮和滅的頻率
可以讓小燈
1秒鍾
亮一次
滅一次
也可以控制小燈
2秒鍾
亮一次
滅一次
2具體實現:
利用軟體延時
或硬體定時器定時
來控制小燈的亮和滅的時間。
滿意就選滿意回答嘍

7. 如何用單片機寫5個彩燈依次閃爍

如果數碼管是共陰極的,則是把其中一個置高就會讓該led亮起來。然後延時(沒有延時的話是看不到效果的),再讓下一個燈亮起來,再延時,……以此類推,就可以了!
電路給我,我可以幫你寫程序!

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

上一節我們介紹了什麼是匯流排的方法,以及如何通過十六進制來控制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。

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

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

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

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

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

9. 單片機實驗 :實現LED燈的循環依次閃爍

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;

void delay(uint z)//延時2ms程序
{uint x,y;
for(x=z;x<z;x++)
for(y=0;y<110;y++);
}
void main()
{
while(1)
{
P1_3=1;
P1_0=0;
delay(250);
P1_0=1;
P1_1=0;
delay(250);
P1_1=1;
P1_2=0;
delay(250);
P1_2=1;
P1_3=0;
delay(250);
}
}
方法2:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
void main()
{ TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
while(1)
{if(j==5)
P0_0=0;
if(j==10)
{P0_1=0;
P0_0=1;}
if(j==15)
{P0_2=0;
P0_1=1;
}
if(j==20)
{P0_3=0;
P0_2=1;
j=0;
}

}

}
void timer0_init() interrupt 1
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
}

10. 51單片機LED燈閃爍實驗,具體分析一下以下程序每一步的作用,完全看不懂。。。

#include<reg51.h>
void delay(unsigned int i);
main() //主函數
{
P2=0x55; //P2口:0101 0101 從左到右:第一個口低電平,第二個口高電平。。。。
delay(600); //延時600,不延時你來不及看見燈亮
P2=0xaa; /*P2口輸出端取反,1010 1010 高電平變低電平,低電平變高電平,(原來亮的關掉,原來不亮的亮)*/
delay(600);
}
void delay(unsigned int i) //這個是延時函數
{
unsigned char j;
for(i;i>0;i--)
for(j=255;j>0;j--) ;
}
這樣應該明白了吧!不過你這個程序,按一下復位(或者打開一次電源)只亮一下。加個循環就可以不停的閃啦!

閱讀全文

與單片機閃爍實驗相關的資料

熱點內容
日本程序員一年工資 瀏覽:199
出國做程序員怎麼樣 瀏覽:735
rar鎖定壓縮文件 瀏覽:871
安卓id號碼怎麼更換 瀏覽:524
db2如何連接伺服器資料庫 瀏覽:630
wordtopdf轉換 瀏覽:840
雲伺服器在哪設置ftp 瀏覽:622
黑客社會工程學攻擊pdf 瀏覽:998
專業中穎單片機程序開發 瀏覽:426
python多進程多線程實例 瀏覽:639
山東濟南生產伺服器雲主機 瀏覽:310
演算法員跳槽四年 瀏覽:730
秦九昭演算法v0怎麼求 瀏覽:384
斗魚java 瀏覽:896
程序員對老師的感謝 瀏覽:29
什麼app能查看銀行卡照片 瀏覽:24
win7pdf虛擬列印 瀏覽:332
程序員喜歡的女生條件 瀏覽:124
阿里雲伺服器ip搭建教程 瀏覽:85
解壓和拉伸這一動畫的原理是什麼 瀏覽:740