甲乙两机串口通信双向控制系统软件设计及系统仿真.docx

上传人:b****5 文档编号:6929019 上传时间:2023-01-12 格式:DOCX 页数:11 大小:149.35KB
下载 相关 举报
甲乙两机串口通信双向控制系统软件设计及系统仿真.docx_第1页
第1页 / 共11页
甲乙两机串口通信双向控制系统软件设计及系统仿真.docx_第2页
第2页 / 共11页
甲乙两机串口通信双向控制系统软件设计及系统仿真.docx_第3页
第3页 / 共11页
甲乙两机串口通信双向控制系统软件设计及系统仿真.docx_第4页
第4页 / 共11页
甲乙两机串口通信双向控制系统软件设计及系统仿真.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

甲乙两机串口通信双向控制系统软件设计及系统仿真.docx

《甲乙两机串口通信双向控制系统软件设计及系统仿真.docx》由会员分享,可在线阅读,更多相关《甲乙两机串口通信双向控制系统软件设计及系统仿真.docx(11页珍藏版)》请在冰豆网上搜索。

甲乙两机串口通信双向控制系统软件设计及系统仿真.docx

甲乙两机串口通信双向控制系统软件设计及系统仿真

 

1.题目设计要求:

甲乙两机串口双向通信设计

要求:

利用51单片机,RS232芯片,LED灯,数码管进展双机通信设计。

甲机可按键控制乙机的LED显示;乙机可按键控制甲机的数码管显示。

完成以下设计环节:

1〕使用AltiumDesinger开发工具,设计电路原理图。

2〕使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。

3〕使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。

2.系统的组成及工作原理

2.1系统组成

本次设计是用两个单片机〔称为甲机和乙机〕之间采用方式1双向串行通信。

甲机的按键可通过串口控制甲机、乙机的2个LED灯,按一次甲机、乙机的LED1点亮,LED2灭,按两次甲机、乙机LED1灭,LED2点亮,按三次甲机、乙机的LED1和LED2全亮。

乙机的按键课控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上,由此设计出总体框图。

 

图2.1总体框图

2.2工作原理

双机通信系统通过甲乙单片机的串行口来实现数据的收发。

甲单片机通过开关电路来启动发送程序,甲机当开关按下时向乙机发送一个数据,乙机上蜂咛器发出声音提示有数据发送过来,乙机通过接收中断来接收和开关判断是否接收甲机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示主机发送过来的数据。

乙单片机通过开关电路来启动发送程序,乙机给甲机发送一数据,甲机上蜂咛器发出声音提示有数据发送过来,甲机通过接收中断来接收和开关判断是否接收乙机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示乙机发送过来的数据。

2.3双机通讯的方案

设计方案:

该系统采用主从共两片AT89C51单片机来实现上位机对下位机的控制,由于是近距离的双机通信,我们采用单片机直接穿插连接的方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。

需要注意的是一定要保证主从机一样的数据传输速率,即要求设置一样的波特率。

电路分为数码管显示模块,指示模块、以及单片机工作的根本复位、晶振模块。

甲机由3个数码管,4个独立键盘开关,1个蜂咛器组成。

乙机由8个发光二极管,一个蜂咛器,1个数字温度传感器DS18B20组成。

单片机上最根本的两个电路:

复位电路〔图2.2〕和晶振电路〔图2.3〕

图2.2复位电路图

图2.3晶振电路图

3.系统硬件电路

第一步将两组按键和LED灯分别连接到单片机U1、U2的P1口,第二步将单片机U1的P0口分别连接到数码显示管上进展显示,第三步将单片机U1的P0口连接到排阻上,第四步分别将单片机U1、U2的P3口连接到各自的线驱动器/接收器上,第五步将两个线驱动器/接收器分别连接到各自的DB-9接口上,最后再将单片机U1、U2通过DB-9连接器进展连接,来实现双机通讯。

图3.1线路原理图

4.软件设计

本系统的软件设计流程图。

系统设计代码分为以下几个局部:

初始化串行、发送数据、接收数据、键盘输入、数值转换、LED显示,数码管显示,用keil编译。

4.1甲机程序设计

甲机程序设计框图如下〔图4.1〕,开场将两个单片机进展初始化。

然后按动按键K1,甲机发送信号,乙机查询接收后回送应答,甲机中断接收应答,两机的LED闪烁。

