梁美麗 ,王愛國(guó),陳立杰
(1.山西輕工職業(yè)技術(shù)學(xué)院,山西 太原 030013;2.太原工業(yè)學(xué)院,山西 太原 030008;3.浙江農(nóng)林大學(xué),浙江 杭州 311300)
Protues 是一款優(yōu)秀的 EDA 工具軟件。它能仿真多種單片機(jī)及其外圍器件,大家只要有一臺(tái)電腦就可以隨時(shí)隨地進(jìn)行電路設(shè)計(jì)。本文設(shè)計(jì)了一款電子稱,在電路焊接之前以Protues仿真軟件為平臺(tái)對(duì)其進(jìn)行了仿真。
電子稱電路設(shè)計(jì)的思路是:電阻式傳感器采集因壓力變化產(chǎn)生的模擬信號(hào),模擬信號(hào)再傳送給模/數(shù)轉(zhuǎn)換芯片,模數(shù)電路把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)后傳送到單片機(jī),單片機(jī)將數(shù)字信號(hào)經(jīng)過相應(yīng)的處理傳給液晶顯示器,同時(shí)按鍵電路把設(shè)置好的單價(jià)傳送給單片機(jī),最后可以通過液晶顯示出物品的重量和金額。當(dāng)物體重量超過傳感器能檢測(cè)到的范圍時(shí)報(bào)警電路工作。
該電路主要由五部分組成:電阻傳感器、A/D轉(zhuǎn)換電路、單片機(jī)、液晶顯示、報(bào)警電路。具體電路框架如圖1。
圖1 硬件電路框架
MCU單片機(jī)采用AT89C52。AT89C52是一種高性能的8位微控制器,它具有成本低,功耗低、技術(shù)成熟的優(yōu)點(diǎn)。AT89C52內(nèi)部有4個(gè)輸入/輸出口,稱為I/O口,即P0、P1、P2、P3口,每個(gè)口都是8位。在此電路中用了4個(gè)P口。P1口接4*4矩陣,P0口和P2口接液晶顯示器,P3口接模數(shù)轉(zhuǎn)換芯片和報(bào)警電路。另外單片機(jī)還設(shè)置了時(shí)鐘電路和復(fù)位電路。時(shí)鐘電路引腳18腳和19腳分別接了石英振蕩器的兩端和電容,石英振蕩器的振蕩頻率設(shè)置為11.059 2 MHz。復(fù)位引腳9腳接一個(gè)電容和電阻構(gòu)成的復(fù)位電路。在加電瞬間,復(fù)位端出現(xiàn)一定時(shí)間的高電平就可以使單片機(jī)有效復(fù)位。
信號(hào)采集采用了橋式測(cè)量電路。由4個(gè)滑動(dòng)電阻器采用全橋連接,四個(gè)節(jié)點(diǎn)分別接電源,地,0832的模擬輸入通道CH0端和模擬輸入通道CH1端。當(dāng)滑動(dòng)電阻器的電阻值發(fā)生改變時(shí),轉(zhuǎn)化為電壓或者電流的變化,這種電路結(jié)構(gòu)的缺點(diǎn)是對(duì)于大應(yīng)變有較大的非線性。實(shí)際電路操作時(shí)可采用電阻應(yīng)變片。它的測(cè)量原理是:當(dāng)構(gòu)件受力變形時(shí),金屬絲的長(zhǎng)度和橫截面積也隨著構(gòu)件一起變化,進(jìn)而發(fā)生電阻變化。
信號(hào)處理器采用模數(shù)模塊ADC0832。ADC0832為8位分辨率A/D轉(zhuǎn)換芯片,它能對(duì)兩路模擬信號(hào)進(jìn)行模擬轉(zhuǎn)換,其最高分辨可達(dá)256級(jí)。ADC0832 與單片機(jī)的接口為CS、CLK、DO、DI4條數(shù)據(jù)線。電路設(shè)計(jì)時(shí)可以將DO和DI 并聯(lián)在一根數(shù)據(jù)線上接單片機(jī)17腳,CS接單片機(jī)15腳,CLK接單片機(jī)16腳。A/D轉(zhuǎn)換時(shí),使能端CS置低電平。ADC0832的模擬輸入通道CH0和CH1接電阻應(yīng)變片的全橋的兩端完成采集模擬信號(hào)。
按鍵采用4×4的矩陣按鍵。它是用4條I/O線作行線,4條I/O線作為列線組成的鍵盤。行線接單片機(jī)P1.0-P1.3口,列線接單片機(jī)P1.4-P1.7口。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤中按鍵的個(gè)數(shù)是4×4個(gè)。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。這十六個(gè)鍵依次設(shè)置為0~9十個(gè)數(shù),小數(shù)點(diǎn),#備用鍵,A,B,C,D。A具有去皮功能,B是清除鍵,C是輸入單價(jià)錯(cuò)誤時(shí)返回上一步,D是計(jì)算總價(jià)。
報(bào)警器電路連單片機(jī)10腳,該電路通過一個(gè)電阻和二極管完成。當(dāng)電路檢測(cè)到稱重的物體超過儀器的測(cè)量限制時(shí),單片機(jī)10腳即P3.0口輸出高電平從而點(diǎn)亮二極管。
液晶顯示電路采用1602.1602可以顯示兩行,每行16個(gè)字符。Protues仿真中用LM016L。LM016L中D0—D7是并行數(shù)據(jù)輸入/輸出引腳,可接單片機(jī)的P0—P3任意的8個(gè)I/O口。此電路中接P0口,在P0口加了10K的電阻排。RS是命令/數(shù)據(jù)選擇引腳,接單片機(jī)的P2.1口,當(dāng)RS為低電平時(shí),選擇命令;當(dāng)RS為高電平時(shí),選擇數(shù)據(jù)。RW是讀/寫選擇引腳,接單片機(jī)的P2.1口,當(dāng)RW為低電平時(shí)寫入命令或數(shù)據(jù);當(dāng)RW為高電平時(shí)讀取狀態(tài)或數(shù)據(jù)。E為使能端,接單片機(jī)的P2.2口和P2.3口,當(dāng)E由高電平跳變成低電平時(shí),液晶模塊工作。
此電路采用了兩個(gè)1602,一個(gè)顯示重量和單個(gè)商品的總價(jià),另一個(gè)顯示單個(gè)商品的單價(jià)和所有商品的總價(jià)。
程序設(shè)計(jì)是一件復(fù)雜的工作,為了把復(fù)雜的工作條理化可以先畫出程序流程圖。系統(tǒng)軟件設(shè)計(jì)包括主程序和子程序設(shè)計(jì)。子程序設(shè)計(jì)包括0832的數(shù)模轉(zhuǎn)換程序、4×4按鍵程序、1602顯示程序。本文中程序的編寫是基于C語(yǔ)言編寫的。
主程序的主要任務(wù)是獲得物體的重量和總價(jià),然后更新顯示即可。當(dāng)物體重量超出250g時(shí)黃燈點(diǎn)亮實(shí)時(shí)報(bào)警。由于篇幅的原因本文只做了主流程圖。
圖2 主程序流程圖
在Keil中編譯好程序,編譯成功后輸出HEX文件。打開Protues軟件,鼠標(biāo)單擊單片機(jī)AT89C52,點(diǎn)擊Program File添加HEX文件,點(diǎn)擊Run Simulation開始仿真。電路仿真界面見圖3。
圖3 Protues系統(tǒng)仿真界面圖
通過仿真結(jié)果表明該電路理論上切實(shí)可行,可以進(jìn)行下一步實(shí)際操作。實(shí)際焊好電路后發(fā)現(xiàn)電阻應(yīng)變片受溫度影響比較大,究其原因Protues仿真軟件中每個(gè)元器件的選擇都是理想型元件,不受外界的影響,為了改善電路測(cè)試結(jié)果可以在原來的基礎(chǔ)上增加溫度補(bǔ)償電路。