- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
巧用AT89C2051制作的数字电容表.doc
? 巧用AT89C2051製作的數字電容表 2006-11-27 22:19:37??
AT89C2051作為AT89C51的簡化版雖然去掉了P0、P2等埠,使I/O口減少了,但是卻增加了一個電壓比較器,因此其功能在某些方面反而有所增強,如能用來處理模擬量、進行簡單的模數轉換等。本文利用這一功能設計了一個數位電容表,可測量容量小於2微法的電容器的容量,採用3位元半數字顯示,最大顯示值為1999,讀數單位統一採用毫微法(nf),量程分四檔,讀數分別乘以相應的倍率。 電路工作原理 本數位電容表以電容器的充電規律作為測量依據,測試原理見圖1。?? 圖1
?? 電源電壓E+經電阻R給被測電容CX充電,CX兩端原電壓隨充電時間的增加而上升。當充電時間t等於RC時間常數τ時,CX兩端電壓約為電源電壓的63.2%,即0.632E+。數位電容表就是以該電壓作為測試基準電壓,測量電容器充電達到該電壓的時間,便能知道電容器的容量。例如,設電阻R的阻值為1千歐,CX兩端電壓上升到0.632E+所需的時間為1毫秒,那麼由公式τ=RC可知CX的容量為1微法。 ?? 測量電路如圖2所示。 圖2 ?? A為AT89C2051內部構造的電壓比較器,AT89C2051的P1.0和P1.1口除了作I/O口外,還有一個功能是作為電壓比較器的輸入端,P1.0為同相輸入端,P1.1為反相輸入端,電壓比較器的比較結果存入P3.6口對應的寄存器,P3.6口在AT89C2051外部無引腳。電壓比較器的基準電壓設定為0.632E+,在CX兩端電壓從0升到0.632E+的過程中,P3.6口輸出為0,當電池電壓CX兩端電壓一旦超過0.632E+時,P3.6口輸出變為1。以P3.6口的輸出電平為依據,用AT89C2051內部的計時器T0對充電時間進行計數,再將計數結果顯示出來即得出測量結果。 ??整機電路見圖3。電路由單片機電路、電容充電測量電路和數碼顯示電路等部分組成。 圖3
????AT89C2051內部的電壓比較器和電阻R2-R7等組成測量電路,其中R2-R5為量程電阻,由波段開關S1選擇使用,電壓比較器的基準電壓由5V電源電壓經R6、RP1、R7分壓後得到,調節RP1可調整基準電壓。當P1.2口在程式的控制下輸出高電平時,電容CX即開始充電。量程電阻R2-R5每檔以10倍遞減,故每檔顯示讀數以10倍遞增。由於單片機內部P1.2口的上拉電阻經實測約為200K,其輸出電平不能作為充電電壓用,故用R5兼作其上拉電阻,由於其他三個充電電阻和R5是串聯關係,因此R2、R3、R4應由標準值減去1K,分別為999K、99K、9K。由於999K和1M相對誤差較小,所以R2還是取1M。 ????數碼管DS1-DS4、電阻R8-R14等組成數碼顯示電路。本機採用動態掃描顯示的方式,用軟體對字形碼解碼。P3.0-P3.5、P3.7口作數碼顯示七段筆劃字形碼的輸出,P1.3-P1.6口作四個數碼管的動態掃描位元驅動碼輸出。這裏採用了共陰數碼管,由於AT89C2051的P1.3-P1.6口有25mA的下拉電流能力,所以不用三極管就能驅動數碼管。R8-R14為P3.0-P3.5、P3.7口的上拉電阻,用以驅動數碼管的各欄位,當P3的某一埠輸出低電平時其對應的欄位筆劃不點亮,而當其輸出高電平時,則對應的上拉電阻即能點亮相應的欄位筆劃。 軟體設計 ?? 程式使用C語言編寫,詳細根源程式見本刊網站。 ?? 程式由主程序、定時中斷服務副程式等模組組成。計時器T0作被測電容器充電時間的計數用。計時器T1用於定時中斷服務,定時時間為5ms,即5ms產生一次中斷。陣列BitTab[4] 用來存儲位元驅動碼,DispTab[11] 用來存儲字形碼,陣列DispBuf[4]的4個元素分別用來存儲從計時器T0讀出的資料的個、十百千位元的4位元數字。 ????程式顯示每一位元數碼的時間為5ms,因此顯示完整的4位元數的週期為20ms(4次中斷)。每過240ms(48次中斷)刷新一下資料,即每過240ms測一下電容量,測量時間小於2ms,由於這一時間小於中斷的時間5ms,因此在測量過程中不會出現中斷現象。測量電容時P1.2口輸出高電平,電容開始充電,與此同時計時器T0開始計數,當電容器充電達到基準電壓時,P3.6口輸出高電平,據此程式作出判斷停止T0的計數,並讀出資料送數碼管顯示。如果被測電容器的容量超出測試檔的量程,則計數值大於或等於2000,顯示結果為千位元數顯示1,其他三位元數不顯示,這和數位萬用表超過量程的顯示模式相同。這時可選擇大一檔的量程進行測試。 經仿真和電路測試,發現單片機判斷P3.6口是否輸出高電平要化3個機器週期,這會使顯示值增加3,因此在程式
文档评论(0)