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

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

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 1. 题目设计要求: 1 2. 系统的组成及工作原理 2 2.1 系统组成 2 2.2 工作原理 2 2.3 双机通讯的方案 3 3. 系统硬件电路 4 4. 软件设计 5 4.1 甲机程序设计 5 4.2 乙机程序设计 8 5. 系统仿真调试 12 6. 设计体会和收获 13 7. 参考文献 14 题目设计要求: 甲乙两机串口双向通信设计 要求:利用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口的数码管上,由此设计出总体框图。 图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甲程序设计框图 甲机程序: //----------甲机程序代码------------ #includereg51.h #define uint unsigned int #define uchar unsigned char sbit 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;x0;x--) for(y=110;y0;y--); } //--

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档