![]() |
發布時間: 2019-8-6 10:12
正文摘要://stc12c5a60 #include<STC12C5A60S2.h> #include<stdio.h> #include<intrins.h>//頭文 ... |
這個程序應該是不全的,不知道什么原因。tempv*3的意思是電壓取樣1/3,這是硬件決定的,所以結果要*3. AD值讀出來不是電壓值,要和基準電壓AD換算轉成電壓值再分解顯示的,這個直接顯示肯定是錯的,這個程序是不能用的。還有MAZ是什么莫名其妙的突然就蹦出來顯示。搞不懂樓主轉過來看過沒有 |
m182892 發表于 2019-8-8 08:38 不理解 |
maomaochong 發表于 2019-8-7 13:21 非常感謝我研究研究 |
tablex(tempv*3);//分解數據, 就是10K電阻RP2調到了1.67K的位置。 |
maomaochong 發表于 2019-8-7 13:21 樓主找的這個程序只能算是習作,有很多不成熟的地方。其運算ADC結果的方法也是粗淺的,以致樓主看不明白。 十位ADC結果換算成10進制(4舍5入):毫伏=(參考電壓*十位ADC結果*10000/1024+5)/10。 再將此值按前置電路的分壓比放大或運放放大倍數縮小,才能得到取樣點的實際值。 |
軟件都是基于硬件條件編寫的,離開硬件電路圖,有些代碼是很難讀懂的。縱觀這程序,原作者的ADC電壓取樣電路可能是直接或通過分壓電阻取樣、電流取樣電路可能是毫歐級取樣電阻經運算放大器LM358放大取樣。經軟件濾波后獲取10位ADC數據,這些數據并不能直接顯示電壓和電流,需要經過運算和補償才能得到接近實際電壓和電流的值,并將此值通過LCD1602顯示出來。 |