温湿度无线传输系统.docx
《温湿度无线传输系统.docx》由会员分享,可在线阅读,更多相关《温湿度无线传输系统.docx(13页珍藏版)》请在冰豆网上搜索。
温湿度无线传输系统
大连民族学院
电子信息工程专业
综合电子作业
题目名称:
无线信号传输系统设计
班级:
姓名:
无线信号传输系统
1要求
1.1基本要求
(1)点对点(发射机与接收机)无线传输方式。
(2)载波频率范围在40—50MHz之间。
(3)传输距离达5米。
(4)发射功率小于20mW。
(5)传输模拟信号:
单一正弦电压信号1—4kHz送达接收端,并能监听到相应声调。
(6)传输数字信号:
采集30—60℃水温数据,误差±2℃,送达接收端,并显示水温数据。
2方案论证
本设计以AT89S52单片机为核心,采用无线收发模块,由软件设定一种结构简洁的数据传输通信协议,组合成一个低功耗无线温湿度传输系统。
该系统由一个中心站和一个基站组成。
其中主要用温度与湿度传感器采集数据,单片机处理,由无线收发芯片向中心站传输,中心站通过单片机对温湿度进行监控,并用液晶显示器显示,可通过键盘设置温湿度报警阈值。
一旦出现跳阈,系统就会发出警告。
实践证明该系统体积小、精度较高、数据传输可靠性高、功耗低、功能易扩。
温湿度无线传输系统的温度测量范围为-55~125℃,分辨率最高可达0.0625℃。
基于测量误差0.5℃;湿度测量范围为0~100%RH,测量误差5%RH。
设计低功耗的温湿度传感器融温度、湿度测量于一体,具有数字式传输、数据储存、无线通信、信息显示等多种功能,结构紧凑,使用方便,价格低廉,具备了一般智能化仪器的基本功能,可以作为单独的温湿度测量仪器使用,也可以很方便地用于其它智能设备。
3系统硬件设计
3.1基站设计与实现
基站功能包括:
采集湿度、温度数据,将这两路数据按照预先设定的时间间隔
通过无线方式传送给中心站。
根据这些要求,该基站原理图如图1所示。
该基站以单片机AT89S52为核心来实现A/D转换、数据存储、控制无线收发芯片工作状态等功能。
3.2中心站设计与实现
中心站功能包括:
接收数据、液晶显示数据、键盘设置参数和蜂鸣监控系统。
根据这些要求,该中心站原理图如下所示(图2)。
该中心站以单片机AT89S52为核心,由无线收发芯片收发数据,键盘模块设置报警系统的参数,从而监控基站温湿度的工作,并由液晶显示模块显示数据,一旦温湿度超出设置的参数,蜂鸣报警系统就会响应。
4系统软件设计
4.1 协议设计
无线温湿度信号传出系统中软件设计首要解决的问题是基站与中心站之间数据传输方式、保持同步的传输协议。
首先此系统功能分析得出,初步实现的功能在于基站向中心站发送采集的温湿度数据,所以先采用通信电子中的单工通信方式进行数据传输。
结构示意图如下:
在此单工通信方式下,必须设定一种基本的两机通信协议实现两机间的数据传输。
这里称为自定义数据通信协议。
这里所说的数据协议是建立在物理层之上的通信数据包格式。
所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。
本作品使用的便是无线收发的通信方式。
在这个层面上,底层软件提供两个基本的操作函数:
发送一个字节数据、接收一个字节数据。
所有的数据协议全部建立在这两个操作方法之上。
通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。
类似于网络通信中的TCP/IP协议一般,比较可靠的通信协议往往包含有以下几个组成部分:
帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾.。
我们可以通过图11示例直观的了解本设计的基本通信协议方式。
图11 传输数据整体合成
引导码:
要进行发射数据前要先发引导码,当接收机受到正确的引导码后就会准备数据的接收。
数据原码:
确定接收的引导码后发送数据原码。
数据反码:
发送完原码紧接着发送数据反码。
校 验:
在接收机端,将接收到的原码和反码进行对比确定数据是否受到噪音扰。
结束码:
一桢数据信号传输结束标志。
编码思路:
因为无编码收发模块只能收发电平信号,进行通信时要软件编码,而单片机的外部中断中可以用边沿触发中断,所以考虑用外部中断来实现编码。
将接收模块的数据脚与接收机的P3.2脚连接,而发射模块与发射机的I/O口连接。
对发射机编程,使与发射头相连的I/O口产生周期为8ms的矩形波从而产生了引导码,接收机的P3.2脚遇到负跳变时向CPU请求中断,中断服务程序进行解码,并置数据接收位有效,准备数据接收。
当产生周期为1ms的矩形波时,接收机解码并辨别数据类型为逻辑“0”存入数据缓冲区,当产生0.5ms低电平1ms高电平的矩形波时,接收机解码为逻辑“1”并存入数据缓冲区。
数据传输时可能会因外界因素影响而出错,为了数据传输的准确性,想到了数据反码的校验,当传完数据后就接着传数据的反码,最后等所有信号传输完毕后接收机就对接收回来的信息进行校验处理。
图12是对数据中引导码、逻辑“1”、逻辑“0”的电平表示的示意图。
图12 几种单元信号说明
以上给出的是本作品通信系统运作的基本雏形,虽然简单,但是可行。
实际的通信系统中协议比这个要复杂,而且涉及到数据包响应、命令错误、延时等等一系列的问题,在这样的一个基础上可以克服这些困难并且实现出较为稳定可靠的系统。
在实际系统中,问题会出现在任何地方,有些特别的问题需要特别的方法才能够对待。
如何实现一个强壮的通信系统还需要继续深入的研究。
接下去围绕确定的通信方式,我们继续基站和中心站的软件设计。
4.2基站软件设计
基站的主要功能是采集温湿度并将齐调制成数字信号发射出去。
基站软件设计主要就是从这三个功能入手。
首先构造这三个功能的主要流程图(图13)如下:
图13站主程序
接着设计主程序中的温度采集发送子程序。
本设计硬件电路中采用数字温度传感器DS18B20。
该集成电路能将采集的模拟量直接转换成串行传输的数字量。
温度采集软件设计子程序流程图如下:
图14温度采集流程图
采集完温度后是调用湿度信号采集子程序。
硬件电路设计中,湿度传感器是模拟信号的采集。
由于单片机只采集数字信号,所以设计中先将该模拟信号通过A\D转换后再进入单片机中。
温度采集子程序的流程图如下图所示:
图15湿度采集流程图
基站温湿度采集是主要的信息源。
而采集完成后进行编译、发送需要从单片机进行数据处理后再送入无线传输模块。
该传输流程图如下所示:
图16发射信号流程图
引导码作用是一个标志位,当接收端接收到这个设定好周期的引导码时开计数器进行接收信号。
引导码后面分别发射原码以及原码的反码。
同时在一个信号里间断发射原码、反码的目的在于对发射信号进行验证。
这是一种防止信号受噪音干扰的方法。
4.3中心站软件设计
中心站的主要功能是接收温湿度传输信号,再将其数值显示于液晶显示屏中;利用键盘可以设定温湿度的安全监控范围;利用设定的监控范围可以实时监控,待温湿度超出该监控范围时产生报警声。
首先,对于接收无线温湿度传输信号,发送端是分时段计数信号量,在一个周期中分时段将信号传送出去。
所以接收端需要设定与发送端同步进行数据接收。
接收与发射端之间采用操作简单的编码进行通信。
具体是在基站中将测量到的数据在前端加上一个大于7.5ms小于8.5ms的矩形信号周期作为引导码。
当接收端接收到信号时,先对第一个信号进行计时,当属于引导码时间范围时才开启计数器进行数据接收。
而每个周期内的信号长度是有限的,判断接收到的信号长度达到设定后就可以关闭接收数据端口。
本设计采用外部中断计时器T1进行信号的采集工作。
单片机接收该无线信号的流程如下所示:
图18中心站接收信号子程序流程图
接通电源开始工作后,基站的信号发送都是连续进行没有间断。
所以在接收子程序上,我们设定了接收信号的最小期限值。
若在这个期限内还没有接收到信号,则认定为无信号接收,无信号接收时调用显示子程序在液晶上显示无接收信号字幕。
在此期限内有接收到基站的发射信号,则转为调用分析信号子程序。
分析信号子程序主要功能是(流程图见图19:
将接收到的信号进行解码;解码完成分离出温度信号与湿度信号;将两个信号分别送入各自的量化大小程序中进行数值分析。
中心站分析完数据后的任务就是将分析好的数据调用显示子程序进行实时显示。
并将温湿度数值与键盘设定值进行对比,超过限定值启动报警程序。
这里采用的报警装置是蜂鸣器作为超过限定值报警响应。
(显示与报警子程序流程图见图20)
图19中心站分析信号子程序流程图
图20显示与报警子程序流程图
5程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^3;//定义通信端口
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};//共阳极代码
voiddelay(uinti)
{
while(i--);
}
//初始化函数
init_ds18b20(void)
{
ucharx=0;
DQ=1;//DQ复位
delay(8);
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(14);
x=DQ;//稍作延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
//读一个字节
readonechar(void)
{
uchari=0;
uchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
//写一个字节
writeonechar(uchardat)
{
uchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
//读取温度
readtemperature(void)
{
uchara=0;
ucharb=0;
uchart=0;
init_ds18b20();
writeonechar(0xcc);//跳过读序号列号的操作
writeonechar(0x44);//启动温度转换
init_ds18b20();
writeonechar(0xcc);//跳过读序号列号的操作
writeonechar(0xbe);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=readonechar();//读取温度值低位
b=readonechar();//读取温度值高位
a=a>>4;//低位右移4位,舍弃小数部分
t=b<<4;//高位左移4位,舍弃符号位
t=t|a;
return(t);
}
voiddisplay_tempmain(uchari)//主程序温度显示函数
{
P0=table[i/10];//十位
P2=0x0e;
P2=0x2e;
delay(500);
P0=table[i%10];//个位
P2=0x0d;
P2=0x2d;
delay(500);
P0=0xc6;//显示摄氏度
P2=0x07;
P2=0x27;
delay(100);
}
voidmain(void)
{
uchartemp;
while
(1)
{
temp=readtemperature();
display_tempmain(temp);
}
4设计总结
在设计制作本系统的过程中,我们深切体会到,实践是理论运用的最好检验。
本次设计是对我们长时间所学知识的一次综合性检测和考验,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我们对网络资源认识,大大提高了查阅资料的效率,使我们有充足的时间投入到电路设计当中。
本系统的研制主要应用到了模拟电子技术、数字电子技术、单片机控制技术、电子工艺等多方面的知识,本系统达预期的要求,操作方便、价格便宜、精确度高,误差保持在5%以内。
在调试方面,经过长时间不定地点的测试操作,稳定的性能得到了认可。
同时此系统通过软件设计,减少误差的存在,大大提高了系统的精度。
本次设计,为我们提供了展示自我能力的舞台,也使我们深切认识到自身知识能力尚存在许多不足,更让我们体会到了电子技术与设计的趣味,以及其实用性。
今后,我们将更加努力学习。
参考文献
[1]徐维祥、刘旭敏.单片微型机原理及应用.大连:
大连理工大学出版社,1996
[2]李光飞、楼然苗、胡佳文、谢象佐.单片机课程设计与实例指导.北京:
北京航空航天大学出版社,2004
[3]余永权.89系列FLASH单片机原理及应用.北京:
电子工业出版社,2002
[4]李群芳,黄建.单片机微型计算机与接口技术.北京:
电子工业出版社,2001
[5]楼然苗、李光飞.51系列单片机设计实例.北京:
北京航空航天大学出版社,2003