实验6 单片机与PC机间的串行通信
- 格式:doc
- 大小:145.00 KB
- 文档页数:6
实验6 单片机与PC机间的串行通信
一、实验目的
1、掌握电平转换器件RS-232的使用方法;
2、掌握Proteus VSM虚拟终端(VITUAL TERMINAL)的使用;
3、掌握单片机与PC机间的串行通信软硬件设计方法。
二、实验内容
实现利用虚拟终端仿真单片机与PC机间的串行通信。PC机先发送从键盘输入的数据,单片机接收后回发给PC机。单片机同时将收到的30~39H间的数据转换成0~9的数字显示,其他字符的数据直接显示为其ASCII码。
单片机和PC机进行通信时,要求使用的波特率、传送的位数等相同。要能够进行数据传送也必须首先测试双方是否可以可靠通信。可在PC机和单片机上各编制非常短小的程序,具体可分成PC机串行口发送接收程序、单片机串行口发送程序和单片机串行口发送接收程序。这三个程序能运行通过,即可证明串行口工作正常。
PC机串行口发送接收程序设置串行口为波特率9600、8位数据、1位停止位、无奇偶校验的简单设置。从键盘接收的字符可从串行口发送出去,从串行口接收的字符在屏幕上显示。通过让串行口发送线和接收线短接可测试微机串行口,通过让串行口和单片机系统相接,使用此程序可进一步测试单片机的串行通信状况。具体程序用BASIC编制,简单易懂。直接输入即可运行。程序RS232.
三、实验电路原理图
图7-1 单片机与PC机间电路原理图
四、 实验步骤
1、在PROTEUS中画好电路原理图。
2、串口模型属性设置
串口模型属性设置为:波特率―4800;数据位―8;奇偶校验―无;停止位-1,如图7-2所示。
图7-2 串口模型属性设置
3、虚拟终端属性设置
PCT代表计算机发送数据,PCR用来监视PC接收到的数据,它们的属性设置完全一样,如图7-3所示。SCMT和SCMR分别是单片机的数据发送和接收终端,用来监视单片机发送和接收的数据,它们的属性设置也完全一样,如图7-4所示。单片机和PC机双方的波特率、数据位、停止位和检验位等要确保和串口模型的设置一样,并且同单片机程序中串口的设置一致。
图7-3 PC机虚拟终端属性设置
图7-4 单片机虚拟终端属性设置
要注意到PC机虚拟终端与单片机虚拟终端在RX/TX Polarity属性的设置是相反的,因为信号在经过器件MAX232时要反相。
4、将HEX文件写入电路图中的单片机,在Proteus ISIS界面中的PCT虚拟终端上单击右键,在弹出的快捷菜单中选择“Echo Typed Characters”项;
鼠标指针在PCT终端窗口单击,该窗口出现闪烁的光标,从键盘输入数字“8”,在PCS终端窗口中就出现“8”,表明PC机发送数据“8”,按照设计好的程序,单片机将接收到“8”,所以在单片机接收虚拟终端SCMR上会显示“8”,同时又将数字“8”送显到数码管上。接下来,单片机又将该数回发给PC机,因此在单片机发送终端SCMT上也显示“8”,PC机接收到数据后在接收终端PCR上同样显示“8”,结果如图7-5所示。根据程序设计,当在键盘上输入0~9以外的字符时,单片机输出到数码管上显示的则是该字符的ASCII码,如图7-6所示。
图7-5 程序运行结果1
图7-6 程序运行结果2
五、 实验源代码
程序框图:
1、汇编程序:
ORG 30H
START: MOV SP,#60H
MOV SCON,#B ;设定串行方式:
;8位异步,允许接收
MOV TMOD,#20H ;设定计数器1为模式2 ORL PCON,#B ;波特率加倍
MOV TH1,#0F3H ;设定波特率为4800
MOV TL1,#0F3H
SETB TR1 ;计数器1开始计时
AGAIN: JNB RI,$ ;等待接收完成
CLR RI ;清接收标志
MOV A,SBUF ;接收数据送缓冲区
MOV SBUF,A ;发送收到的数据
JNB TI,$ ;等待发送完成
CLR TI ;清发送标志
SJMP AGAIN
END
2、Cx51程序:
#include
#define uchar unsigned char
#define uint unsigned int
void display(uchar b);
main()
{
uchar a;
TMOD=0x20;
TL1=0xf3;
TH1=0xf3;
SCON=0x50;
PCON=0x80;/*设置串行口方式*/
TR1=1;
while(1)
{
while(RI==0){}
RI=0;
a=SBUF;
display(a);
SBUF=a;
while(TI==0)
TI=0;
}
}
void display(uchar b)
{
if((b>=0x30)&(b<=0x39))
{
b=b-0x30;
} P1=b;
}