历史上的今天
返回首页

历史上的今天

今天是:2026年01月31日(星期六)

2023年01月31日 | 基于51单片机之间的双向通信(Proteus仿真)

2023-01-31 来源:zhihu

具体功能实现:

甲单片机通过按键可以控制乙单片机的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总线协议图:


推荐阅读

史海拾趣

AAEON公司的发展小趣事

AAEON公司是一家总部位于台湾的全球性电子公司,专注于提供嵌入式计算解决方案和人工智能应用平台。以下是关于该公司发展的五个相关故事:

  1. 公司成立和初期发展: AAEON公司成立于1992年,最初主要从事电脑主板的设计和生产。公司在成立初期致力于提供高质量、高性能的计算解决方案,迅速在台湾本地市场建立了良好的声誉。

  2. 技术创新和产品多样化: 随着技术的发展和市场需求的变化,AAEON开始进行技术创新,并逐步扩展产品线。公司不仅持续改进和推出新型的嵌入式计算产品,还积极涉足人工智能领域,开发智能边缘计算平台和解决方案。

  3. 国际市场拓展: 为了进一步扩大业务规模,AAEON积极拓展国际市场。公司与全球各地的合作伙伴建立了广泛的合作关系,产品销售网络覆盖了亚洲、欧洲、北美和其他地区。公司还在一些国家设立了分支机构和办事处,加强了对当地市场的开拓和服务。

  4. 合作伙伴关系和生态系统建设: AAEON与众多的合作伙伴建立了紧密的合作关系,共同推动产品的创新和市场拓展。公司与主流的芯片厂商、系统集成商、软件开发商等建立了长期稳定的合作关系,共同打造了完善的生态系统。

  5. 未来展望和发展方向: AAEON将继续致力于技术创新和产品升级,加强在嵌入式计算和人工智能领域的领先地位。公司将不断推出符合市场需求的新产品和解决方案,为客户提供更优质的服务和支持。同时,AAEON将继续加强与合作伙伴之间的合作,共同推动行业的发展和进步。

FCT electronic公司的发展小趣事

在环保和可持续发展成为全球共识的背景下,FCT electronic公司积极响应这一趋势,致力于推动绿色环保和可持续发展。公司采用了环保材料和工艺,减少了对环境的污染;同时,FCT electronic公司还加强了废物回收和资源利用方面的工作,实现了资源的循环利用和节约。这些努力不仅使FCT electronic公司在环保方面取得了显著成绩,也为公司的可持续发展奠定了坚实基础。

Emerson公司的发展小趣事

1954年至1973年,Emerson在总裁帕森斯的领导下,开始实施多元化战略。公司通过一系列并购活动,成功收购了包括威诺、美国电气电机、里奇工具等在内的36家公司,进一步拓宽了业务范围。同时,Emerson还注重研发和创新,通过不断推出新产品和技术,巩固了其在电气行业的领先地位。在此期间,公司的规模迅速扩大,从最初的2家工厂、4000名员工和5600万美元产值发展到82家工厂、31000名员工和8亿美元产值。

High Voltage Power Solutions Inc公司的发展小趣事

1890年,Emerson在美国密苏里州圣路易斯市成立,最初是一家电机和风扇制造商。1892年,新公司靠交流电机起家,并生产出了第一批销往北美的电风扇,净销售额接近6万美元。随着技术的不断革新,Emerson于1897年开始生产吊扇,这一创新使得高层建筑更加宜居,吊扇业务迅速成为公司的重要收入来源。

Curtis Electromusic Specialties Inc公司的发展小趣事

CUI公司在发展过程中,始终注重市场拓展和品牌建设。公司通过与国内外知名企业的合作,不断拓宽产品应用领域,提升品牌影响力。同时,公司还积极参加各类行业展会和交流活动,与同行和客户建立紧密的合作关系,为公司的长期发展奠定了坚实的基础。

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
相对于其他安防设备,成本较低,适合大规模应用。

问答坊 | AI 解惑

成品LED摇摇棒电路图

1.这是一款浙江地区生产的摇摇棒成品电路图,根据实物绘出,单片机型号打磨掉了。 此款产品附带软件,可以在电脑上很方便的更改文字或者图片(COM口),10来元的产品,还算超值。 …

查看全部问答>

问个问题啊,我们这能刷分吗?

自己IP相近的机器,能用多个号刷分不?穷了…

查看全部问答>

workbench下编译下载的一个问题,请教

用的workbench3.0 选的是SIMNTdiab,编译通过,但是下载.OUT文件的时候 提示如下: “Please resolve following symbols before next download semBSmCreate smNameAdd” 不知道该如何解决,我是初学者一个。 源程序如下: #include #inc ...…

查看全部问答>

wince 软件分辨率问题,各位帮忙,谢谢

开发了一款软件,可是开发的时候模拟器的分辨率是640X480的,但最后公司拿来的硬件分辨率是320x240的,软件运行后只显示一个角,怎么办呢?…

查看全部问答>

执行到oeminit done就停止了。

遇到的问题,我加入一个驱动,执行到oeminit done就死了。 之后恢复到原来没有加入驱动之前的,仍然不行。重新编译也不行,重新安装wince,不行。 重新安装windows,不行。太奇怪了。哪位朋友了解的话,能否回复介绍一下?谢谢了。…

查看全部问答>

有关PIC系列单片机?

我想请问一个,有没有谁知道PIC系统单片机的编程工具和开发平台? 还有关于PIC18F6622芯片简介? 谢谢…

查看全部问答>

如何调用系统的手写输入?

VC中,如何去调用WinCE系统的自带的手写输入法? 谢谢!…

查看全部问答>

基于CAN控制电机转速——只用两个按键就可以实现电机的正反转

经过一段时间的学习,终于把CAN基本的东西给搞定,还有许多东西还要去学,在此先发一部分这段时间的学习内容,希望高手拍砖,让讨论抵御这大冷的冬天!! 在刚开始申请板子的时候是想采用232通信来完成电机的控制,但是拿到板子后发现该板子有好多 ...…

查看全部问答>