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