电力载波通信报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

任务书熟练掌握单片机串行通信,设计硬件电路实现单片机之间的双机通信,两个独立的系统能处理自己的数据信息,并能将实时的数据信息传递给另一个系统。要求:1.单片机之间通信要有简单的通信协议,保证通信的畅通。2.单个系统要有数据处理能力,之间的通信要简单明了。3.要能人为控制信息的交流,之间的通信要收人为控制在以上基础之上要实现电力载波通信,要将220V电力线作为通信介质,接受和发送单片机的数据信息。要求自己设计电力载波通信,能够将单片机的信号耦合到电力线上去,并能保证在一定的距离内单片机能够畅通通信绪论随着单片机系统的广泛应用和计算机网络技术的普及,单片机的通信功能越来越显得重要。单片机通信是指单片机与计算机或者单片机之间的信息交流。通信有并行和串行两种,在单片机系统以及现代单片机测试系统中,信息多是采用串行通信方式,串行通信也是单片机与外界信息交流的最基础的通信方式。单片机串行通信能进行远距离传送,但如果在传输过程中不对数据进行处理的话,那么数据信息会因为外界因素干扰而导致信息丢失,这时电力载波通信就是一种可行的方法,通过电力载波模块的作用,可以将单片机的数据信息耦合到电力线上去进行较远的距离传送。一般采用扩频编码的方式,抗干扰能力强,数据传输可靠,这样就克服单片机串行通信的缺点。本课程设计模仿电力载波通信,要求能够实现电力线上数据传输,在单片机双机通信的基础上,介入单片机之后能在一定的距离内仍旧能实现双机通信。一.方案论证本单片机课程设计题目为《电力载波通信》,实现单片机之间的双机通信,并能将其之剑通信信息偶喝到电力线上去,在一定距离内实现单片机在电力线上的信息传输。在双机通信部分,本课程设计采用的基于STC89C51单片机的串口通信,并且采用RS232进行双机通信。发送方的数据由串口TXD段输出,经过电力载波模块的耦合,数据信息传送到电力线上去之后进行数据传输,接收端使用MAX232芯片进行电平转换,信号到达接收方串口的接收端。在双方通信部分是实现全双工通信方式,双方能够实时的对数据进行处理显示,并且能够发送到另一方,并能进行显示,接收方在接收到信息之后要回馈一个信号给发送端,表示数据已经成功发送出去。在软件通信部分,软件采取简单的通信协议,以确保短距离传送数据信息的时候出现错误。最后附上简单的整体电路图。二.方案说明单片机之间的串口通信是单片机较为基本的功能,也是单片机与外界通信的常用方式,本设计是利用单片机的串口通信实现两篇单片机之剑的通信,,两个不同的系统之剑的信息交换。与平时做实验时候的串口通信实验相比较,本设计增加了对数据的处理和发送的设置,每个单片机与外部相连三个按键,一个数码管和一个二极管。按键S1,S2是对本地数据进行处理,加一和减一,并在数码管上进行显示,而S3则是发送确认按键,只有按下S3本地进行处理之后的数据信息才能发送到帘外一个单片机上面,并且当数据发送成功之后另一个单片机还会反馈一个信号使本地发光二极管闪一下,表示确认本地数据已经成功发送给另外一个单片机。电力载波部分采用的是“单相电力线载波调制解调器BWP08”,BWP08电力载波模块提供电力线上的通信功能,可以在220V/110V,50/60hz电力线上实现局域通信,也可用于直流线路或无线导体。该模块可以自由配置电力线上数据通讯模式,有两种通讯模式供用户选择:固定字节传输及固定帧长度传输。该模块为用户提供了透明的数据传输通道,数据传输和用户协议无关,模块采用扩频编码方式抗干扰能力强没数据传输可靠,通讯过程中由用户通讯协议验证数据的传输的可靠性。在同一台变压器下,多个BWP08模块可连接在用一条电力线上,在主从通信模式下,模块分别单独工作,不会相互影响。以上两部分组成本课程设计,电力载波通信的核心电路。三.硬件方案设计图二.STC89C51单片机引脚图1.STC89C51单片机的串口通信计算机与外界的信息交换成为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入,输出就是串行通信,并行通信的特点就是传输信号的速度快,但所用的信号线多,成本高,传输的距离较近,串行通信的特点是用两根信号线(一条信号线和一条信号回路)即可完成通信,成本低,传输的距离远。51单片机的借口是全双工的接口,他可以作为UART(通用异步接收和发送器)用,也可以作为同步移位寄存器用。51单片机的串口结构如下;1)数据缓冲器(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)可变(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:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。(4)波特率发生器波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。2.MAX232芯片用89C51串行接口通信,如果两台单片机之剑的距离很近(不超过1.5m),可以采用直接将两台单片机的串行接口相连,利用其自身的TTL电平(0-5V)直接传输数据信息。如果传输距离较远的话,由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错,此时可用RS232标准总线接口,将单片机输出的TTL电平转转换成RS232标准电平(逻辑电平1为-15V—+5V,逻辑0为+5V—+15V),用RS232可提高传输距离。3.电力载波模块BWP08电力载波模块BWP08的引脚图如图3所示。他是专门针对智能家居灯饰控制市场研发制作的,产品具有体积小,通讯可靠,通讯频点可调,功能可定制等特点,可以广泛用于智能家居灯饰控制家电控制等领域。BWP08电力载波模块采用5—12V宽电压设计,载波波特率100bps到300bps可调,有多种接口方式可供选择,包括UART,SPI等2种接口,可以方便的与单片机进行数据通讯,方便用户进行第二次开发,串行接口波特率可以由用户设定,共有四种波特率可以设置:1200bps,2400bps,4800bps,9600bps。BWP08电力载波模块使用TTL电平串口与用户系统进行链接,并使用交叉连接方式进行连接,通讯采用收,发,地三线制方式,当用户系统为TTL电平串口时可直接与模块进行交叉连接进行通讯,无须RS232电平转换,所以用户可以直接使用单片机的串行接口(UART)与模块进行链接通讯,当用户系统为标准RS232借口时,需要增加串口电平转换芯片进行电平转换,如:MAX232等芯片进行串口电平转换。四.软件方案设计通过简单的通信协议实现单片机全双工通信,每一个单片机即时数据信息的发送者也是信息的接受者,主机发送0X00给从机,并接受从机的回信,若不为0Xaa则主机一直停留在本地数据处理及显示这部分,若在某时认为按下发送按钮S3,则主机发送0Xaa给从机,从机若接到信息则跳出处理数据信息部分并回答主机0Xbb,主机接收到回答后,便开始把本地处理的数据传送给从机,从机接收到数据信息key之后在本地数码管上显示出来。1.串行通信软件实现1).串行口工作于方式一:用定时器1产生9600bit/s的波特率,工作于方式二。2).功能:双方单片机能实时通信,并且能人为控制信息的发送,接收方的回馈信号,以确定收到数据。3).通信协议:主机发送联络信号0Xaa,从机接收到联络信号后回答0Xbb表示好已经准备接收数据。2.程序流程图主程序开始发送OXaa程序初始化数据处理keydeal发反馈信号发送key发送0x00发送0xbbP3是否按下收到0XBB?二极管亮收到0Xaa收到key五.调试按附录3,仿真三在proteus上接好的硬件图,然后将附录一中的程序在keil中编译成HEX文件下载到单片机中,有如下结果:仿真开始后。两片单片机系统中的数码管都显示“5”,两边有独立的按键“S1—当前数值+1,S2—当前数值-1,S3—将单前数值发送到两一个单片机系统”按下左边S1之后左边数码管显示“6”,然后按下右边S2,右边数码管显示“4”,按下左边的S3之后右边的数码管显示“6”,同理操作右边的按键之后显示也是一样的。MAX232之间的引脚高低电平在不断变化,两个单片机系统之间在不断通信,进行数据通讯,只要人为对数据信息进行处理发送,两边便能保持通信。六.技术小结在写这个实验报告的时候单片机课程设计已经进入尾声经过繁忙而紧张的学习和查阅资料,最后做完了设计,最后都基本上大道了要求,但是在电力载波模块这方面还不是特别理想,仍然还是有时候会有点小问题,但是基本上已经实现了要求的功能。在双机通信这方面,本课程设计较为成功,完全实现了双机通信所要求的全部功能,两片单片机之间能够完全按照人的意志进行通信,并且很完美,没有错误,所要求的功能全部实现了。总之通过这次单片机课程设计,再长时间的翻书和查阅资料之中,加深了单片机C语言程序设计的理解,特别是在单片机串行通信方面,更是受益颇深。正如上面说的在这次课程设计之中也遇到不少问题,在实现双机通信之后,继续实现电力载波通信一直是一个大问题,在买到模块之后查阅各种资料,尝试各种方案都未能成功,最后网上通过询问最终解决问题,尽管走了不少弯路,但是最后成功了,心里还是蛮高兴的。总之听过这次单片机课程设计,在单片机的学习之中学到了不少更是体验到学习单片机的乐趣,锻炼了自己的思考问题的方式和方法。附录一实验主程序:#includereg51.h#defineuintunsignedint#defineucharunsignedcharsbitp1=P1^0;sbitp2=P1^1;sbitp3=P1^2;sbitset=P1^6;sbitled=P1^5;ucharkey;uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}voiddis(){set=0;P2=table[key];}voidsend(uchark){SBUF=k;while(!TI);TI=0;}voidkeydeal()//******{/*=========*/if(p1==0)delay(10);if(p1==0){key++;if(key==10)key=0;}while(p1==0);/*===========*/if(p2==0)delay(10);if(p2==0){key--;if(key==255)key=9;}while(p2=

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功