基于WIFI多点温度采集系统设计.docx

上传人:b****5 文档编号:4732614 上传时间:2022-12-08 格式:DOCX 页数:9 大小:19.77KB
下载 相关 举报
基于WIFI多点温度采集系统设计.docx_第1页
第1页 / 共9页
基于WIFI多点温度采集系统设计.docx_第2页
第2页 / 共9页
基于WIFI多点温度采集系统设计.docx_第3页
第3页 / 共9页
基于WIFI多点温度采集系统设计.docx_第4页
第4页 / 共9页
基于WIFI多点温度采集系统设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基于WIFI多点温度采集系统设计.docx

《基于WIFI多点温度采集系统设计.docx》由会员分享,可在线阅读,更多相关《基于WIFI多点温度采集系统设计.docx(9页珍藏版)》请在冰豆网上搜索。

基于WIFI多点温度采集系统设计.docx

基于WIFI多点温度采集系统设计

基于WIFI多点温度采集系统设计

武汉亚为电子科技有限公司

一·项目背景:

A.该产品在现实生活中的应用现状?

1.由于数据采集系统应用范围越来越广,功能越来越全,大众需要一种应用范围广,性价比高的数据采集系统,无线传输实现了数据处理功能强大,显示简洁、直观,性价比高,应用广泛。

2.在生产中经常需对温度进行检测,数字显示信息存储及实时控制,无线采集系统可被广泛应用于温度测量或相应的可转换为温度量或供电故障监控的工业,农业,环保,服务业安全监控中。

B.存在哪些问题?

很多系统存在:

1.功能单一;2.采集通道少;3.采集速率低;

4.操作复杂;5.并对测试环境要求较高等问题。

二、详细设计需求

•1、18B20温度采集端对现场温度进行采集,并将采集到的温度电压信号转换为数字信号,传送给数据处理端

•2、数据处理端对数据进行处理后,经WIFI模块传送到PC机

•3、PC机对温度数据进行实时记录并显示,用户可根据需要选择所要查看的监测点温度数据

三、系统设计总方案

1.温度传感器DS18b20

2.单总线

3.单片机

4.串口

5.YAVWIFI2AD模块

6.无线传输

7.PC机显示

四、系统总方案简述

•1、温度传感器DS18b20;

•2、传感器与WIFI相连,通过指令控制WIFI模块或传输数据并发送出去;

•3、PC机接收无线信号显示相应的温度信息。

五、方案每个部分实现原理

1、温度传感器DS18b20

DS18B20的温度检测与数字数据输出全集成于一个芯片上,从而抗干扰力更强。

其一个工作周期可分为两个部分,即温度检测和数据处理。

在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。

18B20共有三种形态的存储器资源,它们分别是:

ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。

数据在出产时设置不由用户更改。

DS18B20共64位ROM。

RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。

第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。

在上电复位时其值将被刷新。

第5个字节则是用户第3个EEPROM的镜像。

第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。

第9个字节为前8个字节的CRC码。

工作原理及应用总结

DS18b20ROM只读存储器用于存放DS18B20ID编码

内部存储器RAM数据暂存器用于内部计算和数据存取,数据在掉电后丢失

EEPROM非易失性记忆体用于存放长期需要保存的数据,上下限温度报警值和校验数据

DS18b20温度检测

一个工作周期数据处理

DS18b20单总线控制流程

1.复位2.存在脉冲3.控制器发送ROM指令4.控制发送存储器操作指令5.执行或数据读写

复位:

首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。

当18B20接到此复位信号后则会15~60uS后回发一个芯片的存在脉冲。

存在脉冲:

在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。

至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。

如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

控制器发送ROM指令:

双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。

ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。

其主要目的是为了分辨一条总线上挂接的多个器件并作处理。

诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:

此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。

控制器发送存储器操作指令:

在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。

操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。

存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

执行或数据读写:

一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。

如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。

如执行数据读写指令则需要严格遵循18B20的读写时序来操作。

2、AMS1117芯片

1.AMS1117是一个正向低压降稳压器,在1A电流下压降为1.2V,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V和可调版

2.AMS1117片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力

3.AMS1117可用于交换式电源5V至3.3V线性稳压器,电池充电器、电池供电设备等,本系统中使用提供稳定3.3V电压

七、程序

1.采集端程序

/*-----------------------------------------------

18B20温度传感器

------------------------------------------------*/

#include"delay.h"

#include"18b20.h"

/*------------------------------------------------

18b20初始化

------------------------------------------------*/

bitInit_DS18B20(void)

{

bitdat=0;

DQ=1;//DQ复位

DelayUs2x(5);//稍做延时

DQ=0;//单片机将DQ拉低

DelayUs2x(200);//精确延时大于480us小于960us

DelayUs2x(200);

DQ=1;//拉高总线

DelayUs2x(50);//15~60us后接收60-240us的存在脉冲

dat=DQ;//如果x=0则初始化成功,x=1则初始化失败

DelayUs2x(25);//稍作延时返回

returndat;

}

