• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

洞洞板簡(jiǎn)易制作電壓、電容表(原理圖、程序及算法講解)

2017/01/04
22
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

電壓表電路+程序.zip

共2個(gè)文件

先給大家講點(diǎn)電壓表、電容表程序中的稍微有點(diǎn)內(nèi)涵的部分,讓初學(xué)者明明白白,別搞成霧里看花就行

電壓表Main中有如下幾行
uiCH0_Value = ADConvert(0);
sprintf(ucResultString,"Ch0 = %drn",uiCH0_Value);
printf(ucResultString);
上面3行的功能就是將從AD轉(zhuǎn)換芯片讀取到的16進(jìn)制送串口,通過(guò)電腦上的串口調(diào)試助手看十進(jìn)值的電壓值,通過(guò)電腦的串口檢查十進(jìn)值數(shù)據(jù)可以判斷單片機(jī)與AD是否通訊正常,轉(zhuǎn)換的結(jié)果是否正確,在沒(méi)有仿真環(huán)境的系統(tǒng)中,將看不到卻又非常想看的變量值發(fā)送到PC串口顯示是很實(shí)用的調(diào)試手段。sprintf這個(gè)函數(shù)通吃所有類(lèi)型的變量值轉(zhuǎn)換成字符串,然后在電腦上看字符串就一目了然了。

ulCH0_Voltage = (uiCH0_Value * 5000l)/255; //求當(dāng)前電壓值,單位mV
uiCH0Integer = ulCH0_Voltage / 1000;
ulCH0Dim = ulCH0_Voltage % 1000;

sprintf(ucResultString,"V= %d.%ldV",uiCH0Integer,ulCH0Dim);
LCDLine1(ucResultString,0,0);

上面幾行的功能是將程序內(nèi)部的電壓值(0-255)變換成0-5V的顯示內(nèi)容,比如顯示出2.5V,1.8V,讓當(dāng)前電壓采樣值還原成大家習(xí)慣的明了的數(shù)據(jù)。因?yàn)閡iCH0_Value的值為0-255,現(xiàn)在要將它變換0-5000之間的數(shù),就是一個(gè)比例變換的問(wèn)題,先乘5000,再除255就OK了。注意要在5000后面加個(gè)”L“字符喲,因?yàn)榻Y(jié)果是長(zhǎng)整數(shù),不加時(shí)是兩個(gè)短整型相乘,會(huì)出錯(cuò)的,加了字符”L“后,就變成1個(gè)短整形和1個(gè)長(zhǎng)整形相乘了,就不會(huì)出現(xiàn)數(shù)據(jù)自動(dòng)轉(zhuǎn)換出錯(cuò)的現(xiàn)象了。

再來(lái)說(shuō)說(shuō)電容表吧,電容表是用1個(gè)555集成電路構(gòu)成的多諧振蕩器,充電和放電電容就是被測(cè)電容,電容越大,振蕩頻率就越低。設(shè)計(jì)時(shí)將電路分成了獨(dú)立的兩部分,555芯片完成電容測(cè)量轉(zhuǎn)頻率輸出的功能后,此輸出波形可以先供助專(zhuān)用的頻率計(jì)(高級(jí)萬(wàn)用表有頻率測(cè)量功能)來(lái)驗(yàn)證電路是否存在問(wèn)題,然后再把這個(gè)已知頻率的信號(hào)接入到單片機(jī)的測(cè)量引腳,測(cè)試出1S有多少個(gè)脈沖,就能反推出電容容值了。
呵呵,有人會(huì)問(wèn)這個(gè)555振蕩電路輸出信號(hào)頻率是是怎么算的?查查《數(shù)字電路基礎(chǔ)》的教課書(shū)吧,上面有介紹的。下面有個(gè)圖,經(jīng)常找不到書(shū)的電工就繼續(xù)往下看圖吧!

  • 電壓表電路+程序.zip
    下載
    描述:電路+程序
  • 電容測(cè)試儀電路+程序.zip
    下載
    描述:電路+程序

相關(guān)推薦