<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機應用中的實(shí)用技巧(二)

單片機應用中的實(shí)用技巧(二)

作者: 時(shí)間:2012-09-29 來(lái)源:網(wǎng)絡(luò ) 收藏

5、用一個(gè)帶A/D的I/O口實(shí)現16個(gè)鍵盤(pán)輸入。

許多帶有A/D轉換功能,在實(shí)際運用中,如果利用其中的一路A/D轉換,可以很方便地實(shí)現4×4鍵盤(pán)輸入。

如圖一所示,由于鍵盤(pán)的縱向電阻R1~R4的阻值為遞增狀態(tài),其增幅超過(guò)橫向最大阻值電阻R8,因此當按鍵從S1至S16按下時(shí),縱向電阻與橫向電阻串聯(lián)的阻值也會(huì )相應由低到高增加,如S1按下時(shí)串聯(lián)阻值為11k,S2按下時(shí)阻值為13.9k,S5按下時(shí)為25k,…,由于每個(gè)鍵按下后的串聯(lián)阻值均不同,并且依按鍵的次序呈逐漸增大趨勢,經(jīng)與R9分壓后,會(huì )在的輸入端產(chǎn)生不同的電壓值,該電壓經(jīng)過(guò)A/D轉換后進(jìn)行相應處理,即可判斷出是哪個(gè)鍵按下。

單片機應用中的實(shí)用技巧(二)

在實(shí)際應用中,由于阻值與電壓為非線(xiàn)性關(guān)系,因此在電阻選用及編程時(shí)需要注意,同時(shí)A/D轉換應進(jìn)行相應的軟件處理(如重復檢測兩次才確認),以消除按鍵抖動(dòng)引起的誤判斷。

6、用軟件產(chǎn)生PWM實(shí)現模擬量輸出。

應用中,常需要通過(guò)輸出模擬量來(lái)對外部進(jìn)行控制,但增加D/A轉換芯片不僅需要占用I/O口資源,同時(shí)也會(huì )使成本增加。下圖提供一種通過(guò)單片機的定時(shí)器中斷來(lái)用軟件的方法產(chǎn)生PWM,并經(jīng)過(guò)濾波與跟隨電路產(chǎn)生準確的模擬量輸出。

單片機應用中的實(shí)用技巧(二)

該電路只用單片機的一個(gè)I/O腳實(shí)現D/A轉換功能。其輸出的模擬量電壓Vout=VDD*D1/(D1+D2)。該輸出電壓帶有紋波,當RC值足夠大時(shí),該紋波值幾乎為零,可忽略不計。D1與D2可通過(guò)單片機內部的定時(shí)器中斷來(lái)準確產(chǎn)生。該模擬量從輸出PWM到穩定狀態(tài),需要一定的時(shí)間,若要縮短達到穩定的時(shí)間,可以減小R1和C1的值,但紋波會(huì )增大,這在設計時(shí)需要注意。

7、用2個(gè)I/O口實(shí)現多按鍵掃描及鍵盤(pán)喚醒

在一些低功耗的單片機應用場(chǎng)合中,常常需要讓單片機平時(shí)工作于睡眠狀態(tài),而在有鍵盤(pán)輸入時(shí)喚醒單片機以做相應控制。單個(gè)按鍵喚醒單片機容易實(shí)現,但多個(gè)按鍵都能喚醒單片機有一定的困難,本文提供一種解決該問(wèn)題的思路。

單片機應用中的實(shí)用技巧(二)

其工作過(guò)程說(shuō)明如下:

1. 單片機的GP1口具有電平變化喚醒單片機功能,單片機在進(jìn)入睡眠前將GP1口設置為輸入狀態(tài),GP2設置為輸出高電平狀態(tài)。

2. 當任一鍵被按下時(shí),GP1口將變?yōu)楦唠娖?,使單片機喚醒。此時(shí)將GP2口設置為輸出低電平,短延時(shí),使C1電容放電。

3. 將GP1設置為輸出高電平,GP2設置為輸入狀態(tài),定時(shí)器開(kāi)始記時(shí)。

4. 當GP2由低電平變?yōu)楦唠娖降乃查g,記錄定時(shí)器時(shí)間。由于不同的按鍵按下時(shí),分壓器電路改變了RC電路的電壓上升速度,因此根據測得的定時(shí)器值的大小通過(guò)查表法可判斷出是哪個(gè)鍵被按下。

以上方法只適用于單鍵判斷,當多鍵同時(shí)按下時(shí)是無(wú)法判斷的。該方法需要占用單片機的定時(shí)器資源。

8、單片機的自動(dòng)關(guān)機功能及開(kāi)機按鍵兼做功能按鍵。

在許多電池供電的應用場(chǎng)合,要求電路平時(shí)處于關(guān)機狀態(tài)以節省電能,而當開(kāi)機鍵按下后單片機才開(kāi)始工作,工作完后又能自動(dòng)關(guān)機。

下圖所示電路即可完成此種功能。在上電后,由于V1處于關(guān)斷狀態(tài),單片機并不耗電,整個(gè)電路所消耗電流只有不到10μA。

當S1按下后,V1導通,78L05獲得電源,輸出穩定的5V使單片機開(kāi)始工作,同時(shí)單片機的GP0送出高電平,使V2導通,這使V1保持在導通狀態(tài),單片機獲得持續的電源進(jìn)行工作,當單片機任務(wù)處理完成后,單片機的GP0輸出低電平,將V2關(guān)斷,使V1也處于關(guān)斷狀態(tài),單片機的電源又被關(guān)斷,電路又恢復到低功耗狀態(tài),其消耗電流小于10μA。

在單片機獲電工作后,原作為電源開(kāi)關(guān)按鍵的S1也可以作為功能按鍵來(lái)使用,當S1未按下時(shí),GP1口為高電平,而當S1按下后,GP1變?yōu)榈碗娖?,因此單片機可以檢測該按鍵,并做相應的功能控制。例如可將S1定義為開(kāi)關(guān)機按鍵或其它功能按鍵。

單片機應用中的實(shí)用技巧(二)



關(guān)鍵詞: 單片機 實(shí)用技巧

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>