华拓科技网
您的当前位置:首页单片机课程设计-双机串行通信

单片机课程设计-双机串行通信

来源:华拓科技网
单片机课程设计

课题名称:单片机双机串口通信设计 小组成员:

姓名 学号

两个单片机之间串行接口通信设计

目录

一、实验要求……2

1、设计内容 2、设计要求

二、实验原理……2 三、实验程序图……4 四、实验电路图……6 五、实验程序……7 六、Proteus仿真结果……8 七、实验器材……8

八、总结……8 2010/12/24

1

一、实验要求

1、设计内容

1)用全双共数据传送法实现两机互相通信。 2)完成双机通信的设计制作及仿真。 2、设计要求

1)能本机显示按键的数值。 2)能向对方机发送按键的数。 3)能接收对方机发送的数并显示。 4)发送数及按键用中断实现。 5)用串行口的全双工方式通信。

二、实验原理

(1)单片机串行接口通信功能

图①ATC51

计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传

2

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

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

(1)数据缓冲器(SBUF)

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

(2)串行控制寄存器(PCON)

SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下: SM0 SM1 SM2 REN TB8 RB8 TI RI SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表 SM0 0 0 1 1 SM1 0 1 0 1 工作方式 0 1 2 3 功能 8位同步移位寄存器(用于I/O扩展) fORC/12 10位异步串行通信(UART) 11位异步串行通信(UART) 11位异步串行通信(UART) 可变(T1溢出率*2fORC/或fORC/32 可变(T1溢出率*2SMOD/32) SMOD波特率 /32) SM2:多机通信控制位。

REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。

TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。 RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。

RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。

(3)输入移位寄存器

3

接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。

(4)波特率发生器

波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。

(5)电源控制寄存器PCON 其最高位为SMOD。 (6)波特率计算

当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。由于是定时方式,T1计数率= fORC/12。产生溢出所需机器周期数=模M-计数初值X。

(2)MAX232芯片

图②MAX232引脚图

MAX232 芯片其内部有一个电源电压变换器,可以将输入+5V的电压变换成RS-232C输出电平所需的±12V电压。所以采用这种芯片来实现接口电路特别方便,只需单一的+5V电源即可。 MAX232芯片的引脚结构如下图所示。其中管脚1~6(C1+、V+、C1-、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应的电解电容即可;管脚7~10和管脚11~14构成两组TTL信号电平与RS-232信号电平的转换电路,对应管脚可直接与单片机串行口的

4

TTL电平引脚相连。

三、实验框图

(1)发送端流程图

主程序开始 程序初始化 主机发送AAH 从机是否回答BBH? N 主机发送数据和检验 输出完成? N 清除标志位

5

(2)接收端流程图

主程序开始 程序初始化 接收数据,计算检验和 检验和相等? N 发送FFH, 重新接收 发送00H至主机 接收完成? N 清除标志位 显示

说明:两个单片机不分主从机,任何一个单片机均可作为发送端或接收端,这里为了便于理解而设置主从机一说。 四、实验电路图

6

LOGICSTATE 逻辑状态 用鼠标点击,可改变该方框连接位置的逻辑状态

五、实验程序

#include

#define uchar unsigned char #define uint unsigned int #define duan P1

#define dis P2 void main() { uchar key_in=0xff; //I/O口作输入时,检测外设状态,允许输出高电平 TMOD=0x20; //设置为定时器1方式2

while(1)

{

if(key_in != duan) {

7

TH1=0xfd; TL1=0Xfd; EA=1; ET1=1; TR1=1;

//装初值,波特率设为9600 //开总中断

//允许定时器1中断 //开启定时器1中断

//串口控制寄存器设置,方式1、开串口接收。SM0=0;SM1=1;REN=1; //开串口中断

SCON=0x50; ES=1;

}

}

key_in=duan; SBUF=key_in; //发送数据

while(!TI); //等待数据发送,由TI判断发送是否结束 TI=0;

}

void chuankou() interrupt 4 //串口中断函数 { dis=SBUF; //接收数据 }

RI=0;

//RI由软件清零;

八、实验器材

2个ATC51 MAX232芯片 2个LCD 串口连接线

七、总结

本次设计采用两片ATC51单片机实现信息的串行通信,设计过程中,从双机通信背景的了解,到C51单片机具体功能的了解,到串行通信的原理的熟悉,到掌握具体串行通信在双机之间的实现;从硬件电路设计到程序编写;从硬件调试到软件模拟实现等。发送方的数据由串行口TXD断输出,经过传输线将信号传送到接收端。接收方接收电平信号,对于接口电路,短距离传送,减少抗干扰作用,如果短离远双机串口中可以连接电平转换器常用芯片RS232,在此不再叙述。设计中,收获不少东西,也遇到了不少的问题。 首先,在完成单片机课程学习任务后,对内容的掌握不够,缺乏灵活运用的能力,对于知识的扩展也存在一定的问题,因此,面对设计课题,无法系统地进行设计思路的拟定。

其次,理解不能更好的联系实践,在巩固和学习硬件知识的同时,用软件控制协调硬件实现现实功能,通过硬件完成软件的功能等方面的融会贯通,取得了一定的效果。

再次,硬件设计过程中,串行通信方式的选择,波特率的计算,在查询方式与中断方式进行串行通信。对于芯片的选择,软件编写时,对于某些指令的功能,功能模块的连接,芯片地址选择等都遇到了很大的障碍,在老师与同学帮助和自己查阅资料得到了解决,与此同时,了解了不少的问题。并掌握了KEIL的使用和程序调试,以及PROTUES单片机模拟仿真软件的使用,大大提高了学习效率。

通过本次课程设计,不仅使理论知识得到了实践,有效巩固了知识。同时对于单片机发展历史、强大功能、应用领域以及系列知识得到了大概的系统认识,同时也初步了解了一个完整的系统开发的过程,对于创造思维的培养和开发能力的锻炼,本次设计,为此提供了一个很好的平台。同学之间的相互讨论学习,互相提高,老师知识的帮助,经验的传授,也是本次设计的一道美丽的风景线,真正起到了抛砖引玉的目的。在此,感谢老师给我们这样好的学习机会。

8

因篇幅问题不能全部显示,请点此查看更多更全内容