在開發中,如果需要使用多個按鍵時,使用ADKEY,往往可以節省很多IO口,可以節省資源。下面,簡單介紹一下ADKEY的使用與經驗分享。
ADKEY原理:
通過不同的電阻進行分壓,使每個key按下時,IO口讀到電壓值不同,來確認是KEYn。
ADKEY原理圖:
如上圖,當啓動KEY按下時,上拉電阻10K通過3K電阻與GND導通,ADKEY讀到電壓0.76V(理論值)。從而確認爲啓動按鍵按下。
程序設計經驗分享:
1,KEY的電壓,與電阻的精度有關係。如電阻均採用±5%精度。
根據原理圖,可得ADKEY的電壓計算公式爲:
Vad = Rn/(10+Rn) *3.3v;
以上述啓動KEY來說:
當上拉電阻精度爲+5%,3K精度爲- 5%時,按鍵按下時,AD讀取電壓爲2.85/(2.85+10.5)*3.3V = 0.705V,此時電壓最小;
當上拉電阻精度爲-5%, 3K精度爲+5%時,按鍵按下時,AD讀取電壓爲3.15/(3.15+9.5 )*3.3V = 0.822V,此時電壓最大;
2,程序設計
由1得知,啓動按鍵的AD值範圍爲0.705V ≤ Vad ≤ 0.822V;
AD值讀取公式爲:Num = Vad / 參考電壓 * (採樣位數);Vad = Rn/(10+Rn) *3.3v;
A,如果ADKEY的參考電壓是內部的參考電壓,那麼你需要將AD值範圍設置寬一點,因爲3.3V有時候會因爲電路問題偏高或者偏低。
B,如果ADKEY的參考電壓是外部的3.3V,那麼則沒有影響,因爲讀取AD值的公式爲:
num =(Rn/(10+Rn) *3.3v ) / 3.3v * (採樣位數) = Rn/(10+Rn) * (採樣位數) ; 與電壓無關。