【Proteus仿真】VSM Studio Arduino UNO串口通讯示例

【Proteus仿真】VSM Studio Arduino UNO串口通讯示例


  • Proteus仿真演示
    在这里插入图片描述

实验说明

  • 需要借助虚拟串口工具,生成1对(2个虚拟串口端口号)。
    在这里插入图片描述
  • 需要借助串口调试助手,来仿真时用于通讯。
  • Proteus仿真器件compim属性设置
    在这里插入图片描述
  • 虚拟串口监视器器件

如果是VSM Studio代码这里默认即可,如果是Arduino IDE导入进来的 Hex文件,并且有作为字符的,使用ANSI

Arduino IDE编译环境下的文本格式默认是ANSI编码格式。

消除VSM Studio编译是的报警宏提示信息办法(无关紧要)在这里插入图片描述

  • 在芯片型号上,鼠标右键
    在这里插入图片描述
  • 选项设置为默认
    在这里插入图片描述
  • 编译是选择Release
    在这里插入图片描述
  • 仿真时串口调试助手设置
    在这里插入图片描述

VSM Studio代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/\* Main.ino file generated by New Project wizard
\*
\* Created: Thu Sep 5 2013
\* Processor: ATmega328P
\* Compiler: Arduino AVR
\*/
#include<Arduino.h>
String input_string; // 声明变量 input\_string ,用于存储串口输入的数据
// 获取串口数据函数
void GetSerialStuff(String& input_string) {
String temp_string = ""; // 声明变量 temp\_string,用于临时存储串口输入的数据
while(Serial.available()) { // 当串口有数据时,循环执行
temp_string += (char)Serial.read(); // 把读取的串口数据,逐个组合到inStr变量里
delay(2);
}
if(temp_string.length()!=0){
input_string = temp_string; // 把引用指针的变量赋值给 input\_string
Serial.println("received data:" + input_string );//打印字符串
}
}
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT );
Serial.println("hello world");

}

void loop() {
GetSerialStuff(input_string); // 获取串口的数据
if(input_string != "") { // 如果 串口不为空,则
if(!input_string.compareTo("on"))
{//相等返回0
Serial.println("ON");
digitalWrite(LED_BUILTIN,HIGH);
}
if(!input_string.compareTo("off"))
{
Serial.println("OFF");
digitalWrite(LED_BUILTIN,LOW);
}
input_string="";//清空数据
}

}


仿真资源和程序源码

本实验基于Proteus8.12平台

1
2
3
链接:https://pan.baidu.com/s/1dLNpW8jfMVF9h1FGNk0QSQ 
提取码:rb5s


多做一些雪中送炭的事,锦上添花的事可以少做。