您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页Proteus仿真串行通信和虚拟终端的连接测试

Proteus仿真串行通信和虚拟终端的连接测试

来源:测品娱乐


Proteus仿真串行通信和虚拟终端的连接测试

说明:

1.我用了四款软件(下面提供下载链接,以下都是破解版软件,无需序列号)

Proteus 7.5 sp3(电子仿真软件)

虚拟串口程序

串口调试助手

keil2编译软件

正文

目前我会的有3种

1.单片机+虚拟终端(作为串口输入设备)+串口

2.单片机+虚拟终端(作为串口输入设备)+MAX232+串口

3.单片机+串口+虚拟串口程序(virtual serial port)+串口调试助手

4.单片机+MAX232+串口+虚拟串口程序(virtual serial port)+串口调试助手(这个不会,主要是不知道该怎么在Proteus中连线,理论上方法4和3的连线方法是没有太大

差别的,我也不知道哪里设置不对,一直没弄成功,问题出在加入了MAX232后)

方法1和2的区别不大,只是在串口和单片机中间多接个MAX232,因为是仿真软件,所以串口有和没有MAX232的仿真结果是一样的,就是细节上的设置不同

方法1连线如下:

方法2连线图如下:

方法1和方法2的区别在PCT(虚拟终端输入串口的PCT计算机发送端)的一个设置参数不同,(当波特率改变的时候虚拟终端里面的波特率设置也要改变)

方法1设置如下

方法2设置如下

不同的地方在PCT,串口这边的虚拟终端的RX/TX Polarity的设置不同,当在单片机和串口间

没接入MAX232,该项设置为normal,当在其间接入了MAX232该项设置为inverted。

综上所述:方法1和方法2其实是1类方法,共同点是单片机的发送端(TXD)与串口接收端(RXD)相连,单片机接收端(RXD)与串口发送端(TXD)相连。(这种连接是交叉连接)

方法3和方法4区别不大,只是在串口和单片机之间多加入了MAX232,其实实物连接时是要加入MAX232的,但是加入MAX232的方法4用Proteus仿真不出来,就仿真

效果而言方法3和方法4是一样的。

方法3连线图如下:

方法4连线图如下:

Proteus串口设置如下图:

串口调试助手设置如下:

虚拟串口程序界面如下:

单片机虚拟终端的选项作用如下:

如果输入的是ASCII码,那么就不要勾选Hex Display mode

如果输入的是16进制,那么就要勾选Hex Display mode

clear screen 是清屏

echo typed characters 是当你在虚拟终端窗口输入字符时,输入的字符显示在虚拟中断窗口内。

综上所述:方法3和方法4是一类,串口接线是单片机的RXD接串口的RXD,单片机的TXD接串口的TXD。

是一一对应的接线方式。

注意:单片机晶振频率的设置,Proteus串口接COM2,调试程序接COM3

方法1和方法2这类与 方法3和方法4这类的区别在哪呢?

区别就在与串口的接线方式不同,方法1和方法2是单片机和串口是交叉接线

方法3和方法4是单片机和串口是非交叉接线(一一对应)

AVR单片机硬件I2C接口驱动程序 基于AVR单片机的128液晶(ks0108)驱动程序及仿真 基于Proteus仿真的AVR单片机串口程序

2010-11-30 14:37:42| 分类: 单片机 | 标签: |字号大中小 订阅 以前在Proteus上做过51的串口仿真没有成功,昨天再次尝试atmega16的串口仿真居然成功了;当然仿真是最简单的,实际做事的时候需要加上max232芯片,但仿真时就不需要了, 程序功能:由串口助手向单片机发送一组数据“I LOVE YOU-----SBILY1988”,单片机收到数据后发送回串口助手, 数据传输方向:计算机——>单片机; 单片机——>计算机; 现送上仿真图和程序: #include #include

void init(); void send(unsigned char); unsigned char receive(); void main() {unsigned char i=0,a=300; init(); while(1) { i=receive(); send(i); } } void init() //初始化函数

{ UCSRB=BIT(4)|BIT(3); //使能发送和接收器 UCSRC=BIT(7)|(3<<1); //设置数据帧格式(8数据位) UBRRH=0; //设置波特率为8MHZ晶振下 9600bps UBRRL=51; } void send(unsigned char data) //数据发送 { while(!(UCSRA&BIT(5))); //等待发送缓冲器准备完毕 UDR=data; while(!(UCSRA&BIT(6))); //等待发送结束 UCSRA&=BIT(6); }

unsigned char receive() //数据接收 {unsigned char data=0; while(!(UCSRA&BIT(7))); //等待数据接收完毕 data=UDR; return data; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务