双机通信的设计与实现Word格式.docx
《双机通信的设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《双机通信的设计与实现Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
本文详细介绍了关于基于单片机AT89C51实现的双机之间的通信设计,软件部分采用C语言编程实现接收部分和发射部分的功能,用proteus进行仿真,软件设计完成后,将程序烧入单片机。
通信的结果用数码管进行显示,在通信过程中用通信协议。
关键词:
51单片机串行通信通信协议
绪论
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
在我国,单片机已经不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
在单片机诞生之前,为了满足工程对象的嵌入式应用要求,只能将通用计算机进行机械加固、电气加固后嵌入到对象系统中构成。
由于通用计算机的巨大体积和高成本,无法嵌入到大多数对象体系中.单片机则应嵌入式应用而诞生.单片机的单芯片的微小体积和极低的成本,可广泛的嵌入到玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。
单片机作为最典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展.近年来。
除了各种类型的工控机,各种以通用微处理器构成的计算机主模板快、以通用处理器为核,片内扩展一些外围功能电路单元构成的嵌入式微处理器,甚至单片形式的PC及等,都实现了嵌入式应用,成为嵌入式系统的庞大家族。
作为典型的嵌入式系统的单片机,在我国大规模应用已有十余年历史。
在全国高等工科院校中,已普遍开设单片机及相关课程.单片机已成为电子系统中最普遍的应用手段.除了单设课程外,在涉及的许多环节,如课程设计、毕业设计、研究生论文课题中,单片机系统都是最广泛的应用手段。
目前,许多单片机教材都Shiite以80C51系列为基础来讲述其原理及应用的。
这是因为MCS—51系列单片机奠定了8位单片机的基础,形成了单片机的经典体系结构。
单片机是现代计算机、电子技术的新兴领域,无论是单片机本身还是单片机应用系统设计方案都会随着时代不断发生变变化。
一
、系统整体设计
1系统设计思路
双机通信的实质就是解决两单片机串行通信问题。
针对于89C52单片机全双工异步串行通信口,我们采用单片机直接交叉互连的串行通信方式.
考虑到设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简单,我们最终决定采用方式二单片机直接交叉连接的串行通信方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。
2.系统设计原理
(1)串行通信
串行数据通信要解决两个关键问题,一个是数据传送,另一个是数据转换。
所谓数据传送就是指数据以什么形式进行传送。
所谓数据转换就是指单片机在接收数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。
单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。
异步串行通信通常以字符(或者字节)为单位组成字符帧传送.字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。
而对于两个单片机之间的串行通信,由于具有相同的数据格式及电平且是短距离通信则不必要使用一些电平转化芯片(如max232等)便可直接实现串行通讯,需要注意的是两单片机硬件要共地,软件中需要设置相同波特率.
STC89C51单片机有一个全双工的异步串行通信口,串行结构如下:
①数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存.有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;
接收时用指令将SBUF中接收到的数据取出。
②串行控制寄存器(SCON)
SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0,SM1:
串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。
串行接口工作方式特点见下表1.
表1
串行口工作方式表
SM2:
多机通信控制位。
REN:
接收允许控制位。
软件置1允许接收;
软件置0禁止接收.
TB8:
方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB8:
在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:
发送中断标志。
发送完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续发送。
RI:
接收中断标志。
接收完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续接收。
③输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。
④波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。
波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
⑤电源控制寄存器PCON
其最高位为SMOD:
波特率倍增位,在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍,复位时,SMOD=0。
⑥波特率计算
当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期).由于是定时方式,T1计数率=
fORC/12.产生溢出所需机器周期数=模M-计数初值X。
(2)基本设计原理概述
双机通信系统通过主从单片机的串行口来实现数据的收发.主单片机通过开关电路来启动发送程序,当开关按下时向从机发送一个数据,从机通过接收中断来接收主机发送过来的数据,并通过编写好的数据代码在LED数码管上显示主机发送过来的数据.同时从机给主机发送一个应答信号来表示已经接收到了主机发送过来的数据,在主机接收应答并校验正确,以二极管显示,这样就完成了一个数据的通信过程,等待按键按下,然后继续下一次数据的发送直到结束。
3.系统设计结构图
开始关中断
Y
系统初始化T1=1
A=p1R1=0
SBUF=AA=SBUF
TI=0P2=A
开中断
中断返回
图1-1程序流程图
二
、设计要求及任务
u
1.按键触发主机向从机发送数据.
2.从机以中断方式实时接收数据.
3.从机将接受到的数据显示并回送应答信息给主机。
4。
主机查询回送信息并校验以判断是否继续发送。
5.制作硬件电路,并调试,最后实现双机通信系统功能。
三
、硬件电路设计及实现
1.硬件电路设计方案
从硬件电路设计的目标出发,我们尽量考虑到可靠、高效、简洁的原则,在整个系统设计过程中严格按照规范进行,做好各部分模块设计最优。
简洁是指在满足了可靠、高效的要求后,为了尽量在器件允许的范围内使电路设计导线无交叉,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻。
在焊接电路板时由于从机的数码管管脚排布无规律,使得导线不能直接的焊接,我们尽量合理设计元件排列和电路走线,使本系统达到设计要求.2.硬件电路的实现
整个双机通信系统以STC89C51单片机为主控制器,由数码管为核心的数据显示模块、以及单片机最小系统构成.
3.以89C51为核心的单片机最小系统
89C51单片机的最小系统采用内部时钟方式:
以XTAL1和XTAL2引脚外接晶振,构成了自激振荡器并在单片机内部产生时钟脉冲信号,然后给晶振的每个脚分别外接一个30PF的电容,以此使晶振快速起振并且达到约12MHZ的稳定频率。
而在单片机的RST脚接上按键开关以及适当的电阻、电容便构成按键与断电两用的复位电路。
具体电路如图3。
2.1—1所示:
4.数码管显示模块
设计中,我们使用的是共阴的两位一体数码管并使用P2口控制数码管段选信号,P1口选取两位为位选信号控制端。
拿到数码管后,我们借助万用表进行测试,最终确定为共阴型数码管,进一步测试便得出了该数码管对应的管脚分布图。
5。
设计实物图
四
、软件系统实现
1。
Proteus仿真图
2.主程序
#include〈reg51。
h〉
#include<
intrins.h>
#include〈absacc。
#defineucharunsignedchar
#defineuintunsignedint
main()
{
ucharcom;
SCON=0x50;
TMOD=0x20;
TL1=0xe6;
TH1=0xe6;
EA=1;
ES=1;
TR1=1;
P1=0xff;
_nop_();
com=P1;
SBUF=com;
while(!
TI);
TI=0;
}
voidUART()interrupt4using3
{
uchardat;
EA=0;
if(TI==0)
{
RI=0;
dat=SBUF;
P2=dat;
}
else
{
EA=1;
五.设计总结
这次课程设计主要是基于单片机应用技术基础上完成的,拿到题目的第一步就是上网收索资料得以确定一个有效的方案。
第一个方案找到以后我们把的程序烧进keil里面,虽然程序有3个错误但是经过请教同学和老师,最终还是改正了程序的错误。
这让我们感到很高兴,以为接下来会一路顺风。
可是当我们做好仿真图并分别载入主机跟从机程序进行仿真的时候,结果显示器没回应,原来是程序设计出错了。
所以我们果断放弃第一方案,并迅速找到第二方案,也就是本次设计。
了解了双机通信的原理,并且进行仿真,顺利跑过了仿真之后我们就着手焊接硬件了。
大家分工合作,一人购买元器件,一人焊接,另一人负责整理报告和调试。
六.参考文献
[1]单片机应用技术教程鞠剑平陈朝大华中科技大学出版社
[2]李全利.单片机原理及接口技术[M].高等教育出版社,2003
[3]基于Proteus的单片机应用技术江世明电子工业出版社
[4]PROTEL99SE电路设计与制板[M]。
机械工业出版社,2007