欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于51单片机的双机串行通信课程设计.docx

    • 资源ID:6799263       资源大小:64.46KB        全文页数:10页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机的双机串行通信课程设计.docx

    1、基于51单片机的双机串行通信课程设计基于51单片机的双机串行通信课程设计一、总体设计1设计目的1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理;2.通过软件仿真熟悉keil和proteus的配合使用;3.通过软件编程熟悉51的C51编程规范;4.通过实际的硬件电路搭设提高实际动手能力。2.设计要求:两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0f动态循环发送到A机,并在其数码管上显示。3.设计方案:软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编

    2、码数组。B收到0x06后就把数码表TAB16中的数据送给从机。二、硬件设计1.51单片机串行通信功能图1.AT89C51(52)计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:(1)

    3、数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。(2)串行控制寄存器(PCON)SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:SM0SM1SM2RENTB8RB8TIRISM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表SM0SM1工作方式功能波特率 0008位同步移位寄存器(用于I/O扩展)fORC/1201110位异步串行通信(UART)可变

    4、(T1溢出率*2SMOD/32)10211位异步串行通信(UART)fORC/64或fORC/3211311位异步串行通信(UART)可变(T1溢出率*2SMOD/32)SM2:多机通信控制位。REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。RI:接收中断标志。接收完一帧

    5、数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。(4)波特率发生器波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。(5)电源控制寄存器PCON其最高位为SMOD。(6)波特率计算当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。由于是定时方式,T1计数率= fORC/12。产生溢出所需机器周期数=模

    6、M-计数初值X。3.整体电路设计最终设计电路如下图3所示,发送方的数据由串行口TXD段输出,经过传输线将信号传送到接收端。信号到达接收方串行口的接收端。接受方接收后,通过P1口在数码管上显示接收的信息。图3.串行通信电路三、软件设计(1)串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。(2)功能:将本机ROM中数码表TAB16中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。(3)通信协议:主机首先发送连络信号从机接收到之后返回一个连络信号表示从机已准备好接收。四、联合调试在protues上进行仿真实验。首先使用Keil

    7、C将编写完成的程序编译生成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,结果如下图所示,可以看到,接收端已将接受到的数据完整的显示了出来。图4.仿真图注:1.仿真的过程中并没有体现出单片机的最小系统的组成元素:时钟电路和复位电路,但是实际的硬件电路中这两部分是必不可少的,此外,在实际测试中,程序是事先烧进单片机里的,所以这里并没有涉及到电平转换的问题(max232芯片和串口的连接)。2.在数码管的共阴极与地之间接三极管是为了放大数码管的驱动电流,让数码管更加清楚的显示数据。附:主要器件:两个STC89C52RC 晶振模块:两个11.0592M的晶振四个30pf的电容 复位模块:两个

    8、开关两个10uf的电容两个10K的电阻两个1K的电阻 显示模块:两个单显共阴极数码管两个NPN型三极管五、程序清单1.A机程序#include#includesbit key=P36;void sendrecieve();void main() P1=0XFF; TMOD=0x20;/定时器1工作作方式2 TH1=0XFD; TL1=0XFD;/波特率为9600 PCON=0X00;/波特率不加倍 TR1=1; SCON=0X50;/串口工作方式为3,即11为可变波特率, /开启允许串口接收中断,多机通讯位SM2置1(广播),TB8置1(表示发送地址) /开发送及接受中断 EA=1; key=

    9、1; sendrecieve(); void sendrecieve() SBUF=0X06; while(TI!=1);/等待数据发送完成,发送完则ti置1,否则为0 TI=0; while(1) while(RI!=1);/等待接收数据完成 RI=0; P1=SBUF; /显示B发送来的数据 2.B机程序#include#includevoid sendrecieve();sbit key=P36;unsigned char code led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79

    10、,0x71;/共阴极,标准接法(a-h PX.0-PX.7)unsigned int i;delay(unsigned int z) unsigned int x,y; for(x=z;z0;z-) for(y=6000;y0;y- ); /50ms void main() P1=0XFF; TMOD=0x20;/定时器1工作作方式2 TH1=0XFD; TL1=0XFD;/波特率为9600 PCON=0X00;/波特率不加倍 TR1=1; SCON=0X50;/串口工作方式为3,即11为可变波特率, key=1; /开启允许串口接收中断,多机通讯位SM2置1 EA=1; delay(20);

    11、 sendrecieve();void sendrecieve() while(RI!=1); P1=SBUF; RI=0; for(i=0;i16;i+) SBUF=ledi; /向A发送信息 while(TI!=1);/等待数据发送完成,发送完则ti置1,否则为0 TI=0; delay(60); /3s i=0;六、课设中遇到的问题及解决办法:1.在数码管显示模块连接三极管时,由于万用表的测试三极管的环节接触不良,着实有点让人头疼,但是最后通过借了别租的表才解决了问题,而且我们找到了三极管上的型号与之性质的对应关系;2.由于这次我们的课设内容比较简单,所以我们在软件环节没有没遇到什么困难

    12、,在软件仿真时也很顺利,但是在最后焊接板子的时候,我们却遇到了问题:数码管的各管脚的排列顺序不是遵循一定的规律的,所以在焊接时要特别注意布局与布线,在这个环节上我们花费了吗大半的时间。七、课设中的心得体会:负责总体思路设计,代码编写,软件仿真,并且参与最后的测试工作。本次课程设计我们组主要研究的是双机通信实验,通过与组成员之间的合作,在开始的前两天中,主要是通过查找资料,或是在图书馆里查看书籍来学习有关双机通信实验的基本要求和实验所需要的器件,以及各实验器件所实现怎样的功能。经过了我们四个人的协商,由两个人开始编写代码,再由两个人开始设计实验电路。在编写程序代码的时候,使我学习到了最大的是MC

    13、S51单片机的中断程序的编写。在编写程序的时候由于之前只是在课堂上和书本上学习的有单片机中的中断源以及中断向量,所以在实践的编写代码过程中会遇到很多不懂的问题,需要自己或者与同组成员相互沟通。并且也学会了单片机的有关中断设计的思想,由于我们是制作双机通信的课程设计,所以在实验中需要用到两片单片机作为主从机来控制信号的接受与发送。还学习到了单片机在使用中断的时候,如果有中断申请的话,硬件电路会自动把单片机里接受发送中断的TI和RI置1.这样就表示单片机此时有外部中断的申请,必须开中断来接受发送过来的信号。大概两天的时间,我们就把初步的软件程序和硬件电路设计好了。并且在PROTEUS的仿真器件中实

    14、现了硬件电路的连接,然后我们把PROTEUS的仿真硬件和51的程序下载到单片机中通过调节实验硬件和共同修改软件程序最终实现了器件的仿真。接下来就是焊接电路的工作了,由另外的组员来实现大部分的硬件电路的焊接,从中我也学习帮忙,尽快完成我们的全部的设计内容。在完成了所有的焊接的时候,把程序下载到单片机中后,发现了数码管显示的和预期设置的有些不同,在经过简单的修改之后,我们成功的完成了我们的实验作品。在此次课程设计中我学习到了好多新的知识以及通过了团队小组的合作受益匪浅。 与罗军昌同学一起进行程序设计的思路整合与优化,并采集实验结果,编写报告。这次课程设计的题目比较简单,我们感觉自己完成的也比较好,

    15、至少所用到的知识都是在自己理解的基础之上,我们采用了一位动态显示的数码管,数码管的工作原理;我们在硬件连接完成好以后进行检测,当我们检测所有的焊点都没有问题后,让单片机发送数据。我们用了C语言程序,实现了实验的要求。通过两个星期的学习,我们在巩固和学习硬件知识的同时,用软件控制协调硬件实现现实功能,通过硬件完成软件的功能等方面的融会贯通,取得了一定的效果。软件编写时,对于某些指令的功能,功能模块的连接,等都到了小问题,不过我们查阅资料得到了解决,与此同时,了解了不少的问题。 在这次设计中,我收获不少东西,也遇到了不少的问题。首先,在完成单片机课程学习任务后,对内容的掌握不够,缺乏灵活运用的能力

    16、,对于知识的扩展也存在一定的问题,因此,初面对设计课题,无法系统地进行设计思路的拟定。通过本次课程设计,不仅使理论知识得到了实践,有效巩固了知识。同时对于单片机发展历史、强大功能、应用领域以及系列知识得到了大概的系统认识,同时也初步了解了一个完整的系统开发的过程,对于创造思维的培养和开发能力的锻炼,本次设计,为此提供了一个很好的平台。负责硬件电路的搭建和测试与纠错。 经过繁忙而又紧张的课程设计,终于顺利的完成了设计任务。虽然在这段时间 里每天都那么繁忙,但是在这忙碌的过程中却得到了许多的收获。经过课程设计,在查阅资料的过程中,学习了基于单片机的C语言程序设计,了解了单片机串行通信的基本知识,对

    17、于以后的学习和工作都有很大的益处。在学习的过程中,也遇到了一些困难,比如开始的时候,由于发送端和接收端的通信协议没有做好,导致数据不能正确的传输,在解决问题的过程中,对于通信协议的实现有了深刻的认识。通过这次课程设计,我想真的是锻炼了自己独立思考的能力。查阅并收集课设中用到的相关的知识和资料,并参与硬件电路的焊接。我很清楚这个实验的目的,表面上我们最终仅仅只是实现了设计要求的基本功能,但我觉得,这次课程设计更加深刻的意义是从这样一个最基本,简单的实验中,从这样一个完整的过程中我了解一种系统设计的流程,甚至说是一种思路,思维。从最初拿到题目,分析设计要求以及实现的初步思路,然后去查阅资料进行更加

    18、具体的设计这次实验无疑要求我们团队协作,互相配合并且整体上比较全面的统筹设计。于是,初步规划后,我们开始将系统要实现功能的各个模块单独开来用PROTEUS仿真,并最终将各个模块组合后整体调试。整个过程中我们在仿真上花费了较长时间,因为知道仿真成功是实现真正硬件电路的基础,仿真是从根本上检验设计者的设计逻辑以及思路的,很好的仿真才能使得设计系统在实现要求功能的基础上更加稳定、简单,仿真中,我们仔细斟酌了电路布线的合理性。在焊接过程中,由于之前的统筹布局使得我们的电路布线简洁、明了,需要注意的是,由于焊接的粗心,有些焊点需要一再解焊导致焊盘脱落,而且对于数码管管脚焊接方式也是值得进一步改进的,这便是我今后所要更加注意的,争取全心全意的焊接电路,不要因为某些粗心的原因是电路焊接发生错误,在那个下午坚持不懈的努力下我们终于完成了任务,可以说是大部分的任务都是在那个下午一气呵成的。总的来说,在实验中,我们尽量统筹并使得团队协作发挥更大作用,第一周的周三分发元器件后,在第二天我们组便基本上完成了设计要求的基本功能,于是,我们利用剩下的时间去调试硬件以及更加深入的总结题目的意义。最后,作为本次实验小组的组长,我对大家辛勤劳作默契配合的合作精神深感欣慰,希望以后得到好的继承与发扬!


    注意事项

    本文(基于51单片机的双机串行通信课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开