宋東亞,黃家福
(鄭州華信學院 河南 鄭州 451150)
Proteus軟件是由英國Lab Center Elec-tronics公司開發的最新版本EDA工具軟件,它集電路設計、制版及仿真等多種功能于一身,是目前世界上最先進、最完整的嵌入式系統設計與仿真平臺。它是一種可視化的支持多種型號單片機(如 51、PIC、AVR、Motorola hcll等), 并且支持與當前流行的單片機開發環境(Keil、MPLAB、IAR)連接調試的軟硬件仿真系統。針對微控制系統與外設的混合電路的電路仿真、軟件仿真、系統協同仿真,做到了一體化和互動效果[1]。
Proteus包含以下應用軟件:
ISIS———智能原理圖輸入系統,系統設計與仿真的基本平臺。
lARES———高級PCB布線編輯軟件。
在Proteus中,從原理圖設計、單片機編程、系統仿真到PCB設計一氣呵成。真正實現了從概念到產品的完整設計。使用Proteus可以直觀的看到設計效果,可以縮短開發周期[2]。
KeilμVision3是單片機源程序設計與編譯軟件,它支持匯編與C語言,能夠對程序進行調試并轉換成其他形式的文件[3]。
本文在Proteus ISIS平臺上設計一個能夠檢測溫度變化并顯示實時顯示溫度,在規定的溫度范圍內報警的溫控報警器,可廣泛應用于生產生活中需要溫度控制的場合。溫度報警的范圍可通過程序修改。
溫控報警器硬件電路主要由AT89C51單片機最小系統、ADC0808模數轉換器組成的溫度采集模塊、四位LED顯示單元構成的顯示電路、報警電路構成。硬件電路的組成如圖1所示。
下面具體分析各部分電路的設計原理:
1)單片機最小系統 包括AT89C51單片機一塊,時鐘電路(12 MHz晶振)、復位電路(上電復位)。
2)溫度采集模塊 包括ADC0808模數轉換器芯片一塊,用可變電阻模擬電壓變化,在實際應用中可采用溫度傳感器來替代。通過模數轉換器將采集到電壓信號轉換成數字信號,使用通道0輸入電壓信號,轉換后的數字信號通過P1口輸入到單片機內部。
3)顯示電路 包括四位共陰LED數碼顯示管,采用動態顯示方式,由P0口輸出段碼,P2口的P2.0-P2.3輸出位碼。該部分電路主要用于實時顯示環境溫度。
4)報警電路 包括揚聲器和兩個發光二極管,揚聲器在溫度超出范圍時發出聲音報警,發光二極管隨之發光報警。兩個發光二極管分別用于溫度高出范圍和低于范圍時報警,揚聲器也會發出兩種不同音調的聲音。

圖1 溫控報警器硬件電路圖Fig.1 Diagram of hardware circuit
硬件電路在Proteus軟件環境下完成原理圖的設計,主要元器件清單如下:四位共陰LED數碼管7SEG-M PX4-CC-BLUE,模數轉換器ADC0808,單片機AT89C51,電容CAP,極性電容CAP-ELEC,晶振CRYSTAL,黃色發光二極管LED-YELLOW,可變電阻 POT-HG,電阻 RES,排阻RESPACK-8,揚聲器SOUNDER。在環境溫度小于60度和高于160度時報警。
溫控報警器的主要功能由程序控制,本設計采用C語言完成程序的設計,在KeilμVision3軟件中完成調試。程序主要包含主程序、顯示子程序、定時器中斷程序等3部分。
主程序完成的主要內容有:定時器/計數器參數設置、啟動模數轉換、讀取模數轉換結果、根據讀取內容判斷是否報警等。主程序流程圖如圖2所示。
顯示子程序主要用于顯示溫度,可以直觀的察看溫度。采用動態顯示方式,P0口輸出段碼,P2口輸出位碼。下面給出部分代碼[4]:

圖2 主程序流程圖Fig.2 Flow chart of main program
Void show_temperature()
{
Uchar i,dsy_idx[]={0xf7,0xfb,0xfd}
For (i=0;I<3;i++)
{p0=dsy_code[temperature[i]];
p2=&=dsy_idx[i]
delayms(5);
p2|=0x0f;
}
}
該部分包含兩部分,T0定時器/計數器中斷主要用于為ADC0808提供時鐘信號,T1定時器/計數器定時實現不同頻率脈沖信號的輸出,驅動揚聲器發聲。該部分代碼不再給出。
在Proteus和Keil中進行相關的設置,可以讓兩者進行聯調,聯調可以在同一臺計算機上進行,也可以在不同的計算機之間進行[5]。通過Proteus與Keil的聯調可以輕易做到在不使用硬件的前提下直接在仿真平臺上進行實時仿真,對于系統的調試具有很大意義[5]。
在硬件電路檢查無誤和程序編譯無誤之后,系統即可運行,運行時初始狀態為顯示器顯示溫度為145,調可變電阻使電阻值發生變化,使顯示溫度低于60℃,可以觀察到低發光二極管發光,揚聲器報警;繼續調可變電阻使顯示溫度高于160℃,可以觀察到高發光二極管發光,揚聲器以另外一種頻率聲音報警。如果需要調整報警溫度范圍,可以通過修改主程序中的溫度上限和下限值來實現[6]。
文中給出了基于單片機的簡易溫控報警器的設計過程。在該設計中采用可變電阻代替溫度傳感器,可添加DS18B20溫度傳感器來檢測實際溫度,利用ADC0808和單片機完成數據分析,實時顯示,報警,實現溫度高于上限和低于下限時報警的基本功能,還可通過修改程序改變報警現象。
設計過程中利用Proteus與Keil軟件的完美結合,使本設計的設計和調試過程更加方便快捷,提高了設計的一次成功率,節約了設計成本,縮小了設計周期。該設計的電路及驅動程序對相應的實際應用系統具有一定的借鑒作用。
[1]朱清慧,張鳳蕊,翟天嵩.Proteus教程-電子線路設計、制版與仿真[M].北京:清華大學出版社,2008.
[2]朱清慧,王志奎.Proteus在LED點陣滾動顯示屏設計中的應用[J].液晶與顯示,2009,4(24):233-237.ZHU Qing-hui,WANG Zhi-kui.Proteus in LED dot matrix rolling display design in the application of[J].Liquid Crystal Display,2009,4(24):233-237.
[3]周潤景,張麗娜.基于PROTEUS的電路及單片機系統設計與仿真[M].北京:北京航空航天大學出版社,2006.
[4]彭偉.單片機C語言程序設計實訓100例[M].北京:電子工業出版社,2009.
[5]徐愛鈞,彭秀華.Keil Cx51 V7.0單片機高級語言編程與μVision 2應用實踐[M].北京:電子工業出版社,2004.
[6]吳文忠.基于Proteus的自動撥號報警器仿真設計[J].現代電子技術,2011,34(10):55-58.WU Wen-zhong.Proteus based automatic dialing alarm system design and simul ation of[J].Modern Electronic Technique,2011,34 (10):55-58.