当前位置:文档之家› 无线传感网技术及应用报告

无线传感网技术及应用报告

重庆航天职业技术学院实训报告教师:课程:无线传感网技术及应用学号:姓名:班级:物联网日期:2016/6/16评阅页课程设计题目: 温度采集DS18B20同组成员:学生自评:设计方案由讨论组完成,大家一起做硬件DS18B20温度显示,再由大家分工把报告完成。

指导教师评语:成绩:指导老师签名:2016年06月24前言ZigBee简介ZigBee技术是一种近距离、低功耗、低速率、低成本的无线通信技术,兼具经济、可靠、易于部署等优势,已成为无线传感器网络中最具潜力和研究价值的技术,在工业控制、环境监测、智能家居、医疗护理、安全预警、目标追踪等应用场合已展现出广阔的市场前景。

本设计利用TI公司CC2530单片机,采用DS18B20数字温度传感器,完成温度采集并通过液晶显示器显示测量温度值,测温电路简单,适合于-50~150摄氏度温度的测量。

目录一、设计题目 (1)二、硬件设计方案 (1)2.1 CC2530芯片简介: (1)2.2 芯片概述 (2)三、CC2530模块说明 (2)3.1 CPU 和内存 (2)3.2 中断控制器 (2)3.3外设 (3)3.4 调试接口 (3)3.5 无线设备 (3)四、DS18B20 (4)4.1 DS18B20工作原理 (4)4.2 DS18B20的主要特性 (5)五、软件设计方案 (5)5.1 程序流程图 (5)5.2 所需用到的部分C语言程序 (7)5.3 实验过程及结果 (11)六、总结 (13)七、参考文献 (13)一、设计题目本次的设计题目要求是基于DS18B20的温度采集显示系统,该系统要求包含温度采集模块、温度显示模块等。

其中温度采集模块所选用的是DS18B20数字温度传感器进行温度采集,温度显示模块用液晶显示屏显示。

二、硬件设计方案2.1 CC2530芯片简介:CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。

CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。

CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。

运行模式之间的转换时间短进一步确保了低能源消耗。

其引脚如图1.1所示。

图2.1 CC2530芯片2.2芯片概述如图1.2所示是CC2530 的方框图,图中模块大致可以分为三类:CPU 和内存相关的模块;外设、时钟和电源管理相关的模块,以及无线电相关的模块。

图2.2 CC2530 的方框图三、CC2530模块说明3.1 CPU 和内存CC253x芯片系列中使用的8051 CPU内核是一个单周期的8051兼容内核。

它有三种不同的内存访问总线(SFR,DATA 和CODE/XDATA),单周期访问SFR,DATA 和主SRAM。

它还包括一个调试接口和一个18 输入扩展中断单元。

3.2 中断控制器总共提供了18 个中断源,分为六个中断组,每个与四个中断优先级之一相关。

当设备从活动模式回到空闲模式,任一中断服务请求就被激发。

一些中断还可以从睡眠模式(供电模式1-3)唤醒设备。

3.3外设CC2530 包括许多不同的外设,允许应用程序设计者开发先进的应用。

3.4 调试接口执行一个专有的两线串行接口,用于内电路调试。

通过这个调试接口,可以执行整个闪存存储器的擦除、控制使能哪个振荡器、停止和开始执行用户程序、执行8051 内核提供的指令、设置代码断点,以及内核中全部指令的单步调试。

使用这些技术,可以很好地执行内电路的调试和外部闪存的编程。

设备含有闪存存储器以存储程序代码。

闪存存储器可通过用户软件和调试接口编程。

闪存控制器处理写入和擦除嵌入式闪存存储器。

闪存控制器允许页面擦除和4 字节编程。

3.5 无线设备CC2530 具有一个IEEE 802.15.4 兼容无线收发器。

RF 内核控制模拟无线模块。

另外,它提供了MCU 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。

无线设备还包括一个数据包过滤和地址识别模块。

四、DS18B204.1 DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

DS18B20测温原理如图所示。

图3.1中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

图3.1 DS18B20 测温原理图4.2 DS18B20的主要特性①、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

②、测温范围 -55℃~+125℃,固有测温误差1℃。

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源)⑤、在使用中不需要任何外围元件⑥、测量结果以9~12位数字量方式串行传送⑦、不锈钢保护管直径Φ6⑧、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温⑨、标准安装螺纹 M10X1, M12X1.5, G1/2"任选⑩、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。

五、软件设计方案5.1 程序流程图程序流程图如图4.1所示。

