毕业论文基于物联网的智能浇花演示系统的设计与实现整理版_第1页
毕业论文基于物联网的智能浇花演示系统的设计与实现整理版_第2页
毕业论文基于物联网的智能浇花演示系统的设计与实现整理版_第3页
毕业论文基于物联网的智能浇花演示系统的设计与实现整理版_第4页
毕业论文基于物联网的智能浇花演示系统的设计与实现整理版_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*实践教学*兰州理工大学计算机与通信学院2014年春季学期物联网综合应用实践课程设计 题 目: 基于物联网的智能浇花演示系统 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录摘 要1一、基本原理2二、基本硬件系统22.1 cc2530控制器32.1.1 cc2530引脚介绍32.1.2 cc2530功能介绍52.1.3 模块说明62.2 温、湿度采集模块92.2.1 传感器性能说明102.2.2 接口电路102.2.3 电源引脚112.2.4 穿行接口(两线双向)112.3 光照强度采集模块112.4 水位传感器及报警模块122.5 浇水和电机模块12三、 软件系统的设计133.1

2、 系统软件流程图13四、 系统测试13五、 设计总结14参考文献15致谢16附录17摘 要本次设计是设计一种单片机控制的自动浇水系统,实现室内盆花浇水的自动化系统。该系统可对土壤的温湿度进行监控,并对作物进行适时、适量的浇水。其核心是单片机和温湿度传感器以及浇水驱动电路构成的检测控制部分。主要研究土壤湿度与浇水量之间的关系、浇灌控制技术及设备系统的硬件、软件编程各个部分。设备是基于物联网cc2530的智能浇花系统,采用新型温湿度采集传感器、光敏采集传感器及智能主板(协调器)进行主体搭建,并由rs232转rj-45的连接方式与主机或网关连接。利用温湿度采集、光敏采集传感器等对环境数据进行采集,由

3、协调器控制和调度电机、灯光等设备。目的是实现新型农业中的自动化控制,改进农业生产效率。系统通过大量实验,完成了协调器的总控作用和各节点的采集及调度工作,实现了从采集到传输、处理,再到调度的自动化流程,并在实验中得到了性能的改进。关键词:物联网 智能浇花 传感器 cc2530一、基本原理本设计为基于物联网cc2530芯片的智能浇花系统。其基本原理是通过湿度、温度、光强度传感器来探测盆栽植物土壤的湿度和该植物适宜生长的温度和光照强度来控制植物生长需求,进而让植物更好生长。设定植物最佳生长温度区间1525c,土壤湿度为1020%rx,光照强度为1020x,那么当各指标在正常值区间内则植物安全生长,当

4、各指标低于或高于上下限峰值时,则系统自动报警,提示主人,并且当湿度低于下限指标时,由控制器发送命令到电机,电机转动带动微型水泵开始给植物补水,若湿度超过上限值,则电机停止工作补水完成。本设计还有一个水箱模块,其原理是通过水位传感器来保证水箱水位正常,同样设定水箱水位为3050cm为正常,而当水位高于或低于上下限值是,系统自动报警提示水量不足。cc2530控制器水位模块报警模块浇水模块光照强度采集模块土壤湿度采集模块温度采集模块电机模块电源二、 基本硬件系统 2.1 cc2530控制器cc2530设备系列使用的 8051 cpu 内核是一个单周期的 8051 兼容内核,它有三个不同的存储器访问总

5、线(sfr、data 和 code/xdata),以单周期访问 sfr、data 和主 sram。它还包括一个调试接口和一个 18输入的扩展中断单元。 cc2530 是用于2.4-ghz ieee 802.15.4、zigbee 和rf4ce 应用的一个真正的片上系统(soc)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。cc2530 结合了领先的rf 收发器的优良性能,业界标准的增强型8051 cpu,系统内可编程闪存,8-kb ram 和许多其它强大的功能。cc2530 有四种不同的闪存版本:cc2530f32/64/128/256,分别具有32/64/128/256kb 的闪

6、存。cc2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。2.1.1 cc2530引脚介绍引脚名称 引脚 引脚类型 描述avdd1 28 电源(模拟) 2-v3.6-v 模拟电源连接avdd2 27 电源(模拟) 2-v3.6-v 模拟电源连接avdd3 24 电源(模拟) 2-v3.6-v 模拟电源连接avdd4 29 电源(模拟) 2-v3.6-v 模拟电源连接avdd5 21 电源(模拟) 2-v3.6-v 模拟电源连接avdd6 31 电源(模拟) 2-v3.6-v 模拟电源连接dcoupl 40 电源(数字) 1.8v 数

