朱敦忠,周紅鍇,呂廣文,袁 梅
(桂林理工大學(xué)南寧分校,廣西 南寧530001)
Proteus軟件是一款含有豐富的集成芯片、分立元件和硬件接口電路,能進(jìn)行PCB設(shè)計(jì)具有軟、硬件仿真相結(jié)合的EDA工具軟件,該軟件被廣泛地應(yīng)用到電類專業(yè)的“單片機(jī)”、“嵌入式”等課程教學(xué)以及電子產(chǎn)品開發(fā)過程中[1-4]。在單片機(jī)控制系統(tǒng)中單片機(jī)經(jīng)常需要和各種硬件接口電路進(jìn)行連接,在軟件設(shè)計(jì)過程中常需要依據(jù)接口芯片的時(shí)序進(jìn)行程序設(shè)計(jì),為了能更直觀地觀察單片機(jī)控制接口芯片的時(shí)序,本文設(shè)計(jì)一個(gè)單片機(jī)控制的簡易數(shù)字電壓表系統(tǒng),通過使用Proteus軟件進(jìn)行系統(tǒng)設(shè)計(jì)并使用Proteus圖表查看單片機(jī)控制ADC0831芯片的時(shí)序仿真,探索使用利用Proteus圖表波形仿真在單片機(jī)控制芯片讀寫時(shí)序仿真的方法[5]。
簡易數(shù)字電壓表系統(tǒng)以AT8951單片機(jī)作為主控芯片,以ADC0831作為模數(shù)轉(zhuǎn)換芯片并以4共陽數(shù)碼管作為顯示器件。其中ADC0831把采集的模擬電壓轉(zhuǎn)換為相應(yīng)的數(shù)字量并傳送到AT8951芯片,AT8951單片機(jī)負(fù)責(zé)數(shù)據(jù)的處理,將ADC0831芯片采集模擬電壓結(jié)果送到數(shù)碼管進(jìn)行顯示。電路連接上,在 Proteus軟件中將 AT8951單片機(jī)的 P1.0、P1.1、P1.2引腳分別與ADC0831芯片的的片選、時(shí)鐘CLK、數(shù)據(jù) DO 引腳相連接,單片機(jī) P0.0、P0.1、P0.2、P0.3 引腳與驅(qū)動(dòng)4位共陽數(shù)碼管的三極管相連接,通過單片機(jī)P2口與4位共陽數(shù)碼管段碼相連接,被測電壓用可調(diào)電阻RV4通過5 v電壓分壓模擬。簡易數(shù)字電壓表系統(tǒng)的Proteus仿真電路圖如圖1所示[6]。
如圖2所示,給出了簡易數(shù)字電壓表系統(tǒng)程序流程圖。首先對(duì)AT8951單片機(jī)、數(shù)模轉(zhuǎn)換器ADC0831芯片、4位數(shù)碼管等進(jìn)行初始化設(shè)置。接著對(duì)輸入的待測電壓進(jìn)行檢測,從ADC0831芯片讀取被測電壓值的二進(jìn)制數(shù)據(jù),然后,AT8951單片機(jī)根據(jù)算法將該二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制電壓值送到數(shù)碼管進(jìn)行顯示。
圖1 簡易數(shù)字電壓表電路圖
圖2 簡易數(shù)字電壓表程序流程圖
在簡易數(shù)字電壓表系統(tǒng)中,AT8951單片機(jī)作為主控芯片,模數(shù)轉(zhuǎn)換器ADC0831芯片把采集的模擬電壓轉(zhuǎn)換為相應(yīng)的數(shù)字量并傳送到AT8951單片機(jī)進(jìn)行數(shù)據(jù)的處理,AT8951單片機(jī)將處理結(jié)果送到數(shù)碼管進(jìn)行顯示。因此,主控單片機(jī)AT8951對(duì)模數(shù)轉(zhuǎn)換器ADC0831芯片的軟件控制顯得尤為重要。
如圖3所示,給出了ADC0831時(shí)序[7]。
圖3 ADC0831時(shí)序圖
根據(jù)圖3,編制主控單片機(jī)控制模數(shù)轉(zhuǎn)換器ADC0831芯片讀寫時(shí)序程序如下:
(1)選擇探針模式。在Proteus的左側(cè)工具箱上選擇電壓探針按鈕圖標(biāo) ,依次在ADC0831芯片CS、CLK、DO管腳連線上放置電壓探針[5]。
(2)選擇圖表模式并放置圖表。在Proteus的左側(cè)工具箱中選擇圖表模式按鈕圖標(biāo) ,在右側(cè)的GRAPHS選項(xiàng)中選擇DIGITAL即數(shù)字圖表,然后將鼠標(biāo)移到編輯窗口,點(diǎn)擊左鍵開始放置圖表,拖出一個(gè)適當(dāng)大小的矩形,再次點(diǎn)擊左鍵完成圖表的放置[7]。
(3)添加電壓探針到數(shù)字圖表。依次選擇ADC0831芯片CS、CLK、DO管腳的電壓探針按住鼠標(biāo)左鍵拖到DIGITAL圖表中,然后釋放鼠標(biāo)左鍵(該操作像移動(dòng)探針到另一個(gè)位置一樣)[5]。
(4)生成圖表仿真波形。在主菜單[Graph]→[Simulate Graph]命令(或使用快捷鍵:空格鍵),生成仿真波形,如圖4 所示[5]。
圖4 仿真圖表波形
(5)查看仿真波形。在仿真圖表上單擊鼠標(biāo)右鍵選擇 Maximize(show window),將彈出 DIGITAL ANALYSIS-PROSPICE仿真窗口。可以通過該窗口中的View菜單,對(duì)仿真圖形放大與縮少,其中選擇Zoom Area選項(xiàng)可以將鼠標(biāo)選中的波形區(qū)域放大[5]。
查看ADC0831芯片資料,要獲得ADC0831轉(zhuǎn)換的8位數(shù)據(jù)可以通過unsigned char Read Data From ADC0831(void)函數(shù)實(shí)現(xiàn),該函數(shù)的讀寫時(shí)序控制過程為:(1)初始化。ADC0831_DO為1即將單片機(jī)P1.2口設(shè)置為輸入(目的是讀取ADC0831的DO口數(shù)據(jù)),ADC0831_CS=1,ADC0831_CLK=0;(2)啟動(dòng)過程。ADC0831_CS=0,ADC0831_CLK=0,然后經(jīng)過Tset-up時(shí)間后給ADC0831_CLK傳送一個(gè)下降沿的時(shí)鐘來啟動(dòng)ADC0831芯片進(jìn)行AD轉(zhuǎn)換;(3)獲取數(shù)據(jù)過程。每來個(gè)時(shí)鐘且在下降沿時(shí)獲取1位AD數(shù)據(jù)且一個(gè)字節(jié)數(shù)據(jù)的轉(zhuǎn)換數(shù)據(jù)傳送形式為:高位到低位依次完成數(shù)據(jù)轉(zhuǎn)換,因此依次進(jìn)行8次左移從而實(shí)現(xiàn)一個(gè)字節(jié)AD轉(zhuǎn)換結(jié)果;(4)轉(zhuǎn)換結(jié)束。ADC0831_CS=1完成數(shù)據(jù)的轉(zhuǎn)換。
查看ADC0831芯片資料Tset-up時(shí)間250 ns,從圖5的DX:+1000 n可知程序滿足ADC0831芯片Tset-up時(shí)間要求(1000 n>250 ns)。從圖5的DO可以得出ADC0831的一個(gè)字節(jié)轉(zhuǎn)換數(shù)據(jù)為(01000000)2=64,根據(jù)轉(zhuǎn)換公式:被測電壓/AD轉(zhuǎn)換數(shù)據(jù)=ADC0831參考電壓/256,即被測電壓=(ADC0831參考電壓*AD轉(zhuǎn)換數(shù)據(jù))/256,本文的簡易數(shù)字電壓表系統(tǒng)ADC0831參考電壓為5 V,被測電壓信號(hào)用可調(diào)電阻RV4對(duì)5 V電壓分壓進(jìn)行模擬,當(dāng)可調(diào)電阻RV4調(diào)到25%位置時(shí)如圖1所示,讀取到一個(gè)字節(jié)轉(zhuǎn)換數(shù)據(jù)為(01000000)2=64如圖5,經(jīng)過轉(zhuǎn)換公式計(jì)算被測電壓 =(5*64)/256=1.25 V與圖1仿真結(jié)果顯示的電壓相符。
圖5 放大后的圖表波形
在單片機(jī)控制系統(tǒng)中,單片機(jī)常需要根據(jù)芯片時(shí)序圖進(jìn)行讀寫控制。因此,單片機(jī)控制芯片讀寫時(shí)序是否正確將直接影響系統(tǒng)能否正常工作。使用Proteus軟件的圖表仿真波形查看單片機(jī)控制芯片讀寫時(shí)序的方法可以直觀的查看實(shí)際程序設(shè)計(jì)是否正確,該方法有助于定性的分析單片機(jī)對(duì)芯片進(jìn)行操作過程中出現(xiàn)的問題,對(duì)電類專業(yè)學(xué)生學(xué)習(xí)單片機(jī)控制芯片讀寫時(shí)序的認(rèn)識(shí)以及縮短電子工程師產(chǎn)品開發(fā)周期起到很重要的作用。
參考文獻(xiàn):
[1]周潤景,張麗娜.基于Proteus的電路及單片機(jī)設(shè)計(jì)與仿真[M].北京:北京航空航天大學(xué)出版社,2006.
[2]王 超,楊蓮紅.Proteus仿真軟件在單片機(jī)實(shí)踐教學(xué)中的應(yīng)用[J].現(xiàn)代電子技術(shù),2014,37(14):84-87.
[3]王海燕,楊艷華.Proteus和Keil軟件在單片機(jī)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2012,31(5):88-91.
[4]王 娟.Proteus軟件在單片機(jī)專題實(shí)訓(xùn)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2012,31(8):72-75.
[5]鄧 力.使用Proteus仿真圖表對(duì)單片機(jī)指令時(shí)序仿真[J].科技通報(bào),2013,29(5):130-133.
[6]王 瑾.基于Proteus的數(shù)字電壓表仿真設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(1):122-124,128.
[7]葉 剛.基于ADC0831數(shù)字電壓表的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2017,13(8):243-144.