Ⅰ 用單片機怎樣使二極體漸漸變亮
1、方法一:用單片機產生PWM波信號,輸出後進行濾波,用它控制一個開關(MOS或者三極體),利用PWM波的占空比高低,形成不同的開閉時間,改變LED的亮度(開的時間越長,LED越亮)。
2、方法二:用單片機輸出,經過DA轉換和單緩沖,形成電壓,然後接一個射極輸出器形成恆流源,通過恆流源的電流變化改變LED的亮度。
Ⅱ 單片機一個按鍵控制一個發光二極體
以下是用C語言實現的:
#include<reg51.h>
sbit KEY=P1^0;
sbit LED=P1^1;
void delay();
void main()
{
while(1) //不斷循環
{
if(KEY==0) //判斷鍵盤是否被按下
{
delay(); //調用延時函數,作用消抖
if(KEY==0) //再次讀鍵盤,以判斷剛才判斷到的是否為抖動
LED=~LED; //取反P1.1電平狀態,也就是改變發光管的狀態
}
}
}
void delay()
{
unsigned int i=50000;
while(i--); //不斷循環的自減,直到i變為0
}
以下是用匯編實現的:
ORG 0000H
AJMP MAIN ;跳轉到主程序
ORG 0100H
MAIN:JB P1.0,MAIN ;判斷P1.0是否被按下,若不是則再判斷,是則向下執行
CALL DELAY ;調用延時子程序,延時一段時間,用於鍵盤消抖
JB P1.0,MAIN ;再次判斷按鍵狀態,用於判斷是否為抖動,不是則向下執行
CPL P1.1 ;取反P1.1,也就是改變一次發光二極體的狀態
JNB P0.0,$ ;等待按鍵釋放(等待P1.0電平變高)
AJMP MAIN
DELAY:
MOV R0,#200
LOOP: MOV R1,#200
DJNZ R1,$
DJNZ R0,LOOP
RET
END
這些都是剛剛寫好的,希望能令你滿意,有問題可以hi我!