基于单片机的多机通信系统设计完整资料Word文档格式.docx
- 文档编号:19571385
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:128
- 大小:5.44MB
基于单片机的多机通信系统设计完整资料Word文档格式.docx
《基于单片机的多机通信系统设计完整资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的多机通信系统设计完整资料Word文档格式.docx(128页珍藏版)》请在冰豆网上搜索。
对于红外收发模块,我们采用TFDU4100红外收发器来实现。
TFDU4100是常用的低电压红外收发模块,以串行方式进行数据交换,遵循IrDA1。
2标准,最高通信速率可以达到115.2Kbps,最大传输距离为3.0m。
TFDU4100芯片图片和管脚定义分别如图3、表1所示
图3TFDU4100芯片图片
管脚号
作用
描述
I/O
有效电平
1
IREDAnode
红外发射的阳极,该引脚通过一个外接电阻与Vcc2相接
2
IREDCathode
红外发射的阴极,该引脚在模块内部与输出驱动相连
3
TXD
发送数据的输入端
输入引脚
高
4
RXD
接收数据的输出端,不需要上拉或下拉电阻,数据发送时此脚无效
输出引脚
低
5
NC
不用连接
6
Vcc1/SD
电源/关闭引脚,当该脚为低电平时,红外传输模块关闭
7
SC
灵敏度控制端
8
GND
接地端
表1TFDU4100管脚定义
除了使用TFDU4100构成红外收发模块外,还可以选用其他的方案。
比如用分立元件搭建一个红外发射、接收电路:
用电阻、电容组成低步振荡器,频率调在38KHz左右,由红外发光二极管发射载波;
红外接收部分采用普通的红外接收头,比如LF0038U,再用二极管、晶体管、电容、电阻构成放大、解调电路。
但此方案缺点在于电路复杂、系统稳定性不强,并且成本与采用TFDU4100设计差别不大。
(2)串行红外传输控制器TOIM3232介绍
根据IrDA红外传输标准,串行红外传输采用特定的脉冲编码标准,该标准与RS232串行传输标准不同。
若两设备之间进行串行红外通讯,就需要一个传输控制器,以进行RS232编码和IrDA编码之间的转换。
TOIM3232串行红外传输控制器就是Vishay公司为配合TFDU4100而设计的。
其功能结构图如图4所示:
图4 TOIM3232功能结构框图
在输出模式下,TOIM3232可把RS232输出信号转变成符合IrDA标准的信号以驱动红外发射器;
在接收模式下,TOIM3232可把IrDA输入信号转变成符合RS232标准的信号;
TOIM3232的红外传输速度范围为2。
4Kbit/s~115。
2Kbit/s。
TOIM3232内部有一个3.6864MHz的晶振,用以实现脉冲的扩张和压缩.该时钟信号既可以由内部晶振产生也可用外部时钟实现。
该控制器可通过RS232口进行编程控制,其输出脉冲宽度可程控为1.627μs或3/16位长。
4、主机模块介绍
主机模块以89C52单片机为控制核心,外围主要接有4X4矩阵键盘、1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232。
此模块中89C52单片机作为CPU,控制整个系统的运转。
系统启动时,默认主机与从机1建立连接。
主机以串行口中断方式接受从机1发送的数据。
数据经单片机分析,显示于1602液晶上,并判断是否向从机2发送控制信息。
本系统中我们使用4*4的非独立式矩阵键盘,如下图5所示。
将行线、列线分别连接到按键开关的两端,并且连接到单片机的I/O口。
图54*4矩阵键盘
通过矩阵键盘,可以向主机输入要寻址的从,以控制主与哪一个从通信;
并能控制与主机连接的1602液晶,显示任意一项从机1测量的数据。
下面为4*4矩阵键盘的程序设计流程图如下图6所示:
图6 4*4矩阵键盘的程序设计流程图
1602液晶是一种专门用于显示字母、数字、符号的点阵式LCD,它有5*10和5*7两种点阵字符显示模式可供选择,5*7点阵字符下可以显示2行共32个字符.一般其主控制驱动电路为HD44780,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
1602液晶在此模块内的作用,是显示从机1测量的数据,验证红外通信的可靠性;
当主机要切换要与之通信的从机时,用1602显示修改后与之通信的从机名。
红外通信模块主要由TFDU4100和TOIM3232构成.TFDU4100采用IrDA红外传输标准,即串行红外传输的脉冲编码,这个标准不能和单片机接口直接兼容。
所以用串行红外传输控制器TOIM3232进行串码和IrDA编码间的转换.TOIM3232可把单片机输出的串码信号转换成符合IrDA标准的信号以驱动TFDU4100;
它还可以将IrDA输入信号转换成串码信号送入单片机。
其电路设计原理图如下图7所示:
图7 51单片机、TOIM3232、TFDU4100简易连接原理图
主机负责对外围器件的调度与控制,包括红外收发模块接收数据控制、键盘扫描、1602液晶的显示、是否向从机2发送消息。
其程序流程图如下图8所示:
N
Y
图8主机程序流程图
5 、从机1模块介绍
从机1模块以89C52单片机为控制核心,外围主要接有1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232、ADC0809、温度传感器、光强传感器。
室内温度的测量采用温度传感器DS18B20。
选用此传感器的原因是它价格便宜,可以降低系统成本,且对于一般家庭使用,此传感器的精度足够了。
使用简单,易控制。
DS18B20提供9位二进制温度读数,指示器件的温度信息,并通过单线接口送至CPU。
DSl820中有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号。
将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-550摄氏度-—125摄氏度)。
光强传感器采用实验室现已有的,主要由可见光光敏电阻器、普通电阻等分立器件构成.光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;
入射光强时,电阻减小,入射光弱时,电阻增大.
所有传感器输出的数据均为模拟量,要输入单片机处理,必须经过A/D转换。
模数转换芯片采用ADC0809,主要原因是采集数据的路数较多(以后还可扩展),需要一个多通道的A/D,而我们以前做数电实验时用过的ADC0809正是8位8通道的模数转换芯片,它是逐次逼近式A/D转换器,可以和单片机直接接口。
红外收发模块,则负责将传感器采集的数据传至主机,其结构已在前面介绍过。
1602液晶在此处的作用是将单片机接收到的数据显示出来,与传到主机的数据作对比,验证红外通信的可靠性。
从机1的程序流程图如下图9所示:
N
Y
图9从机1程序流程图
6、从机2模块介绍
从机2模块以89C52单片机为控制核心,外围主要接有红外收发模块、电机驱动电路、直流电机和窗帘模型。
红外收发模块负责接收主机发送来的信息,经单片机处理,以控制电机运转。
电机驱动电路主要由L298N构成.L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;
可以直接用单片机的IO口提供信号;
而且电路简单,使用比较方便.电路原理图如下图10所示:
图10 电机驱动电路原理图
直流电机采用德国FAULHABER—2342电机,其转子转动惯量小,因而动态性能极好;
FAULHABER电机采用精密合金换向器,因其接触电阻低而使性能优良。
为表征电机控制的实现,在电机后端我们做一个窗帘模型,通过电机控制窗帘的开关。
89C52单片机在此模块中,负责控制接收来自主机的信息,并产生PWM波驱动电机,以达到调速的目的。
51没有硬件的PWM,全靠软件模拟。
调速程序可以用定时器做,首先设置两个定时用的全局变量,一个代表高电平时间,一个代表低电平时间。
先给定时器初值(既那两个全局变量中的一个),溢出后触发中断,在中断里设置另另一个初值并且取反PWM的输出端口,两个初值轮流给定时器,就可以任意调整占空比,占空比取决于两个初值。
此法对于精度要求不高的场合,很适用。
PWM中断服务子程序的流程如下图11所示:
图11 PWM中断服务子程序的流程
7、硬件电路实现
对于系统的硬件电路实现,89C52单片机采用主办方提供的最小系统核心板,其晶振和复位电路已经做好,I/O也引出。
其他外围电路模块,有矩阵键盘、1602液晶、红外收发模块、数据采集模块、电机驱动电路,则设计合理的电路原理图(部分模块已完成),用AltiumDesigner软件画出PCB板图,并利用学校实验室条件将其做做出来。
焊接元器件,再用杜邦线与核心板连接。
课程设计报告
课程单片机技术
题目串口通信-多机通信系统
系别
年级07级专业电子科学与技术
班级学号
学生姓名
指导教师职称
设计时间
1题设要求分析
本小组的试验题目如下:
一、任务:
设计实现多台单片机系统之间的串行通信
二、基本要求(难度系数0.8):
(1)设计一个主从式多机通信系统,包含1台主机和3台从机,主机和从机全部为单片机;
(2)选择合适总线接口芯片,正确连接主机和从机;
(3)编程实现分布式数据采集功能,主机可以获取各分机当前AD转换结果,并显示。
三、发挥部分:
(1)完善通信功能。
(根据完成情况加分,上限+0。
2)
经过本小组成员对本课题认真讨论先做出如下分析:
对课题分析后本小组认为本次实验的目的是就是应用单片的串口通信功能实现一个分布式采集系统.整个系统中包含一片主机和三片从机,主机的任务是实现对三片从机的AD转换结果的采集并在数码管上显示之.这样从硬件的角度上将整个系统分为两个模块——主机模块和从机模块。
主机模块中包含单片机模块、led数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
就本次试验而言硬件电路的设计难点在于串口电平转换芯片的选择及其连接,而软件的设计难点在于串口通信协议的制定及相关程序的编写。
实现多机通信方案的实现。
不同于双机通信多机通信系统中需要识别通信信息发出者或是接受者是谁。
经过查阅资料发现在大多数的多机通信系统中都是才采用地址识别的方法实现的.所谓地址识别方法就是在发送或接受信息前先发送和校验地址帧。
就本题目而言,先要对通信系统中的每台机器分配一个唯一的地址作为识别信息。
具体的识别过程如下:
⏹首先,从机处于只接收地址帧的状态;
⏹主机发送一帧地址信息;
⏹从机接受到地址帧后,将本机地址与地址帧中的地址进行比较,如果地址相同准备接受数据,否则丢弃当前帧,依然处于只接受地址帧的状态;
⏹主机发送数据帧,相应的从机接受数据,数据传送完毕后,从机继续回到只接受地址帧的状态,在这个过程中其他从机不受影响;
⏹当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫从机,重复这一过程[1]。
对于本题而言可通过此过程实现主机对从机的绝对控制。
这样在主机中编写一个循环程序就可以实现对三台从机的AD转换结果的不停采集。
至于地址帧与数据帧的区别则可通过串口工作方式三下的第九位的置1或置0来实现.在完成通信的基础上,再将采集到的三路结果分别用两个led数码管显示即可试验预期目的。
2硬件电路的设计
2。
1系统的组成
根据题目分析可知硬件电分为主机模块和从机模块.主机模块中包含单片机子模块、led数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
在主模块中由AT89S51单片机担任主机,六个led数码管担任显示设备和一片MAX485担任串口的电平转换。
在整个主机系统中有三个从机模块三个从机模块结构一样,有一片AT89S51单片机担任从机外接一片ADC0809转换芯片和一片MAX485担任串口的电平转换。
串口采用单工及异步通信方式。
整个硬件结构原如图1所示.
图1系统结构原理图
2系统的工作原理
主机AT89S51编程可实现循环访问个从机,当从机接受主机访问后启动AD转换设备ADC0809对外部模拟信号进行转换。
当从机获得转换结果后通过串口将其发送到主机,主机接受到转换结果后再将其发送到相应的led数码管显示.
3硬件电路原理图设计
(1)led数码管显示电路led数码管显示电路如图2所示显示子模块由六个数码管和相应的启动芯片构成.其中每路通道的采集值用量为数码管显示。
为了节约单片机的I/O口本题的数码管采用MAX7219芯片。
给芯片的优点在于可完成电路的刷新。
MAX7219芯片的SEGA—SEGDP为数码管段码接口,DIG0-DIG7为位码接口,CLK、DIN、LOAD分别与单片机P1。
0、P1。
1、P1。
2连接。
单片机通过串行的方式将要显示的数据通过CLK、DIN、LOAD三个接口送入相应的显示寄存器内,MAX7219将自动完成对数码管的刷新工作。
具体的电路如图2所示。
图2led显示电路
(2)串口电平转换电路串口电平转换电路的电路图如图3所示:
本实验中采用MAX485的电平转换芯片.MAX485是一种RS-485标准接口的电平转换芯片.RS—485采用差分式半双工通信方式,真正实现多点总线连接,具有传输距离远可靠性高的特点.基于以上原因本小组选择该芯片实现电平转换。
MAX485的1号引脚RO为接收端接单片RXD,4号引脚DI为发送端接单片TXD,2、3号引脚分别为发送接收使能端端接单片P1。
3引脚。
6、7号引脚总线接线口。
图3电平转换电路
(3)主机模块电路
根据设计要求绘制主机模块电路图如图4所示。
图4主机模块电路图
(4)从机模块电路
根据设计要求绘制从机模块电路图如图5所示。
图5从机模块电路图
2.4硬件电路的实现
首先是主从机电路的实现.主机的电路的搭建采用主CPU板、键盘显示接口板各一块。
照实验原理图将主CPU板的P0口接到键盘显示接口板的位码接口,P1口接到键盘显示接口板的段码的接口。
从机的电路由CPU板和ADDA转换板构成。
其次是电平转换电路的焊接。
电平转换的路的实现是通过自己搭建电路完成。
电平转换的电路主要有四块MAX485和两个100Ω电阻构成.四块MAX485采用总线方式连接,每个芯片分别引出三个引脚用于单片的连接.
最后将各个模块的按照原理图连接起来。
图6硬件电路的连接
3软件电路的设计
3.1通信协议的设计
通信协议的设计的设计是本题的重点难点,本题通信协议主要是区别主机和从机。
由于串口的方式2、3发送和接收都是11位其第九为可编程置位可以此作为区分地址帧与数据帧从而实现主机与从机,从机与从机的区别.通信协议同样要规定相同通信速率。
参考相关资料后编写如下的通信协议.
⏹数据传输的双方均使用9600kb/s的速率传送数据,使用主从式通信,主机发送数据,从机接受数据,双方在发送数据时使用查询方式。
⏹双机开始数据传输时,主机发送地址帧呼叫从机。
⏹各从机开始都处于只收地址帧状态.接收到地址帧后,将接收到的地址内容和本机地址比较,如果地址相同,则向主机返回本机地址作为确认信息,并开始接收数据;
如果不同,则继续等待。
⏹主机在发送地址帧后等待,如果接收到的应答信息中的内容和所发地址帧的内容相同,就开始发送数据,如果不一致,主机将继续发送地址帧。
如多次应答仍无回应则认为出错则主机跳出本次通信。
⏹从机在接收完数据后,将根据最后的校验结果判断数据接收是否正确,若校验真确,则向主机发送2AH信号,同时点亮led灯半秒钟,表示本次通信成功;
若校验错误,则发送F0H信号,表示接收数据错误,并请求从发。
⏹主机接收到2AH信号,则通信结束,否则主机将重新发送这组数据。
3.2主机程序设计
依据试验要求及相应的通信协议现绘制如下的主机程序流程图:
图7主机程序流程图
主机程序:
#include〈stdio。
h>
#include〈reg51。
h〉
unsignedcharLED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharLED_bit[6]={0x01,0x02,0x04,0x08,0x10,0x20};
unsignedcharLED_buf[6]={0x00,0x00,0x00,0x00,0x00,0x00};
voiddelay(unsignedlongn)//延时子程序
{
unsignedinti;
for(i=1;
i<
n;
i++)
{;
}
}
voidconvert(unsignedchara,unsignedcharj)//电压转换子程序
unsignedcharm,n,i;
unsignedcharb=0;
for(i=0;
51;
{
b=i*5;
if(b<
a)
{
i++;
}
else
break;
}
m=i/10;
n=i%10;
j=j*2;
LED_buf[j]=LED_seg[n];
LED_buf[j+1]=LED_seg[m]+0x80;
voidsbuf_init(void)//串口初始化子程序
{
SCON=0xd0;
//工作方式3
PCON=0x00;
TMOD=(TMOD&0xf)|0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
voidflash_led(void)//led显示子程序
unsignedchari;
6;
{
P2=LED_buf[i];
P0=LED_bit[i];
delay(200);
P0=0x00;
voidmain(void)//主函数
{unsignedcharADDR=0x00;
unsignedchartmp;
unsignedchara=0;
unsignedchari=0;
unsignedcharj=0;
sbuf_init();
while
(1)
{
tmp=ADDR+1;
while(tmp!
=ADDR)
{
/*发送从机地址*/
TI=0;
TB8=1;
//发送地址帧
P1=0xff;
//发送使能
delay(20);
SBUF=ADDR;
while(!
TI);
delay(20);
/*接收从机应答*/
P1=0x00;
//接受使能
delay(50);
while(!
RI);
tmp=SBUF;
RI=0;
}
P1=0x00;
delay(10);
while(!
a=SBUF;
RI=0;
j=ADDR;
ADDR++;
if(i〉=3)
i=0;
ADDR=0x00;
}
convert(a,j);
flash_led();
}
3。
3从机程序设计
从程序流程图如下:
图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 通信 系统 设计 完整 资料