/*------------------------------------------------

读取一个字节

------------------------------------------------*/

unsignedcharReadOneChar(void)

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

DelayUs2x(25);

}

return(dat);

}

•/*------------------------------------------------

•写入一个字节

•------------------------------------------------*/

•voidWriteOneChar(unsignedchardat)

•{

•unsignedchari=0;

•for(i=8;i>0;i--)

•{

•DQ=0;

•DQ=dat&0x01;

•DelayUs2x(25);

•DQ=1;

•dat>>=1;

•}

•DelayUs2x(25);

•}

•/*------------------------------------------------

•读取温度

•------------------------------------------------*/

•unsignedintReadTemperature(void)

•{

•unsignedchara=0;

•unsignedintb=0;

•unsignedintt=0;

•Init_DS18B20();

•WriteOneChar(0xCC);//跳过读序号列号的操作

•WriteOneChar(0x44);//启动温度转换

•DelayMs(10);

•Init_DS18B20();

•WriteOneChar(0xCC);//跳过读序号列号的操作

•WriteOneChar(0xBE);

•//读取温度寄存器等(共可读9个寄存器)前两个就是温度

•a=ReadOneChar();//低位

•b=ReadOneChar();//高位

•b<<=8;

•t=a+b;

•return(t);

•}

2.主程序

•/*-----------------------------------------------

•名称:

DS18b20温度检测WIFI传输

•------------------------------------------------*/

•#include

•#include

•#include"18b20.h"

•#include"18b20a.h"

•#include"delay.h"

•#include"chuankou.h"

•bitReadTempFlag;//定义读时间标志

•voidInit_Timer0(void);//定时器初始化

•/*------------------------------------------------

•串口通讯初始化

•------------------------------------------------*/

•voidUART_Init(void)

•{

•SCON=0x50;//SCON:

模式1,8-bitUART,使能接收

•TMOD|=0x20;//TMOD:

timer1,mode2,8-bit重装

•TH1=0xFD;//TH1:

重装值9600波特率晶振11.0592MHz

•TR1=1;//TR1:

timer1打开

•//EA=1;//打开总中断

•ES=1;//打开串口中断

•TI=1;

•}

•/*------------------------------------------------

•主函数

•------------------------------------------------*/

•voidmain(void)

•{

•inttemp;

•floattemperature;

•chardisplaytemp[16];//定义显示区域临时存储数组

•Init_Timer0();

•UART_Init();

•while

(1)//主循环

•{

•if(ReadTempFlag==1)

•{

•ReadTempFlag=0;

•temp=ReadTemperature();

•temperature=(float)temp*0.0625;

•sprintf(displaytemp,"Temp1%7.3f",temperature);//打印温度值

•sendstr(displaytemp);

•temp=ReadTemperature_a();

•temperature=(float)temp*0.0625;

•sprintf(displaytemp,"Temp2%7.3f",temperature);//打印温度值

•sendstr(displaytemp);

•}

•}

•}

•/*------------------------------------------------

•定时器初始化子程序

•------------------------------------------------*/

•voidInit_Timer0(void)

•{

•TMOD|=0x01;//使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

•//TH0=0x00;//给定初值

•//TL0=0x00;

•EA=1;//总中断打开

•ET0=1;//定时器中断打开

•TR0=1;//定时器开关打开

•}

•/*------------------------------------------------

•定时器中断子程序

•------------------------------------------------*/

•voidTimer0_isr(void)interrupt1

•{

•staticunsignedintnum;

•TH0=(65536-2000)/256;//重新赋值2ms

•TL0=(65536-2000)%256;

•num++;

•if(num==600)//

•{

•num=0;

•ReadTempFlag=1;//读标志位置1

•}

•}

•voidzhongduan4()interrupt4

•{

•Uart();

•}

附:

参考原理图

Word是学生和职场人士最常用的一款办公软件之一,99.99%的人知道它,但其实,这个软件背后,还有一大批隐藏技能你不知道。

掌握他们,你将开启新世界的大门。

Tab+Enter,在编过号以后,会自动编号段落

Ctrl+D调出字体栏,配合Tab+Enter全键盘操作吧

Ctrl+L左对齐,Ctrl+R右对齐,Ctrl+E居中

Ctrl+F查找,Ctrl+H替换。

然后关于替换,里面又大有学问!

有时候Word文档中有许多多余的空行需要删除,这个时候我们可以完全可以用“查找替换”来轻松解决。

打开“编辑”菜单中的“替换”对话框,把光标定位在“查找内容”输入框中,单击“高级”按钮,选择“特殊字符”中的“段落标记”两次,在输入框中会显示“^P^P”,然后在“替换为”输入框中用上面的方法插入一个“段落标记”(一个“^P”),再按下“全部替换”按钮。

这样多余的空行就会被删除。

Ctrl+Z是撤销,那还原呢?

就是Ctrl+Y,撤销上一步撤销!

比如我输入abc,按一下F4,就会自动再输入一遍abc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1