㈠ 單片機 8個LED燈隨機閃爍怎麼做
1、首先在電腦中新建項目:Keil uVision4 51單片機LED閃爍編程,如下圖所示。
㈡ 單片機點亮一個LED燈的電路圖實訓內容所有的原件以及原件特點
單片機點亮一個LED燈,需要以下元件。80c51系列單片機一片,ch340一片,12Mhz晶體兩個,22pf電容兩個,4.7k電阻一個,10uf電容一個,輕觸開關一個,LED燈一個,2.2k 1/4w電阻一個,USB座一個,USB線一根。這些元件的特點由其自身特性決定的。
㈢ 單片機原理流水燈實驗報告
單片機原理流水燈實驗報告:一、實驗目的:進一步熟習keil模擬軟體、proteus模擬軟體的使用。認識並熟習單片機坦斗I/O口和LED燈的電路構造,學會建讓友磨立簡單的流水燈電路。掌握C51中單片機I/O口的編程方法和使用I/O口進行輸入輸出的注意事項。
㈣ 單片機實驗利用定時器控制八個LED燈每隔1S每四個為一組輪流點亮
03 8隻LED左右來回點亮
/* 名稱:8隻LED左右來回點亮
說明:程序利用循環移位函數_crol_和_cror_形成來回滾動的效果
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延時
void DelayMS(uint x)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uchari;
P2=0x01;
while(1)
{
for(i=0;i<7;i++)
{
P2=_crol_(P2,1);//P2的值向左循環移動
DelayMS(150);
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1);//P2的值向右循環移動
DelayMS(150);
}
}
}
04 花樣流水燈
/* 名稱:花樣流水燈
說明:16隻LED分兩組按預設的多種花樣變換顯示
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Pattern_P0[]=
{
0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,
0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,
0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff
};
uchar code Pattern_P2[]=
{
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,
0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,
0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,
0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff
};
//延時
void DelayMS(uint x)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uchari;
while(1)
{ //從數組中讀取數據送至P0和P2口顯示
for(i=0;i<136;i++)
{
P0=Pattern_P0[i];
P2=Pattern_P2[i];
DelayMS(100);
}
}
}
05 LED模擬交通燈
/* 名稱:LED模擬交通燈
說明:東西向綠燈亮若干秒,黃燈閃爍5次後紅燈亮, 紅燈亮後,南北向由紅燈變為綠燈,若干秒後南北向黃燈閃爍5此後變紅燈,東西向變綠燈,如此重復。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P0^0; //東西向燈
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P0^3; //南北向燈
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;
uchar Flash_Count=0,Operation_Type=1; //閃爍次數,操作類型變數
//延時
void DelayMS(uint x)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
//交通燈切換
void Traffic_Light()
{
switch(Operation_Type)
{
case1: //東西向綠燈與南北向紅燈亮
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000);
Operation_Type=2;
break;
case2: //東西向黃燈閃爍,綠燈關閉
DelayMS(300);
YELLOW_A=~YELLOW_A;GREEN_A=1;
if(++Flash_Count!=10)return; //閃爍5次
Flash_Count=0;
Operation_Type=3;
break;
case3: //東西向紅燈,南北向綠燈亮
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS(2000);
Operation_Type=4;
break;
case4: //南北向黃燈閃爍5次
DelayMS(300);
YELLOW_B=~YELLOW_B;GREEN_B=1;
if(++Flash_Count!=10)return;
Flash_Count=0;
Operation_Type=1;
}
}
//主程序
void main()
{
while(1)Traffic_Light();
}
06 單只數碼管循環顯示0~9
/* 名稱:單只數碼管循環顯示0~9
說明:主程序中的循環語句反復將0~9的段碼送至P0口,使數字0~9循環顯示
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar codeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//延時
void DelayMS(uint x)
{
uchart;
while(x--)for(t=0;t<120;t++);
}
//主程序
void main()
{
uchari=0;
P0=0x00;
while(1)
{/* for(;i<11;i++){ P0=~DSY_CODE[i]; DelayMS(300);} //注:另一方案 */
P0=~DSY_CODE[i];
i=(i+1)%10;
DelayMS(300);
}
}
㈤ 單片機led左右燈實驗:要求: 八個LED燈依次向左再向右,循環點亮,間隔閃爍
你現在的程序就有問題啊。我給你改改吧。一會兒給你發程序附件。你要的就是流水燈程序唄,就是先從左向右依次點亮led燈然後在從右向左依次點亮對吧。
程序已經給你傳到附件裡面了,用電腦下載吧,傳的c程序你可以直接用。有什麼不懂的再問我吧。(你的編程風格很有問題啊,程序寫的一坨,層次不清晰沒有標注,我初學的時候也犯了這樣的錯誤,將來你寫大篇幅的程序的時候會出現一堆問題的,清晰地編程風格非常重要,僅僅是建議。)
㈥ 單片機流水閃爍燈的實驗目的
學習基礎知識。
㈦ 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--) ;
}
這樣應該明白了吧!不過你這個程序,按一下復位(或者打開一次電源)只亮一下。加個循環就可以不停的閃啦!
㈧ 單片機led流水燈實驗步驟
一個小的程序是不需要專門繪制流程圖的。其實在初學階段,畫好流程圖能幫助我們整理好程序設計的脈絡,讓程序變得有條理。在編程的時候,流程圖像一個指路明燈引領著程序的走向,所以應該養成良好的習慣,在編寫程序之前,繪制一份流程圖。
流程圖的繪制方法很簡單,一些編程類書籍有過專門的介紹,在本書就不再講述了。怎樣才能達到我們演示的流水燈的效果,就是讓P1埠在間隔一段時間後,輸出不同的值?假設我們想要的效果是某一時刻,只有一個LED小燈亮,而間隔的時間是一秒,當I/O埠輸出高電平的時候,LED小燈是不亮的,當I/O埠輸出低電平的時候,LED小燈才亮。如圖所示,P1的值用十六進制可以表示為FEH,因為四位二進制數可以表示一位十六進制數。我們得出在不同LED小燈被點亮的時候,P1埠輸出的狀態程序流程圖還是比較簡單的,P1口在間隔一段時間之後,輸出不同的值,然後返回到程序執行的起點,重新開始執行,這樣就會循環往復不斷地出現流水的效果。