1. 51單片機怎樣控制LED的光亮度
pwm,用定時器T1溢出做pwm周期,在每次T1開始計數時觸發輸出,軟體邊增1計數邊檢查溢出標志。如果軟體計數滿則清輸出,否則直到溢出清輸出、清軟體計數滿值。改變軟體計數滿值就能改變亮度。
頻率50HZ,周期是20ms
看你調節的精度 如定時器定時1ms,高電平寬度一次變化是5%
如果想要調節精度高,定時器定時時間小,就要頻繁地發生中斷,會影響主程序的運行
如 要求占空比每步調節為1%,則定時器就要定時200us,對於CpU的影響就比較大了
這時自動重裝模式可以縮短中斷程序佔用時間,但如果再提高PWM的頻率,自動重裝模式也十分吃力,因此許多增強型51單片機有硬體PWM功能
LED是電流控制器件, 而不能說成電壓控制,調節電壓的大小也能控制啊(電壓越大亮度超高),
1、PWM是脈沖寬度調制信號,注意其中的「寬度」,就是脈沖的高電平的時間。PWM信號調節LED亮度時,信號頻率是不變的,改變的是脈沖的高電平的時間,即LED的導通時間。這種信號調節亮度相當於調節LED的平均電流,所以電流會變化。
2、從LED的V-I特性可知,其曲線是非線性的,0.1V的電壓可造成100~200mA的If的變化,不易控制;另外,LED具有負溫度系數特性,所以,一般將LED說成是電流控制型器件。至於你將LED串接在電源模塊上,當輸出電壓恆定時,是恆壓源驅動LED吧,這樣調節LED亮度時,需要對輸出電壓進行分壓,以降低LED的壓降才能改變其亮度,恆壓源的電流是有一個最大輸出值的,不能調節的,不知你用什麼方法調節其輸出電流的?
3、用MCU比較方便,成本是稍高,也可以用模擬電子線路產生相應的PWM信號。
用PWM控制有幾點好處.
1 ): 可以自動適應輸入電壓范圍.即使輸入電壓低於LED的點亮電壓.LED仍然正常發光.
2 ):恆流.LED是半導體器件.對溫度很敏感.普通限流電路在其溫度變化時無法及時控制LED負載的電流.當溫度上升到一定程度.LED會被燒毀. 而PWM電路大多集成恆流源.使其電流始終保持在你設置的范圍內.
是求程序還是求啥?郵箱也沒有
可以用移位命令來實現,比如說LED介面為P0
那麼共陰極就是 P0=(P0>>1)||0X80;
移位函數來實現是最簡單的就是 intrinis
可通過按鈕的動作改變輸出LED連接腳的脈寬來控制led燈的漸亮
單片機只能產生兩個電平的信號,因此要控制LED亮度要靠LED點亮的頻率,頻率越高亮度越亮。如果你願意取得更好的效果的話還可以使用DA晶元,當然需要更多的知識。
那就要看這100個LED是想同時亮,還是一個一個地亮了。
要同時亮,就串聯或並聯都行,就相當於控制一個。
要是一個一個地亮,那就得有100個控制點了。這得需要擴展I/O介面了,簡單可行的,用13片74HC595,每個595帶8個LED。
再要看這100個LED是怎麼排列的,要是能排列成矩陣,就可以節省I/O介面了,就可以少用幾片74HC595了。
用C語言中產生隨機數的方法每次產生一個0~255間的一個隨機數,然後賦值給P0口
第一片單片機的TXD連接到第二片單片機的RXD上
第一片單片機的RXD連接到第二片單片機的TXD上
然後就可以做 串口通信了
每一片都可以發送數據,然後另一片在串口接收中斷中處理數據
2. 80c51單片機控制人體感應燈的匯編程序怎麼寫
KEYVAL EQU 30H
KEYSCAN EQU 31H
KEYTM EQU 32H
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
RET
;--------------------
GETKEY:
MOV KEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV R2,#10
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
深奧點就是,你執行了這段代碼,int a = 10; 程序就會在你電腦的內存中,創建一個小空間,這個空間的名字就是a, 這空間裡面的內容就是10,這個空間只能存放整數類型的數據。
3. 以AT89C51單片機為控制器的智能交通燈控制系統,基於51單片機的交通信號燈模擬系統控制的模擬圖及C程序
你好!
這樣的效果可以嗎
4. 求一個基於51單片機的光敏電阻控制led燈亮滅的程序,實現有光的時候燈滅,沒光的時候燈亮,急……
超簡單:
#include <reg51.h>
sbit in=P0^0;
sbit led=P1^0;
void main()
{
while(1)
{
if(in==1)led=0;
else led=1;
}
}
5. 基於單片機設計智能台燈,需要哪些元器件,詳細一點的。
1、測人體的話可以選擇人體紅外感測器,當光束被擋時輸出高電平,這種感測器有一種半成品,輸出也是脈沖的,當有人時輸出3。5V高電平維持3秒,如人沒有離開就繼續輸出,人離開後就變成低電平。
2、測光源基本上用光敏電阻就可以了,將光敏電阻附加三極體等元件做成一個光敏感測器,一旦光強低於某個值就向單片機返回一個高/低電平信號,由單片機處理。
3、單片機用51即可,輸出引腳上連一個7407,然後連到繼電器上即可。
4、其實也可以不用單片機的,只要一個邏輯晶元就可以了,比如如果高電平時有人,高電平時光弱,那麼只要將這兩個信號送到一個與門就可以了,與門輸出一個高電平,然後驅動繼電器即可!
希望能幫到你,對於這個東西你可以分成幾個模塊,一個模塊一個模塊搞定再綜合,多在網上搜索一下,網上有大量的資料可以借鑒,加油!