7、字电源去耦。不使用外部电路供应。dvdd1 39 电源(数字) 2-v3.6-v 数字电源连接dvdd2 10 电源(数字) 2-v3.6-v 数字电源连接gnd - 接地 接地衬垫必须连接到一个坚固的接地面。gnd 1,2,3,4 未使用的引脚 连接到gndp0_0 19 数字i/o 端口0.0p0_1 18 数字i/o 端口0.1p0_2 17 数字i/o 端口0.2p0_3 16 数字i/o 端口0.3p0_4 15 数字i/o 端口0.4p0_5 14 数字i/o 端口0.5p0_6 13 数字i/o 端口0.6p0_7 12 数字i/o 端口0.7p1_0 11 数字i/o 端口1.

8、0-20-ma 驱动能力p1_1 9 数字i/o 端口1.1-20-ma 驱动能力p1_2 8 数字i/o 端口1.2p1_3 7 数字i/o 端口1.3p1_4 6 数字i/o 端口1.4p1_5 5 数字i/o 端口1.5p1_6 38 数字i/o 端口1.6p1_7 37 数字i/o 端口1.7p2_0 36 数字i/o 端口2.0p2_1 35 数字i/o 端口2.1p2_2 34 数字i/o 端口2.2p2_3 33 数字i/o 模拟端口2.3/32.768 khz xoscp2_4 32 数字i/o 模拟端口2.4/32.768 khz xoscrbias 30 模拟i/o 参考电

9、流的外部精密偏置电阻reset_n 20 数字输入 复位,活动到低电平rf_n 26 rf i/o rx 期间负rf 输入信号到lna rf_p 25 rf i/o rx 期间正rf 输入信号到lnaxosc_q1 22 模拟i/o 32-mhz 晶振引脚1或外部时钟输入xosc_q2 23 模拟i/o 32-mhz 晶振引脚22.1.2 cc2530功能介绍2.1.2.1 rf/布局适应2.4-ghz ieee 802.15.4 的rf 收发器极高的接收灵敏度和抗干扰性能可编程的输出功率高达4.5 dbm只需极少的外接元件只需一个晶振,即可满足网状网络系统需要6-mm ×6-mm

10、的qfn40 封装适合系统配置符合世界范围的无线电频率法规:etsi en 300 328 和en 300440(欧洲),fcc cfr47 第15 部分(美国)和arib std-t-66(日本)2.1.2.2 低功耗主动模式rx(cpu 空闲):24 ma主动模式tx 在1dbm(cpu 空闲):29ma供电模式1(4 s 唤醒):0.2 ma供电模式2(睡眠定时器运行):1 a供电模式3(外部中断):0.4 a宽电源电压范围(2 v3.6 v)2.1.2.3 微控制器优良的性能和具有代码预取功能的低功耗8051 微控制器内核32-、64-或128-kb 的系统内可编程闪存8-kb ram

11、,具备在各种供电方式下的数据保持能力支持硬件调试2.1.2.4 外设强大的5 通道dmaieee 802.5.4 mac 定时器,通用定时器(一个16 位定时器,一个8 位定时器)ir 发生电路具有捕获功能的32-khz 睡眠定时器硬件支持csma/ca支持精确的数字化rssi/lqi电池监视器和温度传感器具有8 路输入和可配置分辨率的12 位adcaes 安全协处理器2 个支持多种串行通信协议的强大usart21 个通用i/o 引脚(19×4 ma,2×20 ma)看门狗定时器2.1.3 模块说明2.1.3.1 cpu 和内存cc253x芯片系列中使用的8051 cpu内

12、核是一个单周期的8051兼容内核。它有三种不同的内存访问总线(sfr,data 和code/xdata),单周期访问sfr,data 和主sram。它还包括一个调试接口和一个18 输入扩展中断单元。中断控制器总共提供了18 个中断源,分为六个中断组,每个与四个中断优先级之一相关。当设备从活动模式回到空闲模式,任一中断服务请求就被激发。一些中断还可以从睡眠模式(供电模式1-3)唤醒设备。内存仲裁器位于系统中心,因为它通过sfr 总线把cpu 和dma 控制器和物理存储器以及所有外设连接起来。内存仲裁器有四个内存访问点,每次访问可以映射到三个物理存储器之一:一个8-kb sram、闪存存储器和xr

