![]() |
發布時間: 2021-10-6 19:37
正文摘要:本程序用STC15W201S單片機。16引腳共14IO, 共連接 一個 3位 8段共陰數碼管,兩個按鍵,以及680K+10K電阻分壓連接比較器測量外部電壓。 其中,P10~P15 + P36,P37 分別通過1K電阻連接數碼管 段選 ,P31~P3 ... |
分享電路圖就更好 |
看似簡單,其實很復雜! |
![]() MCU的工作頻率為22.1184MHz. 使用MCU自帶的比較器進行ADC轉換, 并通過串口輸出結果. 用定時器0產生10us中斷查詢比較器的狀態. 使用比較器做ADC, 原理圖如下. 做ADC的原理是基于電荷平衡的計數式ADC. 電壓從Vin輸入, 通過100K+104濾波, 進入比較器的P5.5正輸入端, 經過比較器的比較, 將結果輸出到P1.5再通過100K+104濾波后送比較器P5.4負輸入端,跟輸入電壓平衡. 設置兩個變量: 計數周期(量程)adc_duty 和 比較結果高電平的計數值 adc, adc嚴格比例于輸入電壓. ADC的基準就是P1.5的高電平. 如果高電平準確,比較器的放大倍數足夠大,則ADC結果會很準確. 當比較結果為高電平,則P1.5輸出1, 并且adc+1. 當比較結果為低電平,則P1.5輸出0. 每一次比較都判斷計數周期是否完成,完成則adc里的值就是ADC結果. 電荷平衡計數式ADC的性能類似數字萬用表用的雙積分ADC, 當計數周期為20ms的倍數時,具有很強的抗工頻干擾能力,很好的線性和精度. 原理可以參考ADD3501(3 1/2位數字萬用表)或ADD3701(3 3/4位數字萬用表), 也可以參考AD7740 VFC電路. 例: 比較一次的時間間隔為10us, 量程為10000, 則做1次ADC的時間為100ms. 比較器的響應時間越短, 則完成ADC就越快. 由于要求每次比較時間間隔都要相等,所以用C編程最好在定時器中斷里進行, 定時器設置為自動重裝, 高優先級中斷, 其它中斷均低優先級. 用匯編的話, 保證比較輸出電平處理的時間要相等. |
STC15W201S系列單片機引腳圖:![]() |
大佬牛逼,能寫這么多代碼,學習學習 |