利用proteus實現串口助手和arduino Mega 2560的串口通信

本例用到的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)添加引腳端子和標簽

4、添加自鎖型按鍵button電路

(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進行串口通信。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206698.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day45| 爬樓梯 (進階)Leetcode 322. 零錢兌換 Leetcode 279. 完全平方數

爬樓梯 &#xff08;進階&#xff09; 題目鏈接 爬樓梯&#xff08;進階版&#xff09; 本題目屬于排列中的背包問題&#xff0c;所以先遍歷背包&#xff0c;后遍歷物品&#xff0c;剩下的就是完全背包的板子了&#xff0c;下面直接上代碼&#xff1a; #include<iostream…

刷題記錄--算法--簡單

第一題 2582. 遞枕頭 已解答 簡單 相關標簽 相關企業 提示 n 個人站成一排&#xff0c;按從 1 到 n 編號。 最初&#xff0c;排在隊首的第一個人拿著一個枕頭。每秒鐘&#xff0c;拿著枕頭的人會將枕頭傳遞給隊伍中的下一個人。一旦枕頭到達隊首或隊尾&#xff0c;傳遞…

高防IP是什么?有什么優勢?

隨著互聯網的普及和快速發展&#xff0c;網絡安全問題日益突出。在眾多安全問題中&#xff0c;DDOS攻擊是一種常見的攻擊手段&#xff0c;它通過發送大量的無效或低效請求&#xff0c;使得目標服務器無法響應正常用戶的請求&#xff0c;從而造成服務不可用的情況。為了解決這個…

部署zabbix

源碼下載地址&#xff1a; Download Zabbix sources nginx: download 防火墻和selinux都需要關閉 1、部署監控服務器 1&#xff09;安裝LNMP環境 Zabbix監控管理控制臺需要通過Web頁面展示出來&#xff0c;并且還需要使用MySQL來存儲數據&#xff0c;因此需要先為Zabbix準備基礎…

vue的el

類型&#xff1a;string | Element 限制&#xff1a; 只在用 new 創建實例時生效。 詳細&#xff1a; 提供一個在頁面上已存在的 DOM 元素作為 Vue 實例的掛載目標。可以是 CSS 選擇器&#xff0c;也可以是一個 HTMLElement 實例。 在實例掛載之后&#xff0c;元素可以用 vm.…

Java創建線程有哪幾種方式?

Java創建線程有哪幾種方式&#xff1f; 在 Java 中&#xff0c;創建線程有多種方式&#xff0c;主要包括使用 Thread 類和實現 Runnable 接口。以下是幾種常見的創建線程的方式&#xff1a; 繼承 Thread 類&#xff1a; 通過繼承 Thread 類并重寫 run 方法來創建線程。 class …

如何使用eXtplorer+cpolar內網穿透搭建個人云存儲實現公網訪問

文章目錄 1. 前言2. eXtplorer網站搭建2.1 eXtplorer下載和安裝2.2 eXtplorer網頁測試2.3 cpolar的安裝和注冊 3.本地網頁發布3.1.Cpolar云端設置3.2.Cpolar本地設置 4.公網訪問測試5.結語 1. 前言 通過互聯網傳輸文件&#xff0c;是互聯網最重要的應用之一&#xff0c;無論是…

關于互聯網安全方面需要了解的一些知識

關于互聯網安全方面需要了解的一些知識 文章目錄 關于互聯網安全方面需要了解的一些知識一、資產掃描二、漏洞掃描三、滲透測試四、POC五、Exp六、代碼規范七、函數命名八、注釋怎么寫 一、資產掃描 資產掃描是一種通過掃描網絡或系統中所有設備、應用程序和服務&#xff0c;識…

PHP escapeshellarg()+escapeshellcmd()繞過

文章目錄 函數利用escapeshellarg()函數escapeshellcmd()函數 exp執行原理攻擊面例題 [BUUCTF 2018]Online Tool例題 [網鼎杯 2020 朱雀組]Nmap 函數利用 escapeshellarg()函數 單引號 ()&#xff1a;轉義為 \。 雙引號 (")&#xff1a;轉義為 \"。 反斜杠 (\)&…

HTTP不同場景下的通信過程和用戶上網認證過程分析

目錄 HTTP不同場景的通信過程 HTTP正常交互過程 HTTP透明加速傳輸過程 HTTP代理服務器場景下交互過程 通過AC對上網用戶不同場景的認證過程 AC上網認證正常交互過程 通過Cookie實現免認證交互過程 代理服務器場景下HTTP密碼認證交互過程 HTTP不同場景的通信過程 HTTP、…

專業130+總分400+云南大學通信847專業基礎綜考研經驗(原專業課827)

今年專業130總分400云南大學通信上岸&#xff0c;整體考研感覺還是比較滿意&#xff0c;期間也付出了很多心血&#xff0c;走過彎路&#xff0c;下面分享一下這一年考研得失&#xff0c;希望大家可以從中有所借鑒。 先說明我在考研報名前更換成云南大學的理由&#xff1a;&…

谷歌正式發布最強 AI 模型 Gemini

2023年12月6日&#xff0c;谷歌公司宣布推出其被認為是規模最大、功能最強大的人工智能模型 Gemini。 Gemini將分為三個不同的套件&#xff1a;Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被認為具備最強大的能力&#xff0c;Gemini Pro則可擴展至多任務&#x…

xilinx原語詳解及仿真——ODDR

ODDR位于OLOGIC中&#xff0c;可以把單沿傳輸的數據轉換為雙沿傳輸的數據&#xff0c; 在講解ODDR功能之前&#xff0c;需要先了解OLOGIC的結構及功能。 1、OLOGIC OLOGIC塊位于IOB的內側&#xff0c;FPGA內部信號想要輸出到管腳&#xff0c;都必須經過OLOGIC。OLOGIC資源的類…

CleanMyMac4.16中文最新版本下載

當很多人還在為電腦運行緩慢、工作問題不能快速得到解決而煩惱的時候&#xff0c;我已經使用過了多款系統清理工具&#xff0c;并找到了最適合我的那一款。我的電腦是超耐用的Mac book&#xff0c;接下來給大家介紹三種在眾多蘋果電腦清理軟件的排名較高的軟件。 一、Maintena…

【ET8】0.ET8入門-ET框架介紹

ET8 新特性 多線程多進程架構,架構更加靈活強大&#xff0c;多線程設計詳細內容請看多線程設計課程抽象出纖程(Fiber)的概念&#xff0c;類似erlang的進程&#xff0c;非常輕松的創建多個纖程&#xff0c;利用多核&#xff0c;仍然是單線程開發的體驗纖程調度: 主線程&#xf…

首次面試經歷(忘指導)當我在簡歷上寫了蒼穹外賣,瑞吉外賣時……

&#x1f308;鍵盤敲爛&#xff0c;年薪30萬&#x1f308; 個人簡介: 大三在校生&#xff0c;二本院校&#xff0c;專業&#xff1a;信息管理與信息系統 面試崗位&#xff1a; java開發實習生 投”簡歷“ 臨近大三寒假&#xff0c;很早就有實習想法的我&#xff0c;對12月做…

一篇文章了解JDK的前世今生

我們每天都在開發Java,每天都在使用JDK,那么我們了解JDK的發展史嗎,這篇文章將帶你深入了解JDK的發展史。 JDK(Java Development Kit)是Java開發者工具包,是用于編寫Java程序和運行Java程序的軟件開發工具集。自從1995年Java語言首次發布以來,JDK已經經歷了數十年的發展…

python打開相機,用鼠標左鍵框選矩形區域,支持一次框選多個矩形區域,通過鼠標右標清除上一次畫的矩形。

方案一 import cv2# Global variables rectangles [] current_rectangle [] drawing False# Mouse callback function def mouse_callback(event, x, y, flags, param):global rectangles, current_rectangle, drawingif event cv2.EVENT_LBUTTONDOWN:drawing Truecurren…

C語言——常用庫函數

C語言——常用庫函數 memcmp int my_memcmp(char* str1,char* str2,int num) {while(num--){if(*str1>*str2){return 1;}else if(*str1<*str2){return -1;}else{str1;str2;}}return 0; }memcpy void* my_memcpy(void *str1,void *str2,int size) {int *p1str1;int *p2…

Linux數據庫Mysql增刪改查

從安裝數據庫到增刪改查 apt install mariadb-serverUndefined 安裝好后初始化 mysql_secure_installationUndefined 查 查詢現有的庫 show databases;SQL 進入庫 use mysql;Perl 查詢表 show tables;SQL 查詢表結構 desc mysql;SQL 查詢表內容 select * from my…