13、eg/sfr 寄存器。它负责执行仲裁,并确定同时访问同一个物理存储器之间的顺序。8-kb sram映射到data存储空间和部分xdata存储空间。8-kb sram是一个超低功耗的sram,即使数字部分掉电(供电模式2 和3)也能保留其内容。这是对于低功耗应用来说很重要的一个功能。32/64/128/256 kb闪存块为设备提供了内电路可编程的非易失性程序存储器,映射到xdata 存储空间。除了保存程序代码和常量以外,非易失性存储器允许应用程序保存必须保留的数据,这样设备重启之后可以使用这些数据。使用这个功能,例如可以利用已经保存的网络具体数据,就不需要经过完全启动、网络寻找和加入过程。2.1

14、.3.2 时钟和电源管理数字内核和外设由一个1.8-v 低差稳压器供电。它提供了电源管理功能,可以实现使用不同供电模式的长电池寿命的低功耗运行。有五种不同的复位源来复位设备。2.1.3.3 外设cc2530 包括许多不同的外设,允许应用程序设计者开发先进的应用。调试接口执行一个专有的两线串行接口,用于内电路调试。通过这个调试接口,可以执行整个闪存存储器的擦除、控制使能哪个振荡器、停止和开始执行用户程序、执行8051 内核提供的指令、设置代码断点,以及内核中全部指令的单步调试。使用这些技术,可以很好地执行内电路的调试和外部闪存的编程。设备含有闪存存储器以存储程序代码。闪存存储器可通过用户软件和调

15、试接口编程。闪存控制器处理写入和擦除嵌入式闪存存储器。闪存控制器允许页面擦除和4 字节编程。i/o控制器负责所有通用i/o引脚。cpu可以配置外设模块是否控制某个引脚或它们是否受软件控制,如果是的话,每个引脚配置为一个输入还是输出,是否连接衬垫里的一个上拉或下拉电阻。cpu 中断可以分别在每个引脚上使能。每个连接到i/o 引脚的外设可以在两个不同的i/o 引脚位置之间选择,以确保在不同应用程序中的灵活性。系统可以使用一个多功能的五通道dma控制器,使用xdata存储空间访问存储器,因此能够访问所有物理存储器。每个通道(触发器、优先级、传输模式、寻址模式、源和目标指针和传输计数)用dma 描述符

16、在存储器任何地方配置。许多硬件外设(aes 内核、闪存控制器、usart、定时器、adc 接口)通过使用dma 控制器在sfr 或xreg 地址和闪存/sram 之间进行数据传输,获得高效率操作。定时器1 是一个16 位定时器,具有定时器/pwm 功能。它有一个可编程的分频器,一个16 位周期值,和五个各自可编程的计数器/捕获通道,每个都有一个16 位比较值。每个计数器/捕获通道可以用作一个pwm输出或捕获输入信号边沿的时序。它还可以配置在ir产生模式,计算定时器3 周期,输出是anded,定时器3 的输出是用最小的cpu 互动产生调制的消费型ir 信号。mac定时器(定时器2)是专门为支持i

17、eee 802.15.4 mac或软件中其他时槽的协议设计。定时器有一个可配置的定时器周期和一个8 位溢出计数器,可以用于保持跟踪已经经过的周期数。一个16 位捕获寄存器也用于记录收到/发送一个帧开始界定符的精确时间,或传输结束的精确时间,还有一个16 位输出比较寄存器可以在具体时间产生不同的选通命令(开始rx,开始tx,等等)到无线模块。定时器3 和定时器4 是8 位定时器,具有定时器/计数器/pwm 功能。它们有一个可编程的分频器,一个8 位的周期值,一个可编程的计数器通道,具有一个8 位的比较值。每个计数器通道可以用作一个pwm 输出。睡眠定时器是一个超低功耗的定时器,计算32-khz

