利用proteus实现串口助手和arduino Mega 2560的串口通信

利用proteus实现串口助手和arduino Mega 2560的串口通信

本例用到的proteus版本为8.13,ardunio IDE版本为2.2.1,虚拟串口vspd版本为7.2,串口助手SSCOM V5.13.1。软件的下载安装有很多教程,大家可以自行搜索,本文只介绍如何利用这4种软件在proteus中实现arduino Mega 2560的串口读写功能。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

要实现的功能介绍:通过串口助手和proteus 中的ardunio2560单片机进行串口收发信息,通过串口助手向单片机发送字符“1”,单片机IO14口的LED灯点亮,发送字符“2”,LED灯熄灭。通过单片机IO15口的带上拉电阻的按键,向串口助手发送信息,当按键按下,发送“button_down”,当按键抬起,发送“button_up”。具体操作步骤如下:

目录


一、配置vspd虚拟串口

1、添加一对虚拟串口

操作:单击“Add pair”按钮

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

2、添加完成

在Virtual ports下可以看到COM1和COM2,这一对串口号要记住,后边在protues和串口助手中配置串口的时候要用到。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

3、虚拟串口连接示意图

为什么虚拟串口都是成对增加和删除呢?因为虚拟串口相当于一根双头交叉连接的DB9串口线,两个DB9的第5线为GND(接地线),直接连在一起,COM1的RXD(接收引脚)与COM2的TXD(发送引脚)相连,COM1的TXD与COM2的RXD相连。如下图所示。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

本文Mega 2560与COM1相连,SSCOM与COM2相连,这样Mega 2560就可以通过虚拟串口和SSCOM进行通信。

二、利用ardunio IDE建立ardunio2560程序文件并生成hex文件

1、新建Sketch文件

操作步骤:菜单File->New Sketch

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

新建sketch文件后,默认的控制器型号为Ardunio Uno。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

2、修改控制器型号

操作步骤:菜单Tools->Board:"Ardunio Uno"->Ardunio AVR Boards->Ardunio Mega or Mega 2560。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

3、修改完成

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

4、另存文件

操作步骤:File->Save As...

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

在另存为对话框中选择文件存储的文件夹,这个文件夹需要自己事前建好,文件名也可以另取一个,然后点“保存”按钮。本文的文件夹名称为“sketch_001”。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

5、编写程序代码

程序代码如下所示,每一句代码后边都有注释,不再另行解释。需要注意的是:程序里的引脚14对应ardunio2560里的IO14,引脚15对应IO15,后边proteus中ardunio2560单片机的引脚标签就是IO14和IO15。

char command; //声明一个字符型变量command void setup() { Serial.begin(9600); //设置串口波特率 pinMode(14,OUTPUT); //设置IO14引脚为输出模式,14引脚接限流电阻串联LED pinMode(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框中会有红色报错信息。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

7、生成hex文件

操作步骤:菜单Sketch->Export Compiled Binary

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

hex文件所在位置:sketch_001\build\ardunio.avr.mega文件夹内,我们要用到的是sketch_001.ino.hex。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

三、利用protues搭建ardunio2560串口通信仿真电路

1、新建工程文件

操作步骤:File->New Project

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

在New Projec Wizard对话框中选择“From Development Board”,在Development Board列表中选择Ardunio Mega 2560,然后点“Finish”按钮。文件名和存储路径可以自己设定和选择。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

新建的工程文件如下图所示,文件中默认包含了一个电路重启按键电路。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

2、添加串口元器件

(1)加载串口

操作步骤:左侧器件类型选择Compoment Mode->单击DEVICES最左侧的"P"。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

在弹出的Pick Devices对话框中,Keywords栏中输入“COMPIM”,在中间的区域显示搜索的结果,单击选中COMPIM元器件,右上角会显示器件的预览模型。选中后单击“确定”。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

在屏幕需要添加元器件的位置单击一下,即可把串口模型加载进来。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(2)设置引脚标签

操作步骤:左侧Terminals Mode图标->TERMINALS列表中选择DEFAULT->在RXD和TXD引脚处单击添加引脚端子。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

双击刚刚添加进来的引脚端子,分别设置引脚标签“RXD”和“TXD”,单击“OK”完成设置。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

设置完如下图所示,在电路图中引脚端子标签名一样的,代表两个端子是连在一起的,经过设置COMPIM的RXD和TXD引脚标签,就把串口元器件和单片机的TXD和RXD这组串口连接起来了。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

注意:mega2560一共有4组串口,如下图所示。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(3)设置COMPIM连接的虚拟串口号

操作步骤:双击COMPIM,Physical port选择COM1,Physical Boud Rate选择9600,下边的Virtual Boud Rate也选择9600,然后点“OK”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

3、添加LED灯电路

添加完的效果如下图所示:

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(1)添加LED

操作步骤:Component Mode->“P”->Keywords输入“LED”,在列表中选择LED-RED,单击“确定”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(2)添加限流电阻

操作步骤:Component Mode->“P”->Keywords输入“RES”,在列表中选择RES,单击“确定”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(3)添加接地端子

操作步骤:Terminals Mode->GROUND->在LED灯阴极单击“确定”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(4)设定限流电阻的阻值

操作步骤:双击电阻,把Resistance值改为0.3k,然后单击“OK”。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(5)添加引脚端子和标签

在限流电阻左侧引脚添加引脚端子,设置标签名称为"IO14"。

4、添加自锁型按键button电路

添加完的效果如下图所示:

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(1)添加按键

