基于仿真软件的51单片机双机串联通讯实验

该实验使用两个AT89C52单片机,通过设置接收和发送模式,实现开关控制LED灯的串口通讯功能。在Proteus软件中进行仿真验证,确保单片机的发送机和接收机正确连接(RXD-TXD,TXD-RXD),并使用相同的11.0592MHz晶振以保证通讯稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际工程中单单一个单片机很难完成更多的工作,因此需要在单片机之间建立起通讯,使得单片机间可以进行数据传递。本实验运用两个AT89C52,通过设置其的接收、发送数据的模式使得可以通过连接在发送机上的开关控制连接在接收机上的LED灯。本实验配合仿真软件Proteus验证单片机串口通讯的功能。

设计与原理框图
甲机 发送机C程序
#include <reg51.h>
#define uchar unsigned char
    void main()
    {
        uchar temp=0;
        TMOD=0x20;   // set the work method 2 for T1 
        TH1=0xfd;
        TL1=0xfd;    // In the nethod2 the value is the same
        SCON=0x40;   // set the SCON
        PCON=0x00;   // set SMOD=0 
        TR1=1;       // start timing
        P1=0xff;     // test the input
        while(1)
        {
            temp=P1;        // read p1            
            SBUF=temp;      // take the tdata from SBUF
            while(TI==0);   // wait until the interruptfunction is over
            TI=0;           // for the next
        }
    }
乙机 接收机C程序
#include <reg51.h>
#define uchar unsigned char
    void main()
    {
        uchar temp=0;
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;    // set the bode rate the same with send
        SCON=0x50;   // set the mode 1 read & REN=1
        PCON=0x00;   // make SMOD=0
        TR1=1;       
        while(1)
        {
            while(RI==0);  // wait for the read is over
      RI=0;          // make RI=0 when the read is over
            temp=SBUF;     // take the readdata from SBUF
            P1=temp;       // control light  
        }    
    }

原理图搭建

甲机原理图

乙机原理图

需要注意 将甲机的RXD连接乙机的TXD,甲机的TXD连接乙机的RXD

总线端口需要进行匹配设置

为了使得通讯稳定,保证两个单片机采用同一大小的晶振设置,采用11.0592MHz

仿真开始后,在仿真图上调整开关状态,可以看到与接收机相连接的LED灯随着与发送机相连接的开关的状态变化而亮灭。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值