好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

17页
  • 卖家[上传人]:xmg****18
  • 文档编号:120479885
  • 上传时间:2020-02-06
  • 文档格式:DOC
  • 文档大小:453KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • . . .. 目录1. 题目设计要求: 12. 系统的组成及工作原理 22.1 系统组成 22.2 工作原理 22.3 双机通讯的方案 33. 系统硬件电路 44. 软件设计 54.1 甲机程序设计 54.2 乙机程序设计 85. 系统仿真调试 126. 设计体会和收获 137. 参考文献 14 1. 题目设计要求:甲乙两机串口双向通信设计要求:利用51单片机,RS232芯片,LED灯,数码管进行双机通信设计甲机可按键控制乙机的LED显示;乙机可按键控制甲机的数码管显示完成以下设计环节: 1)使用Altium Desinger开发工具,设计电路原理图 2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序 3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真 2. 系统的组成及工作原理2.1 系统组成 本次设计是用两个单片机(称为甲机和乙机)之间采用方式1双向串行通信。

      甲机的按键可通过串口控制甲机、乙机的2个LED灯,按一次甲机、乙机的LED1点亮,LED2灭,按两次甲机、乙机LED1灭,LED2点亮,按三次甲机、乙机的LED1和LED2全亮 乙机的按键课控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上,由此设计出总体框图LED显示按键数码管显示LED显示按键STC89C51R1STC89C51R1图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,重复上述过程开始等待按键初始化乙机查询接收输出完成?F乙机回送应答T甲机发送甲机中断接收应答T结束LED闪烁图4.1甲程序设计框图甲机程序://----------甲机程序代码------------#include#define uint unsigned int#define uchar unsigned charsbit led1=P1^0;sbit led2=P1^3;sbit key=P1^7;//------共阳极数码管段码---------uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};uchar num;//------延时------void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}//------串行口发送函数------void transfer(uchar c){ SBUF=c; while(TI==0); TI=0;}void main() //主函数{ 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) { case 0: transfer(D); led1=1; led2=1; break; case 1: transfer(A); led1=0; led2=1; break; case 2: transfer(B); led1=1; led2=0; break; case 3: transfer(C); led1=0; led2=0; break; delay(100); } }}void recieve() interrupt 4{ if(RI==1) { RI=0; P0=~table[SBUF]; }}4.2 乙机程序设计乙机程序设计框图如下(图4.2),开始将两个单片机进行初始化。

      然后按动按键K2,乙机发送信号,甲机查询接收后回送应答,乙机中断接收应答,甲机的数码管开始计数再次按动按键K2,重复上述过程开始等待按键初始化甲机查询接收输出完成?F甲机回送应答T乙机发送乙机中断接收应答T结束 数码管显示图4.2乙机设计框图乙机程序://----------乙机程序代码------------#include#define uint unsigned int#define uchar unsigned charsbit led1=P1^0;sbit led2=P1^3;sbit key=P1^7;uchar num=10;//------延时------void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void main() //主函数{ 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; } }}void recieve() interrupt 4{ 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. 系统仿真调试 编译好代码后,用Proteus ISIS画好原理图,把编译好的甲乙两机程序的HEX文件,下载到原理图的单片机U1、U2中,点击运行系统仿真,查看显示效果,当按动K1时甲乙两机的LED发生变化,当按动K2时甲机的数码显示管开始计数。

      经过测试显示结果与预期结果一致,系统运行正常图5.1 测试结果图 6. 设计体会和收获最初选择双机串行通信这个实验时,由于从未接触过这类设计,感到新鲜的同时不乏挑战性现在终于将它完成了,感到受益颇多第一,这是一份考验我们自觉性、动手能力与协作意识的任务第二,未知并不可怕,可怕的是因未知而止步我们在课堂上所学的知识是非常有限的,这次的课程设计就是个很好的体现很多函数的运用我们还没掌握,一些简单的循环语句都可能出错实践后才能真的知道我们真正掌握了多少第三,团结就是力量一点都不假在团组合作时我们更便于互相取长补短,相互讨论,效果很好通过本次课设实验我们对自身进行了查缺补漏,是自己对单片机这门课程有了更深的了解,对我们以后的工作有了很大的帮助同时通过老师对我们的讲解,对各种知识的理解进一步加深,在此对老师深表感谢总之在这次的实验中我们更加丰富了自己使自己有了进一步的提高 7. 参考文献1.《单片机语言C51典型应用设计》 人民邮电出版社;刘文涛编著 2015.10 2.《μVision2单片机应用程序开发指南》科学出版社;尹勇 李宇编著 2012.2 3.《单片机原理与应用系统设计》清华大学出版社:马秀丽编著 2014.10 专业.专注 .。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.