单片机课程设计-双机串行通信.doc
《单片机课程设计-双机串行通信.doc》由会员分享,可在线阅读,更多相关《单片机课程设计-双机串行通信.doc(8页珍藏版)》请在冰豆网上搜索。
单片机课程设计
课题名称:
单片机双机串口通信设计
小组成员:
姓名学号
两个单片机之间串行接口通信设计
目录
一、实验要求……2
1、设计内容
2、设计要求
二、实验原理……2
三、实验程序图……4
四、实验电路图……6
五、实验程序……7
六、Proteus仿真结果……8
七、实验器材……8
八、总结……8
2010/12/24
一、实验要求
1、设计内容
1)用全双共数据传送法实现两机互相通信。
2)完成双机通信的设计制作及仿真。
2、设计要求
1)能本机显示按键的数值。
2)能向对方机发送按键的数。
3)能接收对方机发送的数并显示。
4)发送数及按键用中断实现。
5)用串行口的全双工方式通信。
二、实验原理
(1)单片机串行接口通信功能
图①AT89C51
计算机与外界的信息交换称为通信,常用的通信方式有两种:
并行通信和串行通信。
51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。
串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。
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
SM1
工作方式
功能
波特率
0
0
0
8位同步移位寄存器(用于I/O扩展)
fORC/12
0
1
1
10位异步串行通信(UART)
可变(T1溢出率*2SMOD/32)
1
0
2
11位异步串行通信(UART)
fORC/64或fORC/32
1
1
3
11位异步串行通信(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设置在定时方式。
波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
(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信号电平的转换电路,对应管脚可直接与单片机串行口的TTL电平引脚相连。
三、实验框图
(1)发送端流程图
主程序开始
从机是否回答BBH?
程序初始化
主机发送AAH
N
主机发送数据和检验
输出完成?
N
清除标志位
(2)接收端流程图
主程序开始
检验和相等?
程序初始化
接收数据,计算检验和
N
发送00H至主机
接收完成?
N
清除标志位
发送FFH,
重新接收
显示
说明:
两个单片机不分主从机,任何一个单片机均可作为发送端或接收端,这里为了便于理解而设置主从机一说。
四、实验电路图
LOGICSTATE逻辑状态用鼠标点击,可改变该方框连接位置的逻辑状态
五、实验程序
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineduanP1
#definedisP2
voidmain()
{
ucharkey_in=0xff;//I/O口作输入时,检测外设状态,允许输出高电平
TMOD=0x20; //设置为定时器1方式2
TH1=0xfd; //装初值,波特率设为9600
TL1=0Xfd;
EA=1; //开总中断
ET1=1; //允许定时器1中断
TR1=1; //开启定时器1中断
SCON=0x50; //串口控制寄存器设置,方式1、开串口接收。
SM0=0;SM1=1;REN=1;
ES=1; //开串口中断
while
(1)
{
if(key_in!
=duan)
{
key_in=duan;
SBUF=key_in; //发送数据
while(!
TI); //等待数据发送,由TI判断发送是否结束
TI=0;
}
}
}
voidchuankou()interrupt4 //串口中断函数
{
dis=SBUF; //接收数据
RI=0; //RI由软件清零;
}
八、实验器材
2个AT89C51
MAX232芯片
2个LCD
串口连接线
七、总结
本次设计采用两片AT89C51单片机实现信息的串行通信,设计过程中,从双机通信背景的了解,到89C51单片机具体功能的了解,到串行通信的原理的熟悉,到掌握具体串行通信在双机之间的实现;从硬件电路设计到程序编写;从硬件调试到软件模拟实现等。
发送方的数据由串行口TXD断输出,经过传输线将信号传送到接收端。
接收方接收电平信号,对于接口电路,短距离传送,减少抗干扰作用,如果短离远双机串口中可以连接电平转换器常用芯片RS232,在此不再叙述。
设计中,收获不少东西,也遇到了不少的问题。
首先,在完成单片机课程学习任务后,对内容的掌握不够,缺乏灵活运用的能力,对于知识的扩展也存在一定的问题,因此,面对设计课题,无法系统地进行设计思路的拟定。
其次,理解不能更好的联系实践,在巩固和学习硬件知识的同时,用软件控制协调硬件实现现实功能,通过硬件完成软件的功能等方面的融会贯通,取得了一定的效果。
再次,硬件设计过程中,串行通信方式的选择,波特率的计算,在查询方式与中断方式进行串行通信。
对于芯片的选择,软件编写时,对于某些指令的功能,功能模块的连接,芯片地址选择等都遇到了很大的障碍,在老师与同学帮助和自己查阅资料得到了解决,与此同时,了解了不少的问题。
并掌握了KEIL的使用和程序调试,以及PROTUES单片机模拟仿真软件的使用,大大提高了学习效率。
通过本次课程设计,不仅使理论知识得到了实践,有效巩固了知识。
同时对于单片机发展历史、强大功能、应用领域以及系列知识得到了大概的系统认识,同时也初步了解了一个完整的系统开发的过程,对于创造思维的培养和开发能力的锻炼,本次设计,为此提供了一个很好的平台。
同学之间的相互讨论学习,互相提高,老师知识的帮助,经验的传授,也是本次设计的一道美丽的风景线,真正起到了抛砖引玉的目的。
在此,感谢老师给我们这样好的学习机会。
8