单片机虚拟串口及界面设置
- 格式:pdf
- 大小:106.29 KB
- 文档页数:2
奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验NRF24L01+转 USB 虚拟串口实验实验平台:奋斗版STM32开发板Tiny 实验内容:板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC识 别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类 软件选择该串口号。
进入串口软件界面,可以通过软件无线收发一帧长度最长 为32字节的数据。
该例程可以和V3及MINI板的NRF24L01 UCGUI例程配合使用。
预先需要掌握的知识 2.4G通信模块NRF24L01 1. 产品特性2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用 支持六路通道的数据接收 低工作电压:1.9 1.9~3.6V 低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率) 多频点:125 频点,满足多点通信和跳频通信需要 超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等, NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口, 便于使用低成本单片机。
便于开发:由于链路层完全集成在模块上,非常便于开发。
自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制 自动存储未收到应答信号的数据包 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 载波检测—固定频率检测 内置硬件CRC 检错和点对多点通信地址控制 数据包传输错误计数器及载波检测功能可用于跳频设置 可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM 间距接口,便于嵌入式应用2.基本电气特性淘宝店铺:1奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验3. 引脚定义:4.工作方式NRF2401有工作模式有四种: 收发模式 配置模式 空闲模式 关机模式 工作模式由CE 和寄存器内部PWR_UP、PRIM_RX 共同控制,见下表:淘宝店铺:2奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验4.1 收发模式收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定,具体 配置将在器件配置部分详细介绍。
1、打开软件界面选择串口
2、点击“ADD IP”按钮,添加被访问设备IP地址及端口
3、添加IP地址及访问端口。
IP地址、端口必须与SNMP卡上本地IP、本地端口设置一致
HOST:IP地址 TCPPort:端口
4、IP地址、端口添加完毕后,点击OK按钮,返回主页面。
选择列表框中新添加的IP地址,
点击“PORT SETTINGS”按钮进行端口设置
5、将复选设置中的“TimeOut Reconnect”“Server Reconnect”“Raw Mode”选中。
点击“OK”按钮,返回主页面。
6、点击“SAVE”按钮,保存设置。
点击“Close”按钮,退出程序。
重新启动计算机,
以保证所有更改生效。
7、打开系统监控软件,点击端口设置选项
8、选择在虚拟串口中设置的虚拟串口编号,点击"OK",退出设置。
9、成功连接后,系统将提示“successful redirect com3 to 99.19.73.167:6000”。
用proteus里的单片机跟pc的串口调试工具进行串口仿真虚拟串口使用说明打开虚拟串口的文件夹,可以看见如下两个文件,一个是破解用的,一个是安装用的。
双击安装图标开始安装。
选择同意,一路NEXT即可。
安装后再将破解用的文件粘贴到C:\Program Files\Eltima Software\VSPD XP 5.1目录下,覆盖原来的文件即可。
在桌面就可以看到快捷方式。
双击快捷方式后你会看到如下画面:上面为你实际的物理串行口,下面是虚拟的物理串行口。
下面我们来增加一对虚拟串行口。
因为一般的电脑最多为两个串行口,在这个画面上,我们设置first为com3,second为com4,点击add pair就可以增加一对虚拟串口(如下图所示)。
这两对端口是通过这个软件物理连接的,并且是rs232电平连接。
这样我们就完成里串口的设置,可以把此软件关闭,这两个端口将会一直存在于你的电脑中,下次直接使用就可以了。
Protus中的串口设置仿真电气原理图请打开本例的仿真文件:下面我们对串口进行设置和邦定:在proteus右键单击上面的图选定,然后左键单击此元件打开它的属性对话框。
如下图所示:设置蓝色框内的参数,为你实际的参数,其中红色圈内设置为你要邦定的串口,本例邦定为com4,必须为com3和com4中的一个。
下面就是对串口调试工具的设置了,设置如下:因本例proteus用了com3,那么串口调试工具这里就要邦定为com4了,并且设置为16进制发送和显示,那么这样一切ok,开始吧。
点击proteus的播放键,切换到串口调试工具,哈哈受到数据了。
然后你再发送一些数据给单片机看看,哈哈,是不是很棒呢。
单片机与PC通信-(proteus 与虚拟串口驱动软件以及串口调试助手的仿真)实验:单片机与PC通信(proteus与虚拟串口驱动软件以及串口调试助手的仿真)实现内容:设置单片机串行口为工作方式一,波特率为9600。
PC从串口发送字符1、2、3或4到单片机串行口,单片机接收到该字符后,首先在P2 口显示字符,然后根据字符不同返回不同字符串,具体要求如下表:表:单片机与PC通信内容一、proteus仿真图:(此proteUS 仿真图可 免费下载, 下载网址:)1、图1.12、注意:(1)51单片机属性的时钟频率(clock frequency )必为11.0592mhz , 否则无法仿真。
请按下图设置AT89SC52PJXJ/M.ID R9.1/&C1 P92/AC2 F*1 V*ti3 F-J 對 Mil PJ.5/WLI5 r.-j--p. Rjjr«i7 P2CU^ 就.sg P2JA1Q 咱•佃H E7SJA1J F2.E1A14 F3皿旳pi.omB F3?JMT0~RZM S T TF5TFlEHI卩卫 Pl 陀曲丽■图1.23、在仿真图中P1即(元件名称:COMPIN模块为集成电平转换的串行通信接口(如下图)(1)图1.3(2)设置参数如下图1.44、虚拟串口驱动设置 在右侧选择端口一: “COM ”端口二:“COM4,然后按“添加端口” ,此时左侧的Virtual ports 下出现:工 Virtual portsS <2 CQM3 [960Q'N^-l]* COM4 [96OO-N-E-11图1.5表示添加了 COM3 COM4^对虚拟串行口,且 已连接,故我们把单片机和PC 选择COM 和 COM4 (如图1.4中的physical port 选项:COM4图 中:串口号COM )。
接着再在右侧选择 端口一:“COM ”端口二:“COM2则为下图,劃E 雷口驱訟6.9 by 耽III 汉化Manage port 占 Port access list 匚 u stem pin outMPD 肓餉魏幢任何你想使用的端口号的虛拟端口 .所以你可以不 受端口吕;3躯的限制1旦呈诒诵■呆I'」芒腔垮支持这些端口号p no port selected no port 眸血“cf使用精确的遁特率模报 综路中斷重新皈夏连接所有虎拟端口捋质全部刪像请 确认所有端口业时都处于关闭 状态。
Keil ARM 与虚拟串口联调设置第一步:创建虚拟串口使用工具:Configure Virtual Serial Port Driver记住自己创建的两个虚拟串口第二步:创建debug.ini 命令执行文件Mode COM2 9600,0,8,1assign com2 <S2IN> S2OUT注意:1:串口选择与虚拟串口相同2:串口工作波特率,校验方式,数据长度,停止位assign com2 <输入寄存器> 输出寄存器串口工作方式对应9600,0,8,19600,1,8,19600,2,8,1第三步:环境设置第四步:全部编译进入调试:开启仿真,打开串口调试助手。
虚拟串口驱动显示工作方式其他:命令行也可以直接写命令在命令栏中,操作如下:点击进入仿真模式,在命令行将debug.ini命令输入错误解决办法:*** error 30, line 2: undefined name of virtual register问题描述:虚拟寄存器没有定义问题原因:命令assign com2 <S2IN> S2OUT中<S2IN> S2OUT是没有定义的。
可以通过dir vtreg命令查看可以寄存器对将对应串口寄存器写入对应命令中*** error 65: access violation at 0x40021000 : no 'read' permission驱动没有调用正确*** error 127, line 2: Com channel not opened, use MODE command first 命令:Mode COM4 9600,0,8,1assign com4 <S2IN> S2OUT中的串口选择错误,要确保与虚拟串口一致。
单片机用 Proteus 仿真双机串口通信总结体会本文介绍了使用 Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
下面是本店铺为大家精心编写的5篇《单片机用 Proteus 仿真双机串口通信总结体会》,供大家借鉴与参考,希望对大家有所帮助。
《单片机用 Proteus 仿真双机串口通信总结体会》篇1引言在单片机应用中,串口通信是一种重要的通信方式,它具有传输速率快、传输距离远、抗干扰能力强等优点。
Proteus 仿真软件是一种功能强大的电子电路仿真工具,可以用来模拟单片机串口通信的整个过程,为学习和实践提供方便。
本文将详细介绍使用Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
实验过程1. 硬件电路设计首先,我们需要设计一个简单的单片机硬件电路,包括电源电路、串口通信电路和 LED 显示电路。
电源电路可以使用电池或者稳压器来提供稳定的电压,串口通信电路可以使用 Proteus 提供的串口助手软件进行设计和调试,LED 显示电路可以使用 Proteus 提供的 LED 助手软件进行设计和调试。
2. 软件程序设计在软件程序设计中,我们需要编写两个程序:主程序和串口通信程序。
主程序主要负责初始化串口通信电路和 LED 显示电路,并将控制权转移到串口通信程序。
串口通信程序主要负责接收和发送数据,通过串口助手软件可以方便地进行调试和测试。
3. 仿真测试在仿真测试中,我们可以使用 Proteus 提供的仿真工具进行测试。
首先,我们需要将硬件电路和软件程序导入 Proteus 仿真软件中,并进行电路连接和程序编译。
然后,我们可以通过串口助手软件进行数据发送和接收,并通过 LED 显示电路进行数据展示。
总结体会通过使用 Proteus 仿真软件进行单片机双机串口通信实验,我们可以得出以下总结体会:1. Proteus 仿真软件是一种非常强大的电子电路仿真工具,可以用来模拟各种电路和通信方式。
51单片机与PC机串口通信的仿真与实现作者:李健来源:《电脑知识与技术》2018年第32期摘要:介绍了利用几种常见软件实现的51单片机与PC机串口通信的仿真过程,可以在单片机课程的理论教学中加以应用,具有效率高、成本低等优点,有助于教师的教学和学生对知识的掌握和应用。
关键词:51单片机;PC机;串口通信;仿真中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)32-0038-02在实际应用中,单片机与PC机间的通信非常普遍[1]。
这时单片机主要完成现场数据采集和设备监控[2],PC机接收单片机发来的数据进行分析、处理,并对结果再次发送单片机进行现场控制等。
笔者在单片机课程的理论教学中,由于课堂上受到条件的约束,采用了纯软件的方法对单片机串口通信进行仿真和演示,便于实现和让学生理解。
下面通过一个实例来介绍51单片机与PC机之间串口通信的仿真与实现过程。
1 所需软件使用到的软件有:VSPD、Proteus、Keil和串口助手[3]。
VSPD是一个虚拟串口小软件,可以虚拟出一对串行接口用于仿真;Proteus是一款流行的单片机仿真软件,用于建立串口通信仿真电路;Keil是用于编写单片机程序的软件;串口助手是用于上位机即PC机的软件,用来向单片机发送数据,或者接收单片机发送来的数据并进行显示。
2 设计与仿真过程预期实现的功能为:PC机通过串口助手向单片机发送一个字节数据,单片机接收到后将数据的二进制形式通过八个数码管的亮灭显示出来,接收的“1”对应的灯亮,接收的“0”对应的灯灭。
同时单片机将接收的数据发回给PC机,PC机将数据在串口助手中再显示出来。
2.1 利用Proteus设计仿真电路如图1所示,在Proteus软件中选用AT89C51单片机、COMPIM、电阻和发光二极管组成仿真电路。
COMPIM在仿真中相当于PC机上配置的RS232标准串行接口,为D型九针插座[4]。
在实际中,单片机和PC机之间需要通过MAX232芯片进行电平转换才能连接,但在仿真图中可以直接将两者的RXD(接收数据)和TXD(发送数据)连接起来进行串行通信。
虚拟串口用法介绍虚拟串口是一种软件模拟的串口,可以在计算机中创建并使用。
它能够模拟传统的硬件串口的功能,使得应用程序可以使用串口进行通信,而不需要实际的硬件设备。
虚拟串口广泛应用于各种领域,包括嵌入式系统开发、通信协议调试、设备模拟测试等。
虚拟串口的原理虚拟串口通过操作系统提供的API接口来创建,在操作系统中虚拟串口被认为是一个特殊的设备。
当应用程序使用虚拟串口进行数据读写时,操作系统会将数据通过特定的方式传递给另一个应用程序或者设备驱动程序,从而实现数据的传输。
虚拟串口的使用场景虚拟串口在各种场景中得到广泛的应用。
以下是一些常见的使用场景:1. 嵌入式系统开发在嵌入式系统开发中,通常需要与外部设备进行串口通信。
使用虚拟串口可以方便地在开发环境中模拟外部设备,进行调试和测试。
同时,通过虚拟串口可以方便地与计算机上的工具进行通信,如调试助手、串口监视器等。
2. 通信协议调试在开发和测试通信协议时,使用虚拟串口可以模拟通信的两端,方便进行调试和验证。
同时,虚拟串口还可以记录通信数据,便于分析和研究。
3. 设备模拟测试对于某些外部设备,可能难以获取或者代价较高。
通过使用虚拟串口,可以模拟这些设备的功能和行为,方便进行系统测试和功能验证。
虚拟串口的实现方式虚拟串口的实现方式有多种,包括软件虚拟串口和硬件虚拟串口。
1. 软件虚拟串口软件虚拟串口是在操作系统上通过软件实现的虚拟串口。
它通过操作系统提供的API接口创建虚拟串口,并模拟串口的读写功能。
这种方式成本较低,易于使用,但有一定的性能限制。
2. 硬件虚拟串口硬件虚拟串口是通过硬件设备实现的虚拟串口。
它使用专用的硬件设备来模拟串口的行为,并与操作系统进行交互。
这种方式的性能较好,适用于对性能要求较高的场景,但成本较高。
虚拟串口的配置与使用配置和使用虚拟串口的具体方法和步骤与操作系统和虚拟串口的实现方式有关。
以下是一般情况下使用虚拟串口的步骤:1.安装虚拟串口驱动程序(如果有)。
构建CAN-bus网络中的虚拟串口 (VCOM)广州周立功单片机发展有限公司2005年8月目录构建CAN-bus网络中的虚拟串口 (1)1.1 基于CAN-bus网络的虚拟串口 (1)1.1.1 虚拟串口特点 (1)1.1.2 支持平台: (1)1.2 虚拟串口的建立 (2)1.2.1 主要硬件设备 (3)1.3 虚拟串口服务器的配置 (4)1.4 CAN232MB转换器的配置 (8)1.5 虚拟串口网络的测试 (8)1.6 CAN-bus网络的优势 (11)构建CAN-bus网络中的虚拟串口关键词:CAN-bus 虚拟串口VCOM CAN232MB转换器 PCI-9820接口卡1.1 基于CAN-bus网络的虚拟串口在工业串行通讯领域中,RS-232与RS-485都是会被经常用到的数据传输标准之一。
例如,普通PC一般会提供1~4个标准RS-232端口,分别被标注为COM1~COM4端口。
用户可以通过这些现成的RS-232端口连接外部设备,比如键盘、IC读卡器、条码阅读器、数字化仪、打印机、数据记录仪,或者由用户自己定制的串行通讯仪器,等等。
操作或编程这些标准的COM端口也是非常方便的,因为市场上有众多的串口软件调试工具可供通讯测试,也有功能齐全的DLL程序开发库可供编程时调用。
但是,传统RS-232串行通讯存在着数据可靠性、通讯距离、端口数量等多个方面的限制。
例如,在工业控制等现场环境中,常会有电气噪声干扰传输线路,使用RS-232通讯时经常因外界的电气干扰而导致信号传输错误;其次,在不增加缓冲器的情况下,RS-232通讯的最大传输距离只可以达到15米;还有,同1个RS-232端口只能够连接1个RS-232通讯设备。
上述因素大大限制了RS-232通讯的应用领域。
本文介绍了一种简单、可靠的方法,通过利用ZLGCAN接口卡、CAN232MB转换器等设备,可以在1条普通双绞线上连接多达2048个RS-232设备,通讯距离可以长达10公里甚至更远的距离。
单片机IO口模拟串口程序(发送+接收)前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口。
经过若干曲折并参考了一些现有的资料,基本上完成了。
现在将完整的测试程序,以及其中一些需要总结的部分贴出来。
程序硬件平台:11.0592M晶振,STC单片机(兼容51)/************************************** ************************** 在单片机上模拟了一个串口,使用P2.1作为发送端* 把单片机中存放的数据通过P2.1作为串口TXD发送出去*************************************** ************************/#include <reg51.h>#include <stdio.h>#include <string.h>typedef unsigned char uchar;int i;uchar code info[] ={0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5 5,0x55,0x55,0x55,0x55,0x55,0x55,0x55 };sbit newTXD = P2^1;//模拟串口的发送端设为P2.1void UartInit(){SCON = 0x50; // SCON: serail mode 1, 8-bit UARTTMOD |= 0x21; // T0工作在方式1,十六位定时PCON |= 0x80; // SMOD=1;TH0 = 0xFE; // 定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bps fosc=11.0592MHzTL0 = 0x7F; // 定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bps fosc=11.0592MHz// TH0 = 0xFD; // 定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bps fosc=18.432MHz// TL0 = 0x7F; // 定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bps fosc=18.432MHz}void WaitTF0(void){while(!TF0);TF0=0;TH0=0xFE; // 定时器重装初值fosc=11.0592MHzTL0=0x7F; // 定时器重装初值fosc=11.0592MHz// TH0 = 0xFD; // 定时器重装初值 fosc=18.432MHz// TL0 = 0x7F; // 定时器重装初值 fosc=18.432MHz}void WByte(uchar input){//发送启始位uchar j=8;TR0=1;newTXD=(bit)0;WaitTF0();//发送8位数据位while(j--){newTXD=(bit)(input&0x01); //先传低位WaitTF0();input=input>>1;}//发送校验位(无)//发送结束位newTXD=(bit)1;WaitTF0();TR0=0;}void Sendata(){for(i=0;i<sizeof(info);i++)//外层循环,遍历数组{WByte(info[i]);}}void main(){UartInit();while(1){Sendata();}}########################################## ####################################/************************************** ************************** 模拟接收程序,这个程序的作用从模拟串口接收数据,然后将这些数据发送到实际串口* 在单片机上模拟了一个串口,使用P3.2作为发送和接收端* 以P3.2模拟串口接收端,从模拟串口接收数据发至串口*************************************** ************************/#include<reg51.h>#include<stdio.h>#include<string.h>typedef unsigned char uchar ;//这里用来切换晶振频率,支持11.0592MHz 和18.432MHz//#define F18_432#define F11_0592uchar tmpbuf2[64]={0};//用来作为模拟串口接收数据的缓存struct{uchar recv :6 ;//tmpbuf2数组下标,用来将模拟串口接收到的数据存放到tmpbuf2中uchar send :6 ;//tmpbuf2数组下标,用来将tmpbuf2中的数据发送到串口}tmpbuf2_point={0,0};sbit newRXD=P3^2 ;//模拟串口的接收端设为P3.2void UartInit(){SCON=0x50 ;// SCON: serail mode 1, 8-bit UARTTMOD|=0x21 ;// TMOD: timer 1, mode 2, 8-bit reload,自动装载预置数(自动将TH1送到TL1);T0工作在方式1,十六位定时PCON|=0x80 ;// SMOD=1;#ifdef F11_0592TH1=0xE8 ;// Baud:2400 fosc=11.0592MHz 2400bps为从串口接收数据的速率TL1=0xE8 ;// 计数器初始值,fosc=11.0592MHz 因为TH1一直往TL1送,所以这个初值的意义不大TH0=0xFF ;// 定时器0初始值,延时208us,目的是令模拟串口的波特率为9600bps fosc=11.0592MHzTL0=0xA0 ;// 定时器0初始值,延时208us,目的是令模拟串口的波特率为9600bps fosc=11.0592MHz#endif#ifdef F18_432TH1=0xD8 ;// Baud:2400fosc=18.432MHz 2400bps为从串口接收数据的速率TL1=0xD8 ;// 计数器初始值,fosc=18.432MHz 因为TH1一直往TL1送,所以这个初值的意义不大TH0=0xFF ;// 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps fosc=18.432MHzTL0=0x60 ;// 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps fosc=18.432MHz#endifIE|=0x81 ;// 中断允许总控制位EA=1;使能外部中断0TF0=0 ;IT0=1 ;// 设置外部中断0为边沿触发方式TR1=1 ;// 启动TIMER1,用于产生波特率}void WaitTF0(void){while(!TF0);TF0=0 ;#ifdef F11_0592TH0=0xFF ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0 ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz #endif#ifdef F18_432TH0=0xFF ;// 定时器重装初值 fosc=18.432MHzTL0=0x60 ;// 定时器重装初值 fosc=18.432MHz#endif}//接收一个字符uchar RByte(){uchar Output=0 ;uchar i=8 ;TR0=1 ;//启动Timer0#ifdef F11_0592TH0=0xFF ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0 ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz #endif#ifdef F18_432TH0=0xFF ;// 定时器重装初值fosc=18.432MHzTL0=0x60 ;// 定时器重装初值fosc=18.432MHz#endifTF0=0 ;WaitTF0();//等过起始位//接收8位数据位while(i--){Output>>=1 ;if(newRXD)Output|=0x80 ;//先收低位WaitTF0();//位间延时}TR0=0 ;//停止Timer0return Output ;}//向COM1发送一个字符void SendChar(uchar byteToSend){SBUF=byteToSend ;while(!TI);TI=0 ;}void main(){UartInit();while(1){if(tmpbuf2_point.recv!=tmpbuf2_point.send)//差值表示模拟串口接收数据缓存中还有多少个字节的数据未被处理(发送至串口){SendChar(tmpbuf2[tmpbuf2_point.send++]);}}}//外部中断0,说明模拟串口的起始位到来了void Simulated_Serial_Start()interrupt 0{EX0=0 ;//屏蔽外部中断0tmpbuf2[tmpbuf2_point.recv++]=RByte(); //从模拟串口读取数据,存放到tmpbuf2数组中IE0=0 ;//防止外部中断响应2次,防止外部中断函数执行2次EX0=1 ;//打开外部中断0}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以上是两个独立的测试程序,分别是模拟串口发送的测试程序和接收的测试程序上面两个程序在编写过程中参考了这篇文章《51单片机模拟串口的三种方法》(在后文中简称《51》),但在它的基础上做了一些补充,下面是若干总结的内容:1、《51》在接收数据的程序中,采用的是循环等待的方法来检测起始位(见《51》的“附:51 IO 口模拟串口通讯C源程序(定时器计数法)”部分),这种方法在较大程序中,可能会错过起始位(比如起始位到来的时候程序正好在干别的,而没有处于判断起始位到来的状态),或者一直在检测起始位,而没有办法完成其他工作。
VSPD和Proteus串口通信教学实验田社平;方向忠;张峰【摘要】介绍了虚拟串口的概念和原理,并以一个具体的串口通信实验探讨了VSPD和Proteus在串口通信实验中的应用.从虚拟串口的结构阐述串行通信的基本原理.以一个实例给出了VSPD串口通信的具体实现过程.该例实现了PC机与单片机之间的串口通信,PC机端串口通信程序采用VC ++6.0编写,单片机选用Intel 公司的AT89 C51,在Proteus仿真软件中用汇编语言编写.VSPD和Proteus串口通信实验可以很好地解决串口资源不足的问题,弱化对硬件的依赖,从而减少实验成本的投入,提升教学实验效率,也有助于加深学生对串口通信概念的理解,提高学生的研究能力和学习兴趣.【期刊名称】《实验室研究与探索》【年(卷),期】2018(037)009【总页数】5页(P211-214,334)【关键词】虚拟串口;串口通信;教学实验【作者】田社平;方向忠;张峰【作者单位】上海交通大学电子信息与电气工程学院,上海200240;上海交通大学电子信息与电气工程学院,上海200240;上海交通大学电子信息与电气工程学院,上海200240【正文语种】中文【中图分类】TP311.520 引言串口是目前工业通信中较为普遍的一种通信方式,同时在单片机教学中占据重要地位[1-4]。
传统的串口通信实验往往需要一根串口线连接两个终端(两台PC机,或者一台PC一个单片机系统,或者两个单片机系统),其对硬件仿真器依赖性较强。
由于很多仿真器不能做到完全硬件仿真,因而可能造成仿真时正常,而实际运行时出现错误的情况,或者造成仿真不能通过,但是实际运行正常的情况。
当单片机芯片型号发生较大变化时,需要配置新的仿真器,增加了资金投入。
因此,开发一种虚拟的串口通信教学实验系统,具有良好的教学价值。
例如,可以利用Keil和虚拟串口驱动(VSPD)即可达到这一目的[5-7],但这样的实验系统具有操作较为复杂、显示不够直观、不能加入硬件设计等缺点。
CH558虚拟串口应用实例一、摘要CH558内置USB 全速主从控制器,可用于各种USB 主机和设备应用。
本文主要介绍CH558虚拟串口的实现和相关应用。
二、总体概述在USB 标准子类中,有一类称之为CDC 类,可以实现虚拟串口通信的协议,而且由于大部分的操作系统(Windows 和Linux )都带有支持CDC 类的设备驱动程序,可以自动识别CDC 类的设备,这样不仅免去了写专用设备驱动的负担,同时简化了设备驱动的安装。
(1)、CDC 类简介USB 的CDC 类是USB 通信设备类(Communication Device Class )的简称。
CDC 类是USB 组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB 子类。
根据CDC 类所针对通信设备的不同,CDC 类又被分成以下不同的模型:USB 传统纯电话业务(POTS )模型,USB ISDN 模型和USB 网络模型。
其中,USB 传统纯电话业务模型,有可分为直接线控制模型(Direct Line Control Model )、抽象控制模型(Abstract Control Model )和USB 电话模型(USB Telephone Model )。
(2)、CH340简介CH340在USB 转串口方面应用非常广泛,是一种类似于USB CDC类的厂商自定义设备类,通过USB 虚拟串口的方式和操作系统进行数据交换。
(3)、CH558模拟CH340随着手持设备日益普遍和一些应用或者测试条件的变化,部分应用希望将USB 转串作为一个模块功能做到主控当中,这样既能节省硬件成本,PCB 走线布板也精简很多,以下将主要介绍CH558模拟CH340的实现关键点。
(4)、USB 设备接入主机主要包括以下几个阶段*设备插入并且主机供电;*主机和设备USB 标准命令交互阶段;*主机和设备USB 类命令交互阶段;*主机和设备非控制端点数据通讯;*设备移除;A .检测设备连接当设备没有插入时,集线器下游端口的D+和D-线上都是低电平,协议定义为SE0(Single-Ended 0)。
单片机虚拟串口的使用方法单片机的虚拟串口是一种非常常见的通信方式,它利用串口模拟的方式来进行数据的传输。
虚拟串口能够让单片机和计算机之间实现数据的传输和通讯,从而方便了开发者的开发工作,更好地实现了单片机与计算机的互联互通。
虚拟串口的使用方法如下:1. 确定虚拟串口的通信参数在使用虚拟串口前,首先要确认好虚拟串口的通信参数。
一般来说,包括波特率、数据位、停止位、奇偶校验等参数。
这些参数需要与单片机的串口通信参数相对应,否则通信将会失败。
2. 安装虚拟串口驱动程序在计算机上进行单片机项目的开发时,需要先安装对应的虚拟串口驱动程序。
常用的虚拟串口驱动程序有VirtualSerialDriver、FTDI等。
在安装驱动程序时,需要根据计算机的操作系统版本,选择对应的驱动程序版本。
3. 编写单片机程序在单片机中涉及到虚拟串口的程序中,需要先初始化串口通信参数,并打开串口,然后循环等待从串口接收到的数据。
在循环中,可以使用串口发送数据给计算机,或者从计算机接收数据。
4. 在计算机上打开虚拟串口设备在单片机程序中设置好虚拟串口的通信参数后,需要在计算机上打开虚拟串口设备。
在计算机的设备管理器中,能够看到已经成功安装的虚拟串口设备。
打开对应的串口,设置对应的通信参数即可。
5. 测试通信在单片机和计算机之间建立虚拟串口连接后,需要进行测试,确保串口通信正常。
可以先从单片机发送数据给计算机,观察是否能够在计算机上接收到数据;然后,可以在计算机上发送数据给单片机,观察单片机是否能够接收到数据。
如果测试结果正确,就可以通过这个虚拟串口通讯了。
总的来说,单片机虚拟串口的使用是比较简单的,只需设置好通信参数,安装对应的驱动程序,然后编写好单片机程序,最后进行测试即可。
虚拟串口通信的优点是方便快捷,能够更好地连接单片机与计算机,方便数据传输和控制。
因此,在实际应用中,虚拟串口通信被广泛应用于各种单片机项目开发中。
虚拟串口以及在Proteus中的使用一,虚拟串口虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。
首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。
设置界面:我设置的是COM3和COM4,软件只能成对设置,主要是因为通信时,一方可以监视另一方,如果仅设置1个虚拟串口的话,如你用COM3发送接收数据,但发送了什么接收到什么,你无法验证其正确与来源。
这是人家编写软件的高明之处。
软件设置时将所设置的两个虚拟串口对接,这样就可实现发送与接收的监视。
从设备管理器中可以看到两个虚拟串口对接方式:这样可以用串口调试助手调试串口通信了,从下图可以看到COM3发送的数据到达了COM4的接收区域,COM4发送的数据到达了COM3的接收区域,从而实现了COM3与COM4之间的互联互通。
到这虚拟串口已经设置好,对其它设计软件而言,虚拟串口和普通串口没有区别,如串口调试助手对虚拟串口的使用和普通串口的使用方法一样。
二,虚拟串口在Proteus中的使用下一步介绍一下虚拟串口在Proteus中的使用,更准确的应该说是“串口在Proteus中的使用”,只不过我们用软件实现仿真,虚拟串口在这使用的比较频繁。
先在Proteus中将环境建立起来,很简单,先需要两个元器件就可以建立连接VIRTUAL TERMINAL和COMPIM,如图VIRTUALTERMINAL的TXD与COMPIM的TXD相连,RXD与RXD相连,后面有图分析为什么这样相连:VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口,可以是“实际串口”,也可以是“虚拟串口”,对Proteus而言,是分不清虚拟串口还是实际串口的。
51单片机开发的点阵实验附录2中讲到Proteus调试单片机串口的方法附录1中讲到8*8点阵的显示原理以下程序有本人编写,请参考:用串口调试助手发送个16进制01是个笑脸;02是个哭脸。
可以用上图,基于proteus做仿真。
C51程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit le1=P1^0;sbit le2=P1^1;sbit le3=P1^2;sbit le4=P1^3;uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code tac[8][8]={{0x00,0x00,0xf8,0x04,0x32,0x4a,0x02,0x02},{0x02,0x12,0x22,0xc2,0x04,0xf8,0x00,0x00},{0x00,0x00,0x1f,0x20,0x4c,0x52,0x40,0x40},{0x40,0x48,0x44,0x43,0x20,0x1f,0x00,0x00},//笑脸{0x00,0x00,0xf8,0x04,0x02,0x4a,0x32,0x02},{0x02,0x02,0xc2,0x22,0x04,0xf8,0x00,0x00},{0x00,0x00,0x1f,0x20,0x40,0x52,0x4c,0x40},{0x40,0x40,0x43,0x44,0x20,0x1f,0x00,0x00},//哭脸uchar a=0;int b=0,c=0,flag=0,i; void init()//初始化{TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;}void delay(uint n) {uint i,j;for(i=n;i>0;i--)for(j=80;j>0;j--); }void display()//显示if(b==1)c=0;if(b==2)c=4;P1=0xff;P0=0x00;P2=0xff;le2=0;le4=0;for(i=0;i<8;i++) {P2=tab[i];P0=tac[0+c][i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le1=0;le4=0;for(i=0;i<8;i++) {P2=tab[i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le1=0;le3=0;for(i=0;i<8;i++) {P2=tab[i];P0=tac[2+c][i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le2=0;le3=0;for(i=0;i<8;i++) {P2=tab[i];delay(1);}}void main(){init();while(1){if(flag==1){if(b==1||b==2)display();}}}void ser()interrupt 4//串口中断{RI=0;a=SBUF;if(a==0x01)b=1;if(a==0x02)b=2;flag=1;}附1:目前我会的有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。
单片机虚拟串口及界面设置
虚拟串口
虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。
首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。
设置界面:
我设置的是COM3和COM4,软件只能成对设置,主要是因为通信时,一方可以监视另一方,如果仅设置1个虚拟串口的话,如你用COM3发送接收数据,但发送了什幺接收到什幺,你无法验证其正确与来源。
这是人家编写软件的高明之处。
软件设置时将所设置的两个虚拟串口对接,这样就可实现发送与接收的监视。
从设备管理器中可以看到。