A. 怎麼用51單片機做一個關燈裝置
使用單片機驅動一個三極體電路用繼電器即可進行開關燈操作,輸入根據需要增加檢測電路將狀態傳送給單片機。
B. 怎麼用單片機做LED流水燈
你那裡附近有電子元器件市場嗎?去那裡買就可以了。你是有單片機晶元而已?如果是只有單片機晶元,那你可能要晶振,12M、6M都可以,還要一個5V電源,可以用手機充電器,自己買一個USB介面焊在洞洞板上,流水燈自然要買LED燈了,估計也就1~2毛錢一個,還要買電阻限流,不然LED燈會燒,如果不想直接從單片機取電以保護單片機,可以外接一個驅動晶元,比如74HC573。如果你已經有單片機開發板,那就什麼都解決了。
C. 如何用單片機簡單製作一個流水燈
工具:STC系列51單片機、串口轉換器(USB轉TTL 或232轉TTL)
材料:實驗板一塊(可以買現成的,也可以買麵包板自己搭建),電阻、LED燈 若干,5V電源等。
以下程序可以直接用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--);
}
D. 單片機製作呼吸燈的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--);
}
E. 如何用單片機做流水燈
因為電路用單片機控制,所以電路非常簡潔。其電路原理圖見下圖,印製板圖如下圖所示。
電路的核心部分是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行
F. 求單片機做流水燈
8086...這個我不會啊。。。
估計比較復雜,
怪不的一個簡單的流水燈程序都給了20分,
物超所值啊。。。
等高人來吧。。。
P10到P17接單片機P1口,其他的最小系統。
#include<reg52.h>//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
/*------------------------------------------------
延時子程序
------------------------------------------------*/
voiddelay(unsignedintcnt)
{
while(--cnt);
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
P1=0xfe;//給初始化值換算成二進制是11111110
while(1)
{
delay(30000);//延時程序
P1<<=1;//左移一位該語句等效於P1=P1<<1
P1|=0x01;//最後一位補1,該語句等效於P1=P1|0x01符號"|"表示"或"
if(P1==0x7f)//檢測是否移到最左端?"=="表示檢測符號2端的值是否相等
{
delay(30000);
P1=0xfe;//重新賦值
}
}
}
G. C51單片機做數字燈。 急急急急!!!
這樣沒答案的,又沒電路,怎麼幫你
H. 用單片機做流水燈
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
while(1)
{
P1=0x7f;
delay(100);
P1=0xbf;
delay(100);
P1=0xdf;
delay(100);
P1=0xef;
delay(100);
P1=0xf7;
delay(100);
P1=0xfb;
delay(100);
P1=0xfd;
delay(100);
P1=0xfe;
delay(100);
}
} 單片機程序,流水燈!!!左移!!!不懂在聯系!!
I. 如何用51單片機做呼吸燈的程序
LED使用三極體驅動,NPN或者PNP的都可以。
使用定時器,輸出PWM波形,逐漸改變輸出PWM的占空比的值。
J. 用單片機做了個流水燈
單片機 直接連接 LED 燈,一般連接方法為 LED+ 接 VCC , LED- (加一電阻)接 I/O 口。
如果 I/O 口 接 LED+ ,LED- 接 GND , LED 只有微微的亮度。(可以設置成推挽輸出的除外)
你的現象可能是下一種接法。