




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用与仿真训练设计报告单片机多机通信姓 名: 学 号: 专业班级: 指导老师: 所在学院: 2011年7月 5 日24摘要本设计是基于at89s52单片机温度检测传输的三机通信系统,有三个单片机组成,其中一个作为主机(上位机),控制并负责接收来自从机1号和从机2号采集的数据信息,并显示在数码管上。由主机发送控制信息(通过按键控制),确定是接收来自想要得到各从机数据。从机1号和2号是数据采集模块,用来采集室内或室外温度信息,并通过通信协议传送给主机。为保证三机通信可靠性,通信口要有识别功能,51单片机串行口控制寄存器scon中sm2位正是满足这一要求而设置的。当串行口以工作方式三工作时,接收和发送的信息都是11位数据,既包含sbuf寄存器传送的8位数据,还包括scon中可编程第9位数据即tb8或rb8,主机可通过设定tb8是0或1,来区别发送的是地址还是数据。从机都先将scon中的sm2设置为1,待主机发送地址信息,与本身的地址对照,如果是,则令从机sm2为0,准备接收主机信息并发送温度信息,如果不是,则继续等待。主机通过中断口接收数据,处理后显示在数码管上。此次设计由于只有一个18b20温度传感器,这里用三个任意的数据代替从机2采集温度数据,由于传输距离较短,这里不用max232,直接将主机的发送端接从机接收端,主机接收端连接从机发射端,仿真结果正常显示,实验结果正常。目录1概述21.1设计概述21.2多机通信基本原理21.3 通信协议22系统总体方案及硬件设计22.1总体设计方案22.2硬件电路设计23软件设计23.1控制流程图23.2串行口采集步骤23.3软件流程图2proteus仿真2课程设计体会2参考文献:2附件1:主机a源程序代码2附件2:原理图2河南理工大学课程设计1概述1.1设计概述目前在通信领域里,单片机一对一通信已经不能满足人们设计的需要,多机通信已经成为主要通信方式。单片机多机通信是指两台以上的单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的控制。目前单片机多机通信形式较多,常见的有星形、环形,串行总线型通信和主从式多机型四种。本设计采用的是主从式多机型,它是一种分散性网络结构,具有接口简单、使用灵活等优点。下图为主从式多机通信示意图:从机2从机1txdrxdat89s52主机 rxd从机n多机通信示意图1.2多机通信基本原理51用于多机通信时必须工作在方式2或方式3。以方式3为例,每发送一帧数据为11位:1位起始位(0),8位数据位和1位停止位(1),附加的第9位数据在非多机系统中为奇偶校验位,在发送端有scon的tb8产生,在接收端传送到开关电源模块scon的rb8。它还可设定为“0”或“1”作为在mtd2002多机通信中区分数据帧(0标志)还是地址帧(1标志)的标志。在mcs-51多机系统中有以下协议:所有的各从机均处于听命状态,即sm2=1,以便接收主机发来的地址,当接收到一帧信息的rb8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,否则中断屏蔽。当一从机进入相应的中断服务程序,把接收到的地址和本机的地址比较,如果相符合就令其sm2=0,并向主机发回本机地址以作应答,该从机就与主机联通,准备接收主机发来的命令或数据信息,而其他的未被寻址从机保持sm2=1并退出各自的中断服务程序。这样,只有sm2=0的从机才能接收到主机发送来的数据信息,顺利实现地址帧和数据帧的分离。被寻址从机在通信完成后重新使sm2=1,并退出中断服务程序,等待下次通信。1.3 通信协议要实现单片机和pc机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。单片机既可工作在同步移位寄存器方式下也可工作在uart(通用异步收发器)下。串行口的通信方式是由特殊功能寄存器scon来控制的。其各控制定义如下:sm0,sm1:工作模式设定位;sm2:允许使用方法2、3多机通信控制位;rb8:接收数据第9位;tb8:发送数据第9位;ti:发送中断标志;ri:接收中断标志。本文中工作方式为3,即9位uart定时器t1作为波特率发生器。1)串行通信波特率为9600bps;2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址/数据位的标志位),一位停止位;3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;4)主从机之间还应传送一些供它们识别的命令和状态字,如以c表示主机发送从机接收命令,以d表示从机发送主机接收命令等。2系统总体方案及硬件设计2.1总体设计方案多机通信模块共有四个基本模块组成,一是主单片机,主要功能是控制发送命令和接受从机发送的数据;二是从单片机1,负责采集温度数据,并发送到主机;三是从机2,功能作用同上,但也可以是其他数据,比如空气空气湿度、水分、相关气体含量等;四是显示模块,本设计采用数码管显示,数码管便宜简单、编程容易、易控制,同时硬件电路比较好设计等。下图为总体设计框图:温度传感器1at89s52主机从机1温度传感器2从机2按键控制数码管显示总体设计方案框图2.2硬件电路设计单片机最小系统有时钟电路、复位电路、电源电路组成,如下图(1) 时钟电路:单片机工作时,是一条一条地从rom中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。个机器周期包括12个时钟周期。如果一个单片机选择了12mhz晶振,它的时钟周期是1/12us,它的一个机器周期是12(1/12)us,也就是1us。没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。旁边的两个电容叫负载电容。一般单片机的晶振工作于并联谐振状态,它是根据晶振厂家提供的晶振要求负载电容选值的。晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。(2) 复位电路:上电复位电路上图是用作上电复位用的,vcc一上电,由于电容两端电压不能突变,所以rst上为高电平,然后电容放电,rst就为低电平了,放电时间为1/(r10*c),这个时间应该大于三个晶振周期。而那个开关的作用就是手动复位用的了。(3) 电源电路:电源电路见最小系统中的电源即是,较简单。(4) 显示电路:显示电路由四位共阴数码管组成,其中位选由单片机p2口提供,段选由p0(p0口已上拉电阻)口提供,其中位选处加限流电阻。(5) 温度采集电路:18b20vccdagnd18b20传感器是独特的一线接口,只需要一条口线通信,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 v至5.5 v 无需备用电源 测量温度范围为-55 c至+125 。根据ds18b20的通讯协议,主机(单片机)控制ds18b20完成温度转换必须经过三个步骤:每一次读写之前都要对ds18b20进行复位操作,复位成功后发送一条rom指令,最后发送ram指令,这样才能对ds18b20进行预定的操作。复位要求主cpu将数据线下拉500微秒,然后 释放,当ds18b20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主cpu收到此信号表示复位成功。(6) 传输电路:上图为max232电平转换芯片电路,其主要特点是:1、 符合所有的rs-232c技术标准。2、 只需要单一 +5v电源供电。3、 片载电荷泵具有升压、电压极性反转能力,能够产生+10v和-10v电压v+、v- 。4、 功耗低,典型供电电流5ma 。5、 内部集成2个rs-232c驱动器 。6、高集成度,片外最低只需4个电容即可工作。由于本次通信是单片机之间的通信,距离较近,此次设计过程中没用,直接将主机的发射口接从机接收口,主机接收口连接从机发射口。3软件设计3.1控制流程图多机温度检测系统设计流程图主机发送控制命令,确定由哪一个从机传送采集的温度数据,然后经过处理,显示在数码管上。3.2串行口采集步骤主机发送信息,可以传送到各个从机或指定从机,各从机发送的信息只能被主机接收。多机通信(关键是地址帧的识别)主机发送:地址帧、数据帧的鉴别是通过第9位数据确定:tb8=1,地址帧,tb8=0,数据帧;从机接收:各从机串行口工作在方式2、方式3下;多机通信标志sm2(scon.5)=1;检查接收到的第9位rb8(scon.2),当 rb8=1:地址帧,将地址装入sbuf,置位ri,发出接收中断请求;判断主机发送地址是否与本机相符,若相符,则将从机sm2清0(变成直通方式),准备接收其后传送来的数据。rb8=0:数据帧,对sm2=1,rb8=0的从机,接收数据丢弃,而对sm2=0的从机:直通方式,不论rb8是0还是1,都将接受到的数据送sbuf,并发出中断请求。多机通信的过程总结如下:(1)全部从机串行口工作方式初始化为2或3,置位sm2,允许中断;(2)主机置位tb8,发送要寻址的从机地址;(3)所有的从机均接收主机发送的地址,进入中断进行地址比较;(4)确认寻址从机,自身sm2清0,向主机返回地址供主机核对;(5)主机核对无误,向被寻址从机发送发送命令,通知从机进行一对一数据通信。等待主机发送地址否显示回应主机并发送数据发送从机地址at89s52初始化(主机)开始3.3软件流程图是从机号proteus仿真从机1显示如下:按下开关后,主机发送从机a地址,从机a收到地址和自己相比较,如果正确,则回应主机,然后发送温度数据,如果不正确,则继续等待。从机b温度显示如下:按下开关后,主机发送从机b地址,从机b收到地址和自己相比较,如果正确,则回应主机,然后发送温度数据,如果不正确,则继续等待。课程设计体会通过本次课程设计,进一步熟悉了单片机编程原理和数字控制电路技术的相关知识,使自己所学的理论知识得到巩固,并充分认识到了自己所学的专业知识的实用性和重要性,同时对proteuls操作更加熟练。过程中遇到了一些困难,如:多机通信协议部分地址和数据的如何安排发送等,显示电路中的驱动是否需要驱动等问题。经过查找相关资料和科技文献,和电子发烧友的同学们交流,一步步解决所遇到的困难。但是在解决这些问题的过程无疑是对自己自身专业素质的一种提高,同时也加深自己对专业技术的认识。这次课程设计,使我看到自身的不足和缺点,也使我学到了如何克服电子电路设计时的困难,希望今后类似这样的课程设计会更多,让我多一些机会锻炼自己的创新能力!参考文献:1 康华光.电子技术基础(模拟部分)(第五版).北京:高等教育出版社,2006.2 康华光.电子技术基础(数字部分)(第五版).北京:高等教育出版社,2006.3单片机原理及应用技术(第一版).中国矿业大学出版社,2008附件1:主机a源程序代码#include #define uchar unsigned char#define uint unsigned intuchar ch=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar ch1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uchar mode;uchar m1,m2,m3,m4;sbit p10 = p10;sbit p13 = p13;sbit p17 = p17;sbit p20 = p20;sbit p21 = p21;sbit p23 = p23;sbit p22 = p22;sbit p24 = p24;sbit p25 = p25;sbit key=p14;sbit key0=p12;void uart_init() tmod = 0x20; th1 = 0xfd; tl1 = 0xfd; tr1 = 1; scon = 0xd0; es = 1; ex0 = 1; it0 = 1; /int0下跳触发 ea = 1; ti = 0;void delayms(int ms) uchar i; while(ms-) for(i=0; i120; i+);void putc_to_serialport(uchar c) sbuf = c; while(ti = 0); ti = 0;void mastercontrol(unsigned char addr)/, unsigned char comd) tb8 = 1; putc_to_serialport(addr); delayms(50); tb8 = 0;void delay(int us) int s; for ( s=0; sus; s+); void disp() /int t1,t2, t0;p0 = 0xff;p0 = chm1;p23=0;delay(200);p23=1;p0 = 0xff;p0= ch1m2;p22=0;delay(200);p22=1;p0 = 0xff;p0 = chm3;p24=0;delay(200);p24=1;p0 = 0xff;p0 = ch0;p20=0;delay(200);p20=1;com_int(void) interrupt 4uchar i,k;es=0; if(ri=1) ri = 0; if(sbuf=b) i=i+1; else if(sbuf=d) k=k+1; else if(i=1) m1=0;m1=sbuf;i=i+1;else if(i=2)m2=0;m2=sbuf;i=i+1; else if(i=3)/i=0;m3=0;m3=sbuf;i=i+1; else if(i=4)i=0;m4=0;m4=sbuf;else if(k=1) m1=0; m1=sbuf;k=k+1; else if(k=2)m2=0;m2=sbuf;k=k+1;else if(k=3) /k=0;m3=0;m3=sbuf;k=k+1;else if(k=4) k=0;m4=0;m4=sbuf; es=1;void main(void) p1 = 0xff; uart_init(); mode = 0; while(1) if(key=0)delayms(35);if(key=0)key0=1;p10 = 1; mastercontrol(b);/,o);if(key0=0)delayms(35);if(key0=0) key=1; p13 = 1; mastercontrol(c);disp(); 从机b程序代码:#include #includeds18b20.h#includeintrins.h#define uchar unsigned charuchar m1,m2,m3;uchar recdata;sbit p10 = p10;sbit p13 = p13;sbit p24 = p24;sbit p23 = p23;sbit p25 = p25;void uart_init() tmod = 0x21; th1 = 0xfd; tl1 = 0xfd; tr1 = 1; scon = 0xf0; es = 1; ps = 1; ea = 1;void delayms(int ms) uchar i; while(ms-) for(i=0; i120; i+);void delay1(uint ms) uchar y ; while(ms-) for(y = 0 ; y250 ; y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; void putc_to_serialport(uchar c) sbuf = c; while(ti = 0); ti = 0;void dispy() /p0 = 0xff;p0 = chdisp0;p23=0;delay(60);p23=1;/p0 = 0xff;p0= chdisp1;p25=0;delay(60);p25=1;/p0 = 0xff;p0 = chdisp2;p24=0;delay(60);p24=1;com_int(void) interrupt 4 es=0; if(ri) uchar i; recdata = sbuf; ri = 0; if(rb8 = 1) if(recdata = b) sm2 = 0;putc_to_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美发行业劳务合同范本
- 软件项目合同补充协议
- 租车位充电桩合同范本
- 购车贷款协议合同书写
- 淘宝服装模特合同范本
- 高标农田承包合同范本
- 自动磨刀转让合同范本
- 饭店兼职员工合同范本
- 自家荒地出售合同范本
- 预售动迁期房合同范本
- 2024年第九届“学宪法、讲宪法”竞赛题库试卷及答案
- 北京教育出版社心理健康一年级教案
- 树木物候期观察讲解
- 电子离婚协议书模板
- GB 30180-2024煤制烯烃、煤制天然气和煤制油单位产品能源消耗限额
- 《祝福》(教学课件)- 统编版高中语文必修下册
- 兴城市2021年(中小学、幼儿园)教师招聘试题及答案
- 托班育儿知识讲座
- 危化品运输安全培训的事故案例与分析
- 流体力学在化工中的应用
- JJG 443-2023燃油加油机(试行)
评论
0/150
提交评论