图4.1 程序流程图5.2所需用到的部分C语言程序(1)Main()/****************************************************** ********** 文件名 : main.c* 功能描述 : DS18B20温度传感器值测试程序* 日期 : 2013/11/15* 作者 :******************************************************* *********/#include "smartrfeb.h"#include <stdio.h>bool bread;int count;extern uint16 readTemp();/****************************************************** ************************** 函数名称:CalcTempture** 功能描述:DS18B20温湿度转换计算函数** 入口参数:val:温度读取值******************************************************* ***********************///voidCalcTempture(uint16 val){uint16tmp;float temp;char s[16];temp=((float)val)*0.625; //放大10倍tmp=(uint16)temp;sprintf(s, (char*)": %d.%d C", ((uint16)(tmp / 10)), ((uint16)(tmp % 10)));PutString(50,35,s); //在LCD屏上显示湿度值if(tmp>=220&&tmp<240){ LED1=1;LED2=0;LED3=0;LED4=0;}if(tmp>=240&&tmp<260){ LED1=1;LED2=1;LED3=0;LED4=0;}if(tmp>=260&&tmp<280){ LED1=1;LED2=1;LED3=1;LED4=0;}if(tmp>=280&&tmp) { LED1=1;LED2=1;LED3=1;LED4=1;}}/****************************************************** ************************** 函数名称:main** 功能描述:DS18B20测试主函数******************************************************** ***********************/void main(void){SET_CLOCK_SOURCE(CRYSTAL); //设置主时钟while ((CLKCONSTA &0xC0)!= 0); //等待时钟稳定SET_CLOCK_CLKSPD(1);SET_CLOCK_TICKSPD(16); //32M--16分频=2MHzTIMER1_CLOCK_DIVIDE(32); //2M--32分频=62.5KHzTIMER_MODE_SELECT(1,T_MODE_FREE); //定时器 1 自由计数 65535/(62.5*1000)=1.04856秒INIT_LED1();LCD_Init(); //初始化LCD SetBackLight(50); //设置背光ClrScreen();FontSet_cn(1,1); //设置显示字体PutString_cn(30,10,"温度测量");PutString_cn(0,35,"温度值:");FontSet(1,1);IEN1 |= (0x01 << 1); //开定时器中断; EA = 1; //开总中断;count=0;IO_DIR_PORT_PIN(1, 1, IO_OUT);IO_DIR_PORT_PIN(1, 2, IO_OUT);IO_DIR_PORT_PIN(1, 3, IO_OUT);IO_DIR_PORT_PIN(2, 0, IO_OUT);LED1=1;LED2=1;LED3=1;LED4=1;while(1){if(bread==1){bread=0;CalcTempture(readTemp());}}}(2)LCD//============================================================== ==========// 文件名: LCD_Dis.c// 日期: 2009/02/10// 描述: MzLH04-12864 LCD显示模块驱动V1.0版// 基本功能接口函数集//// 参考: 无// 版本:// 2009/02/10 First version Mz Design//============================================================== ==========#include "hal.h"#define Dis_X_MAX 128-1#define Dis_Y_MAX 64-1unsigned char X_Witch=6;unsigned char Y_Witch=10;unsigned char X_Witch_cn=16;unsigned char Y_Witch_cn=16;unsigned char Dis_Zero=0;//#define SPI_RES P0_0#define SPI_SCK P1_5#define SPI_SDA P1_6#define SPI_CS P1_4voidLcdPortInit(){IO_DIR_PORT_PIN(0, 0, IO_OUT);IO_DIR_PORT_PIN(1, 4, IO_OUT);IO_DIR_PORT_PIN(1, 5, IO_OUT);IO_DIR_PORT_PIN(1, 6, IO_OUT);}//============================================================== ==========// 函数: voidLCD_Init(void)// 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位// 参数: 无// 返回: 无// 备注:// 版本:// 2009/02/10 First version Mz Design//============================================================== ==========voidTimeDelay(unsigned int Timers){unsignedinti;while(Timers){Timers--;for(i=0;i<100;i++) ;}}voidLCD_Init(void){LcdPortInit();//SS和SCK预先设置为高电平SPI_SCK = 1;SPI_CS = 1;//复位LCD模块//SPI_RES = 0;TimeDelay(50);//保持低电平大概2ms左右//SPI_RES = 1;TimeDelay(80); //延时大概10ms左右}5.3实验过程及结果如图5.3.1所示,将程序按照一定的步骤下载到开发板上。

相关主题