一. Proteus仿真平台簡介
Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。現已受到電子類特別是單片機愛好者、從事單片機教學的教師、致力於單片機開發應用等的科技工作者的青睞。以前的如EWB等軟件只能仿真數字電路和模擬電路,不能仿真CPU和程序。
當前網上Proteus有7.8 SP2,7.10 SP0,8.0等幾個版本,這幾個JM的版本都比較穩定。這些版本的元件模型格式是兼容的,DSN仿真原理文件是一樣的。8.0版本只是把DSN原理圖、軟件編輯環境和編譯器集成為一個工程文件,成為一個象“傻瓜相機”一樣的東西,但對初學Proteus者比較方便,因為內部已經集成了程序編輯器和可下載不同的編譯器。
7.xx版本,DSN仿真原理、編輯器和編譯器三者是獨立的。而8.0版本是集成的。8.0版本在多CPU仿真時,設置不太容易;集成后軟件有點大,不如7.xx版本簡潔。
二. 開發三步曲
-
編輯器
用戶選擇用自己的喜歡的編輯器(如Notepad++,Utraedit,Source Insight,vim,slickedit,notepad等),用此寫源程序。 -
C/C++編譯器
用戶按CPU型號選擇自己喜歡的C/C++編譯器(如Winavr,CodeSourcery,Keil,IAR,WinARM,Watcom等等),一般的編譯器都可以生成標准的.hex,和.elf格式的可執行目標文件。 Arduino IDE實際使用的是Winavr中的gcc。用此把第一步寫的源程序編譯成.hex和.elf文件。 -
硬件仿真圖
Proteus中的Model下有元件仿真庫,用戶使用這些仿真元件,設計出自己的硬件仿真原理圖,也叫.dsn文件。在Proteus環境下,用自己設計的.dsn文件,在CPU中加載第二步生成的.hex或.elf文件,就可以仿真運行了。.elf文件內部包含調試信息,可以單步、設置斷點調試程序。
三. Arduino UNO硬件仿真原理圖
本仿真電路圖(HW目錄下Arduino UNO.dsn文件)可以仿真Arduino Diecimila,或Arduino UNO板。前者采用FT232芯片做為串行通信模塊,后都采用ATMEGA16U2微處理器代替了FT232,它們都是在USB上實現一個異步串行通信的功能。我們在仿真中,采用了Proteus中的串行口物理接口模型COMPIM,COMPIM完全可以代替串行通信的功能,它實現了與實際PC機物理串行接口RS232的連接,使仿真的虛擬世界與真實的世界連接。
圖1-Arduino UNO硬件仿真原理圖
圖中左下角增加了兩個串行通信虛擬終端VT1和VT2,用於調試串行通信接收數據或發送數據使用。其它為Arduino Diecimila或UNO的仿真電路,詳細標注了引腳名稱,與實現電路板一樣。用Proteus仿真工具可以雙擊Arduino UNO.dsn打開Arduino仿真電路圖。
四. Arduino開發軟件下載及設置
1.下載並安裝Arduino集成開發環境(Arduino IDE)
到官網上下載並安裝Arduino IDE,當前最新穩定版本為1.0.6版本。
http://arduino.cc
http://arduino.cc/en/Main/Software
2.選擇Arduino板類型及串行口
如圖2,仿真時,選擇前兩個板都可以,在與實際Arduino板連接時,選擇相對應的板,並選擇相對應的串行口。
***因本文使用Arduino仿真開發方法,在仿真電路圖中,只要選擇目標執行文件.hex或.elf文件就相當於加載程序,所以不用串行口加載程序。
圖2-選擇板子型號
圖3-選擇串行口
3.設置Arduino IDE個人偏好(重要)
- 選擇File->Preferences
圖4-選擇preferences
- 找到設置偏好文件preferences.txt
圖5-選擇preferences.txt
-
用編輯器打開偏好設置文件preferences.txt
【1】.在arduino工具的File->preferences中找到preferences.txt文件,用記事本打開。
【2】.在preferences.txt文件的最后加一行,編輯加入 build.path=d:\MyHexDir,目錄名自己定。為了觀察方便,(本人設置是build.path=d:###ArduinoDbgDir )。
【3】先關閉Arduino IDE;
【4】之后保存preferences.txt;
以上順序不要變。這樣就可以在Arduino編譯時,看到d:\MyHexDir目標下的目標文件,而不會自動刪除。
4. 編譯
(1)雙擊SW\Blink目錄下的源文件Blink.ino,自動打開Arduino IDE。
(2)點擊Sketch->Verify/Compile編譯生成目標文件,目標文件在d:\MyHexDir下(本人的在d:###ArduinoDbgDir目錄下 )。
(3)點擊CP.bat,會把.hex和.elf文件復制更新到當前.ino所在目錄下。可以自己編輯CP.bat文件,改變目錄。
(4)在Proteus中設置好一次.hex或.elf文件的位置就可以,以后更新.hex或.elf文件時,自動認為已經加載最新的。
五. 第一個Hello World程序仿真運行
Hello World程序就是在計算機屏幕上顯示“Hello,World!”的一個程序,在嵌入式系統開發中,LED的閃爍程序就是Hello World程序,Hello World程序很簡約,一般它是程序員在新的開發環境中第一個要運行的程序,但是簡約並不簡單。
雖然Hello World程序很簡約,但是,為了這個簡約的程序能夠運行,需要進行開發工具鏈的選擇、配置開發工具鏈,這需要大量繁瑣的工作要做。Hello World程序能否運行,可以驗證你的編譯、開發環境、運行環境是否正確。
第一個程序Blink.ino如下:
///0. 引腳定義 #define LED_PIN 13 //定義LED引腳為13號數據引腳(DIG13) ///1. 初始化 void setup() { pinMode(LED_PIN,OUTPUT); // 初始化DIG13為輸出 } ///2. 循環 void loop() { digitalWrite(LED_PIN,HIGH); //DIG13輸出高電平 delay(1000); //延時1秒 digitalWrite(LED_PIN,LOW); //DIG13輸出低電平 delay(1000); //延時1秒 }
(1)用Arduino IDE打開Blink.ino,編譯之;
(2)在d:\MyHexDir目錄下會生成.hex和.elf文件等;
(3)點擊.ino所在目錄下的CP.bat, 本目錄多了兩個文件.hex和.elf;
(4)用Proteus打開HW\Arduino UNO.dsn,雙擊Atmga 328P微處理器,在Program file項中選擇上邊SW\Blink\Blink.hex文件,或Blink.elf文件,若加載Blink.elf文件,則可以單步或設置斷點調試;
(5)在Proteus中點擊左下角運行仿真,如果圖1中的LED小燈閃爍,則你的仿真運行環境設置正確。
參考:
【1】Arduino官網