基于51单片机之间的双向通信(Proteus仿真)

发布时间:2023-01-31  

具体功能实现:

甲单片机通过按键可以控制乙单片机的LED灯,而乙单片机通过按键可以让连接甲单片机的数码管数字自增加一。

使用器件:

AT89C51、按键、排阻、4只LED灯、2片MAX232芯片、COM口(CONN-D9F)、数码管、若干电阻

Proteus仿真原理图:

仿真:

乙机控制甲机的数码管显示:

甲机控制乙机的LED灯:

知识介绍:

Proteus布线

为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。

定时中断系统简图

定时器资源

定时器个数:3个(T0,T1,T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。

(T0和T1的操作方式是所有51单片机共有的)

中断系统

执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序

中断号:

外部中断0 interrupt 0

定时器0 interrupt 1

外部中断1 interrupt 2

定时器中断1 interrupt 3

串口中断 interrupt 4

细节注意

通信双方必须要有相同的波特率,通过发送中断标志和接受中断标志控制发送和接受的进行。

主要代码(C语言)KEIL5实现:

甲单片机:


#include


#define uint unsigned int


#define uchar unsigned char


sbit LED1 = P1^0;


sbit LED2 = P1^3;


sbit K1 = P1^7;


uchar Operation_NO = 0;


uchar code DSY_CODE[]=


{


0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f


};


void Delay(uint x)


{


uchar i;


while(x--)


{


for(i=0;i<120;i++);


}


}


void putc_to_SerialPort(uchar c)


{


SBUF = c;


while(TI == 0);


TI = 0;


}


void main()


{


LED1=LED2=1;


P0 = 0x00;


SCON = 0x50;


TMOD = 0x20;


PCON = 0x00;


TH1  = 0xfd;


TL1  = 0xfd;


TI   = 0;


RI   = 0;


TR1  = 1;


IE   = 0x90;


while(1)


{


Delay(100);


if(K1 == 0)


{


while(K1==0);


Operation_NO=(Operation_NO+1)%4;


switch(Operation_NO)


{


case 0:


putc_to_SerialPort('X');


LED1=LED2=1; break;


case 1:


putc_to_SerialPort('A');


LED1=0;LED2=1;break;


case 2:


putc_to_SerialPort('B');


LED2=0;LED1=1;break;


case 3:


putc_to_SerialPort('C');


LED1=0;LED2=0;break;


}


}


}


}


void Serial_INT() interrupt 4


{


if(RI)


{


RI = 0;


if(SBUF>=0&&SBUF<=9)


P0 = DSY_CODE[SBUF];


else


P0 = 0x00;


}


}




乙单片机:


#include


#define uint unsigned int


#define uchar unsigned char


sbit LED1 = P1^0;


sbit LED2 = P1^3;


sbit K1 = P1^7;


uchar NumX = 0xff;


void Delay(uint x)


{


uchar i;


while(x--)


{


for(i=0;i<120;i++);


}


}


void main()


{


LED1=LED2=1;


SCON = 0x50;


TMOD = 0x20;


PCON = 0x00;


TH1  = 0xfd;


TL1  = 0xfd;


TI   = 0;


RI   = 0;


TR1  = 1;


IE   = 0x90;


while(1)


{


Delay(100);


if(K1==0);


{


while(K1==0);


NumX = (NumX+1)%11;


SBUF = NumX;


while(TI == 0);


TI = 0;


}


}


}


void Serial_INT() interrupt 4


{


if(RI)


{


RI = 0;


switch(SBUF)


{


case 'X': LED1=1;LED2=1;break;


case 'A': LED1=0;LED2=1;break;


case 'B': LED2=0;LED1=1;break;


case 'C': LED1=0;LED2=0;


}


}


}


问题解答:

Q: COM口(CONN-D9N)接线图,如下图所示:


A:

OM口(CONN-D9F和CONN-D9M)该如何接线?

A:

CONN-D9F和CONN-D9M的连接必须交叉,.这样连的结果是一个的发送接另一个的接收,一个的接收接另一个的发送

Q:

单片机串口和MAX232、MAX232之间是如何连接的?

A:

单片机与MAX232的连接都是T接T,R接R;

各自的MAX232与对方连接是交叉的。

Q:

单片机SBUF总线协议图:


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    获取收到的数据然后将数据发送出去。 程序实现过程是非常简单吧,看到这里赶紧去试试看吧。 接下来 51单片机双机通信 在项目开发时我们用到串口更多是和其他芯片进行通信,所以这里我们再来实现一个单片机双机通信的例子,先来......
    屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。 触摸屏与单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序......
    数据通信模块 分单片机通信程序和PC机通信程序。 2.4.1 单片机通信程序 流程图如图4所示。 2.4.2 Win98下PC机与89C51通信程序 通讯程序编写中首先在项目头文件中嵌入MSComm......
    的时序进行,每bit 位传送时间间隔按通信速率1200 bit /s计算为833μs。 其模拟串行通信程序清单见下,系统要求单片机晶振为6M。程序清单如下: TXD EQU......
    有效,8250的INTRPT引脚高电平中断,系统便进入数据通信状态,为了使数据传送准确无误,编程采用XMODEM协议对数据打包处理,单片机数据通信程序流程图如图4。 数据发送流程图 受流程图 图4单片机数据通信程序......
    收数据提供去处,只要指出数据表的首地址及数据长度就可以把数据表确定下来。 4 、多机通信 (1)多机通信系统 一对多式的多机通信可以构成一个主从结构的分布式单片机系统,常在规模较大的工业过程控制系统中使用。在这......
    )是实现异步串行通信的常用接口,其他常见的异步串行通信接口还有: TTL电平直接连接 RS-232C RS-422、RS-485 20mA电流环 二、MCS-51单片机串行口 MCS-51单片机......
    新命令。如图5所示。 2.3 SPI通信程序 C51采用SPI主模式与AD7707进行通信。主模式写AD7707较为简单,单片机先写1Byte的配置数据给AD7707,其会自动将该数据放入自身的通信......
    取空),清标志位,等待新命令。如图5所示。 2.3 SPI通信程序 C51采用SPI主模式与AD7707进行通信。主模式写AD7707较为简单,单片机先写1 Byte的配置数据给AD7707,其会自动将该数据放入自身的通信......
    ,也可以把我们的单片机发送的数据接收到这个调试助手界面上。 因为初次接触通信方面的技术,所以我把后面的IO模拟串口通信程序进行一下解释,大家可以边看我的解释边看程序,把底......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>