18、晶振或32-khz rc 振荡器的周期。睡眠定时器在除了供电模式3 的所有工作模式下不断运行。这一定时器的典型应用是作为实时计数器,或作为一个唤醒定时器跳出供电模式1 或2。adc支持7到12位的分辨率,分别在30 khz或4 khz的带宽。dc和音频转换可以使用高达八个输入通道(端口0)。输入可以选择作为单端或差分。参考电压可以是内部电压、avdd 或是一个单端或差分外部信号。adc 还有一个温度传感输入通道。adc 可以自动执行定期抽样或转换通道序列的程序。随机数发生器使用一个16 位lfsr 来产生伪随机数,这可以被cpu 读取或由选通命令处理器直接使用。例如随机数可以用作产生随机密钥,

19、用于安全。aes加密/解密内核允许用户使用带有128位密钥的aes算法加密和解密数据。这一内核能够支持ieee 802.15.4 mac 安全、zigbee 网络层和应用层要求的aes 操作。一个内置的看门狗允许cc2530 在固件挂起的情况下复位自身。当看门狗定时器由软件使能,它必须定期清除;否则,当它超时就复位它就复位设备。或者它可以配置用作一个通用32-khz 定时器。usart 0和usart 1每个被配置为一个spi主/从或一个uart。它们为rx和tx提供了双缓冲,以及硬件流控制,因此非常适合于高吞吐量的全双工应用。每个都有自己的高精度波特率发生器,因此可以使普通定时器空闲出来用作

20、其他用途。2.1.3.4 无线设备cc2530 具有一个ieee 802.15.4 兼容无线收发器。rf 内核控制模拟无线模块。另外,它提供了mcu 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。2.2 温、湿度采集模块 信息的采集由传感器来完成,设定好温度和湿度的良好范围,给传感器上电后便可自行完成温度和湿度的信息采集,当然硬件的编程是必不可少的。传感器通过串行方式向控制器传送数据。2.2.1 传感器性能说明表1 湿度传感器特性参数条件min.typ.max.单位分辨率0.50.030.03%rh8121

21、2bit重复性+0.1、-0.1%rh精度不确定性线性化互换性可完全互换非线性度原始数据+3、-3%rh线性化1%rh量程范围0100%rh响应时间1/e(63%)缓慢流动空气4s迟滞+1、-1%rh长期稳定性典型值<0.5%rh/vr表2 温度传感器特性参数条件min.typ.max.单位分辨率0040.010.01°c0.070.020.02°f121414bit重复性+0.1、-0.1°c+0.2、-0.2°f精度量程范围-40123.8°c-40254.9°f响应时间1/e(63%)530s2.2.2 接口电路2.2.3

22、 电源引脚 shtxx的供电电压为2.45.5v。传感器上电后,要等待11ms以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(vdd,gnd)之间可增加一个100nf的电容,用以去耦滤波。2.2.4 穿行接口(两线双向)2.2.4.1 串行时钟输入(sck) sck用于微处理器与shtxx之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小sck频率。2.2.4.2 串行数据(data) data三态门用于数据的读取。data在sck时钟下降沿之后改变状态,并仅在sck时钟上升沿有效。数据传输期间,在sck时钟高电平时,data必须保持稳定。为避免信号冲突,微处理器应驱动data

23、在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平(参见图2)。上拉电阻通常已包含在微处理器的i/o 电路中。2.3 光照强度采集模块 光电二极管(也称光敏二极管)是在反向电压作用之下工作的。没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。当有光照时,携带能量的光子进入pn结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子-空穴对,称为光生载流子。 它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。这种特性称为“光电导”。光电二极管在一般照度的光线照射下,所产生的电流叫光电流。如果在外电路上接上负载,负

24、载上就获得了电信号,而且这个电信号随着光的变化而相应变化。 由短路电流与照度特性可知短路电路与光照强度大小成正比。 再根据三级管放大特性,基极电流与集电极输出电压成正比,再用ad转换正好可用来做光照强度检测。2.4 水位传感器及报警模块水位传感安置在水箱内部,主要是用来检测水位的变化。设定水位在3050cm之间为正常,则当水位低于30cm或者高于50cm时,系统报警模块开始报警,提示主人进行水箱加水。2.5 浇水和电机模块浇水具有选择性。在每次浇水前,系统会通过土壤湿度传感器对植物土壤湿度进行检测,如果超过一定值,就不进行浇水操作,防止过度浇水、浪费水资料。而当土壤湿度低于植物生长下

