毕业设计(论文)-基于nrf905的信息采集系统.doc_第1页
毕业设计(论文)-基于nrf905的信息采集系统.doc_第2页
毕业设计(论文)-基于nrf905的信息采集系统.doc_第3页
毕业设计(论文)-基于nrf905的信息采集系统.doc_第4页
毕业设计(论文)-基于nrf905的信息采集系统.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

基于nrf905的信息采集系统引 言信息的无线传输是通信传输一大进步,随着生活水平的提高,人们对于消息高速、安全、便捷的传送提出了更高的要求。与传统有线传输相比,无线传输具有较强的恶劣环境适应能力;在功率发射范围内,有高效的传送效率,并能通过功能的扩展实现无线网络的控制与传输,同时能有效的减少现场布线的硬件成本。因此,研究无线信息的传输具有重要的意义。温度,众所周知,与人们的生活息息相关,涉及生产、生活的各个领域,而且随着科学技术的发展对温度测量的应用范围愈来愈广。本设计将采用AT89S52单片机控制NRF905无线发射与接收系统采集温度信息并实现本地的LCD液晶显示以及PC机显示。用此方法所设计的数字温度计,结构简单,操作方便,低功耗,并且具有一定的扩展性,在各行各业都具有比较广泛的用途,前景良好。1. 方案论证1.1 系统功能定义根据设计要求,考虑到系统的易用性、以及可扩展性,将整个系统划分为主控模块、温度采集模块、显示模块、无线发射接收模块,各个模块之间相对独立,采用模块化硬件与软件功能设计,做出系统模块功能图如下:温度传感器采集温度信息主控模块对所测数据进行处理主控模块控制无线发射模块将信息发射在显示模块上实时显示出当前的环境温度值图1-1 无线系统发射模块主控模块控制无线接收模块接收温度数据主控模块将采集数据进行处理通过上位机程序在PC机上实现实时温度显示在显示模块上显示出当前所测的环境温度值图1-2 无线系统接收模块1.2 总体方案通过对系统功能的定义,可以将基于单片机的数字温度计采用温度传感器DS18B20作为测温元件用来满足温度测量,并将温度信号经由其本身所具有的A/D转换功能,转换成数字信号经单片机处理显示于液晶显示器,从而完成温度的测量和显示,以及通过无线芯片NRF905进行信息的传送与接收。整个系统控制将由AT89S52单片机芯片为核心构成。选用DS18B20作为测温元件,SMC1602A作为显示器件,NRF905无线芯片作为无线终端,各个检测信号、显示信号可由单片机的I/O口进行。 设计任务:用单片机设计一个测温范围在-55125的数字温度计,并将温度数据在100米范围内实现无线传输,在PC机终端显示温度值。设计要求:完成该系统的软硬件设计,学习掌握单片机采集温度的设计方法提高学习新知识、新技能的能力,培养独立设计的能力。2.系统硬件电路设计2.1 系统硬件组成DB18B20温度传感器NRF905无线发射模块89S52系列单片机主控模块Lcd1602显示模块Lcd1602显示模块89S52系列单片机主控模块NRF905无线接收模块RS232串口传输PC机上位机显示系统图2-1 系统的硬件组成主控模块采用性价比较高的单片机芯片,在其内部将预设好的程序储存,可通过程序的运行控制测温模块进行测温,以及控制无线发射接收模块。测温模块主要是由DS18B20构成,将其与所测对象进行接触即可获取被测对象的温度数据,而所测得的温度将通过显示模块的液晶显示器以数字形式显示。无线发射接收模块由核心芯片NRF905构成,该芯片通过单片机的控制,可实现数百米的通信距离。2.2 主控模块2.2.1 主控模块功能分析 在本系统中,主控模块居于非常重要的地位。它是整个系统的中枢,系统运行所需的每个操作指令都要由其发出。它一方面控制着测温模块进行温度信息的采集,另一方面也控制着显示模块的工作。最重要的是,由测温模块所采集到的温度信息必须经由主控模块的处理才能在显示模块上显示,从而使整个系统进行正常的运转和工作。针对以上分析本系统主控模块中的单片机芯片采用了AT89S52芯片,此芯片功能强大,能够完全满足系统运行的需求。2.2.2 AT89S52芯片的功能特性 AT89S52是一种低功耗、高性能CMOS8位微控制器, 具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案3。 其主要性能如下: l 与MCS-51单片机产品兼容 l 8K字节在系统可编程Flash存储器 l 三级加密程序存储器 l 32个可编程I/O口线 l 三个16位定时器/计数器 l 全双工UART串行通道 l 低功耗空闲和掉电模式 l 掉电后中断可唤醒 l 看门狗定时器 图2-2 AT89S52引脚结构图在本设计中,将DS18B20的单数据总线与单片机的P2.2端口相连,用一根数据线就完成了测温模块与单片机芯片的连接。2.3 测温模块 本设计的测温元件采用的是DS18B20测温元件,DS18B20是由DALLAS(达拉斯)公司生产的一种温度传感器。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20很受欢迎。这是世界上第一片支持“一线总线”接口的温度传感器。DS18B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DS18B20或从DS18B20送出,因此从单片机到DS18B20仅需一条线连接即可。它可在1秒钟(典型值)内把温度变换成数字。2.3.1 DS18B20的主要特征 l 全数字温度转换及输出; l 先进的单总线数据通信; l 最高12位分辨率,精度可达土0.5; l 12位分辨率时的最大工作周期为750毫秒; l 可选择寄生工作方式; l 检测温度范围为55+125; l 内置EEPROM,限温报警功能; l 64位光刻ROM,内置产品序列号,方便多机挂接; l 多样封装形式,适应不同硬件系统。 DS18B20芯片其封装结构如下: 图2-3 DS18B20芯片封装结构图由其引脚可看出,其3 个引脚: GND为电压地直接接地;DQ为单数据总线用来与单片机相连接,本系统中DQ与单片机P2.2接口连接,仅此一个连接就能保证DS18B20与单片机之间的数据交换;VDD引脚接电源电压。2.3.2 DS18B20的工作原理DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。一个工作周期可分为两个部分,即温度检测和数据处理。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码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消。2.4 显示模块本系统最突出的特点就是能方便直观地对所测温度进行读取,因此显示模块的选取极为重要。在本系统中所采用的显示模块为SMC1602A液晶显示器。液晶显示器以其直观的显示模式,简单的软件设计从而得到了很多人的认可,逐渐占据主流地位,因此选用液晶显示器也更能体现当下较为先进的技术。其主要技术参数如下表所示:表2-1 SMC1602A技术参数表显示容量16*2个字符芯片工作电压4.55.5V工作电流2.0mA模块最佳工作电压5.0V字符尺寸2.95*4.35mm SMC1602A是LCD1602中的一种,它一共有16个引脚,各引脚接口信号说明如下: 表2-2 SMC1602A引脚说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2DATA I/O2VDD电源正极10D3DATA I/O3VL液晶显示偏压信号11D4DATA I/O4RS数据/命令选择端12D5DATA I/O5R/W读/写选择端13D6DATA I/O6E使能信号14D7DATA I/O7D0DATA I/O15BLA背光源正极8D1DATA I/O16BLK背光源负极SMC1602A的714引脚经过一个上拉排阻与单片机的P0口相连,第3引脚上接一个滑动变阻器,用来调整液晶显示器的偏压信号。 其基本操作时序共有4个状态分别是:1读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字2 写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无3 读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据4 写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无 状态字说明如下表2-3: 表2-3 SMC1602A状态字说明表STA7 D7 STA6 D6STA5 D5STA4 D4STA3 D3STA2 D2 STA1 D1STA0 D0 表2-4 SMC1602A状态字功能表STD0-6当前数据地址指针的数值STA7读写操作使能1: 禁止 0:允许 对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0.控制器内部带有808位(80字节)的RAM缓冲区,对应关系如图所示。图2-4 SMC1602A内部RAM缓冲区对应关系图2.5 无线收发模块2.5.1 模块介绍nRF905是挪威Nordic公司推出的单片射频发射器芯片,工作电压为1.9-3.6V,32引脚QFN封装(5mm5mm),工作于433/868/915MHz3个ISM频道(可以免费使用)。nRF905可以自动完成处理字头和CRC(循环冗余码校验)的工作,可由片内硬件自动完成曼彻斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,在接收模式时电流为12.5mA。 nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。2.5.2 接口电路接口电路说明: 1 VCC引脚电压范围33.6V,本设计采用1117稳压芯片使电压稳定在3.3V左右,满足需求。 2 除电源和接地端,其余引脚直接与89S52单片机I/O口直接相连,无需电平转换,但与P0口相连时,需要加10K的上拉电阻。 3 硬件上,采用89S52系列单片机I/O口模拟SPI,而不需要真正的串口介入。图2-5 NRF905接口电路2.5.3 工作模式nRF905采用Nordic公司的VLSI ShockBurst技术。ShockBurst技术使nRF905能够提供高速的数据传输,而不需要昂贵的高速MCU来进行数据处理/时钟覆盖。通过将与RF协议有关的高速信号处理放到芯片内,nRF905提供给应用的微控制器一个SPI接口,速率由微控制器自己设定的接口速度决定。nRF905通过ShockBurst工作模式在RF以最大速率进行连接时降低数字应用部分的速度来降低在应用中的平均电流消耗。在ShockBurst RX模式中,地址匹配AM和数据准备就绪DR信号通知MCU一个有效的地址和数据包已经各自接收完成。在ShockBurst TX模式中,nRF905自动产生前导码和CRC校验码,数据准备就绪DR信号通知MCU数据传输已经完成。总之,这意味着降低MCU的存储器需求也就是说降低MCU成本,又同时缩短软件开发时间。1 典型ShockBurst TX模式:当应用MCU有遥控数据节点时,接收节点的地址TX-address和有效数据TX-payload通过SPI接口传送给nRF905应用协议或MCU设置接口速度;MCU设置TRX_CE、TX_EN为高来激活nRF905 ShockBurst传输;nRF905 ShockBurst:无线系统自动上电数据包完成(加前导码和CRC校验码)数据包发送(100kbps,GFSK,曼切斯特编码)如果AUTO_RETRAN被设置为高nRF905将连续地发送数据包直到TRX_CE被设置为低;当TRX_CE被设置为低时,nRF905结束数据传输并自动进入standby模式。2 典型ShockBurst RX模式通过设置TRX_CE高,TX_EN低来选择ShockBurst模式;650us以后,nRF905监测空中的信息;当nRF905发现和接收频率相同的载波时,载波检测CD被置高;当nRF905接收到有效的地址时,地址匹配AM被置高;当nRF905接收到有效的数据包(CRC校验正确)时,nRF905去掉前导码、地址和CRC位,数据准备就绪(DR)被置高;MCU设置TRX_CE低,进入standby模式低电流模式;MCU可以以合适的速率通过SPI接口读出有效数据;当所有的有效数据被读出后,nRF905将AM和DR置低;nRF905将准备进入ShockBurst RX、ShockBurst TX或Powerdown模式。3 掉电模式在掉电模式中,nRF905被禁止,电流消耗最小,典型值低于2.5uA。当进入这种模式时,nRF905是不活动的状态。这时候平均电流消耗最小,电池使用寿命最长。在掉电模式中,配置字的内容保持不变。4 STANDBY模式Standby模式在保持电流消耗最小的同时保证最短的ShockBurstRX、ShockBurstTX的启动时间。当进入这种模式时,一部分晶体振荡器是活动的。电流消耗取决于晶体振荡器频率,如:当频率为4MHZ时,IDD=12uA;当频率为20MHZ 时,IDD=46uA。如果uPCLK(Pin3)被使能,电流消耗将增加。并且取决于负载电容和频率。在此模式中,配置字的内容保持不变。2.5.4 器件配置nRF905的所有配置都通过SPI接口进行。SPI接口由5个寄存器组成,一条SPI指令用来决定进行什么操作。SPI接口只有在掉电模式和Standby模式是激活的。1 状态寄存器(Status-Register)寄存器包含数据就绪DR和地址匹配AM状态。2 RF配置寄存器(RF-Configuration Register)寄存器包含收发器的频率、输出功率等配置信息。3 发送地址(TX-Address)寄存器包含目标器件地址,字节长度由配置寄存器设置。4 发送有效数据(TX-Payload)寄存器包含发送的有效ShockBurst数据包数据,字节长度由配置寄存器设置。5 接收有效数据(RX-Payload)寄存器包含接收到的有效ShockBurst数据包数据,字节长度由配置寄存器设置。在寄存器中的有效数据由数据准备就绪DR指示。2.5.5 接口控制1 模式控制接口该接口由 PWR 、TRX_CE、TX_EN组成控制由nRF905组成的高频头的 四种工作模式:掉电和 SPI 编程模式;待机和SPI编程模式 ;发射模式;接收模式。2 SPI接口:SPI 接口由 CSN、SCK、MOSI以及MISO组成。在配置模式下单片机通过SPI接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。3 状态输出接口:提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。2.5.6 外围的RF信息1 晶体规格为了实现晶体振荡器低功耗和快速启动时间的解决方案,推荐使用低值晶体负载电容。指定CL=12pF是可以接受的。但是,也可能增大到16pF。指定一个晶体并行相等电容,Co=1.5pF也是很好的,但这样一来会增加晶体自身成本。典型的设定晶体电容Co=1.5pF,指定Co_max=7.0pF。2 外部参考时钟一个外部参考时钟如MCU时钟,可以用来代替晶体震荡器。这个时钟信号应该直接连接到XC1引脚,XC2引脚为高阻态。当使用外部时钟代替晶体时钟工作时,始终必须工作在Standby模式以降低电流消耗。如果器件被设置成Standby模式而没有使用外部时钟或晶体时钟,则电流消耗最大可达1mA。3 微处理器输出时钟在默认情况下,微处理器提供输出时钟。在Standby模式下提供输出时钟将增加电流消耗。在Standby模式电流消耗取决于频率和外部晶体负载、输出时钟的频率和提供输出时钟的电容负载。4 天线输出ANT1和ANT2输出脚给天线提供稳定的RF输出。这两个脚必须有连接到VDD_PA的直流通路,通过RF扼流圈,或者通过天线双极的中心点。在ANT1和ANT2之间的负载阻抗应该在200-700范围内,通过简单的匹配网络或RF变压器(不平衡变压器)可以获得较低的阻抗(例如50)。2.6 电路的焊接1 工具:电烙铁,焊锡,钳子,电路板,万用表,接线,电源,以及所需器件等。2 依据所绘电路图焊接电路板,并进行电压等调试,确认无误后,上电测试。3系统软件设计3.1 主控程序设计通过对系统工作原理的了解,我们可以大致知道系统软件运行工作的流程图如下: 接通电源开始工作 复位 初始化DS18B20 初始化NRF905 初始化LCD1602 温度转换 读取温度 LCD1602显示温度 通过NRF905发送图3-1发送端程序流程图 复位 接通电源开始工作 初始化NRF905 初始化LCD1602 通过NRF905接收 数据格式转换 LCD1602显示温度图3-2接收端程序流程图当接通电源开始工作后,单片机中的程序开始运行,将对DS18B20进行初始化,以便单片机芯片和DS18B20达成通信协议。完成初始化后,由于本系统只有一个测温元件,单片机会向其发出跳过ROM指令,接下来便可向其发送操作指令,启动测温程序。测温过程完成后,发出温度转换指令,从而便可将温度转化成数字模式进行显示读取。 读取数据经缓存后发送给NRF905。 接收端经上电初始化,接收数据后,经数据转换,在LCD1602液晶显示器上显示数据。3.2 温度信息的采集 通过DS18B20单线总线的所有执行处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和随后由从机发出的存在脉冲:1 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在1560uS后回发一个芯片的存在脉冲。 2 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。 3 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。各自功能如下: Read ROM(读ROM)33H (方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令。Match ROM(指定匹配芯片)55H 这个指令后面紧跟着由控制器发出了64位序列号,当总线 上有多只DS18B20时,只有与控制发出的序列号相同的芯片才能做出反应,其它芯片将等待下一次复位。这条指令适合单芯片和多芯片挂接。 Skip ROM(跳跃ROM指令)CCH 这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 Search ROM(搜索芯片)F0H 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。 Alarm Search(报警芯片搜索)ECH 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度值达不到报警条件为止。 ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。 4 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。 Write Scratchpad (向RAM中写数据)4EH:这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。 Read Scratchpad (从RAM中读数据)BEH:此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 Copy Scratchpad (将RAM数据复制到EEPROM中)48H:此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。 Convert T(温度转换)44H:收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。 Recall EEPROM(将EEPROM中的报警值复制到RAM)B8H:此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。 Read Power Supply(工作方式切换)B4H:此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。 存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。 5 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。 DS18B20需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1 、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据(适当的ROM命令和存储器操作命令)。DS18B20的读时序:对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。图3-3 DS18B20的读时序图DS18B20的写时序: 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图3-4 DS18B20的写时序图3.3 温度的显示控制 当所测温度从DS18B20输送到单片机上之后,下一步就是要将其在液晶显示器上显示出来。首先应该对液晶显示器SMC1602A进行初始化设置,设置指令如下: 表3-1 SMC1602A的初始化设置指令表指令码功能00111000 设置162显示,8位数据接口00001DCBD=1 开显示; D=0 关显示C=1 显示光标; C=0 不显示光标B=1 光标闪烁; B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字符后地址指针减一,且光标减一S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果S=0 当写一个字符,整屏显示不移动 然后进行数据控制,控制器内部设有一个数据地址指针,可以通过它们来访问内部的全部80字节RAM,其指针设置为:表3-2 SMC1602A的指针设置表指令码功能80H+地址码(0H-27H,40H-67H)设置数据地址指针 一些其他设置如下: 表3-3 SMC1602A的其他指针设置表指令码功能01H显示清屏: 1.数据指针清零2.所有显示清零02H显示回车: 数据指针清零 其初始化过程为:延时15ms 写指令38H(不检测忙信号) 延时5ms 写指令38H(不检测忙信号) 延时5ms 写指令38H(不检测忙信号) (每次写指令 读/写数据操作之前均需检测忙信号) 写指令38H: 显示模式设置 写指令08H: 显示关闭 写指令01H: 显示清屏 写指令06H: 显示光标移动设置 写指令0CH: 显示开及光标设置而且要使数据在液晶显示器上显示必须要按照其读写操作时序来进行,其读,写操作时序图为: 图3-5 SMC1602A的读操作时序图 图3-6 SMC1602A的写操作时序图通过严格按照SMC1602A的读写操作时序来处理从单片机中传输来的数据,便可使所测得的温度正确及时的显示和读取4。3.4 无线收发模块控制3.4.1 无线发送端程序设计本设计在采用nRF905无线模块设计的过程中,主要解决的是引脚功能与接口控制字的设置,nRF905通过SPI接口和微控制器进行数据传送,通过ShockBurstTM收发模式进行无线数据发送。SPI对外由SCK、MISO、MOSI、CSN 4个引脚组成,对应5个内置寄存器和1个SPI指令集。5个内置寄存器分别是状态寄存器、RF配置寄存器、发送地址寄存器、发送有效数据寄存器、接收有效数据寄存器。某个SPI指令的设置决定了相应的功能。只有当nRF905处于待机或掉电状态,SPI接口才工作。任何一条指令均从CSN的由高到低的转换开始。寄存器操作时,每次只能读写一个字节,或者先给出读写的开始字节地址,然后再进行读写操作。 ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。 发送数据时,单片机应先把nRF905置于待机模式,PWR_UP引脚为高、TRX_CE引脚为低,然后通过SPI总线把发送地址和待发送的数据都写入相应的寄存器中,之后把nRF905置于发送模块(PWR_UP、TRX_CE和TX_EN全置高)数据就会自动通过天线发送出去,若射频配置寄存器中的自动重发位(AUTO_RETRAN)设为有,数据包就会重复不断地一直向外发,直到单片机把TRX_CE拉低,退出发送模式为止。3.4.2 无线接收端程序设计在接收端设计时主要考虑的是温度的数据的可靠高效的接收,以及1602显示参数,最终要通过串口将数据发送至PC机,通过上位机程序在PC机上显示出温度曲线。接收数据时,51单片机把nRF905的TRX_CE引脚置为高电平,TX_EN引脚拉为低电平后,就开始接收数据。51单片机设定的配置信息内一直判断nRF905的DR引脚是否变高,若为高,则证明接收到了有效数据,可以退出接收模式,若一直没有接收到,待时间到时也退出接收模式。退出后在待机模式,51单片机通过SPI总线把nRF905内部的接收数据寄存器中的数据读出,即接收到的有效数据。本设计中,在接收端的程序中采用了循环接收温度数据,从而在接收端的LCD1602上能实现温度的实时显示功能。 采用51单片机控制,充分体现出51单片机I/O口的功能,利用读写以及适当的延时函数,在C语言编程器中实现程序的模块化设计,便于功能的扩展应用。4调试与总结在整个设计过程中,调试可是算是最重要与复杂的阶段了。在调试阶段,所要解决的问题牵扯到软、硬件各个方面。在完成硬件电路与软件设计之后,将设计好的程序通过下载器下载至单片机芯片中,在调试中发现了软件中存在的问题,比如,温度数据在LCD1602上不能实时的更新显示,严重影响到数据的可读性,经过细心的检错与排错,反复的下载与测试,最终系统能较好地完成设计的要求。能够实现温度数据的采集与无线发射和接收。同时在设计功能实现的同时,充分考虑了整个系统的成本控制,以及最重要的系统稳定性。在系统涉及的各个领域,我还需要更进一步进行学习和探索,以使在以后的设计中能将自己的新鲜思维应用至实际操作中。 本设计采集系统的应用面广,结构较为简单,系统易集成。无论在室内,还是室外,工作性能较为稳定,能保证传输数据的精度与速度。在短距离无线传输时能充分体现出其低功耗,以扩展等优异性能。在工业厂房测量各部分的测温,智能控制中也会有极强的适应能力。 本系统不仅适用于温度数据的采集,在扩展应用方面,只需更换传感器及相应的模数转换装置就可以实现湿度,压力等数据的采集、报警,应用非常广泛。 在系统移植性方面,只需在程序中稍加修改,就能实现多点测温,综合数据,完成更加复杂的功能与应用,最终实现无线网络。感 言在我毕业设计即将完成之际,回想四年的大学生涯,我的感慨颇多,学到了一身的本领,正打算展翅高飞的我,首先我由衷的感谢我的指导老师葛明涛老师,在我的毕业设计完成过程中给予我无私的帮助,解决了许多难于克服的技术问题,是我的毕业设计得以顺利的完成。葛明涛老师是一个生活上平易近人,治学中客观谨慎的人,无论在学习中还是生活上遇到的各种问题,都能得到葛老师的细心教导,此刻我衷心的感谢葛明涛老师! 其次,我还要感谢我大学四年以来的老师们,他们的知识广博,教学经验丰富,依然在毕业设计中给予了我莫大的帮助与启发,在做毕业设计的这段时间,使我不仅学到了科学知识与操作方法,而且更让我体会到了做人一定要做一个认真负责的人,这一切都将是我一生成长的动力。谨在此向我们电子信息工程学院的所有老师们致以最崇高的敬意和衷心的感谢! 最后,我也要感谢我周围的同学们对我的帮助与支持,更要感谢我的家人对我学业上的支持与鼓励!参考文献1 谭浩强 C程序设计 清华大学出版社 1999.122 李群芳 肖看 单片机原理,接口及应用 清华大学出版社 2005.33 张义和 王敏男 例说51单片机 人民邮电出版社 2008.4 4 蔡美琴 张为民 MCS-51系列单片机系统及其应用 高等教育出版社 19925 高峰 单片微机应用系统设计及实用技术 机械工程出版社 20046 杨全胜 现代微机原理与接口技术 电子工业出版社 20047 李炎清 毕业论文写作与范例 厦门大学出版社 2006.108 Based on 89c51+DS18B20 warm controlling development9 The principle and application of 1-wire digital temperature sensor DS18B2010 Temperature Measure System Base on 51 Single Chip附 录1. 无线发送端程序#include #include#define uchar unsigned char#define uint unsigned int/*905配置部分*/sbit trxce=P13; /数字输入,使能芯片发射或接收sbit am=P14; /数字输出,地址匹配sbit miso=P15;/SPI接口,SPI输出sbit sck=P16; / SPI时钟,SPI时钟sbit txen=P32;/数字输入,TXEN=1,TX.模式 TXEN=0 RX模式sbit pwrup=P33; /数字输入,芯片上电sbit cd=P24; /数字输出,载波检测sbit dr=P25; /数字输出,接收或发射数据完成sbit mosi=P36;/ SPI接口,SPI输入sbit csn=P37; / SPI使能,SPI使能 /*1602配置部分*/sbit rs=P35;sbit lcden=P34;/*DS18B20配置部分*/sbit DS=P22;sbit ACC0=ACC0;sbit ACC7=ACC7;/*905函数声明部分*/uchar num4;uchar databuffer;uchar read();void write(uchar send);void init();void initrfconfig();void delay2(uint);/*定义温度数据*/uchar tempint,tempdf,f; /温度整数部分和小数部分;uchar code table1=temp:; /初始化字符串/*3us级延时子函数*/void delay_us(uchar a) /3us级延时的程序 while(-a); void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*1602写命令函数*/void write_com(uchar com) rs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; /*1602写数据函数*/void write_date(uchar date) rs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; /*写DS18B20子程序*/vo

温馨提示

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

评论

0/150

提交评论