本次例程将要达到的效果:从电脑上通过串口发送一个数据到单片机,单片机再原封不动的发回电脑。

硬件电路:

在Proteus中搭建出这样的电路图:

串口收发电路图

使用虚拟串口软件添加一对串口。

虚拟串口

将COMPIM组件的波特率设置为9600,并设置好端口。

设置参数

同样的,将虚拟终端的波特率设置为9600,单片机晶振频率为11.0592MHz。

软件代码:

#include <reg51.h>
unsigned char a,flag;

void main(void)
{
    SCON = 0x50;//设置串行口工作方式1,接收控制打开
    TMOD |= 0x20;//定时器1设置工作方式2
    TH1 = 0xFD;//设置波特率为9600,数据位8,停止位1,无校验位,晶振频率11.0592M
    TL1 = 0xFD;
    TR1 = 1;//启动定时器1
    EA = 1;//开总中断
    ES = 1;//开串行中断
    while(1)
    {
        if(flag==1)
        {
            ES = 0;//关闭串行中断
            flag = 0;
            SBUF = a;//再把数据原样发回
            while(!TI);//等数据发完
            TI = 0;
            ES = 1;//开串行中断
        }
    }
}

void receive() interrupt 4
{
    a = SBUF;//把收到的数据给a
    flag = 1;
    RI = 0;//接收标志清零
}

仿真效果

在Proteus软件里运行仿真。

在串口助手这类软件里发送“hello”,注意设置串口号和波特率。

串口助手的设置

然后即可在Proteus的虚拟终端中看到单片机转发出来的文本。

结果展示

 
返回顶部
ett