25、线值时,则系统自动启动电机通过安置在水箱中的微型水泵,为植物进行补水。当浇水一段时间后土壤湿度达到或者超过植物最佳生长的最大值时,则系统自动终止电机工作,停止水泵抽水为植物浇水。3、 软件系统的设计3.1 系统软件流程图初始化及显示系统主界面温度湿度检测模块 光照强度检测模块土壤湿度检测模块关闭水泵判断是否浇水开始水位监测模块是否加水停止加水系统软件设计包括初始化、土壤湿度监测子程序、温度监测子程序、光照强度监测子程序、水位监测子程序、报警子程序等,主程序流程图如下图所示: 否 否 是 是4、 系统测试本次设计从系统实现原理、硬件设计、软件设计三个方面进行描述,通过星型拓扑结构zigbee网完

26、成节点与节点之间、节点与协调器之间的数据传输。系统通过大量实验,完成了协调器的总控作用和各节点的采集及调度工作,实现了从采集到传输、处理,再到调度的自动化流程,并在实验中得到了性能的改进。5、 设计总结做了一周的课程设计,有了很多的心得体会,虽然多数是有关物联网方面的,也懂得了团体合作的重要性,也深刻的了解到实践不但完善了我们的知识系统同时也增长了我们的见识开拓了我们的视野使我们对知识的了解更加深刻。这将对我们的人生道路起到非常大的作用。在这一周的时间里我们组四个人认真的听老师讲解,仔细的查阅资料,遵守老师安排的时间,遵守实验室的各项规章制度,能够按时完成任务。我非常感谢老师对我们的悉心讲解和

27、耐心指导,使我能更认真的汇编程序和查找程序中的错误,并能在老师要求的基础上扩展自己的想法,培养了自己的开拓和创新精神。刚接到这个题目时真实真让我无从下手,不知该怎样下手才能实现这样的功能。第一天上午我组人来到图书馆查阅资料。一上午的时间都在找跟这个题目有关的书籍。但是最后,还是令我们很失望,没有一个实验跟智能浇花有关的,但在有些书中的一些程序跟我们要实现的功能有相似的地方。况且它的一些指令我们都在上课时学过,都看得懂,于是我们借了这本书再加上好几本单片机实验的带回去研究。下午可以去机房调试程序了,但我们仍然没有头绪呢。通过一下午的查阅各种书籍才把那本书上的实验看的大概明白了些,知道实现这个功能

28、的过程。第二天有时去机房调试可我们还没有程序呢,我又拿着书看着单片机的各个端口功能。之后就开始研究如何编写程序,用了多半天的时间终于把程序的大框编写出来了。在这次课程设计之后,我对物联网的学习更加有了兴趣。对物联网中的一些概念有了更深一步的理解。参考文献1. 李文仲,段朝玉著.zigbee2007/pro协议栈实验与实践. 北京航空航天大学出版社,2009.32. 石志国等著. 物联网技术与应用. 北京交通大学出版社, 2012.93. 吴大鹏等著. 物联网技术与应用. 电子工业出版社, 2012.64. 吴洪贵,孙玉娣等著. 物联网应用系统开发. 东软电子出版社, 2012.115、c程序设

29、计教程学习辅导谭浩强编著,清华大学出版社,20076、单片机c语言轻松入门 / 周坚编著. - 北京: 北京航空航天大学出版社, 20067、单片机c语言轻松入门 / 周坚编著. - 北京: 北京航空航天大学出版社, 20068. 熊茂华,熊昕著. 物联网技术与应用开发. 西安电子科技大学出版社, 2012.119. 北京奥尔斯电子科技有限公司.物联网创新实验套件实验指导书 2012.11致谢这次课程设计对我以后的学习有很大的帮助,通过这次设计能够让我们更好的掌握物联网中一些知识的基本应用。学习

