⑴ 51單片機實現流水燈,計數器顯示燈亮的序號
51單片機實現流水燈,計數器顯示燈亮的序號。程序中用的變數ledi和b重復了,只用b就行。把主程序第二行聲明換成b,畫紅線的3行刪掉,紅箭頭的是替換。強調,原來b不能在那裡賦值為0,這樣b永遠為0,雖然有b++,下面還有b=0,又回0了。
⑵ 51單片機32個流水燈編程如何實現指定其中某一個燈亮,如何實現多種花樣亮燈
要51單片機控制32個流水燈,關鍵是要解決電路設計,只要能設計出電路來,編程實現控制指定其中某一個燈亮,並實現多種花樣亮燈,就容易了。如果只做32個流水燈,就用單片機的四個並行口,共32個IO引腳全部用上,正好控制32個流水燈。如果引腳還有其他應用,可用四片鎖存器,也可以控制32個流水燈了。
⑶ 關於單片機C51做流水燈和花式的
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar i,j,w =0xfe;
void delay()
{
for( i = z;i > 0;i++)
{
TH0 = (65536 - 50000)/256; //利用定時器0准確定時
TL0 = (65536 - 50000)%256;
TR0 = 1;
while(!TF0); //當TF0 = 1 時,關閉它。
TF0 = 0;
}
}
void main()
{
TMOD = 0x01; //設置定時器0工作方式1
while(1)
{
P1 = 0xff; //關閉所有二極體
P2 = 0xff;
delay(10); // 延時500ms;
P1 = 0x00;
P2 = 0x00;
delay(10);
for(j = 0;j < 8;j++)
{
P1 = w;
delay(10);
w = _crol_(w,1); // 做移動一位。
}
w = 0xfe;
for(j = 0;j < 8;j++)
{
P2 = w;
delay(10);
w = _crol_(w,1);
}
for(j = 0;j <3;j++) //左右兩側四隻同時閃爍3次
{
P1 = 0xf0;
P2 = 0x0f;
delay(10);
P1 = 0xff;
P2 = 0xff;
}
delay(20); //延時1s.
}
}
⑷ 如何用單片機簡單製作一個流水燈
工具: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--);
}
⑸ 51單片機 8盞花樣流水燈
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R1,#7 ;
MOV A,#0FCH
LOOP1: MOV P1,A
RL A
CALL DELAY
DJNZ R1,LOOP1
MOV P1,00H
CALL DELAY
CALL DELAY
MOV R1,#7 ;
MOV A,#3FH
LOOP2: MOV P1,A
CALL DELAY
RR A
DJNZ R1,LOOP2
MOV P1,#00H
CALL DELAY
SJMP MAIN
DELAY: MOV R4,#4
MOV R5,#200
MOV R6,#248
DJNZ R6,$
DJNZ R5,$-2
DJNZ R4,$-4
RET
END
註:LED共陽接法
⑹ 51單片機流水燈原理
單片機流水燈控制原理就是將多個LED燈珠連接到不同的單片機輸出端上,編程使單片機的這些輸出端逐個的輸出信號點亮LED,在設置好各個LED的通電時間和通電間隔時間後,就可以看到這些LED燈珠此起彼伏的亮起,如同流水一樣.
⑺ 想用51單片機驅動led,做花樣流水燈,有四五十多個,介面不夠怎麼辦,需要哪些電子器件謝謝
1、擴並口,用8255或者74HC573鎖存器。P0加另一個口可以簡單擴出8個口,得到8*8=64個控制IO。足夠用了。
2、用串口移位控制,74LS595,可以級聯,理論上你可以擴充無限。
⑻ 51單片機流水燈程序
程序如下:
#include <reg52.h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3;
sbit led5 = P2^4;
sbit led6 = P2^5;
sbit led7 = P2^6;
sbit led8 = P2^7;
void main()
{
int i,j;
//點亮第一個燈
led1 = 1;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//延時1秒
for(i = 0;i < 110; ++i)
{
for(j = 0; j < 1000; ++j)
{
;//什麼也不做
}
}
//點亮第二個燈
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//點亮剩餘的燈
//省略……
while(1);
}
流水燈幾點說明:
void:因為該延時函數不需要返回值,所以寫為void
delay1s:該函數的函數名,命名需要符合C語言的標識符命名規則。
(): 不需要傳入參數,所以括弧中為空
至此我們可以把流水燈程序寫為以下形式:
⑼ C語言C51單片機花樣流水燈程序分析注釋
和你說一句關鍵的(別告我你整個程序一句都看不懂):
P1=0xfe;
0xfe是十六進製表示的數,二進制就是1111 1110,通過你的程序和相關注釋可以看出,硬體上你有8個led燈連接P1口,且這些led是低電平亮。P1=0xfe(1111 1110)也就是表示七個燈滅,一個燈亮。接下來的代碼就是讓P1數據0xfe左移且低位補1,移一次就是1111 1101,、兩次就是1111 1011,三次是1111 0111。。。以此類推,可以看出它是0由最低位到最高位依次移過去的,而剛說了0表示led亮,這也就是led從一邊到另一邊依次點亮的效果。
後面的代碼按我上面說的自己理解,完全對你解釋太麻煩,對你也沒多大好處,只有你自己理解了才能學好單片機