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. keil51單片機數碼管滾的顯示
一,LED數碼管顯示的原理
數碼管的發光原理實際是七段LED燈(不包括小數點)或者八段LED燈被點亮的結果。八段依次是 a,b,c,d,e,f,g,dp(表示點)。LED數碼管是常見的顯示器件,在很多場合都可以看到,比如,鬧鍾沖胡的顯示,家電的顯示功能,車站等等。我們看到的數碼管為「8」字形,數碼管又分為共陰極和共陽極兩種。
1.共陰極:就是將八段數碼管的陰極(負極)接地在一起,需要高電平點亮。如下圖所示
2.共陽極:就是將八段數碼管的陽極(正極)接(+5v)在一起,需要低電平點亮。如下圖所示
3.數碼管的具體顯示
①共陰數碼管的點亮
為使數碼管的不同段顯示不同的字元,需要點亮和熄滅不同段的LED燈,才可以實現。對於共陰極數碼管來說,只需要給高電平LED燈就會被點亮,對應的斷碼就會亮起。給低電平相應的斷碼就會熄滅。
以顯示「0」為例 只需要給「dp」和「g」給低電平熄滅就可以了
斷碼的順序為:dp g f e d c b a
「0」斷碼用16進製表示為:3FH
其他字元的斷碼以此類推:如下表所示
②共陽數碼管的點亮
為使數碼管的不同段顯示不同的字元,需要點亮和熄滅不同段的LED燈,才可以實現。對於共陽極數碼管來說,只需要給低電平LED燈就會被點亮,對應的斷碼就會亮起。給高電平相應的斷碼就會熄滅。
以顯示「0」為例 只需要給「dp」和「g」給高電平熄滅就可以了
斷碼的順序為:dp g f e d c b a
1 1 0 0 0 0 0 0
「0」斷碼用16進製表示為:C0H
其他字元的斷碼以此類推:如下表所示
二.動態數碼管的顯示(共陰)
思路: 建立顯存、斷碼、位碼表格,將軟體延時部分設計成子函數的結構,在主函數中利用查表的方法來獲得相應的位碼和段碼,這種思路經常用於顯示變化的字元。
顯示的狀態(左移動態顯示,類似於常見的廣告牌)
3.原理圖(protues模擬圖)
4.設計方法
在多個數碼管的顯示中點亮數碼管需要 位碼和段碼共同作核搏用才能點亮
位碼(低電平有效):表示要點亮的數碼管的位置。
斷碼(上面講過了):就是要點亮哪一段數碼管
舉例說明:
如果要在上面的六個數碼管中點亮第一個數碼管,且讓它顯示「1」,首先確定它的位置是第六個。用八個二進製表示,最低位從0開始,最高位為7 那麼它的位碼為:11111110 (低電平有效)
斷碼為0x06
其他的以此類推
先要數碼管動態顯示要建一個數組。下圖為斷碼
源代碼:
#include#include#define uchar unsigned char#define uint unsigned intsbit an=P2^6; sbit wei=P2^7; uchar code tab[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x00,0x40}; //共陰極數碼管段碼表uchar idata dis_buf[6]={17,17,17,17,17,17}; //顯示緩沖區數據(十進制)void delayms(uint i) //延時1ms函數{ uint j; for(;i>0;i--) for(j=120;j>0;j--) {;}}void main() //主函數{ uchar k,m,n,bitcode,segcode; while(1) { for(n=0;n<17;n++) { dis_buf[0]=dis_buf[1]; //數據移動 dis_buf[1]=dis_buf[2]; dis_buf[2]=dis_buf[3]; dis_buf[3]=dis_buf[4]; dis_buf[4]=dis_buf[5]; dis_buf[5]=n; for(m=0;m<100;m++) //100次掃描,大約600ms { bitcode=0xfe; //起始位碼 for(k=0;k<6;k++) { P0=0xff; //消影 wei=1; wei=0; segcode=dis_buf[k]; //取數據 P0=tab[segcode]; //送段碼散氏攔 an=1; an=0; P0=bitcode; //送位碼 wei=1; wei=0; delayms(1); bitcode=_crol_(bitcode,1); //更新位碼,准備顯示下一位 } } } }}
3. 51單片機led燈怎麼亮
要式連接51單片機的LED燈被點亮,攏共需要三步:
搭建好51單片機運行的最小系統,並連接好下載線。
LED燈的正極經過470Ω電阻連接在電源正極上,LED燈的負極連接在單片機的某個介面上,例如連接I/O口P1.0上。
4. LED顯示屏的工作原理是怎麼樣的
LED顯示屏的基本工作原理是動態掃描。動態掃描又分為行掃描和列掃描兩種方式,常用的方式是行掃描。行掃描方式又分為8行掃描和16行掃描兩種。
在行掃描工作方式下,每一片LED點陣片都有一組列驅動電路,列驅動電路中一定有一片鎖存器或移位寄存器,用來鎖存待顯示內容的字模數據。在行掃描工作方式下,同一排LED點陣片的同名行控制引腳是並接在一條線上的,共8條線,最後連接在一個行驅動電路上;行驅動電路中也一定有一片鎖存器或移位寄存器,用來鎖存行掃描信號。
LED顯示屏的列驅動電路和行驅動電路一般都採用單片機進行控制,常用的單片機是MCS51系列。LED顯示屏顯示的內容一般按字模的形式存放在單片機的外部數據存儲器中,字模是8位二進制數。
單片機對LED顯示屏的控制過程是先讀後寫。按LED點陣片在屏幕上的排列順序,單片機先對第1排的第1片LED點陣片的列驅動鎖存器,寫入從外部數據存儲器讀得的字模數據,接著對第2片、第3片……直到這一排的最後一片都寫完字模數據後,單片機再對這一排的行驅動鎖存器寫行掃描信號,於是第1排第1行與字模數據相關的發光二極體點亮。接著第2排第1行、第3排第1行……直到最後一排第1行的點亮。各排第1行都點亮後,延時一段時間,然後黑屏,這樣就算完成了單片機對LED顯示屏的一行掃描控制。
單片機對LED顯示屏第2行的掃描控制、第3行的掃描控制……直到第8行的掃描控制,其過程與第1行的掃描控制過程相同。對全部8行的控制過程都完成後,LED顯示屏也就完成了1幀圖像的完整顯示。
雖然按這種工作方式,LED顯示屏是一行一行點亮的,每次都只有一行亮,但只要保證每行每秒鍾能點亮50次以上,即刷新頻率高於50 Hz,那麼由於人的視覺惰性,所看到的LED顯示屏顯示的圖像還是全屏穩定的圖像。
5. 51單片機低電平led亮為什麼
51單片機低電平led亮是納灶寬因為兩側有電壓差。因辯差為51單片機低電平led亮是有高電平減低電平組成的電壓差,其中單片機引腳輸洞亮出低電平,有電壓差,燈亮。所以51單片機低電平led亮是因為兩側有電壓差。