操作步骤:Component Mode->“P”->Keywords输入“BUTTON”,在列表中选择BUTTON,单击“确定”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(2)添加上拉电阻

操作步骤:参照LED灯限流电阻,阻值为10k。

(3)添加接地端子

操作步骤:参照LED接地端子。

(4)添加电源端子

操作步骤:Terminals Mode->POWER->在上拉电阻左侧引脚单击“确定”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(5)添加引脚端子和设置标签

在上拉电阻和按键连接处添加引脚端子,设置标签名称为"IO15"。

5、完整电路

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

6、Mega2560录入hex格式程序

操作步骤:

(1)双击ardunio Mega 2560

在弹出的对话框中,点Program File后边的打开文件图标。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(2)找到hex文件

找到在第二章中,刚刚用ardunio IDE生成的sketch_001.ino.hex文件所在位置,选中hex文件,单击“打开”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

(3)录入程序

点击“OK”按键,录入完成。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

四、利用串口助手测试proteus仿真电路

1、打开串口助手并设置

操作步骤:端口号选择COM2,波特率选择9600,然后单击“打开串口”按钮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

2、运行proteus仿真电路

单击proteus窗口右下角运行图标,进行仿真。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

3、单片机向串口助手发送数据

proteus电路中,button按键处于按下状态,串口助手数据接收栏内显示“button_down”。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

button是自锁型按键,点按键右侧的开关切换符号即可切换开关状态。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

当在proteus点击button切换按键,使按键抬起时,串口助手接收数据栏显示“button_up”

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

4、串口助手向单片机发送指令

在输入框内输入“1”,然后点“发送”按钮,可以看到proteus中LED灯点亮。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

在输入框内输入“2”,然后点“发送”按钮,可以看到proteus中LED灯熄灭。

www.zeeklog.com - 利用proteus实现串口助手和arduino Mega 2560的串口通信

五、结论

通过上述仿真运行,可以看到运行的状态和程序里编写的意图完全一致,说明可以通过串口助手实现和proteus中的ardunio mega 2560进行串口通信。

Read more

异步编程实战:构建高性能Python网络应用

异步编程实战:构建高性能Python网络应用

目录 摘要 1 异步编程:为什么它是现代网络应用的必然选择 1.1 同步架构的瓶颈与异步架构的优势 2 核心技术原理深度解析 2.1 asyncio事件循环:异步编程的发动机 2.2 aiohttp框架架构解析 3 异步数据库驱动实战 3.1 异步数据库连接池管理 3.2 多数据库支持与连接池优化 4 WebSocket实时通信实战 4.1 构建高性能WebSocket服务器 4.2 实时数据推送与流处理 5 企业级实战案例 5.1 构建异步API网关 6 性能优化与故障排查 6.1 性能优化实战技巧 6.2 常见故障排查指南 7 总结与展望 7.1

By Ne0inhk
2026年Python+AI学习路线完整指南:从零基础到实战专家

2026年Python+AI学习路线完整指南:从零基础到实战专家

✨道路是曲折的,前途是光明的! 📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记! 🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流! 📊 目录 * 为什么选择Python+AI * AI技术领域分布 * 完整学习路径 * 分阶段学习指南 * 实战代码示例 * 学习资源推荐 * 常见问题解答 为什么选择Python+AI? Python已成为人工智能领域最主流的编程语言,根据Stack Overflow 2024年开发者调查,Python在AI/ML领域的使用率超过85%。 Python在AI领域的优势 优势说明🐍 语法简洁上手快,专注算法本身而非语法细节📦 生态丰富NumPy、Pandas、PyTorch等成熟库👥 社区活跃海量教程、开源项目和问题解答🔧 工具完善Jupyter、Colab等优秀开发环境🚀 部署便捷Flask/FastAPI快速构建AI服务 AI技术领域分布 了解AI各领域的占比,帮助你更好地规划学习重点: 35%30%15%12%5%3%2025年AI技术领域市场需求分布机器

By Ne0inhk
【MCP 协议层(Protocol layer)详解】:深入分析MCP Python SDK中协议层的实现机制

【MCP 协议层(Protocol layer)详解】:深入分析MCP Python SDK中协议层的实现机制

大家好,最近在看MCP Python SDK 的源代码文件https://github.com/modelcontextprotocol/python-sdk/blob/main/src/mcp 该 Python SDK 的核心目的是:为开发者提供开箱即用的 MCP 客户端 / 服务端实现,无需从零实现 MCP 协议;接下来我将根据这个源码解析MCP 协议层(Protocol layer)的实现 一、MCP 架构中的 Host、Client 和 Server 🔴在 MCP 架构中,“Host” 指的是最终承载大模型和用户界面的应用,比如桌面端的 Claude 客户端、IDE 插件或自研的聊天机器人后台。一个 Host 启动时,会在内部创建一个

By Ne0inhk
C++——第一篇 基础语法

C++——第一篇 基础语法

——从C语言到现代C++的进化之路 你好,欢迎来到C++的世界。在正式开始之前,我想和你聊聊:为什么我们要花时间学习C++? 你可能会在很多地方看到"C++很难"的说法。确实,C++是一门"重型"语言,它不像Python那样"随写随用",也不像JavaScript那样与浏览器天然结合。但正是这种"重",让它成为了软件工业的基石——操作系统、数据库、游戏引擎、高性能服务器,背后都有C++的身影。 学习C++,本质上是在学习计算机系统的工作原理。它不会替你包办太多事情,但正因如此,它给了你最大的控制权。这种控制权,是成为一名真正的"工程师"而非仅仅是"码农&

By Ne0inhk