proteus模拟串行口通信.doc
文本预览下载声明
Proteus仿真——51单片机串口转RS232口
单片机串口是单片机通信的基本途径,可以进行多单片机间的通信,也可以通过接口转换实现与计算机间的通信。其中与计算机通信可以通过计算机的串口(232口)或USB口实现。本文是本人做的一个小实验,内容是在Proteus ISIS中仿真51单片机串口转RS232口,实现单片机通过串行口与计算机通信。
单片机串行口有四种不同的工作方式:
方式0:移位寄存器输入/出方式,波特率固定为:fosc/12。
方式1:10位UART(通用异步接口电路),一帧数据包括1位起始位(0),8位数据位和1位停止位(1)。波特率可变,公式为:其中X为定时器T1的初值,当然我们一般都是先确定波特率然后算初值的,所以我们更想知道X等于多少。把上面的式子变一下就可以得到初值X了:
方式2/3:这两种方式都是11位的UART,它们比方式1多了一个第9位数据。他们不同的是:方式2波特率固定为fosc/32或fosc/64,由SMOD位决定。方式3:波特率同方式1;
本例中采用方式1,波特率为9600(计算机默认值),根据波特率算出初值X=253(定时器T1工作方式2)。我们以9600的波特率向计算机循环发送00H;
proteus中的接口转换电路如下:
计算机端用串口调试软件接收;
不过我们要说明一下,为了实现串口的连接,我们要用计算机串口模拟软件模拟出两个232口,模拟出的这两个232口是设计为连接着的。
我们用Virtual Serial Port Driver这个软件(到网上去搜,很容易找到)。安装好后打开,界面如下:
在上图里可以看出我的机器有一个物理口COM1,现在已经模拟出了两个口COM2和COM3,而且他们是一组是连接着的。
我们在proteus中的compim默认是连到com1的,在我们这边改成com2,然后在串口调试软件中测试com3,如下两个图
现在硬件连接已经到位,下面就是软件了:通过串口以波特率为9600的速度发送00H,程序如下:
ORG 0000HLJMP STARTORG 0030HSTART: SETB EASETB ESSETB ET1CLR SM0;串行口工作于方式1:sm0=0,sm1=1SETB SM1MOV PCON,#00H;波特率不加倍MOV TMOD,#20H;T1定时器方式2MOV TL1,#253MOV TH1,#253SETB TR1MOV A,#00HLOOP: MOV SBUF,AJNB TI,$;等待发送完CLR TI;清除中断标志LJMP LOOP;循环END
结果如下:
显示全部