李明俠
渤海大學工學院
基于單片機的多路數(shù)字電壓表設計
李明俠
渤海大學工學院
我們在生活中經(jīng)常用到數(shù)字表,但是指針式的數(shù)字表精度低而且功能少,有時并不能滿足我們的需要,而采用單片機設計的數(shù)字表就可以彌補這些缺點,而且具有較強的抗干擾性。本次課題設計的多路數(shù)字電壓表將會在以后的生活中有廣泛應用。
單片機 數(shù)字電壓表 A/D轉換器
數(shù)字電壓表在我們的生活和工作中都會經(jīng)常用到,對于電氣行業(yè)更是必需品,所以就要要求有很好的質量和功能,本次設計的多路數(shù)字電壓表主要使用的是單片機,基本可以滿足我們現(xiàn)在的需求,也會在以后的應用中越來越多。
①輸入電壓為8路;
②電壓值的測量范圍為0-5V;
③測量的最小分辨率為0.019V,測量誤差為±0.02V;
④能使用顯示器顯示出通道和通道的電壓,要求顯示到小數(shù)點后兩位。
本次設計的多路數(shù)字電壓表使用的單片機是AT89C52,它具有8k的只讀存儲器,256*8bit的隨機存儲器,并且具有32個雙向I/O口,并且能夠兼容MCS51指令系統(tǒng)。其他模塊還包括:時鐘電路,復位電路,LCD顯示模塊,A/D轉換模塊和按鍵模塊??傮w設計圖如圖1。
圖1 多路數(shù)字電壓表的總體結構
硬件電路中除了需要核心的單片機AT89C51外,還需要A/D轉換器ADC0808和顯示器LCD1602,其中ADC0808是8位的CMOS轉換器,最小誤差為±1/2LSB,供電使用的是5V電源,而且有較低的功耗;而LCD1602的功耗也極低,液晶顯示模塊顯示2行,每行有16個字符,LCD1602顯示的內容會比LED的更加豐富,更符合這次的設計。
主程序、AD轉換子程序、顯示驅動程序組成了多路數(shù)字電壓表的主要軟件程序。
主程序首先要初始化驅動定時計數(shù)器和LCD,然后LCD顯示屏上會有提示信息,接著進行循環(huán)程序,也就是AD轉換的子程序,流程圖如圖2。
圖2 主程序的流程
這次設計比較重要也是比較核心的的部分是AD轉換子程序,A/D轉換器主要有以下幾個性能指標:
3.1 分辨率
也就是能被A/D轉換器分辨出來的最小的輸入量,我們平時習慣使用已經(jīng)轉換的數(shù)字量的位數(shù)表示,位數(shù)大的,分辨率高。
3.2 轉換時間
這段時間指的是從轉換器開始工作一直到轉換完成而且要求輸出的數(shù)字量要保持穩(wěn)定才可以,當然,要想轉換速度越快,就需要縮短轉化時間。
3.3 量程
是指可以轉換的電壓范圍。
3.4 轉換精度
有兩種之分,一種是絕對精度,是指理論的模擬量和實際的模擬量的差;一種是相對精度,指的是校準了滿刻度值之后,任意的一個模擬值和理論值的差。
本次設計使用的芯片為ADC0808,是一種逐漸逼近型的AD轉換器,組成部分包括比較器,寄存器,D/A轉換器和控制電路。
當A/D轉換器開始工作時,首先使地址鎖存允許信號ALE為高電平,通過地址譯碼器的譯碼,選通1路模擬通道將模擬量送到比較器里;然后使啟動信號為高電平,逐漸逼近寄存器在啟動信號上升沿的作用下復位,A/D轉換器在下降沿的作用下開始啟動,在三態(tài)輸出鎖存器中接收轉換的結果,這時CPU接收到轉換結束指令,如果CPU開始執(zhí)行數(shù)據(jù)指令時,OE仍為高電平,就會從8位數(shù)字量輸出端輸出數(shù)據(jù)。具體流程圖如圖3。
圖3 A/D轉換子程序的流程
還有比較重要的一部分就是顯示模塊的子程序,同樣的,在使用之前也需要初始化,通過復位即可完成,具體步驟如下:首先,要清除屏幕,;其次需要進行數(shù)據(jù)位數(shù)的設置;然后進行顯示的開關設置。
因為LCD處理數(shù)據(jù)的速度要慢于CPU,所以輸入命令之后會處于工作狀態(tài),不能再繼續(xù)輸入新的內容,需要一直等到完成指令。
而控制整個電路的就是鍵盤,也就是按鍵開關,每次按鍵按下時,都會下向計算機發(fā)送脈沖,處于低電平,開關斷開時,處于高電平。我們通常用的開關是機械式的開關,在開關閉合的時候不能準確地接通,斷開時也不會馬上就斷,所以就會產(chǎn)生抖動,同時就會產(chǎn)生按一次鍵會有多個輸入的問題,為了讓輸入更準確,我們會采取延時消抖,也就是在抖動的時候執(zhí)行延時程序,跳過抖動,再去檢測的話就會消除抖動了。
本次設計采用的鍵盤是獨立式鍵盤,它具有使用靈活,方便簡單的特點,更適合本次設計,憑借著I/O口的電平高低就可以判斷哪個鍵盤閉合,哪些斷開,但是只有在按鍵數(shù)量較少時才可以使用。
本次設計電路仿真采用的是protues,仿真圖電路引腳連接清晰,可以查看單步運行情況,方便實用,而且便于在Keil C5中拷入程序,程序編譯使用的就是Keil C51,C語言和匯編語言在這里都適用,可以根據(jù)情況決定,而且系統(tǒng)中函數(shù)較多,可以方便操作,電路仿真圖如圖4。
通過這次設計我學習到了更多關于單片機和電壓表的知識,更加深入的了解了單片機,為以后的課程提供了比較豐富的經(jīng)驗,雖然在設計和調試時還有諸多不順利,但是經(jīng)過最后的努力,還是很成功的完成了。雖然本次設計還有很多不足,但是我會在以后的學習中逐漸改進。
圖4 多路數(shù)字電壓表的電路原理圖
[1]謝維成,楊加國.單片機原理與應用及C51程序設計(第三版).北京:清華大學出版社,2014
[2]謝維成,楊加國.單片機原理、接口及應用程序設計.北京:電子工業(yè)出版社,2011
[3]張培仁.基于C語言編程MCS-51單片機原理與應用.北京:清華大學出版社,2003
[4]侯玉寶.陳忠平,李成群等.基于Proteus的51系列單片機設計與仿真[M].北京:電子工業(yè)出版社,2008
[5]林志琦,郎建軍等. 基于Proteus的單片機可視化硬件仿真[M]. 北京航空航天大學出版社,2006
[6]楊光友,朱宏輝,《單片微型計算機原理及接口技術》,水利水電出版社,2002.9
[7]韓志軍等編著.單片機應用系統(tǒng)設計:入門向導與設計實例.北京:機械工業(yè)出版社,2005