本例用到的proteus版本為8.13,ardunio IDE版本為2.2.1,虛擬串口vspd版本為7.2,串口助手SSCOM V5.13.1。軟件的下載安裝有很多教程,大家可以自行搜索,本文只介紹如何利用這4種軟件在proteus中實現arduino Mega 2560的串口讀寫功能。
要實現的功能介紹:通過串口助手和proteus 中的ardunio2560單片機進行串口收發信息,通過串口助手向單片機發送字符“1”,單片機IO14口的LED燈點亮,發送字符“2”,LED燈熄滅。通過單片機IO15口的帶上拉電阻的按鍵,向串口助手發送信息,當按鍵按下,發送“button_down”,當按鍵抬起,發送“button_up”。具體操作步驟如下:
目錄
一、配置vspd虛擬串口
1、添加一對虛擬串口
2、添加完成
二、利用ardunio IDE建立ardunio2560程序文件并生成hex文件
1、新建Sketch文件
2、修改控制器型號
3、修改完成
4、另存文件
5、編寫程序代碼
6、檢查程序有無語法錯誤
7、生成hex文件
三、利用protues搭建ardunio2560串口通信仿真電路
1、新建工程文件
?2、添加串口元器件
(1)加載串口
(2)設置引腳標簽
(3)設置COMPIM連接的虛擬串口號
3、添加LED燈電路
(1)添加LED
(2)添加限流電阻
(3)添加接地端子
(4)設定限流電阻的阻值
(5)添加引腳端子和標簽
(1)添加按鍵
(2)添加上拉電阻
(3)添加接地端子
(4)添加電源端子
(5)添加引腳端子和設置標簽
5、完整電路
6、Mega2560錄入hex格式程序
(1)雙擊ardunio Mega 2560
(2)找到hex文件
(3)錄入程序
四、利用串口助手測試proteus仿真電路
1、打開串口助手并設置
2、運行proteus仿真電路
3、單片機向串口助手發送數據
4、串口助手向單片機發送指令
五、結論
一、配置vspd虛擬串口
1、添加一對虛擬串口
操作:單擊“Add pair”按鈕
2、添加完成
在Virtual ports下可以看到COM1和COM2,這一對串口號要記住,后邊在protues和串口助手中配置串口的時候要用到。
二、利用ardunio IDE建立ardunio2560程序文件并生成hex文件
1、新建Sketch文件
操作步驟:菜單File->New Sketch
新建sketch文件后,默認的控制器型號為Ardunio Uno。
2、修改控制器型號
操作步驟:菜單Tools->Board:"Ardunio Uno"->Ardunio AVR Boards->Ardunio Mega or Mega 2560。
3、修改完成
4、另存文件
操作步驟:File->Save As...
在另存為對話框中選擇文件存儲的文件夾,這個文件夾需要自己事前建好,文件名也可以另取一個,然后點“保存”按鈕。本文的文件夾名稱為“sketch_001”。
5、編寫程序代碼
程序代碼如下所示,每一句代碼后邊都有注釋,不再另行解釋。需要注意的是:程序里的引腳14對應ardunio2560里的IO14,引腳15對應IO15,后邊proteus中ardunio2560單片機的引腳標簽就是IO14和IO15。
char command; //聲明一個字符型變量commandvoid setup() {Serial.begin(9600); //設置串口波特率pinMode(14,OUTPUT); //設置IO14引腳為輸出模式,14引腳接限流電阻串聯LEDpinMode(15,INPUT); //設置IO15引腳為輸入模式,15引腳接上拉電阻串聯按鍵digitalWrite(14,LOW); //IO14引腳輸出低電平}void loop() {if (digitalRead(15)) //讀取IO15引腳電平狀態,如果是高電平(此時按鍵未按下){Serial.println("button_up"); //串口輸出"button_up"}else //讀取IO15引腳電平狀態,如果是低電平(此時按鍵按下){Serial.println("button_down");//串口輸出"button_down"}if(Serial.available()>0) //讀取串口是否有數據輸入,如果有數據輸入{command=Serial.read(); //讀取串口的數據,賦值給command變量if(command=='1') //判斷command內容,如果為字符"1"{digitalWrite(14,HIGH); //IO14引腳輸出高電平,點亮LED燈}if(command=='2') //判斷command內容,如果為字符"2"{digitalWrite(14,LOW); //IO14引腳輸出低電平,熄滅LED燈}}delay(1000); //延時1秒鐘
}
6、檢查程序有無語法錯誤
操作步驟:單擊“√”圖標,如果有語法錯誤,會再Output框中會有紅色報錯信息。
7、生成hex文件
操作步驟:菜單Sketch->Export Compiled Binary
hex文件所在位置:sketch_001\build\ardunio.avr.mega文件夾內,我們要用到的是sketch_001.ino.hex。
三、利用protues搭建ardunio2560串口通信仿真電路
1、新建工程文件
操作步驟:File->New Project
在New Projec Wizard對話框中選擇“From Development Board”,在Development Board列表中選擇Ardunio Mega 2560,然后點“Finish”按鈕。文件名和存儲路徑可以自己設定和選擇。
新建的工程文件如下圖所示,文件中默認包含了一個電路重啟按鍵電路。
2、添加串口元器件
(1)加載串口
操作步驟:左側器件類型選擇Compoment Mode->單擊DEVICES最左側的"P"。
在彈出的Pick Devices對話框中,Keywords欄中輸入“COMPIM”,在中間的區域顯示搜索的結果,單擊選中COMPIM元器件,右上角會顯示器件的預覽模型。選中后單擊“確定”。
在屏幕需要添加元器件的位置單擊一下,即可把串口模型加載進來。
(2)設置引腳標簽
操作步驟:左側Terminals Mode圖標->TERMINALS列表中選擇DEFAULT->在RXD和TXD引腳處單擊添加引腳端子。
雙擊剛剛添加進來的引腳端子,分別設置引腳標簽“RXD”和“TXD”,單擊“OK”完成設置。
設置完如下圖所示,在電路圖中引腳端子標簽名一樣的,代表兩個端子是連在一起的,經過設置COMPIM的RXD和TXD引腳標簽,就把串口元器件和單片機的TXD和RXD這組串口連接起來了。
注意:mega2560一共有4組串口,如下圖所示。
(3)設置COMPIM連接的虛擬串口號
操作步驟:雙擊COMPIM,Physical port選擇COM1,Physical Boud Rate選擇9600,下邊的Virtual Boud Rate也選擇9600,然后點“OK”按鈕。
3、添加LED燈電路
添加完的效果如下圖所示:
(1)添加LED
操作步驟:Component Mode->“P”->Keywords輸入“LED”,在列表中選擇LED-RED,單擊“確定”按鈕。
(2)添加限流電阻
操作步驟:Component Mode->“P”->Keywords輸入“RES”,在列表中選擇RES,單擊“確定”按鈕。
(3)添加接地端子
操作步驟:Terminals Mode->GROUND->在LED燈陰極單擊“確定”按鈕。
(4)設定限流電阻的阻值
操作步驟:雙擊電阻,把Resistance值改為0.3k,然后單擊“OK”。
(5)添加引腳端子和標簽
在限流電阻左側引腳添加引腳端子,設置標簽名稱為"IO14"。
4、添加自鎖型按鍵button電路
添加完的效果如下圖所示:
(1)添加按鍵
操作步驟:Component Mode->“P”->Keywords輸入“BUTTON”,在列表中選擇BUTTON,單擊“確定”按鈕。
(2)添加上拉電阻
操作步驟:參照LED燈限流電阻,阻值為10k。
(3)添加接地端子
操作步驟:參照LED接地端子。
(4)添加電源端子
操作步驟:Terminals Mode->POWER->在上拉電阻左側引腳單擊“確定”按鈕。
(5)添加引腳端子和設置標簽
在上拉電阻和按鍵連接處添加引腳端子,設置標簽名稱為"IO15"。
5、完整電路
6、Mega2560錄入hex格式程序
操作步驟:
(1)雙擊ardunio Mega 2560
在彈出的對話框中,點Program File后邊的打開文件圖標。
(2)找到hex文件
找到在第二章中,剛剛用ardunio IDE生成的sketch_001.ino.hex文件所在位置,選中hex文件,單擊“打開”按鈕。
(3)錄入程序
點擊“OK”按鍵,錄入完成。
四、利用串口助手測試proteus仿真電路
1、打開串口助手并設置
操作步驟:端口號選擇COM2,波特率選擇9600,然后單擊“打開串口”按鈕。
2、運行proteus仿真電路
單擊proteus窗口右下角運行圖標,進行仿真。
3、單片機向串口助手發送數據
proteus電路中,button按鍵處于按下狀態,串口助手數據接收欄內顯示“button_down”。
button是自鎖型按鍵,點按鍵右側的開關切換符號即可切換開關狀態。
當在proteus點擊button切換按鍵,使按鍵抬起時,串口助手接收數據欄顯示“button_up”
4、串口助手向單片機發送指令
在輸入框內輸入“1”,然后點“發送”按鈕,可以看到proteus中LED燈點亮。
在輸入框內輸入“2”,然后點“發送”按鈕,可以看到proteus中LED燈熄滅。
五、結論
通過上述仿真運行,可以看到運行的狀態和程序里編寫的意圖完全一致,說明可以通過串口助手實現和proteus中的ardunio mega 2560進行串口通信。