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