当前位置:文档之家› 双机通信课程设计

双机通信课程设计

成绩:课程设计报告书所属课程名称单片机原理与接口技术题目双机串行通信分院机电学院专业、班级机械设计制造及其自动化B0902学号0612090218学生姓名史强指导教师周春明2012年7月13日目录1课程设计任务书 (1)2总体设计 (2)3硬件系统设计 (3)4程序设计 (6)5程序调试及结果分析 (11)6总结 (13)7参考文献 (14)辽东学院一课程设计任务书课程设计题目:双机串行通信课程设计时间:自2012 年7月2日起至2012 年7月13日。

课程设计要求:1.通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。

2.两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在接收端显示。

接收完成后,led灯亮。

学生签名:史强2012 年7月13日课程设计评阅意见评阅教师:2012年月日二总体设计2.1 设计目的通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。

通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。

2.2 设计任务两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,完成后在接收端的led 灯亮。

2.3 设计方法本次设计,对于两片89C51,采用RS232进行双机通信。

发送方的数据由串行口TXD段输出。

接受方接收后,灯亮。

为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。

软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。

主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。

从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH 给主机,重新接受。

从机收到16个正确数据后送到一个数码管显示。

三硬件系统设计3.1基本功能:利用89c51完成两片单片机之间进行串行通信。

3.2可选器件:51系列单片机、电容、LED灯本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。

在单片机的应用系统程序设计时,常用的是汇编语言和C语言。

C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句。

本着学习和创新的精神,我们采用汇编语言编写了程序。

3.1 51单片机串行通信功能图1.AT89C51计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。

51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。

串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。

51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。

51单片机串行接口的结构如下:(1)数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。

有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。

(2)串行控制寄存器(PCON)SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。

串行接口工作方式特点见下表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设置在定时方式。

波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。

(5)电源控制寄存器PCON其最高位为SMOD。

(6)波特率计算当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。

由于是定时方式,T1计数率= fORC/12。

产生溢出所需机器周期数=模M-计数初值X。

3.2 整体电路设计最终设计电路如下图3所示,发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。

图2.整体电路四程序设计通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。

主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。

从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。

从机收到16个正确数据后送到一个数码管显示。

4.1 串行通信软件实现(1)串行口工作于方式1;用定时器1产生2400bit/s的波特率,工作于方式2。

(2)功能:将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。

(3)通信协议:主机首先发送连络信号(AAH),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。

(4)通信过程使用第九位发送奇偶校验位。

(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。

(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。

4.2 程序流程图(1)发送端程序流程图(2)接收方程序流程图4.3:源程序汇编语言程序:发送程序清单如下:START:CLR EAMOV TMOD,#20H ;定时器1置为方式2MOV TH1,#0F4H ;装载定时器初值,波特率2400MOV TL1,#0F4HMOV PCON,#00HSETB TR1 ;启动定时器MOV SCON,#50H ;设定串口方式1,且准备接收应答信号LOOP1:MOV SBUF,#0AAH ;发联络信号JNB TI,$ ;等待一帧发送完毕CLR TI ;允许再发送JNB RI,$ ;等待2号机的应答信号CLR RI ;允许再接收MOV A,SBUF ;2号机应答后,读至AXRL A,#0BBH ;判断2号机是否准备完毕JNZ LOOP1 ;2号机未准备好,继续联络LOOP2:MOV R0,#40H ;2号机准备好,设定数据块地址指针初值MOV R7,#10H ;设定数据块长度初值MOV R6,#00H ;清校验和单元LOOP3:MOV SBUF,@R0 ;发送一个数据字节MOV A,R6ADD A,@R0 ;求校验和MOV R6,A ;保存校验和INC R0JNB TI,$CLR TIDJNZ R7,LOOP3 ;整个数据块是否发送完毕MOV SBUF,R6 ;发送校验和JNB TI,$CLR TIJNB RI,$ ;等待2号机的应答信号CLR RIMOV A,SBUF ;2号机应答,读至AJNZ LOOP2 ;2号机应答“错误”,转重新发送RET ;2号机应答“正确”,返回接收程序清单如下:START:CLR EACLR P1.0MOV TMOD,#20HMOV TH1,#0F4HMOV TL1,#0F4HMOV PCON,#00HSETB TR1MOV SCON,#50H ;设定串口方式1,且准备接收LOOP1:JNB RI,$ ;等待1号机的联络信号CLR RIMOV A,SBUF ;收到1号机信号XRL A,#0AAH ;判是否为1号机联络信号JNZ LOOP1 ;不是1号机联络信号,再等待MOV SBUF,#0BBH ;是1号机联络信号,发应答信号JNB TI,$CLR TIMOV R0,#40H ;设定数据块地址指针初值MOV R7,#10H ;设定数据块长度初值MOV R6,#00H ;清校验和单元LOOP2:JNB RI,$CLR RIMOV A,SBUFMOV @R0,A ;接收数据转储INC R0ADD A,R6 ;求校验和MOV R6,ADJNZ R7,LOOP2 ;判数据块是否接收完毕JNB RI,$ ;完毕,接收1号机发来的校验和CLR RIMOV A,SBUFXRL A,R6 ;比较校验和JZ END1 ;校验和相等,跳至发正确标志MOV SBUF,#0FFH ;校验和不相等,发错误标志JNB TI,$ ;转重新接收CLR TIEND1:SETB P1.0MOV SBUF,#00HRET五系统调试与存在的问题在protues上进行仿真实验。

首先使用Keil将编写完成的程序编译生成HEX文件,将HEX文件录到两片单片机中,进行仿真实验,结果如下图所示,可以看到,接收端接收到数据。

图4.仿真图5.1 硬件调试常见故障:1、逻辑错误:它是由设计错误或加工过程中的工艺性错误所造成的。

这类错误包括错线、开路、短路等。

2、元器件失效:有两方面的原因:一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。

3、可靠性差:因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。

4、电源故障:若样机由电源故障,则加电后很容易造成器件损坏。

电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。

调试方法:包括多级调试和联机调试。

在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。

本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。

5.2 软件调试软件调试一般分为以下四个阶段:1、编写程序并查错;2、在汇编语言的编译系统中编译源程序3、对程序进行编译连接,并及时发现程序中存在的错误;4、改正错误。

相关主题