北京交大单片机课程设计串行通信之多机通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计
串行通信之多机通信
完成日期:2009年7月11日
目录
一、设计目的 (1)
二、实现功能 (1)
三、元件清单 (1)
四、总体框图 (2)
五、基本原理 (4)
六、软件仿真 (4)
七、拓展说明 (6)
八、课程设计完成感想 (7)
九、程序清单 (8)
一、设计目的
1.了解单片机串行通信的工作原理。
2.掌握串行口工作方式的程序设计及点对点通信电路连接方法
二、实现功能
基本实验要求:
利用两台单片机实验平台完成两台单片机间点对点通信。
1.完成两台单片机间一主一从的单工通信。主机发送数据,从机接收数据并在数码管上显示。
2.完成两台单片机的全双工通信。通信双方的任一单片机可同时发送和接收数据,并将数据在各自的数码管上显示。
经过和老师的沟通协商,最后实现功能改为:
实现两个或两个以上单片机间的多机通信,具体方式为:
1.三个51单片机间进行“1主对2”全双工多机通信。
2.主机可以将其数码管显示的内容发送给每个从机,也可以采集每个从机数码管
显示的数据并求和后显示出来,同时从机也可以主动发送数据给主机。
3.每个单片机的数码管显示值可以通过外接的按键进行设置。
三、元件清单
AT89S52单片机………………………………………………3个
74LS47译码器………………………………………………6个
七段数码管………………………………………………6个
复位电路………………………………………………三套
晶振电路………………………………………………三套
不带锁按键………………………………………………6个
电源电路………………………………………………一套
四、总体框图
五、基本原理
本课程设计的重点和难点在于对于多机通信的标志位SM2及相关寄存器的运用。
MCS-51单片机串行通信口控制器SCON中的SM2为方式2或方式3的多机通信控制位。当串行口以方式2或方式3工作时,若SM2设为1,此时只有当串行口接收到的第9为数据RB8=1时,才置“1”中断标志RI,若收到的RB8=0,则不产生中断标志,信息被丢掉。
从机系统有初始化程序将串行口设定为方式2接收,即9位异步通信方式,且置“1”
SM2和REN,允许串行口中断。在主机和某一个从机通信之前,先将从机地址发送给各个从机系统,接着才开始传送数据或命令,主机发出的地址第9位为“1”,数据(包括命令)信息的第9位为“0”。当主机向各个从机发送地址时,各从机的串行口接收到的第9位信息及RB8为“1”,则置中断标志位RI为“1”,各从机响应中断,执行中断服务程序,判断主机送来的地址是否和本机地址相符合,若为本机地址,则该从机清零SM2位,准备接收主机的数据或命令;若地址不相符,则保持SM2为“1”状态,接着
主机发送数据,此时各从机串行口接收到的RB8=0,只有于前面地址相符合的从机系统(即已经将SM2清零的从机)才能激活中断标志位RI,从而进入中断服务程序,在中断服务程序中接受主机的数据或执行主机的命令,实现和主机的信息传送;其他从机因SM2保持“1”,又RB8=0不激活中断标志RI,所接收的数据丢失不做处理,从而实现主机和从机间的通信。
这种控制方式是主从式工作方式,由主机控制从机的接收和发送。
综上所述,本系统实现的过程总结如下:
(1)把全部从机的串行口初始化为工作方式2或方式3,置位SM2,允许中断。
(2)主机置位TB8,发送要寻址的从机地址。
(3)所有从机均接受主机发送的地址,并各自进入中断服务程序,进行地址比较。
(4)被寻址的从机确认后,把自身的SM2清零。
(5)主机向从机发送命令,通知从机是进行数据接收还是进行数据的发送。
(6)主机和从机进行数据通信。
六、软件仿真
Proteus调试与仿真:
在keil中建立程序文件,调试成功生成hex文件。在proteusISIS界面中,单击按钮启动仿真。
主机操作如下:
(7)每按下“加1”键,数码管显示值加1;
(8)每按下“汇总数据”键,主机数码管显示值变为从机1的显示值+从机2的显示值之和;
(9)每按下“发送从机1”键,从机1的数码管显示的数据为此时主机的数码管上的数据;
(10)每按下“发送从机2”键,从机2的数码管显示的数据为此时主机的数码管上的数据。
从机操作如下:
(1)每按下“加1”键,数码管显示值加1;
(2)每按下“发送”键,向主机发送数据;
(3)运行中的数码管显示值随主机的操作而发生改变。
——仿真片段1:主机将6发送给从机1.
——仿真片段2:主机将数据10发送给从机2.
——仿真片段3:主机接收从机1和从机2数据之和。
——仿真片段4:从机1向主机发送数据
——仿真片段5:从机2向主机发送数据
七、课程设计完成感想
单片机课程设计的时间还是非常充裕的。两天的时间,用来查阅资料和选择题目。
事实上,串行通信这个题目并不是我特别想做的。电子琴和led点阵显示都是很好很有趣的题目,可是稍微打听一下,周围的同学好多都选定了这些题目,而且这个学期的嵌入式课程设计的题目已经做过了类似的作品。对于串行通信、总线知识,我们了解的并不是很深入,可以说只是知其然而不知其所以然。因此,我打算挑战一次自己,来尝试去完成这个题目的课程设计。
然而,这个过程是相当艰辛的。从一开始审题就是如此。刚开始接触通信专业知识到现在,通信方式一直都是一个很基本的常识。什么叫单工通信,什么叫半双工、双工。
原来以为这些概念早已是小儿科的问题,可是等到真正用到的时候,却发现不是那么回事。实际上全双工通信并不是那么容易就能够实现的,并不是所有总线协议都能够实现同时收同时发的功能。对于老师题目界定很模糊,所以,另一个和我一起想挑战自我,并且在完全没有商量的情况下选了同样题目的女生决定去找老师把题目的功能的弄清楚。
通过跟老师的交流,我们对于上面提到的一些概念有了更加深入的认识。并且决定做多机通信。虽然说,多机通信,如果要焊板子的话必须要买三块单片机才可以实现基本功能。但是对于已经决定了的我们,当时并没有想太多。
接下来就是写程序了。改了写,写了改,又是两天的时间,终于把程序调通了。鉴