2.3 單片機的仿真與應用
隨著計算機應用的普及,電子電路的設計、單片機系統的開發也已經有了許多計算機輔助設計軟件,這些軟件對智能儀器的設計和分析有很大的幫助。
Proteus ISIS是英國Labcenter公司開發的電路分析與實物仿真軟件,后面簡稱Proteus軟件。它運行于Windows操作系統上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真的功能,目前支持的單片機類型有:MCS-51系列、DSP系列、Arm系列等,本書簡要介紹Proteus軟件在智能儀器設計中的使用方法。這里仍以MCS-51系列單片機為例,說明如何利用這個軟件建立原理圖和進行仿真。
2.3.1 8951單片機最小系統的建立
這里選用8951建立一個單片機的最小系統,在前面已經討論過,因為8951自帶4KB可擦寫編程E2PROM,所以只要接上電源和晶振,一片芯片就可以構成一個最小系統。
安裝了Proteus軟件后,用Proteus軟件建立8951單片機最小系統的基本步驟如下所述。
1.打開Proteus ISIS的工作界面
在“開始”→“程序”中選擇“Proteus ISIS”,打開Proteus ISIS的工作界面,如圖2.10所示。可以看到,這是一種標準的Windows界面,因此使用起來比較方便。

圖2.10 Proteus ISIS的工作界面
2.選擇所需要的元件
通過對象選擇按鈕,從元件庫中選擇對象,并置入對象選擇器窗口,供今后繪圖時使用。顯示對象的類型包括:設備,終端,引腳,圖形符號,標注和圖形。例如,在關鍵字窗口中直接輸入“89C51”就可以找到所需的芯片。
注意,電源和接地不是元件,要從終端中選擇,圖形符號為。
3.放置元件并連線
選擇好全部的元件并放置好后,用鼠標指向對象并單擊右鍵可以選中該對象,使其高亮顯示,然后可以進行編輯,如設定電阻的阻值,電容的容量等。
然后連線,Proteus的智能化可以在你想要畫線的時候進行自動檢測。當鼠標的指針靠近一個對象的連接點時,跟著鼠標的指針就會出現一個“×”號,鼠標左鍵單擊元器件的連接點,然后單擊一個或幾個非連接點的位置,ISIS將認為你在手工定線的路徑,將會讓你單擊線的路徑的每個角。路徑是通過左擊另一個連接點來完成的。如果在交叉點有電路節點,則認為兩條導線在電氣上是相連的,否則就認為它們在電氣上是不相連的。
最后,得到8951單片機的最小系統,如圖2.11所示。這個最小的單片機系統除了9腳接了重啟(RST)按鍵外,只有P1.0有外接LED輸出。

圖2.11 8951構成的最小系統
2.3.2 8951單片機最小系統的仿真過程
Proteus軟件提供了多種單片機的仿真功能,這里我們對圖2.11所示的8951最小單片機系統進行仿真,以2.2.4節的【例2.1】為例說明仿真的過程,即通電后單片機輸出頻率為10kHz的矩形波。
1.建立源程序
【例2.1】中已知單片機的頻率為12MHz,要求單片機輸出頻率為10kHz的矩形波,占空比為2∶1(高電平時間長),并選P1.0引腳作為輸出腳。通過分析編寫了相應的程序。
可以用記事本(不能用Word之類帶格式的文本編輯器)建立源代碼,并另存為后綴名為.ASM的8051的源代碼文件。這里起名為:ex1.ASM。
2.載入源程序并編譯
在主菜單中選擇“源代碼(source)”→“添加/移除源代碼”,打開如圖2.12所示的對話框。

