基于Proteus虚拟串口通信的设计与仿真

2014-12-08 07:36
昌吉学院学报 2014年6期
关键词:发送数据PC机断点

王 超

(昌吉学院物理系 新疆 昌吉 831100)

0 引言

串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。就单片机来说,这种通信方式是实现与PC机、智能仪器仪表连接的重要手段,常见的通信标准有RS232和RS485,其中RS232有三线制接法和九线制接法,RS-485接口则是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好,这两种方式因接线简单,通信协议灵活而得到广泛的应用[1-2]。

1 Proteus虚拟串口

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台[3-4]。

通常情况下,虚拟仿真系统是不能与物理环境交互通信的,但是Proteus虚拟系统模拟了这种功能,它使Proteus仿真环境下的系统能与实际的物理环境直接交互,Proteus的COMPIM组件是一种串行接口组件,当由CPU或UART软件生成的数字信号出现在PC物理COM接口时,它能缓冲所接收的数据,并将它们以数字信号的形式发送给Proteus仿真电路,如果不使用物理串口而使用虚拟串口,使用串口调试助手软件能与Proteus单片机串口直接交互,此时需要安装虚拟串口驱动软件VSPD。

2 仿真实例

选用AT89C52型号单片机,运行在PC机中的串口调试软件,实现单片机与PC机双向通信。

2.1 硬件电路设计

2.1.1 安装虚拟串口驱动程序VSPD并运行

在First port中选择COM3,在Second port中选择COM4,单击“Add Pair”按钮,这两个端口立即出现在左边的Virtual Ports分支下,且用蓝色虚线将它们连接起来,在PC的设备管理器中,也会出现两个串口的显示[5-6]。如图1所示。

图1 虚拟串口驱动软件

2.1.2 单片机与PC机串口通信硬件电路

在Proteus中,在元件库中选取AT89C52、数码管、COMPIM组件和虚拟终端等,将串口中的COM3分配给COMPIM使用,COM4分配给串口助手使用,COM3和COM4已经通过虚拟串口驱动程序VSPD连接,第一个虚拟终端的RXD端接单片机的P3.0引脚,第二个虚拟终端的RXD端接单片机的P3.1TXD引脚,数码管ABCDEFGDP口连接单片机的段选P0.0-0.7,1234口连接单片机的位选P2.0-P2.3,用按钮K1模拟外部中断,向PC机发送字符串,单片机时钟频率为11.0592MHz,如图2所示。

图2 单片机与PC机通信硬件电路

2.2 软件程序设计

软件部分由主程序和中断程序组成,用C51程序编写,中断部分包括串口接收中断函数和外部中断发送字符串函数。采用定时器T1,工作在方式2(8位自动装载),串口工作在方式1。

2.3 软硬件联合调试

2.3.1 C51代码级调试

在源代码级调试C51程序,需要先把C51语言编译成OMF51格式的可执行文件,也就是绝对目标文件,OMF51格式的文件包含所有的指令和调试信息,允许实现全速、单步、设置断点、观察变量等调试功能,OM51格式是Keil所支持的。

2.3.2 Keil C与Proteus联合调试

这种调试方式,可实现边调试,边修改程序,需要安装Keil C和Proteus的连接文件vdmagdi.exe,进行相关的软件设置后,切换到源代码窗口,如图3所示。

图3 联合调试窗口

联合调试常见的方法有如下几种:

(1)按F10和F11可单步运行,F11是单步运行键,F10是跳出函数键,两者配合使用可有选择性的进入函数,便于观察函数的执行过程。

(3)打开寄存器窗口、特殊寄存器窗口和内部存储器窗口,可观察的连续的数据变化,便于整体分析程序结果。

(4)断点调试,该调试手段用于分析程序进入中断函数的情况,这对调试含有中断函数的程序非常重要,首先在中断函数中设置断点,打开外围设备窗口,可以显示I/O、定时器、中断、串口等外围设备的状态,在串口中断函数receive_4_digit()interrupt 4中设置断点,打开串行口状态窗口,全速运行后,程序在主程序中循环,通过串口助手工具发送“5678”时,主程序立刻转入中断服务程序,在串口状态窗口中显示出RI=1,SBUF=0x35,SCON=0x55,RB8=1,REN=1等数值,通过这些数据可直观、准确观察到串口中断的执行过程,非常方便的调试串口中断程序。如图4所示。

图4 串口中断调试过程

2.3.3 运行结果

打开仿真电路,全速运行后,在串口助手中发送数据“5678”,即PC机发送数据给单片机,按下K1,即单片机发送数据给PC机,运行结果的显示采用了两种方式,一是借助串口助手发送数据和接收数据,二是通过虚拟终端显示发送的数据和接收数据,结果表明:两者是一致的。如图5所示。

图5 调试运行结果

3 结束语

借助虚拟串口实现单片机与PC的双向通信,传输可靠,成本低,仿真成功的电路可直接应用实际电路,有助于缩短开发周期,提高效率。

[1]杜树春.基于Proteus和KeilC51的单片机设计与仿真[M].电子工业出版社,2012.

[2]路明,张海波.利用PC及RS_232串口实现远程数据采集[J].微计算机信息,2011,27(2):107-108.

[3]刘磊.基于Proteus软件仿真的单片机教学改革探索[J].大众科技,2013,15(8):110-112.

[4]唐雨红.基于Proteus的《单片机原理及应用》教学应用研究[J].江苏教育学院学报,2013,29(1):33-34.

[5]陈海霞,徐智.基于PROTEUS的单片机串口通信的实例设计与仿真[J].科技信息,2011,(9):458-459.

[6]陈军.基于proteus的串口通信系统仿真设计[J].自动化与仪器仪表,2012,(4):51-53.

猜你喜欢
发送数据PC机断点
砂泥互层断点组合类型及其合理性分析
——以大庆长垣萨尔图油田为例
用Eclipse调试Python
一类无限可能问题的解法
一种车载自组织网络的媒体接入控制协议
带标记方式的CRDSA++协议性能分析*
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
使用IPSec安全传输数据
基于主控同步的CAN总线多点实时数据采集技术