30、是一件非常枯燥的事情,只看书难以很好的掌握书本知识,通过上机实验,设计能够让我们更进一步的掌握知识,理论与实践相结合会把所学知识更加灵活的运用,现在我可以用多种方法实现同一个功能,并能扩展更加丰富的内容而且言简意赅。所以我非常感谢老师能够给我们提供这次机会,我会把握好每一次机会时刻准备着为社会贡献自己的一份力量。我希望以后学校能够更多次的为我们提供这样的机会,让我们更多次有理论结合实际的机会。我们课程设计的圆满完成与老师的指导是密不可分,在此,我们对马老师表示感谢,道一声:“老师,您们辛苦了”!附录智能浇花系统温湿度采集源代码/* project: sht11 demo program (v2

31、.0) filename: sht11.c prozessor: 80c51 family compiler: keil version 6.14 autor: mst copyrigth: (c) sensirion ag */ #include <at89s53.h> /microcontroller specific library, e.g. port definitions #include <intrins.h> /keil library (is used for _nop()_ operation) #include <math.h> /ke

32、il library #include <stdio.h> /keil library typedef union unsigned int i; float f; value; /- / modul-var /- enum temp,humi; #define data p1_1 #define sck p1_0 #define noack 0 #define ack 1 /adr command r/w #define status_reg_w 0x06 /000 0011 0 #define status_reg_r 0x07 /000 0011 1 #define meas

33、ure_temp 0x03 /000 0001 1 #define measure_humi 0x05 /000 0010 1 #define reset 0x1e /000 1111 0 /- char s_write_byte(unsigned char value) /- / writes a byte on the sensibus and checks the acknowledge unsigned char i,error=0; for (i=0x80;i>0;i/=2) /shift bit for masking if (i & value) data=1; /

34、masking value with i , write to sensi-bus else data=0; sck=1; /clk for sensi-bus _nop_();_nop_();_nop_(); /pulswith approx. 5 us sck=0; data=1; /release data-line sck=1; /clk #9 for ack error=data; /check ack (data will be pulled down by sht11) sck=0;return error; /error=1 in case of no acknowledge

35、/- char s_read_byte(unsigned char ack) /- / reads a byte form the sensibus and gives an acknowledge in case of "ack=1" unsigned char i,val=0; data=1; /release data-line for (i=0x80;i>0;i/=2) /shift bit for masking sck=1; /clk for sensi-bus if (data) val=(val | i); /read bit sck=0; data=

36、!ack; /in case of "ack=1" pull down data-line sck=1; /clk #9 for ack _nop_();_nop_();_nop_(); /pulswith approx. 5 us sck=0; data=1; /release data-line return val; /- void s_transstart(void) /- / generates a transmission start / _ _ / data: |_| / _ _ / sck : _| |_| |_ data=1; sck=0; /initia

37、l state _nop_(); sck=1; _nop_(); data=0; _nop_(); sck=0; _nop_();_nop_();_nop_(); sck=1; _nop_(); data=1; _nop_(); sck=0; /- void s_connectionreset(void) /- / communication reset: data-line=1 and at least 9 sck cycles followed by transstart / _ _ / data: |_| / _ _ _ _ _ _ _ _ _ _ _ / sck : _| |_| |_

38、| |_| |_| |_| |_| |_| |_| |_| |_| |_ unsigned char i; data=1; sck=0; /initial state for(i=0;i<9;i+) /9 sck cycles sck=1; sck=0; s_transstart(); /transmission start /- char s_softreset(void) /- / resets the sensor by a softreset unsigned char error=0; s_connectionreset(); /reset communication erro

39、r+=s_write_byte(reset); /send reset-command to sensor return error; /error=1 in case of no response form the sensor /- char s_read_statusreg(unsigned char *p_value, unsigned char *p_checksum) /- / reads the status register with checksum (8-bit) unsigned char error=0; s_transstart(); /transmission st

40、art error=s_write_byte(status_reg_r); /send command to sensor *p_value=s_read_byte(ack); /read status register (8-bit) *p_checksum=s_read_byte(noack); /read checksum (8-bit) return error; /error=1 in case of no response form the sensor /- char s_write_statusreg(unsigned char *p_value) /- / writes th

41、e status register with checksum (8-bit) unsigned char error=0; s_transstart(); /transmission start error+=s_write_byte(status_reg_w);/send command to sensor error+=s_write_byte(*p_value); /send value of status register return error; /error>=1 in case of no response form the sensor /- char s_measu

42、re(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) /- / makes a measurement (humidity/temperature) with checksum unsigned error=0; unsigned int i; s_transstart(); /transmission start switch(mode) /send command to sensor case temp : error+=s_write_byte(measure_temp); break; case humi : error+=s_write_byte(measure_humi); break; default : break; for (i=0;i<65535

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论