串行通讯论文1

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

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

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

资源描述

串行通讯课设报告撰写人:同组人:同组人:指导老师:专业:电子科学与技术-1-目录一、摘要及关键字--------------------------------2二、课设功能分析与描述--------------------------2三、硬件电路分析设计----------------------------4四、软件设计------------------------------------6五、调试过程-----------------------------------11六、实现功能描述-------------------------------17七、总结---------------------------------------18八、参考文献-----------------------------------18-2-一、摘要及关键字【摘要】我们第七课设小组的课题是设计实现两单片机之间的串行通讯。按照课程设计题目的要求,我们将使用用两片AT89C52单片机实现双机串口通信:甲、乙两单片机均有发送和显示功能,即均可作为主机发送信号,且可作为从机接收信号。对于主机的数值输入,我们通过扫描4*3矩阵键盘键入的数值实现;而对于接收信号的显示,我们使用八段数码管完成。程序在KEIL软件环境下使用C语言编写和调试。【关键字】单片机,串行通信,输入,显示,keil二、题目功能分析与描述1.设计要求两片单片机之间进行串行通信,按键编号发送接收、显示。⑴、能向对方机发送按键的数。⑵、能接收对方机发送的数并显示。⑶、接收数据用串口中断实现。⑷、用串行口的全双工方式通信。(5)、能显示本机要发送的数据。资源:单片机实验开发系统:矩阵键盘,开关量输入模块,LED输出模块,数码管(LED)显示器,液晶显示器,点阵显示模块。-3-2.通信方式分析在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可分为三种制式。1).单工制式(Simplex)单工制式是指甲乙双方通信只能单向传送数据。单工制式如图1所示。发送器A接收器B图1单工制式2).半双工制式(Halfduplex)半双工制式是指通信双方都具有发送器和接收器,双方既可发送也可接收,但接收和发送不能同时进行,即发送时就不能接收,接收时就不能发送。半双工制式如图2所示。发送接收发送接收A端B端图2半双工制式3).全双工制式(Fullduplex)全双工制式是指通信双方均设有发送器和接收器,并且将信道划分为发送信道和接收信道,两端数据允许同时收发,因此通信效率-4-比前两种高。全双工制式如图3所示。发送接收接收发送A端B端图3全双工制式根据以上叙述,符合本题要求的是后两种方式。三、硬件电路分析设计1.方案选择方案一:用独立键盘输入,用独立数码管显示;方案二:用独立键盘输入,用八位数码管显示;方案三:用矩阵键盘输入,用八位数码管中的一位显示;方案四:用矩阵键盘输入,用1602液晶显示发送数据。因为前两种方案过于简单,而第四种方案应用时程序员工作量较大(程序比较繁琐),所以选第三种方案。2.材料准备根据所选方案选取两个在网上订购的普中科技单片机试验板作为硬件材料,其中设计中用到的主要元件有:1、AT89C52单片机两片2、八位数码管两个3、4*3矩阵键盘两个4、导线若干以下为开发板上各硬件资源的电路原理图:-5-图4AT89C52图5八位数码管-6-图6矩阵键盘3.硬件设计选定连线:P1口--JP4;P2口--J12(注意P2口);P0口--JP3;P3^2--J16最下脚;P3^1,P3^0两机交叉连接;电源和地连接在一起。四、软件设计1).串行数据缓冲器SBUFSBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器,以便能以全双工方式进行通信。此外,在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,这样可以避免在数据接收过程中出现帧重叠错误。发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路不需要双重缓冲结构。在逻辑上,SBUF只有一个,它既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H。但在物理结构上,则有两个完全-7-独立的SBUF,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。2).串行控制寄存器SCON串行控制寄存器SCON用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。3)SM0SM1:串行口工作方式选择位。其状态组合所对应的工作方式如表所示。同步移位寄存器输入/输出,波特率固定为fosc/1200011位异步收发,波特率可变(T1溢出率/n,n=32或16)31111位异步收发,波特率固定为f0sc/n,n=64或32)21010位异步收发,波特率可变(T1溢出率/n,n=32或16)101功能说明工作方式SM0SM14)TI:发送中断标志位。TI=1,表示已结束一帧数据发送,可由软件查询TI位标志,也可以向CPU申请中断。注意:TI在任何工作方式下都必须由软件清0。5)SMOD:串行口波特率倍增位。在工作方式1~工作方式3时,若SMOD=1,则串行口波特率增加一倍。若SMOD=0,波特率不加倍。系统复位时,SMOD=0。AT89C51串行通信共有4种工作方式,它们分别是方式0、方式1、方式2和方式3,由串行控制寄存器SCON中的SM0SM1决定。本设-8-计用串行口方式1收发程序,实现两片AT89C51之间的通信6)串口通信方式1具体分析:1).方式1发送方式1输出时,数据由TXD输出,一帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1。当执行一条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号变为有效。将起始位向TXD输出,此后,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD输出一个数据位。8位数据位全部发送完毕后,置“1”TI。2).方式1接收数据从RXD(P3.0)脚输入。当检测到起始位的负跳变时,开始接收数据。定时控制信号有两种):接收移位时钟(RX时钟,频率和波特率相同)和位检测器采样脉冲(频率是RX时钟的16倍,1位数据期间,有16个采样脉冲),当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)进行表决以确认是否是真正的起始位(负跳变)的开始。当一帧数据接收完,须同时满足两个条件,接收才真正有效。⑴RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。⑵SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入停止位),且置“1”中断标志RI。-9-若这两个条件不同时满足,收到的数据将丢失。7)波特率:波特率(bandrate)是异步通信中每秒钟传送的二进制数码的位数(比特数),单位是位/秒。作用:1、反映串行通信的速率;2、反映对传输通道的要求:波特率越高,要求的传输通道的频带宽度就越宽异步通信:波特率为每秒传送的字符数和每个字符位数的乘积。方式1、3:波特率=2SMOD×(T1溢出率)/32对波特率需要说明的是,当串行口工作在方式1或方式3,且要求波特率按规范取1200、2400、4800、9600…时,若采用晶振12MHz和6MHz,按上述公式算出的T1定时初值将不是一个整数,因此会产生波特率误差而影响串行通信的同步性能。解决的方法只有调整单片机的晶振频率fosc,为此有一种频率为11.0592MHz的晶振,这样可使计算出的T1初值为整数。表9-2列出了串行方式1或方式3在不同晶振时的常用波特率和误差。由以上知识得知初始化的各个数值为SCON=0x50;//MODER1,REN=1;TMOD=0x20;//TIMER1MODER2;TH1=0xf3;//bode=2400TL1=0xf3;ET1=1;TR1=1;-10-EA=1;ES=1;下面是程序流程图:图7串口中断服务程序流程图-11-图8主程序流程图五、调试过程在调试过程中,由于比较心急,没有由简单到复杂设计的过程,直接吸取各种程序内容,融合一体,想要直接达到预期功能;但事与愿违,最后因对程序调试失败原因无从下手而最终从头开始,导致大量课设时间被浪费,所以,以下程序功能简单。-12-程序如下:#includereg51.h#defineucharunsignedchar#defineuintunsignedint#definedis_portP2#definewei_portP0sbitq=P3^7;sbitw=P3^6;sbite=P3^5;sbitr=P3^4;sbitt=P3^3;sbity=P3^2;uintstring[5]={0x00,0x00,0x00,0x00,0x00};uchartemp;ucharkey=0;ucharsend=0;ucharreceive=0;uchari,j;uchara,z,c,v,b,n,s;ucharflag=0;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetable1[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xA1,0x86,0x8E};voiddisplay1(void){wei_port=table1[key];}voiddelay(uintx){uintm;while((x--)!=0){for(m=0;m16;m++){;}}}voiddisplay(void)-13-{y=1;q=0;w=1;e=1;r=1;t=1;z=string[0];dis_port=table[z];y=0;delay(1);y=1;q=1;w=0;e=1;r=1;t=1;c=string[1];dis_port=table[c];y=0;delay(1);y=1;q=1;w=1;e=0;r=1;t=1;v=string[2];dis_port=table[v];y=0;delay(1);y=1;q=1;w=1;e=1;r=0;t=1;b=string[3];dis_port=table[b];y=0;delay(1);y=1;q=1;w=1;e=1;r=1;t=0;n=string[4];dis_port=table[n];y=0;delay(1);}voidkeyscan1(void){P1=0xfc;temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;if(temp!=0xf0){-14-temp=P1;switch(temp){case0xec:key=0;break;case0xdc:key=1;break;case0xbc:key=2;break;case0x7c:key=3;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}}voidkeyscan2(void){P1=0xfa;temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case0xea:key=4;break;case0xda:key=5;-15-break;case0xba:key

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

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

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

×
保存成功