導航:首頁 > 操作系統 > 用單片機自製電子燈

用單片機自製電子燈

發布時間:2022-12-06 06:12:20

Ⅰ 如何用單片機做流水燈

因為電路用單片機控制,所以電路非常簡潔。其電路原理圖見下圖,印製板圖如下圖所示。

電路的核心部分是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行

Ⅱ 求單片機大神幫忙設計一個電路,51單片機製作led呼吸燈的

  1. proteus模擬按理來說是不可能達得到效果的,因為這種模擬得有非常快的處理速度。我剛動手試了下和自己的想法相同,LED只會間斷的閃爍。我是用AVR單片機,用51也是一樣的。我這個程序也在實物試過效果很好。

*
@演示定時器1的快速PWM輸出
@利用快速PWM輸出控制LED的亮度變化,達到呼吸燈的效果
*/

#include<iom8a.h>
#include"port_set.h"
#include"delay.h"

/*********************************************
@函數功能:定時器1初始化
@說明:定時器初始化為快速PWM,TOP為8位(0x00FF)
時鍾輸入為系統時鍾
匹配時OC1A輸出0,在TOP時輸出1
OC1B為普通埠
輸入捕捉觸發沿選擇下降沿觸發捕捉
捕捉中斷禁止,通道A比較中斷禁止
通道B比較中斷禁止,溢出中斷禁止
*********************************************/
void Timer1_Init(void)
{
TCCR1A = 0x81;
TCCR1B = 0x89;
OCR1A = (unsigned int)0x0;
OCR1B = (unsigned int)0x0;
ICR1 = (unsigned int)0x0;
TCNT0 = (unsigned int)0x0;
SFIOR |= 0x1;
TIMSK |= 0x0;
}

void main(void)
{
unsigned char ocr = 0; //比較值
signed char ddr_flag = 1; //比較值的增長方向

IO_SET_OUT(B,1); //T1的比較輸出埠設置為輸出
Timer1_Init();

while(1)
{
delay_ms(5);//延時一定時間改變一次比較值
ocr += ddr_flag;

OCR1A = (unsigned int)ocr;

/*改變比較值的增長方向*/
if(ocr>0xFE)
ddr_flag = -1;
else if(ocr<0x1)
ddr_flag = 1;
}
}

Ⅲ 如何用單片機簡單製作一個流水燈

  1. 工具:STC系列51單片機、串口轉換器(USB轉TTL 或232轉TTL)

  2. 材料:實驗板一塊(可以買現成的,也可以買麵包板自己搭建),電阻、LED燈 若干,5V電源等。

  3. 以下程序可以直接用Keil C 直接編譯執行。

//可以通過左移函數_crol_()和右移函數_cror_()來實現LED等的來迴流動。


//具體實現方法可以參考如下程序:


#include<reg51.h>

#include<intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

voiddelay(uinta);

voidmain()

{

P1=0xfe;

while(1)

{

//向左循環點亮LED

for(i=0;i<7;i++)

{

P1=_crol_(P1,1);//左移一位,點亮下一位LED

delay(55);

}

//向右循環點亮LED

for(i=0;i<7;i++)

{

P1=_cror_(P1,1);//右移一位,,點亮上一位LED

delay(55);

}

}

}

//延時函數,延時a毫秒

voiddelay(uinta)

{

uintx,y;

for(x=a;x>0;x--)

for(y=110;y>0;y--);

}

Ⅳ 如何用單片機簡單製作一個流水燈

代碼:

#include<reg52.h>

#include <intrins.h>

void delayms(unsigned char ms) // 延時子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}

main()
{
unsigned char LED;
LED = 0xff;
P0 = LED;

while(1)
{
delayms(1000);
LED = LED<<1; //循環右移1位,點亮下一個LED

if(LED==0x00)
{
LED=0xff;
}
P0 = LED;
}
}

電路:
就是普通的單片機IO口,採用灌電流方式就行,外接上拉電阻。

Ⅳ 單片機led流水燈實驗步驟

一個小的程序是不需要專門繪制流程圖的。其實在初學階段,畫好流程圖能幫助我們整理好程序設計的脈絡,讓程序變得有條理。在編程的時候,流程圖像一個指路明燈引領著程序的走向,所以應該養成良好的習慣,在編寫程序之前,繪制一份流程圖。

流程圖的繪制方法很簡單,一些編程類書籍有過專門的介紹,在本書就不再講述了。怎樣才能達到我們演示的流水燈的效果,就是讓P1埠在間隔一段時間後,輸出不同的值?假設我們想要的效果是某一時刻,只有一個LED小燈亮,而間隔的時間是一秒,當I/O埠輸出高電平的時候,LED小燈是不亮的,當I/O埠輸出低電平的時候,LED小燈才亮。如圖所示,P1的值用十六進制可以表示為FEH,因為四位二進制數可以表示一位十六進制數。我們得出在不同LED小燈被點亮的時候,P1埠輸出的狀態程序流程圖還是比較簡單的,P1口在間隔一段時間之後,輸出不同的值,然後返回到程序執行的起點,重新開始執行,這樣就會循環往復不斷地出現流水的效果。

Ⅵ 我想用單片機控制製作流水燈實物,需要哪些原件

萬能板,89C51單片機,MAX232,104電容若干,12MHZ晶振,20P電容2個,串口母座,LED燈若干,1K電阻若干,導線若干,5V直接電源
差不多一般就這么多吧,建議可以網路搜索 51單片機最小系統 也允許能幫到你,謝謝!

Ⅶ 單片機製作呼吸燈的C語言程序怎樣編寫

#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期並賦值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循環
{
LED0=1;
Delay(150000); //特意加延時,可以看到熄滅的過程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}

Ⅷ 如何用單片機簡單製作一個流水燈

1:首先得准備單片機的最小系統;2:安裝共陽或者共陰電路外加限流電阻接好硬體;3:使用相應的編程軟體將編寫好的代碼下載到單片機,完後上電運行結果。

Ⅸ 怎麼用單片機做LED流水燈

你那裡附近有電子元器件市場嗎?去那裡買就可以了。你是有單片機晶元而已?如果是只有單片機晶元,那你可能要晶振,12M、6M都可以,還要一個5V電源,可以用手機充電器,自己買一個USB介面焊在洞洞板上,流水燈自然要買LED燈了,估計也就1~2毛錢一個,還要買電阻限流,不然LED燈會燒,如果不想直接從單片機取電以保護單片機,可以外接一個驅動晶元,比如74HC573。如果你已經有單片機開發板,那就什麼都解決了。

Ⅹ 如何利用單片機設計一個光感小燈

主要是分為採集部分和驅動部分,採集部分對光線進行採集,驅動部分是驅動LED小燈,光線採集可以用光滅電阻,通過單片機的ADC進行光線採集,驅動的話,可以用恆流LED驅動晶元。

閱讀全文

與用單片機自製電子燈相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163