『壹』 51單片機能否正常驅動32盞LED燈LED燈做流水燈用。求高人解答!
驅動小功率LED是沒有問題的。1個51單片機外加4個PNP三極體(如C9012或8550),以及12個電阻就可以了。將32個LED分成4組共陽連接,採用動態掃描方式輸出驅動LED,這樣共佔用單片機12根口線。
『貳』 單片機控制流水燈
可以,不過單片機可能無法直接驅動,要經過三極體或MOS管來控制
『叄』 單片機中流水燈如何控制
單片機中流水燈控制:
硬體連接很簡單,只要將8個LED指示燈接在P1口上
另一端通過220歐姆的電阻接+5V電源上,就可以了。
主要靠軟體控制,簡單的可以使用左移或右移指令,將低電平0
逐漸移入寄存器中,即控制LED指示燈逐漸一個一個地點亮或一個一個地熄滅。
復雜點:
可以進行花式流水控制。
例如:
可以由兩邊逐漸向內點亮
然後再由內逐漸向外一個一個熄滅。
還可以由由內逐漸向兩邊內點亮
然後再由兩邊漸向內逐一個一個熄滅。
在程序的實現上
可以把各種花式流水的P1口亮滅狀態字
事先定義成數組
然後每隔一定的時間
取出送P1口顯示。
呵呵
俺只提供給你一個號的演算法
程序就自己動手自立更生吧
滿意
就選滿意回答
『肆』 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)
單片機流水燈C語言程序的源代碼如下:
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp>>=1;
}
void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(4)流水燈驅動單片機擴展閱讀
51單片機流水燈的源代碼如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
『伍』 求51單片機驅動32盞LED流水燈(單向流水,全部亮時閃爍兩次,雙向流水,全部亮時閃爍兩次)的C程序!謝謝
這個比較簡單吧
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay();//自己寫吧 延遲一秒
void led_blink();//~~~~~~~~~~~~
void single_stream();//單向流水函數聲明
void double_stream();//~~~~~~~~
void led_blink() //全部亮時閃爍兩次
{
uchar i;
if(P3^7==0)
{ i=2;
while(i--)
{
P0=0x00;//低電平點亮
P1=0x00;
P2=0x00;
P3=0x00;
delay();
P0=0xff;//熄滅
P1=0xff;
P2=0xff;
P3=0xff;
delay();
}
}
}
void single_stream()//單向流水燈
{
uchar i;//自己定義一下 unsigned char
for(i=0;i<8;i++)
{
P0=table[i];//逐個點亮led0-7 第零組
delay();
}
for(i=0;i<8;i++)
{
P1=table[i];//第一組
delay();
}
for(i=0;i<8;i++)
{
P2=table[i];//第二組
delay();
}
for(i=0;i<8;i++)
{
P3=table[i];//第三組
delay();
}
}
void double_stream()//這個你也自己寫吧
{
}
void main()//main 函數就調用下 前面的就可以了。。
{
while(1)
{
single_stream();
led_blink();
double_stream();
led_blink();
}
}// 大概就是這樣。。我沒測試
『陸』 單片機流水燈程序
程序如下:
#include <reg52.h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3。
讓電子信息技術與單片機技術相融合,有效提高了單片機應用效果。作為計算機技術中的一個分支,單片機技術在電子產品領域的應用,豐富了電子產品的功能,也為智能化電子設備的開發和應用提供了新的出路,實現了智能化電子設備的創新與發展。
從二十世紀九十年代開始,單片機技術就已經發展起來,隨著時代的進步與科技的發展,目前該技術的實踐應用日漸成熟,單片機被廣泛應用於各個領域。現如今,人們越來越重視單片機在智能電子技術方面的開發和應用,單片機的發展進入到新的時期。
無論是自動測量還是智能儀表的實踐,都能看到單片機技術的身影。當前工業發展進程中,電子行業屬於新興產業,工業生產中人們將電子信息技術成功運用。
『柒』 如何用單片機做流水燈
因為電路用單片機控制,所以電路非常簡潔。其電路原理圖見下圖,印製板圖如下圖所示。
電路的核心部分是AT89C2051單片機,前面提到它有Pl和P3兩組I/O口,我們這里只用到Pl口,共8個引腳。圖中Cl、R9組成典型的上電復位(即在加電時單片機復位)電路,XTAL、C2、C3與AT89C2051片內振盪電路組成時鍾振盪器。值得注意的是,C2、C3的容量不能與圖中數值偏差太大,否則可能引起不起振或振盪不穩定。XTAL的頻率可以在4-20MHz之間,不過,頻率的變化會導致程序運行速度的變化,這樣就需要調整延時子函數的參數。事實上,不調整參數亦可,只是此時延遲時間不再是1秒,其延遲時間會隨著XTAL頻率的降低而增加。
二、軟體部分
本程序包含兩個函數,一個是主函數,另一個是延時子函數。源程序如下(為了便於講解,我們為每行程序加上了編號):
程序各行作用如下:
00行:把AT89C2051的頭文件「AT89x051.H」包含進來。
01行:聲明Delay()延時子函數,該函數有一個無符號整型參數k,同時函數前面的void表明函數不返回函數值。
02行:延時子函數的開始,同時聲明兩個無符號整型變數i和j。
不過請注意,這里沒有象上期的程序一樣,把表示函數開始的「{」單獨成行,而是把下一行寫在一起了。事實上,寫C程序的時候,可以把多行寫作一行,C編譯器只要遇到分號就認為是一行語句的結束。
當然,我們不能因為C程序有這個特點,就隨意把多行合作一行書寫,實際書寫C程序的時候,還是要養成良好的程序書寫習慣,按照約定俗成的原則來書寫。
03行:聲明for()循環。這個循環的初始條件是i=0,終止條件是i<k,循環計數是每循環一次,用手計數的變數i加1。因此,這個循環的循環次數就是k次。這樣,只要改變k的值(即改變Delay()延時子函數的參數k的值),就可以很容易地控制循環次數,從而獲得不同的延時時間。
04行:聲明嵌套在03循環中的一個新的for()循環,這個循環與上一個循環相似,其循環次數是120次。本循環與上一個循環嵌套後,使得總的循環次數達120×k次。
05行:第一個分號,表示L條空語句,佔用一個機器時間,以實現延時的目的。後面的兩個「}」中,第一個「}」是04行for()循環的結束標志,程序遇到它時,將自動返回04行,使用於循環計數的變數j加1,同時判斷j是否小於120,如果否,則轉入05行;第二個是03行for()循環的結束標志,程序遇到它則會返回03行
『捌』 如何在實現led流水燈時用單片機精確控制流水燈切換時間
1、首先新建一個工程(新項目)。
2、其次查看原理圖確定需求(流水燈)對應LED引腳在單片機上的哪個引腳。
3、然後編寫程序(通過查看原理圖可以看到需要控制整個P2口以控制8個LED燈)。
4、最後編譯程序,下載程序至開發板,查看效果(調試)即可。
『玖』 什麼是單片機流水燈
就是單片機驅動多個LED燈,亮的時候順序亮,滅的時候也是順序滅,看起來就像流水一樣。
『拾』 關於單片機流水燈的問題
12MHz為時鍾周期,如果不分頻,定時器周期也為12MHz,51單片機為12分頻。
以下計算均為不分頻。
Fc = 12MHz, Time = 1s ,計數次數為12_000_000,如果有16bit定時器,計數上限65535,不可以滿足,因此要配合軟體計數。12000000 = 60_000 X 200.
硬體連接為:
發光二極體的壓降為1~3V,
額定電流:20mA
如果用單片機IO口直接驅動,假設輸出電壓為5V,壓降1.2V,那麼分壓電阻R = (5-1.2)/0.02 =240(ohm),當然了一般可以用1K的電阻。有時候單片機驅動能力不足,要上拉電阻,這個阻值要根據單片機倒灌電流的閾值計算,一般阻值1~10K