赞
踩
本例用到的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”。具体操作步骤如下:
目录
二、利用ardunio IDE建立ardunio2560程序文件并生成hex文件
三、利用protues搭建ardunio2560串口通信仿真电路
操作:单击“Add pair”按钮
在Virtual ports下可以看到COM1和COM2,这一对串口号要记住,后边在protues和串口助手中配置串口的时候要用到。
为什么虚拟串口都是成对增加和删除呢?因为虚拟串口相当于一根双头交叉连接的DB9串口线,两个DB9的第5线为GND(接地线),直接连在一起,COM1的RXD(接收引脚)与COM2的TXD(发送引脚)相连,COM1的TXD与COM2的RXD相连。如下图所示。
本文Mega 2560与COM1相连,SSCOM与COM2相连,这样Mega 2560就可以通过虚拟串口和SSCOM进行通信。
操作步骤:菜单File->New Sketch
新建sketch文件后,默认的控制器型号为Ardunio Uno。
操作步骤:菜单Tools->Board:"Ardunio Uno"->Ardunio AVR Boards->Ardunio Mega or Mega 2560。
操作步骤:File->Save As...
在另存为对话框中选择文件存储的文件夹,这个文件夹需要自己事前建好,文件名也可以另取一个,然后点“保存”按钮。本文的文件夹名称为“sketch_001”。
程序代码如下所示,每一句代码后边都有注释,不再另行解释。需要注意的是:程序里的引脚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秒钟
- }
操作步骤:单击“√”图标,如果有语法错误,会再Output框中会有红色报错信息。
操作步骤:菜单Sketch->Export Compiled Binary
hex文件所在位置:sketch_001\build\ardunio.avr.mega文件夹内,我们要用到的是sketch_001.ino.hex。
操作步骤:File->New Project
在New Projec Wizard对话框中选择“From Development Board”,在Development Board列表中选择Ardunio Mega 2560,然后点“Finish”按钮。文件名和存储路径可以自己设定和选择。
新建的工程文件如下图所示,文件中默认包含了一个电路重启按键电路。
操作步骤:左侧器件类型选择Compoment Mode->单击DEVICES最左侧的"P"。
在弹出的Pick Devices对话框中,Keywords栏中输入“COMPIM”,在中间的区域显示搜索的结果,单击选中COMPIM元器件,右上角会显示器件的预览模型。选中后单击“确定”。
在屏幕需要添加元器件的位置单击一下,即可把串口模型加载进来。
操作步骤:左侧Terminals Mode图标->TERMINALS列表中选择DEFAULT->在RXD和TXD引脚处单击添加引脚端子。
双击刚刚添加进来的引脚端子,分别设置引脚标签“RXD”和“TXD”,单击“OK”完成设置。
设置完如下图所示,在电路图中引脚端子标签名一样的,代表两个端子是连在一起的,经过设置COMPIM的RXD和TXD引脚标签,就把串口元器件和单片机的TXD和RXD这组串口连接起来了。
注意:mega2560一共有4组串口,如下图所示。
操作步骤:双击COMPIM,Physical port选择COM1,Physical Boud Rate选择9600,下边的Virtual Boud Rate也选择9600,然后点“OK”按钮。
添加完的效果如下图所示:
操作步骤:Component Mode->“P”->Keywords输入“LED”,在列表中选择LED-RED,单击“确定”按钮。
操作步骤:Component Mode->“P”->Keywords输入“RES”,在列表中选择RES,单击“确定”按钮。
操作步骤:Terminals Mode->GROUND->在LED灯阴极单击“确定”按钮。
操作步骤:双击电阻,把Resistance值改为0.3k,然后单击“OK”。
在限流电阻左侧引脚添加引脚端子,设置标签名称为"IO14"。
添加完的效果如下图所示:
操作步骤:Component Mode->“P”->Keywords输入“BUTTON”,在列表中选择BUTTON,单击“确定”按钮。
操作步骤:参照LED灯限流电阻,阻值为10k。
操作步骤:参照LED接地端子。
操作步骤:Terminals Mode->POWER->在上拉电阻左侧引脚单击“确定”按钮。
在上拉电阻和按键连接处添加引脚端子,设置标签名称为"IO15"。
操作步骤:
在弹出的对话框中,点Program File后边的打开文件图标。
找到在第二章中,刚刚用ardunio IDE生成的sketch_001.ino.hex文件所在位置,选中hex文件,单击“打开”按钮。
点击“OK”按键,录入完成。
操作步骤:端口号选择COM2,波特率选择9600,然后单击“打开串口”按钮。
单击proteus窗口右下角运行图标,进行仿真。
proteus电路中,button按键处于按下状态,串口助手数据接收栏内显示“button_down”。
button是自锁型按键,点按键右侧的开关切换符号即可切换开关状态。
当在proteus点击button切换按键,使按键抬起时,串口助手接收数据栏显示“button_up”
在输入框内输入“1”,然后点“发送”按钮,可以看到proteus中LED灯点亮。
在输入框内输入“2”,然后点“发送”按钮,可以看到proteus中LED灯熄灭。
通过上述仿真运行,可以看到运行的状态和程序里编写的意图完全一致,说明可以通过串口助手实现和proteus中的ardunio mega 2560进行串口通信。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。