A. 單片機式的呼吸燈控制方法
我們通常會在各類器件上看到形形色色的指示燈,它們都分別代表著不盡相同各項功能的運行情況。而由燈發出的指示光要比其他方法傳遞信息更直接更明顯,也更加的經濟。而現在呼吸燈這項技術已經應用於各個方面,甚至包括智能機的應用,而其比較多樣的呼吸方法在傳遞相關信息上也是方便至極,那麼今天我們就來看看呼吸燈的控制問題。
燈光在微電腦的控制之下完成由亮到暗的逐漸變化,感覺好像是人在呼吸。
應用
廣泛應用於手機之上,並成為各大品牌新款手機的賣點之一。如果你的手機裡面有未處理的通知,比如說未接來電,未查收的簡訊等等,呼吸燈就會由暗到亮的變化,像呼吸一樣那麼有節奏,起到一個通知提醒的作用。
電子愛好者可通過簡單的電路來實現呼吸燈的效果。
為何很多手機都取消了呼吸燈
回答之前,小編想先糾正一個問題,並不是智能機都取消了呼吸燈,很多設備還是具備這一功能的,只不過能夠將這一功能發揮到極致的手機,確實是少之又少。安卓設備其實多數都是有LED燈的,不過原生安卓系統本身沒有提供一個可以統一控制的通知中心,而是要每個應用自己決定顯示通知的方式,這方式包括聲音、震動、LED燈及其顏色,再加上不同手機的燈或多或少都有些不同,這樣就造成了有的應用不支持LED燈有的應用卻錯誤地觸發了LED燈。
久而久之,在我的日常使用中,LED燈通常會給人一種十分不可靠的感覺,實際表現在我們該點亮屏幕的時候還是會點亮屏幕,不該點亮屏幕的時候,看到LED燈錯誤的亮起,也要去點亮屏幕去處理,就這樣,一個聽起來很好的功能反倒變得有些雞肋甚至是惹人討厭。到了安卓4.4以後,感覺系統在LED燈控制方面更為混亂,一些常駐通知欄的圖標甚至也會觸發LED燈,導致用戶體驗極差。
而有些如CM一類的第三方ROM會提供系統級的分應用LED燈設置,不過在實際使用中的表現也不夠完美。所以雖然LED呼吸燈本來是一個很好的設計,但是安卓系統卻沒有做好,於是有些廠商索性就取消了LED燈,或者取消了LED燈的呼吸功能。
另外,可能有些人會問,為何蘋果手機也沒有呼吸燈,這又是個老生常談的問題了,蘋果不具備的東西很多,很多時候我們都不知道為什麼,不採用呼吸燈,可能是因為技術,也可能是因為專利,蘋果同安卓不同,其並非開源系統,很多時候,蘋果都會來規范用戶的使用習慣,不設置呼吸燈,或許只是因為蘋果覺得用戶不需要它吧。至於這位網友在問題中提到的觸控反饋,這個其實不需要小編多說了,貌似目前大部分手機都有觸控反饋吧,只需要在設置中調出來就好。
呼吸燈的作用
呼吸燈是一個提氣的設計,它讓手機不再是一塊只會亮屏的板磚。因為不是所有的消息通知都需要處理,也不是所有的消息通知都會馬上處理。對於手機來講,亮屏鈴聲震動屬於強通知,這包括一些軟體提供的來電閃光功能,呼吸燈則屬於弱通知,不是所有人都會定期去查看手機的,多數情況下在辦公室我們都只是把手機放在桌上,偶爾去下洗手間也不會帶著,這中間如果有消息,我們回來瞟一眼就知道了,呼吸燈作為弱通知的作用,提醒的意義大於通知。
先說呼吸燈,這個本質上是LED的亮度控制。
一般是用PWM方式控制LED亮度,PWM的輸出按照一定的規律變化,就可以做出呼吸燈的效果。
再說30個LED的控制,如果要簡單點做,30個LED可以串起來串一個電阻,接高點的電源電壓,30個LED用同一個信號控制,當然,亮度也是同步變化的。如果要復雜,那就出30個信號分別控制30個LED串30個電阻,具體看你的追求的效果吧。
呼吸燈的程序,如果有硬體的PWM模塊,是很簡單的,按一定的規律讓PWM的輸出變化就可以。
像這樣輸出10%亮度,持續200ms,輸出20%亮度,持續200ms,輸出30%亮度,持續200ms。
如果沒有硬體PWM模塊,可以用軟體來模擬,比如,輸出10%亮度,持續200ms這兩件事合在一起作,變成輸出高電平10us,輸出低電平90us,循環2000次。
兩種方法:
方法1:1000個左右的燈,需要10根地址線選通,51的IO管腳應該是沒有問題。剩下的就是要用大量的解碼器,把二進制信息轉換為管腳信息。
估計你僅僅是控制亮和滅,如果是這樣選通也就可以進行明暗的控制,否則輸出的信息也要加進去,就是說需要加驅動電路。
方法2:用移位電路,比如HC595,在51中地址做為串列信號發出,轉換為對應的地址線,然後在連接解碼器,這樣,51的管腳比較節省,但,編程的難度稍大。
那麼上述就是呼吸燈相關控制的方法和技巧,我們講,呼吸燈控制在硬體圈是一個很普通的項目,而所採用的單片機控制也是硬體里最基礎的,相信很多人在研習過後都能夠掌握,而即便不必要掌握這個情況,熟悉相關的原理情況也可以讓其在遇見故障的時候能夠迅速找到方法來排除,那麼今天呼吸燈控制的問題就給大家介紹到這里。
B. 單片機點亮一個led的實驗目的
任何單片機程序都要有一個死循環,否則程序執行到底了,然後怎麼辦。沒有這個死循環,單片機從0地址重新運行,整個系統重新初始化,會導致IO口復位,運行的很快的話,就看到別的燈微亮。at89s52也是51系列的單片機,程序完全兼容,用51的程序就行了,包括外圍電路也一樣,直接用就行了。 單燈亮就是在io口輸出一個二進制數中只有一位不同的數,比如說「00000001」,就只有最後一位是「1」,其餘的都是「0」,要雙燈亮就使其中的兩位與其他的不同就行了,還是那上面的例子來說,現在改成「00000011」,這樣有兩位是不用的了,當然不同的兩位也可以不挨著,比如「00100001」,這樣也是兩位同時點亮。(例子的前提是輸出高電平時led點亮,如果不是的話就把裡面的「0」改成「1」,「1」改成「0」就行了。出現這種問題我感覺有一下幾點原因,你可以逐個排查下,如果程序下載成功,說明單片機電源應該沒有問題,那就需要看已下幾點
1.看你的程序是不是編寫的不對,主要看你的IO口配置是否正確,IO口的高低電平是不是寫錯了,IO口電平翻轉時,中間是不是延時太短,延時太短的話,人眼看不出來。
2.硬體方面的話,你就看看你的指示燈是不是接錯了
3.你看一下你的單片機晶振是不是符合你單片機的型號
4.看一下,晶振旁邊的電容是不是焊錯了
如果這些都沒有問題的話,那隻能說你的程序肯定有問題,或者程序沒有下載成功。
C. 為什麼在單片機實驗板上點亮一個LED燈時,需要while(1)循環,要不然其他LED燈會微亮
任何單片機程序都要有一個死循環,否則程序執行到底了,然後怎麼辦。沒有這個死循環,單片機從0地址重新運行,整個系統重新初始化,會導致IO口復位,運行的很快的話,就看到別的燈微亮。
D. 51單片機休眠模式
一般情況下,空閑模式時定時器工作,休眠模式時定時器不工作,只能通過外部中斷喚醒。
不過現在51單片機種類很多,可以找找有沒有特殊的。
E. 單片機在輸出高電平是D2正常發亮,而為什麼輸出低電平時D2仍然會微亮
低電平表面上看是關了,但是他有漏電流,由於該漏電流是低電平,模電講過低電平屬於灌電流,灌電流的電流比較大,故輸出低電平時D2仍然會微亮
F. 51單片機怎麼休眠
呵呵,最近剛好研究了一下這個問題
51單片機空閑和掉電模式應用
我們知道單片機內部有一個電源管理寄存器PCON,這個寄存器的最低兩位,IDL和PD這兩位分別用來設定是否使單片機進入空閑模式和掉電模式。
1. 空閑模式 當單片機進入空閑模式時,除CPU處於休眠狀態外,其餘硬體全部處於活動狀態,晶元中程序未涉及到的數據存儲器和特殊功能寄存器中的數據在空閑模式期間都將保持原值。但假若定時器正在運行,那麼計數器寄存器中的值還將會增加。單片機在空閑模式下可由任一個中斷或硬體復位喚醒,需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續運行,當使用硬體復位喚醒單片機時,程序將從頭開始執行。???? 讓單片機進入空閑模式的目的通常是為了降低系統的功耗,舉個很簡單的例子,大家都用過數字萬用表,在正常使用的時候表內部的單片機處於正常工作模式,當不用時,又忘記了關掉萬用表的電源,大多數表在等待數分鍾後,若沒有人為操作,它便會自動將液晶顯示關閉,以降低系統功耗,通常類似這種功能的實現就是使用了單片機的空閑模式或是掉電模式。以STC89系列單片機為例,當單片機正常工作時的功耗通常為4mA~7mA,進入空閑模式時其功耗降至2mA,當進入掉電模式時功耗可降至0.1μA以下。
2.?? 休眠模式 當單片機進入掉電模式時,外部晶振停振、CPU、定時器、串列口全部停止工作,只有外部中斷繼續工作。使單片機進入休眠模式的指令將成為休眠前單片機執行的最後一條指令,進入休眠模式後,晶元中程序未涉及到的數據存儲器和特殊功能寄存器中的數據都將保持原值。可由外部中斷低電平觸發或由下降沿觸發中斷或者硬體復位模式換醒單片機,需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續運行,當使用硬體復位喚醒單片機時,程序將從頭開始執行。【例】:開啟兩個外部中斷,設置低電平觸發中斷,用定時器計數並且顯示在數碼管的前兩位,當計到5時,使單片機進入空閑(休眠)模式,同時關閉定時器,當單片機響應外部中斷後,從空閑(休眠)模式返回,同時開啟定時器。程序代碼如下:
/************************************************************************
************************************************************************/
#define IdleMode() PCON |=0x01 //01為空閑模式
// 當單片機進入空閑模式時,除CPU處於休眠狀態外,其餘硬體全部處於活動狀
//晶元中程序未涉及到的數據存儲器和特殊功能寄存器中的數據在空閑模式期間都將保持原值。
//但假若定時器正在運行,那麼計數器寄存器中的值還將會增加。
//單片機在空閑模式下可由任一個中斷或硬體復位喚醒,
//需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續運行,當使用硬體復位喚醒單片機時,程序將從頭開始執行。
#define PowerOFF() PCON |=0x02 //02掉電模式
//進入掉電模式,外部晶振停振、CPU、定時器、串列口全部停止工作,只有外部中斷繼續工作
//使單片機進入休眠模式的指令將成為休眠前單片機執行的最後一條指令
//進入休眠模式後,晶元中程序未涉及到的數據存儲器和特殊功能寄存器中的數據都將保持原值。
//可通過外部中斷喚醒,proteus模擬時無法喚醒
#define EXT0_Init() EX0=1;EA=1 //打開外部中斷,以方便喚醒。喚醒後程序從原來停止處繼續運行
//電源管理模板程序
main()
{
EXT0_Init();
while(1) //
{
if(time.sec==0){time.sec++;PowerOFF();}
//
}
}
void EX0ISR(void) interrupt 0
{
//PCON&=0xfc; //清除之前的掉電(空閑)模式
}
G. 單片機的二極體處半亮狀態是什麼原因
電流不夠,
你用的是51吧?
如果是高電平點亮的話,半亮是正常的,51高電平驅動能力太差
如果是低電平點亮的話,限流電阻接的太大了,一般用300-600歐姆就夠了
記得確認一下發光二極體是好的嗎,有時發光二極體壞了也是微亮的
H. 51單片機最後一個數碼管在斷電時仍然微亮,下不進程序
你看燒寫軟體下面的進程提示上寫的是什麼錯誤一般都會提示出來的
STC有的型號的單片機TXD RXD是要接電阻的,你看手冊上的圖你這個型號要不要接