控制原理LED
發(fā)布時間:2013/11/16 15:15:56 訪問次數(shù):722
為什么6個I/O能控制12個LED呢?它們之間會不會相互影響呢?其實,這樣的連接方式不僅能控制每個LED燈,還能控制其亮度呢j之所以能這樣連接,是因為AVR單片機(jī)的每個l/0都是3態(tài)輸出。BUX98A如果用普通51單片機(jī),這樣連接是不行的。
那么又是如何控制LED燈的亮度呢?控制亮度的關(guān)鍵是ATtiny13的兩路PWM,它們可以分別設(shè)置連接到PBO和PB1引腳上。在ATtiny13使用內(nèi)部振蕩器的情況下,PWM的最高頻率可設(shè)置為47.5kHz。而且PWM的極性可以通過設(shè)置寄存器而改變,這使得12個LED燈亮度的控制更加簡單了。
先談?wù)勅绾慰刂泼總LED燈單獨的亮和滅。ATtiny13的每個I/。都有4種狀態(tài),即輸出O狀態(tài)、輸出1狀態(tài)、高阻態(tài)(懸空態(tài))、帶上拉電阻的高阻態(tài)。要使LED亮必須要讓LED中流過正向的電流,如果要讓最左邊的LED亮,PB1輸出1、PB2輸出O即可。但是,其他不相關(guān)的引腳需要設(shè)置成高阻態(tài)。否則,如果PEg0此時也為1的話,第2個LED燈也會亮?傊,為了保證其他LED不受到影響,在設(shè)置某個燈亮?xí)r,必須先把所有l(wèi)/。設(shè)置成不帶上拉的高阻態(tài)。
能控制亮和滅有什么了不起?呵呵,萁實還能控制每個LED單獨的漸變,就是漸漸變亮,漸漸變暗。我舉個例子吧,如果要最左邊的LED漸漸變亮,就先設(shè)置PB2引腳為0電平,PB1引腳設(shè)置為高電平驅(qū)動的F:WM波。然后,程序逐漸控制Pf31的PWM狀態(tài),通過調(diào)整PWM高電平的脈寬長度來實現(xiàn)亮度控制。當(dāng)PWM高電平的時間長時,LED就變亮了。反之.LED就變暗了。
那么電路原理圖中第7個反過來接的LED怎么實現(xiàn)亮度控制呢?原理還是一樣,只是PB2將剛才的0電平設(shè)置成1電平,原來PB1為高電平脈沖驅(qū)動的PWM愛上制作波設(shè)置成低電平脈)中驅(qū)動的PWM波即可。同樣,要控制第7個LED的亮度,就控制PWM低電平的脈寬長度,當(dāng)?shù)碗娖降拿}寬長度長時,LED就變亮了。反之,LED就變暗了。
那么能實現(xiàn)所有的LED同時發(fā)光嗎?制作過程中,這個功能的實現(xiàn)倒是困擾了我一會兒。后來,我想到了動態(tài)掃描。什么是動態(tài)掃描?老式電視機(jī)不就是這個原理嗎?電視機(jī)通過磁場讓射線高速地掃描屏幕,從而產(chǎn)生一幅畫面。那么,讓每個燈分別亮Ims左右,然后像電視機(jī)一樣不斷地掃描,看上去就都亮了。在此基礎(chǔ)上,再控制每個燈的亮度數(shù)值,就能實現(xiàn)整體亮度控制了。如果LED足夠多,單片機(jī)引卿也足夠多,還可能顯示一副灰度畫面呢!
那么又是如何控制LED燈的亮度呢?控制亮度的關(guān)鍵是ATtiny13的兩路PWM,它們可以分別設(shè)置連接到PBO和PB1引腳上。在ATtiny13使用內(nèi)部振蕩器的情況下,PWM的最高頻率可設(shè)置為47.5kHz。而且PWM的極性可以通過設(shè)置寄存器而改變,這使得12個LED燈亮度的控制更加簡單了。
先談?wù)勅绾慰刂泼總LED燈單獨的亮和滅。ATtiny13的每個I/。都有4種狀態(tài),即輸出O狀態(tài)、輸出1狀態(tài)、高阻態(tài)(懸空態(tài))、帶上拉電阻的高阻態(tài)。要使LED亮必須要讓LED中流過正向的電流,如果要讓最左邊的LED亮,PB1輸出1、PB2輸出O即可。但是,其他不相關(guān)的引腳需要設(shè)置成高阻態(tài)。否則,如果PEg0此時也為1的話,第2個LED燈也會亮?傊,為了保證其他LED不受到影響,在設(shè)置某個燈亮?xí)r,必須先把所有l(wèi)/。設(shè)置成不帶上拉的高阻態(tài)。
能控制亮和滅有什么了不起?呵呵,萁實還能控制每個LED單獨的漸變,就是漸漸變亮,漸漸變暗。我舉個例子吧,如果要最左邊的LED漸漸變亮,就先設(shè)置PB2引腳為0電平,PB1引腳設(shè)置為高電平驅(qū)動的F:WM波。然后,程序逐漸控制Pf31的PWM狀態(tài),通過調(diào)整PWM高電平的脈寬長度來實現(xiàn)亮度控制。當(dāng)PWM高電平的時間長時,LED就變亮了。反之.LED就變暗了。
那么電路原理圖中第7個反過來接的LED怎么實現(xiàn)亮度控制呢?原理還是一樣,只是PB2將剛才的0電平設(shè)置成1電平,原來PB1為高電平脈沖驅(qū)動的PWM愛上制作波設(shè)置成低電平脈)中驅(qū)動的PWM波即可。同樣,要控制第7個LED的亮度,就控制PWM低電平的脈寬長度,當(dāng)?shù)碗娖降拿}寬長度長時,LED就變亮了。反之,LED就變暗了。
那么能實現(xiàn)所有的LED同時發(fā)光嗎?制作過程中,這個功能的實現(xiàn)倒是困擾了我一會兒。后來,我想到了動態(tài)掃描。什么是動態(tài)掃描?老式電視機(jī)不就是這個原理嗎?電視機(jī)通過磁場讓射線高速地掃描屏幕,從而產(chǎn)生一幅畫面。那么,讓每個燈分別亮Ims左右,然后像電視機(jī)一樣不斷地掃描,看上去就都亮了。在此基礎(chǔ)上,再控制每個燈的亮度數(shù)值,就能實現(xiàn)整體亮度控制了。如果LED足夠多,單片機(jī)引卿也足夠多,還可能顯示一副灰度畫面呢!
為什么6個I/O能控制12個LED呢?它們之間會不會相互影響呢?其實,這樣的連接方式不僅能控制每個LED燈,還能控制其亮度呢j之所以能這樣連接,是因為AVR單片機(jī)的每個l/0都是3態(tài)輸出。BUX98A如果用普通51單片機(jī),這樣連接是不行的。
那么又是如何控制LED燈的亮度呢?控制亮度的關(guān)鍵是ATtiny13的兩路PWM,它們可以分別設(shè)置連接到PBO和PB1引腳上。在ATtiny13使用內(nèi)部振蕩器的情況下,PWM的最高頻率可設(shè)置為47.5kHz。而且PWM的極性可以通過設(shè)置寄存器而改變,這使得12個LED燈亮度的控制更加簡單了。
先談?wù)勅绾慰刂泼總LED燈單獨的亮和滅。ATtiny13的每個I/。都有4種狀態(tài),即輸出O狀態(tài)、輸出1狀態(tài)、高阻態(tài)(懸空態(tài))、帶上拉電阻的高阻態(tài)。要使LED亮必須要讓LED中流過正向的電流,如果要讓最左邊的LED亮,PB1輸出1、PB2輸出O即可。但是,其他不相關(guān)的引腳需要設(shè)置成高阻態(tài)。否則,如果PEg0此時也為1的話,第2個LED燈也會亮?傊,為了保證其他LED不受到影響,在設(shè)置某個燈亮?xí)r,必須先把所有l(wèi)/。設(shè)置成不帶上拉的高阻態(tài)。
能控制亮和滅有什么了不起?呵呵,萁實還能控制每個LED單獨的漸變,就是漸漸變亮,漸漸變暗。我舉個例子吧,如果要最左邊的LED漸漸變亮,就先設(shè)置PB2引腳為0電平,PB1引腳設(shè)置為高電平驅(qū)動的F:WM波。然后,程序逐漸控制Pf31的PWM狀態(tài),通過調(diào)整PWM高電平的脈寬長度來實現(xiàn)亮度控制。當(dāng)PWM高電平的時間長時,LED就變亮了。反之.LED就變暗了。
那么電路原理圖中第7個反過來接的LED怎么實現(xiàn)亮度控制呢?原理還是一樣,只是PB2將剛才的0電平設(shè)置成1電平,原來PB1為高電平脈沖驅(qū)動的PWM愛上制作波設(shè)置成低電平脈)中驅(qū)動的PWM波即可。同樣,要控制第7個LED的亮度,就控制PWM低電平的脈寬長度,當(dāng)?shù)碗娖降拿}寬長度長時,LED就變亮了。反之,LED就變暗了。
那么能實現(xiàn)所有的LED同時發(fā)光嗎?制作過程中,這個功能的實現(xiàn)倒是困擾了我一會兒。后來,我想到了動態(tài)掃描。什么是動態(tài)掃描?老式電視機(jī)不就是這個原理嗎?電視機(jī)通過磁場讓射線高速地掃描屏幕,從而產(chǎn)生一幅畫面。那么,讓每個燈分別亮Ims左右,然后像電視機(jī)一樣不斷地掃描,看上去就都亮了。在此基礎(chǔ)上,再控制每個燈的亮度數(shù)值,就能實現(xiàn)整體亮度控制了。如果LED足夠多,單片機(jī)引卿也足夠多,還可能顯示一副灰度畫面呢!
那么又是如何控制LED燈的亮度呢?控制亮度的關(guān)鍵是ATtiny13的兩路PWM,它們可以分別設(shè)置連接到PBO和PB1引腳上。在ATtiny13使用內(nèi)部振蕩器的情況下,PWM的最高頻率可設(shè)置為47.5kHz。而且PWM的極性可以通過設(shè)置寄存器而改變,這使得12個LED燈亮度的控制更加簡單了。
先談?wù)勅绾慰刂泼總LED燈單獨的亮和滅。ATtiny13的每個I/。都有4種狀態(tài),即輸出O狀態(tài)、輸出1狀態(tài)、高阻態(tài)(懸空態(tài))、帶上拉電阻的高阻態(tài)。要使LED亮必須要讓LED中流過正向的電流,如果要讓最左邊的LED亮,PB1輸出1、PB2輸出O即可。但是,其他不相關(guān)的引腳需要設(shè)置成高阻態(tài)。否則,如果PEg0此時也為1的話,第2個LED燈也會亮?傊,為了保證其他LED不受到影響,在設(shè)置某個燈亮?xí)r,必須先把所有l(wèi)/。設(shè)置成不帶上拉的高阻態(tài)。
能控制亮和滅有什么了不起?呵呵,萁實還能控制每個LED單獨的漸變,就是漸漸變亮,漸漸變暗。我舉個例子吧,如果要最左邊的LED漸漸變亮,就先設(shè)置PB2引腳為0電平,PB1引腳設(shè)置為高電平驅(qū)動的F:WM波。然后,程序逐漸控制Pf31的PWM狀態(tài),通過調(diào)整PWM高電平的脈寬長度來實現(xiàn)亮度控制。當(dāng)PWM高電平的時間長時,LED就變亮了。反之.LED就變暗了。
那么電路原理圖中第7個反過來接的LED怎么實現(xiàn)亮度控制呢?原理還是一樣,只是PB2將剛才的0電平設(shè)置成1電平,原來PB1為高電平脈沖驅(qū)動的PWM愛上制作波設(shè)置成低電平脈)中驅(qū)動的PWM波即可。同樣,要控制第7個LED的亮度,就控制PWM低電平的脈寬長度,當(dāng)?shù)碗娖降拿}寬長度長時,LED就變亮了。反之,LED就變暗了。
那么能實現(xiàn)所有的LED同時發(fā)光嗎?制作過程中,這個功能的實現(xiàn)倒是困擾了我一會兒。后來,我想到了動態(tài)掃描。什么是動態(tài)掃描?老式電視機(jī)不就是這個原理嗎?電視機(jī)通過磁場讓射線高速地掃描屏幕,從而產(chǎn)生一幅畫面。那么,讓每個燈分別亮Ims左右,然后像電視機(jī)一樣不斷地掃描,看上去就都亮了。在此基礎(chǔ)上,再控制每個燈的亮度數(shù)值,就能實現(xiàn)整體亮度控制了。如果LED足夠多,單片機(jī)引卿也足夠多,還可能顯示一副灰度畫面呢!
上一篇:3種效果的程序編寫
熱門點擊
- 用74LS290組成的六十進(jìn)制計數(shù)器
- 移位寄存器
- 列狀態(tài)轉(zhuǎn)移真值表、畫狀態(tài)圖和時序圖
- RC時間常數(shù)
- 串聯(lián)RC電路的阻抗和相角
- T形電阻網(wǎng)絡(luò)DAC
- 推挽式放大器的偏置
- USB調(diào)試時的跳線帽和電源設(shè)置
- 三極管微變等效電路
- 舵機(jī)與樂高結(jié)構(gòu)件的結(jié)合
推薦技術(shù)資料
- DS2202型示波器試用
- 說起數(shù)字示波器,普源算是國內(nèi)的老牌子了,F(xiàn)QP8N60... [詳細(xì)]
- 人形機(jī)器人市場未來發(fā)展格局前景預(yù)測
- 新一代航空器用激光雷達(dá)CES2
- SPAD-SoC集成1080-
- 全球首款1080線激光雷達(dá)應(yīng)用
- 激光雷達(dá)行業(yè)市場發(fā)展新動態(tài)
- AI時代存儲技術(shù)產(chǎn)品走向趨勢
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究