再次按动按键K1,重复上述过程。

图4.1甲程序设计框图

甲机程序:

//----------甲机程序代码------------

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitled1=P1^0;

sbitled2=P1^3;

sbitkey=P1^7;

//------共阳极数码管段码---------

ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

ucharnum;

//------延时------

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

//------串行口发送函数------

voidtransfer(ucharc)

{

SBUF=c;

while(TI==0);

TI=0;

}

voidmain()//主函数

{

num=0;

P0=0x00;

SCON=0x50;//串行口工作在方式1,既可以发送数据,也可以接收数据

TMOD=0x20;//定时器T1工作在方式2

PCON=0x00;

TH1=(256-253)/32;

TL1=(256-253)%32;

RI=0;

TI=0;

TR1=1;

IE=0x90;//串行口中断翻开

while

(1)

{

if(key==0)

{

while(key==0);

num=(num+1)%4;

}

switch(num)

{

case0:

transfer('D');

led1=1;led2=1;

break;

case1:

transfer('A');

led1=0;led2=1;

break;

case2:

transfer('B');

led1=1;led2=0;

break;

case3:

transfer('C');

led1=0;led2=0;

break;

delay(100);

}

}

}

voidrecieve()interrupt4

{

if(RI==1)

{

RI=0;

P0=~table[SBUF];

}

}

4.2乙机程序设计

乙机程序设计框图如下〔图4.2〕,开场将两个单片机进展初始化。

然后按动按键K2,乙机发送信号,甲机查询接收后回送应答,乙机中断接收应答,甲机的数码管开场计数。

再次按动按键K2,重复上述过程。

图4.2乙机设计框图

乙机程序:

//----------乙机程序代码------------

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitled1=P1^0;

sbitled2=P1^3;

sbitkey=P1^7;

ucharnum=10;

//------延时------

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidmain()//主函数

{

SCON=0x50;//串行口工作在方式1,既可以发送数据,也可以接收数据

TMOD=0x20;//定时器T2工作在方式2

PCON=0x00;

TH1=(256-253)/32;

TL1=(256-253)%32;

RI=0;

TI=0;

TR1=1;

IE=0x90;//串行口中断翻开

led1=led2=1;

while

(1)

{

if(key==0)

{

while(key==0);

num=(num+1)%11;

SBUF=num;

while(TI==0);

TI=0;

}

}

}

voidrecieve()interrupt4

{

if(RI==1)

{

RI=0;

switch(SBUF)

{

case'A':

led1=0;led2=1;

break;

case'B':

led1=1;led2=0;

break;

case'C':

led1=0;led2=0;

break;

case'D':

led1=1;led2=1;

//delay(100);

}

}

else

led1=led2=1;

}

5.系统仿真调试

编译好代码后,用ProteusISIS画好原理图,把编译好的甲乙两机程序的HEX文件,下载到原理图的单片机U1、U2中,点击运行系统仿真,查看显示效果,当按动K1时甲乙两机的LED发生变化,当按动K2时甲机的数码显示管开场计数。

经过测试显示结果与预期结果一致,系统运行正常。

图5.1测试结果图

6.设计体会和收获

最初选择双机串行通信这个实验时,由于从未接触过这类设计,感到新鲜的同时不乏挑战性。

现在终于将它完成了,感到受益颇多。

第一,这是一份考验我们自觉性、动手能力与协作意识的任务。

第二,未知并不可怕,可怕的是因未知而止步。

我们在课堂上所学的知识是非常有限的,这次的课程设计就是个很好的表达。

很多函数的运用我们还没掌握,一些简单的循环语句都可能出错。

实践后才能真的知道我们真正掌握了多少。

第三,团结就是力量一点都不假。

在团组合作时我们更便于互相取长补短,相互讨论,效果很好。

通过本次课设实验我们对自身进展了查缺补漏,是自己对单片机这门课程有了更深的了解,对我们以后的工作有了很大的帮助。

同时通过教师对我们的讲解,对各种知识的理解进一步加深,在此对教师深表感。

总之在这次的实验中我们更加丰富了自己使自己有了进一步的提高。

7.参考文献

1.?

单片机语言C51典型应用设计?

人民邮电;文涛编著2021.10

2.?

μVision2单片机应用程序开发指南?

科学;勇宇编著2021.2

3.?

单片机原理与应用系统设计?

清华大学:

马秀丽编著2021.10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1