圖2.12 “添加/移除源代碼”對話框
其中,目標處理器要選所用的單片機,這里是AT89C51,代碼生成工具選ASEM51,然后單擊“新建”,找到建立的源代碼文件,按“確定”后退出。
仍在主菜單中選擇“源代碼”→“全部編譯”,如果源代碼有錯則修改,如果沒錯就編譯完成了。
3.仿真
單擊“仿真運行開始”按鈕或在主菜單中選擇“調試”→“執行”就可以仿真了,通電或按過重啟(RESET)鍵后單片機會自動從0000H處開始執行程序。如果程序比較復雜還可以“啟動調試”,對程序進行單步調試,可見這個軟件非常直觀,容易掌握。
在仿真時,可以看到圖2.11中LED顯示器引腳的電平變化,紅色代表高電平,藍色代表低電平,(如果是灰色,代表未接入信號或者為三態)。如果【例2.1】的輸出太快,還可以修改程序,如使它按照亮2s、暗1s的規律變化,則更加直觀。
2.3.3 利用中斷實現故障報警的仿真
【例2.3】給出了利用中斷實現故障報警電路的分析,這里用四個按鈕輸入來表示四個故障源的工作情況,當按下按鈕時,表示該故障源工作不正常,出現故障了,這時相應的二極管燈亮。其仿真電路如圖2.13所示。

圖2.13 故障報警電路仿真圖
輸入源程序并編譯成功后,Proteus軟件還提供了程序調試功能,在主菜單中選擇“調試”→“開始/重新啟動調試”,就彈出了調試窗口,如圖2.14所示。在窗口中可以看到當前所執行的語句,可以進行單步調試、設置斷點調試等。
從圖2.13中還可以看到,當兩條線路需要連接時,除了直接相連以外,還可以用同一標號(LBL)表示,這樣電路可以顯得很整潔,如圖2.13中的與門的四個輸入端,通過標號表示它們分別與按鍵開關的輸入相連接,當電路比較復雜時,用這種方法使電路非常清晰。
結合圖2.14的調試窗口,可以使得單片機的硬件與軟件結合仿真,可以看到,這對智能儀器的開發提供了很大的方便。

圖2.14 調試窗口
2.3.4 利用中斷實現定時采集數據的仿真
【例2.4】中給出了用中斷進行定時控制。每間隔一定時間,進行中斷程序,對現場數據(P1口)實施一次采集、傳送、取數,并把數據存放在內部RAM或外部RAM存儲區等操作,而間隔時間未到,CPU可進行數據處理、數據顯示等主程序的工作。
在Proteus中建立電路原理圖,如圖2.15所示,為了方便,這里P1口通過接高、低電平假設監測的數據值,這里給出的是01010011B,即53H。
如果要采集的數據量比較大,例如要長時間監測記錄P1口的數據變化,要采用外部存儲區,硬件上要增加74LS373鎖存器和外部數據存儲芯片,這里選用6264(8KB)RAM。如圖所示,其地址的范圍為(0000H~1FFFH),在【例2.4】程序中存儲數據的首地址為1000H。

圖2.15 定時采集數據并存儲電路
加載源代碼并編譯通過后,就可以結合電路和軟件進行仿真了。在仿真過程中,還可以通過單步調試和設置斷點調試等方法來觀察電路和程序的工作情況。可以先在主菜單中選擇“調試”→“8051CPU”→“內部存儲器”,打開內部存儲器窗,如圖2.16(a)所示,再在主菜單中選擇“調試”→“存儲芯片U2”,打開外部存儲器窗,如圖2.16(b)所示,最后在主菜單中選擇“調試”→“開始/重新啟動調試”,便可以觀察到數據移動的過程。從P1口采集的數據先后被送到內部存儲區(30H為首地址)和先外存儲區(1000H為首地址)進行存儲,如圖2.16(a)、(b)所示。

圖2.16 仿真調試過程中的觀察窗
通過仿真,可以看到程序的執行過程。這種定時去測量某一端口的數據的方法在智能儀器中經常用到,主程序中還可以加入對測量數據的處理等其他工作。
- 工業機器人技術及應用
- 數據中心建設與管理指南
- Dreamweaver CS3網頁設計與網站建設詳解
- JMAG電機電磁仿真分析與實例解析
- 可編程序控制器應用實訓(三菱機型)
- 單片機C語言程序設計完全自學手冊
- Visual Studio 2010 (C#) Windows數據庫項目開發
- SQL Server數據庫應用基礎(第2版)
- Introduction to R for Business Intelligence
- Spark大數據商業實戰三部曲:內核解密|商業案例|性能調優
- 漢字錄入技能訓練
- 計算機硬件技術基礎(第2版)
- Apache Spark Quick Start Guide
- 項目實踐精解:C#核心技術應用開發
- Practical Network Automation