先給大家講點電壓表、電容表程序中的稍微有點內涵的部分,讓初學者明明白白,別搞成霧里看花就行
電壓表Main中有如下幾行
uiCH0_Value = ADConvert(0);
sprintf(ucResultString,"Ch0 = %drn",uiCH0_Value);
printf(ucResultString);
上面3行的功能就是將從AD轉換芯片讀取到的16進制送串口,通過電腦上的串口調試助手看十進值的電壓值,通過電腦的串口檢查十進值數據可以判斷單片機與AD是否通訊正常,轉換的結果是否正確,在沒有仿真環(huán)境的系統(tǒng)中,將看不到卻又非常想看的變量值發(fā)送到PC串口顯示是很實用的調試手段。sprintf這個函數通吃所有類型的變量值轉換成字符串,然后在電腦上看字符串就一目了然了。
ulCH0_Voltage = (uiCH0_Value * 5000l)/255; //求當前電壓值,單位mV
uiCH0Integer = ulCH0_Voltage / 1000;
ulCH0Dim = ulCH0_Voltage % 1000;
sprintf(ucResultString,"V= %d.%ldV",uiCH0Integer,ulCH0Dim);
LCDLine1(ucResultString,0,0);
上面幾行的功能是將程序內部的電壓值(0-255)變換成0-5V的顯示內容,比如顯示出2.5V,1.8V,讓當前電壓采樣值還原成大家習慣的明了的數據。因為uiCH0_Value的值為0-255,現在要將它變換0-5000之間的數,就是一個比例變換的問題,先乘5000,再除255就OK了。注意要在5000后面加個”L“字符喲,因為結果是長整數,不加時是兩個短整型相乘,會出錯的,加了字符”L“后,就變成1個短整形和1個長整形相乘了,就不會出現數據自動轉換出錯的現象了。
再來說說電容表吧,電容表是用1個555集成電路構成的多諧振蕩器,充電和放電電容就是被測電容,電容越大,振蕩頻率就越低。設計時將電路分成了獨立的兩部分,555芯片完成電容測量轉頻率輸出的功能后,此輸出波形可以先供助專用的頻率計(高級萬用表有頻率測量功能)來驗證電路是否存在問題,然后再把這個已知頻率的信號接入到單片機的測量引腳,測試出1S有多少個脈沖,就能反推出電容容值了。
呵呵,有人會問這個555振蕩電路的輸出信號頻率是是怎么算的?查查《數字電路基礎》的教課書吧,上面有介紹的。下面有個圖,經常找不到書的電工就繼續(xù)往下看圖吧!