基於51微控制器的led燈控制小實驗

2021-08-19 22:58:12 字數 1278 閱讀 4137

該小實驗是為了更好的理解51微控制器的使用,其完成的要求如下:

1.第乙個鍵控制兩個燈的翻轉;

2.第二個鍵控制乙個燈的翻轉;

3.第三個鍵接在51微控制器的外部中斷口,每檢測到一次,翻轉三下;

4.第四個鍵控制燈的亮度,使燈的亮度從低加到高。

說明:(1).此實驗使用的開發板,led燈是共陽極的,所以當51微控制器輸出低電平時,led燈會亮;

(2).要求4是用定時器來實現的,改變定時器重灌的初值來改變高低電平的占空比,從而改變輸出電壓的有效值;

(3).在測試要求4時,可以用萬用表測量其用效值,會發現其有效值是隨著按鍵變小的,從而led燈的兩邊壓差變大,會變得更亮。

其**如下:

#include#define uint unsigned int 

#define uchar unsigned char

sbit key_0=p2^0; //控制兩個led燈

sbit key_1=p2^1; //控制乙個led燈

sbit key_2=p3^2; //控制燈閃爍

sbit key_3=p2^2; //調節燈亮度

sbit led_0=p1^0; //0號led燈

sbit led_1=p1^1; //1號led燈

sbit led_2=p1^2; //2號led燈

sbit led_3=p1^3; //3號led燈

uint pwm=1024; //定義pwm波初值

uint flag=0; //高低電平標誌位

void delay(uint z) //延時函式

void fanzhuan_double() //兩個led燈翻轉

void fanzhuan_single() //單個led燈翻轉

void shanshuo() //燈的閃爍

}void key_scan() //按鍵檢測}}

}if(key_1==0)}}

} }void time_int0_init() //定時器,外部中斷初始化

void main()

} void time() interrupt 1 //定時器0中斷服務函式

while(1)}}

}

if(flag==0)

if(flag==1)

}void rise_down() interrupt 0 //外部中斷服務函式

微控制器LED燈

include void delay unsigned char i 使用迴圈語句,實現延時 void delay unsigned int i 延時函式,i最大取值65535 最大延時0.65535s void fun1 void 全部亮 void fun2 void 全部滅掉 void fun3...

基於51微控制器的呼吸燈

原理 由於人眼的視覺殘留特性 人眼在觀察景物時,光訊號傳入大腦神經,需經過一段短暫的時間,光的作用結束後,視覺形象並不立即消失,這種殘留的視覺稱 後像 視覺的這一現象則被稱為 視覺暫留 舉例 我們家裡使用的燈是50hz,一秒鐘會亮滅50次,但是我們覺得燈是一直亮著的。但是亮和暗的程度取決於發光和不發...

51微控制器控制LED顯示漢字

2007 12 25 12 34 26 用51微控制器控制led顯示漢字,電路中行方向由p0口和p2口完成掃瞄,由於p0口沒有上拉電阻,因此接乙個4.7k 8的排阻上拉。如沒有排阻,也可用8個普通的4.7k 1 8w電阻。為提供負載能力,接16個2n5551的npn三極體驅動。列方向則由4 16解碼...