基于AVR单片机的无线环境监测系统毕业论文(27页).doc
-基于AVR单片机的无线环境监测系统毕业论文-第 23 页本科学生毕业论文论文题目:基于AVR单片机的无线环境监测系统学 院:年 级:2009级专 业:电子信息工程姓 名:学 号:指导教师:年 月 日摘要本设计采用高速度低功耗单片机ATMEGA16L作为主芯片,无线收发芯片采用nRF24L01,温度采集芯片采用SHT10,LCD12864作为显示器,利用SPI口实现双向通信实现无线温湿度收发显示,SPI支持高速数据传输,从而满足了射频带宽的要求。该系统集数据采集、无线数据通信、串行通信于一体,可以很方便地实现点对点的无线数据通信,由于采用较完善的软硬件设计和抗干扰措施,保证了系统工作的安全性和可靠性。nRF24L01提供了强大的跳频机制以及大量的频道支持,功率小,功能简单,携带方便,开发简单快速,数据传输速率快,抗干扰能力强,可以用在许多特殊的场合,具有广泛的市场应用价值。 关键词 ATMEGA16L;nRF24L01;SHT10;LCD12864;无线通信AbstractThis design USES the high speed, low power consumption ATMEGA16L as the main chip microcontroller, wireless transceiver chip adopt nRF24L01, temperature gathering chip adopt SHT10, LCD12864 as monitor and use SPI realize two-way communication wireless mouth humidity transceiver shows that SPI support high-speed data transmission, and satisfy the rf bandwidth needs. This system incorporates data acquisition, wireless data communication, serial communication at an organic whole, can be easily realized point-to-point wireless data communication, because use the software and hardware design and more perfect anti-disturbance measures, to ensure the security and reliability of the system works. NRF24L01 provides a powerful fh mechanism and a lot of channel support, power small, the function is simple, easy to carry, developing simple, fast, data transmission speed, strong anti-jamming capability, can be used in many special occasions, a broad market application value. keywordsATMEGA16L; NRF24L01; SHT10; LCD12864; Wireless communication 目录摘要.IAbstract.III第一章 前言.11.1 课题研究的背景11.2 开发的意义2第二章 系统设计.32.1 系统的总方框设计32.2 系统的硬件选择32.2.1 单片机的选择32.2.2 无线收发芯片的选择42.2.3 温度传感器的选择52.2.4 显示器的选择6第三章 系统硬件设计.83.1 Altium Desinger6.983.2 Protel 99SE83.3 单片机的电源设计93.4 单片机的外围电路的设计93.4.1时钟电路93.4.2 复位电路103.5 温度测量电路的设计113.6 无线发送接收电路的设计123.7 液晶显示LCD12864的电路设计13第四章 系统的软件设计.164.1 编程语言的选择164.2 系统开发环境164.3 主机程序设计164.4 从机程序设计174.5 串行外设接口SPI18第五章 程序的下载205.1 下载器的硬件电路205.2 下载软件215.3 程序下载过程需要注意的问题:23第六章 系统调试.246.1硬件问题与解决246.2 软件问题与解决24结 论.25参考文献.26附录1.27附录2.30致谢.35第一章 前言1.1 课题研究的背景 在许多测控现场中,传统的数据传输是通过有线电缆实现的。随着射频技术、集成电路的发展,无线通信功能的实现越来越容易,数据传输速率也越来越快,抗干扰能力也越来越强,因此,越来越多的场合采用了无线传输技术。 无线数据传输相比于有线传输有许多优点,首先是成本低,省去了大量的布线;其次是建网快捷,只需在每个终端连接无线数传模块和架设适当高度的天线即可;再次是适应性好,无线数据传输在一些特殊的应用环境,比如遇到山地、湖泊、林区等特殊的地理环境或是移动物体等布线比较困难的应用环境的时候,能解决因布线困难、电缆接插件松动、短路等带来的问题;第四是扩展性好,采用有线传输方式,不能随意移动,设备重新布局就要重新布线,但采用无线数据传输,只需将设备与无线数传模块相连接就可以了;最后是设备维护容易,有线通信链路的维护需沿线路检查,出现故障时,一般很难及时找出故障点,而采用无线数据传输方式只需维护数传模块,出现故障时则能快速找出原因。 目前应用于数据传输的无线通信技术主要有蓝牙(Bluetooth),无线局域网(WLAN)802.11b,微功率超短波无线通信以及基于公用移动通信网络(GSM,CDMA)的传输方式。但在上述无线数据传输技术中,基于802.11b的无线局域网WLAN、蓝牙,因其硬件设计、接口方式、通信协议及软件堆栈复杂,需专门的开发系统,开发成本高、周期长,最终产品成本也高,在工业领域中并未得到广泛的应用。基于公用移动通信网络(GSM、CDMA)的无线数据传输方式,虽开发容易,但运营费用高。而普通射频芯片就不存在这些问题,加之短距离无线数据传输技术成熟,功率小,功能简单,携带方便,开发简单快速,使得其在嵌入式短程无线产品中得到广泛的应用。蓝牙(bluetooth)是一种短距离无线通信技术。它是一种无线数据与语音通信的开放性全球规范,其实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。其传输频段为全球公众通用的2.4GHzISM频段,提供1Mbps的传输速率 和10m的传输距离(目前大功率的蓝牙芯片已经可以达到100m的覆盖范围)。它采用跳频扩频FHSS(Frequency Hopping SpreadSpectrum)技术,具有非常可靠的语音和数据传输能力,蓝牙芯片体积小、功耗低、其应用越来越广泛。但蓝牙芯片价格较为昂贵、传输距离较短、蓝牙技术尚无国际标准。IEEE802.11b 是目前无线局域网(WLAN)的国际技术标准。工作在2.4GHZ的ISM频段,速率最高可达11Mb/s,电波的覆盖范围可达100m左右。它采用直接序列扩谱DSSS (Direct Sequence Spread Spectrum)技术,增强了抗干扰能力。802.11b无线网络的最大优点是兼容性,用它来组建大型无线网络,运营成本低,投资回报快。目前此种设备还比较昂贵,妨碍了其推广和应用。 微功率无线通信技术一般使用数字信号单片射频收发芯片,加上少量的外围元器件和微控制器构成无线通信模块。工作于ISM频段,即使用户对其工作机制没有较深了解,也可实现数据的无线传输功能。因其功率小,投资小,开发简单快速而应用广泛。 基于公用移动通信网络(CDMA、GSM)的短消息系统、通用分组交换业务(GPRS)等数据业务进行数据传输。其优点是:网络覆盖广,易组成网络;通信距离远、通信稳定可靠,抗干扰能力强;在此通信平台上的开发简单易行。特别适用于间断的、突发性的和频繁的、点多分散、中小流量的数据传输。但是,采用这种无线数据传输的方式,目前的技术下数据的传输速率较低,此外还需支付高昂的通信费用。 在上述无线数据传输技术中,基于80211b的无线局域网WLAN、蓝牙(bluetooth),因其硬件设计、接口方式、通信协议及软件堆栈复杂,需专门的开发系统,开发成本高、周期长,最终产品成本也高,在工业领域中并未得到广泛的应用。基于公用移动通信网络(GSM、CDMA)的无线数据传输方式,虽开发容易,但运营费用高。而普通射频芯片就不存在这些问题,加之短距离无线数据传输技术成熟,功率小,功能简单,携带方便,开发简单快速,使得其在嵌入式短程无线产品中得到广泛的应用。 1.2 开发的意义 今天我们已经进入了一个无线技术无所不在的时代。在家中,使用便利的无线电话;出门在外使用手机与远方的亲人通话、发短消息;开车,GPS系统为我们导航指路;工作,使用无线网卡可以随时随地地进行网上办公等等。随着我国社会经济的发展,现代监控技术也越来越多的运用到了生态环境监测中。它具有向自动化、智能化、网络化、低功耗、小型化方向发展的趋势,采用自动化监控可以节约大量的人力资源,克服人力测量的效能低,精度不足等缺点。目前用于监控系统的通信方式也是多种多样,主要有有线通信方式和无线通信方式,由于生态环境的分散性和广域性,采用有线或者人工的方式进行监控都将花费大量的人力,物力,因此无线通信技术越来越受到人们的关注。基于GPRS的无线监控系统就是目前比较流行的无线监控管理系。 随着技术的进步,无线通信和无线网络将迅速地向我们日常生活中的各个方面扩展,不久的将来我们大部分的电子产品都将是无线并可随时在线的,一个无线社会很快就将成为现实,并将深刻改变人们的生活方式。因此研究无线通信技术有着很重要的意义。 本文通过对无线数据传输系统模型的研究,提出了一种基于无线模块nRF24L01和ATMEGA16L单片机的无线数据通信系统的总体设计方案,通过对环境参数的测试、处理、以及对无线通信传输等模块的设计真正掌握了无线通信技术的使用方法,为以后从事无线产品的开发打下了坚实的基础。既具有有线方式的效率高、实时性好、成本低的优点,同时安装方便、可维护性好、易实现网络化管理。 第二章 系统设计2.1 系统的总方框设计本设计是基于AVR单片机实现的无线环境监测装置,主机就是利用单片机外加无线接收模块,液晶显示LCD12864构成的;从机是由单片机,温度采集模块,无线发送模块组成。该系统主要完成SHT10、LCD12864、无线射频收发器nFR24L01、串口和单片机的硬件连接,温湿度传感器SHT10进行测量室外的温湿度,无线发送模块由射频收发器nFR24l01将采集到的温湿度值发送给主机,从而实现了无线发送数据的功能;将采集的温度值送字符型液晶显示器LCD12864上显示;完成PC机串行通信及数据处理显示的功能; 系统总设计方框图,如图2-1所示:图2-1 系统总方框图2.2 系统的硬件选择 该系统的无线数据传输模块是基于微功耗单片射频收发芯片nRF24l01设计,采用Atmel公司的高性能、低功耗8位处理器ATMEG16L为主处理芯片,完成数据的处理和控制。无线环境传输装置是由多个器件组成,其选择如下:2.2.1 单片机的选择 由于无线收发芯片nRF24l01提供SPI口并且工作电压为1.93.6V,因此选用有SPI接口功能的低功耗单片机。ATMEGA16L有工作于主机/从机模式的SPI串行接口,所以不需要进行软件模拟SPI口,可工作于低压状态,工作电压为2.7-5.5V。 ATMEGA16L是Atmel公司的高性能、低功耗的8位AVR微处理器。先进的RISC结构,非易失性程序和数据存储器,16K字节的系统内可编程Flash,擦写寿命10000次,512字节的EEPROM擦写寿命100000次,1K字节的片内SRAM可以对锁定位进行编程以实现用户程序的加密。JTAG接口,符合JTAG标准的边界扫描功能,支持扩展的片内调试功能,通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程。两个具有独立预分频器和比较器功能的8位定时器/计数器,一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器,具有独立振荡器的实时计数器RTC。四通道PWM,8路10位ADC 8个单端通道,TQFP封装的7个差分通道,2个具有可编程增益(1x,10x,或200x)的差分通道。面向字节的两线接口,两个可编程的串行USART,可工作于主机/从机模式的SPI串行接口,具有独立片内振荡器的可编程看门狗定时器,片内模拟比较器。上电复位以及可编程的掉电检测,片内经过标定的RC振荡器,片内/片外中断源。6种睡眠模式,空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式。AVR单片机还支持Basic、C等高级语言编程 。采用高级语言对单片机系统进行开发是单片机应用的发展趋势 。对单片机用高级语言编程可很容易地实现系统移植,并加快软件的开发过程。在AVR系列单片机中,ATmega16L是一款中档功能的AVR芯片,它的引脚数为40,在片内集成了1K字节的SRAM、16K字节的Flash、512个字节的EEPOM,2个8位、1个16位共3个超强功能的定时器/计数器,以及USART、SPI、多路10位ADC、WDT、RTC、ISP、IAP、TWI (12C)、片内高精度RC振荡器等多功能的接口和特性,较全面的体现了AVR的特点,不仅适合对AVR了解和使用的入门起步学习,同时也满足一般的普通应用,在产品中得到了大量的使用。因此本系统采用ATmega16l作为主控芯片。 2.2.2 无线收发芯片的选择 随着射频电子技术的发展,无线收发芯片的集成度、性能都大幅度提高,芯片的种类和数量比较多,性能也各有特色。本系统的无线数据传输芯片是应用Nordic公司的无线数字传输芯片nRF24L01,nRF24L01集无线收发于一体,芯片工作在2. 4 GHz自由频段,能够在无线市场畅通无阻。nRF24l01具有以下优点:(1)有126频道,可以满足多点通信和跳频通信需要;(2)最高传输速率速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合;(3)内置硬件CRC纠检错和点对多点通信地址控制,提高了系统的可靠性,且不再需要用软件对传输数据进行差错控制编码,简化了软件编程(4) 低功耗1.9 - 3.6V工作,待机模式下状态为22uA;掉电模式下为900nA; (5) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便; (6)内置专门稳压电路,使用各种电源包括 DC/DC 开关电源均有很好的通信效果; (7) 标准DIP间距接口,便于嵌入式应用; (8)工作于 Enhanced ShockBurst 具有Automatic packet handling,Auto packet transaction handling,具有可选的内置包应答机制,极大的降低丢包率。 采用Duo Ceiver TM技术使nRF24L01可以使用同一天线,同时接收两个不同频道的数据。只需少量外围元件便可组成射频收发电路,nRF24L01没有复杂的通信协议,它完全对用户透明,同种产品之间可以自由通信。该系统使用灵活、成本低廉,可方便地嵌入到测试系统中。本论文设计的数据采集系统通过无线收发模块传输现场采集数据,对数据传输的可靠性要求较高。综合考虑以上因素,采用nRF24L01为无线收发模块。引脚如下图2-2所示:图2-2 nrf24L01引脚图 2.2.3 温度传感器的选择 随着温度传感器智能化、集成化技术的进步,数字式温度传感器也得到了快速发展,世界上许多公司推出了新型的数字温度传感器系列,这些产品的出现极大的丰富了设计工程师的选择对象。在如此众多的产品中选择出合适的器件,应该把握以下几点:外围电路应该尽量简单;测温的精度、分辨率要合适,以便减少不必要的电路和软件开发成本;温度传感器采用的总线负载能力如何,能否满足多点测温的需要;占用MCU的I/O引脚数情况如何,因为MCU的系统资源非常宝贵,输入通道有限,多点温度测量时,如果测量的点数超过了输入通道时,就要添加多路复用器,这将增加成本和开发时间,应尽量节约;与MCIJ的通信协议应尽量简单,温度测量的软件开发难度、成本要尽量小。本系统采用数字温湿度传感器SHT10。SHT10是由瑞士Sensirion公司推出的SHTxx系列单芯片数字温湿度传感器之一。 SHTxx 系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专利的工业COMS 过程微加工技术(CMOSens.),确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14 位的A/D 转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个SHTxx 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。两线制串行接口和内部基准电压,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。该芯片的应用领域特别广泛,如:数据采集器、变送器、自动化过程控制、汽车行业、楼宇控制&暖通空调、电力、计量测试、医药业等;SHT10系列为贴片型温湿度传感器芯片,可用来测量相对湿度、温度和露点等参数,具有数字式输出、免调试、免标定、免外围电路及全互换等特点;卓越的长期稳定性、无需额外部件、超低能耗、表面贴片或4 引脚安装、完全互换。HT10 超小尺寸,并自动休眠全量程标定,两线数字输出;湿度测量范围:0100%RH; 湿度测量范围:-40+123.8; 湿度测量精度:±4.5%RH; 温度测量精度:±0.5 响应时间:<8s;低功耗 (typ. 30W);可完全浸没。具体引脚说明如表2-1;引脚分配如图2-2所示; 表2-1:SHT10的 引 脚 说 明Pin名称注释1GND地2DATA串行数据,双向3SCK串行时钟,输入4VDD供电2.4v5.5vNC剩余引脚请勿连接图2-2 SHT10引脚图 2.2.4 显示器的选择 液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄、无辐射、低闪烁等许多其他显示器无法比拟的优点,最为重要的是LCD可实现很多字符组合的显示,人机界面相当有好,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中,故选用LCD。之所以会选择LCD12864,是因为它的显示功能比较好,本设计中将要把温湿度值和温湿度波形变化也要显示在液晶屏上,这是额外的扩展功能。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块;所以本设计选用LCD12864显示器。第三章 系统硬件设计系统设计总体框架图设计好,器件也选择好了以后,接下来的工作就是一些功能模块原理图的设计了。原理图的设计可以用很多方式,可以再Word上设计原理图,也可以在纸上设计原理图。由于本设计的一些模块电路设计采用pcb制作硬件,这是因为采用采用pcb制作的设计,视觉效果好,抗老化能力强,不容易出现连接点的虚接等问题。PCB的导入一般需要原理图的导入,所以,本设计的原理图采用PCB制作软件,即Altium Desinger6.9 和Protel 99SE。3.1 Altium Desinger6.9Altium Desinger6.9是protel的新版本,它是一款PCB制作软件。Altium Desinger6.9有很多的优点,适合用于本设计。首先它是唯一一款将设计流程,集成化PCB设计、混合信号仿真、信号完整性分析、可编程器件设计和基于处理器设计等嵌入式软件工能混合在一起的产品;能够同时进行原理图、PCB、FPGA,以及嵌入式解决方案;具有将设计方案从概念转变为最终产品的全部功能;包括所有电控不见所需要的所有功能。 这款软件包括所有原版软件的功能和优点外,还增加了很多改进的高端功能,它拓宽了版本设计的传统界限,全面继承了FPGA设计功能和SOPC设计实现功能。从而允许设计中国的FPGA和PCB设计及嵌入式设计集成在一起。Altium Desinger6.9 有很多的优越性,表现在:(1)设计环境的高度集成;(2)操作环境的自行设计; (3)集成的平台性。3.2 Protel 99SE 由于PCB生产厂商的设备落后,不支持Altium Desinger6.9 设计的PCB,需要转换成Protel 99SE支持格式的PCB,虽然Altium Desinger6.9 是Protel 99SE的升级版本,也能进行原理图的实际,但是Protel 99 SE是低版本的软件,往往高版本设计出来的东西低版本软件不支持。比方说,Altium Desinger6.9支持椭圆形的孔,而Protel 99 SE只支持圆孔,椭圆形的不支持。Protel 99SE是Protel 99系列的产品中功能非常完备的版本,在Altium Desinger6.9未出世之前,它以强大的功能和易用性,得到广大硬件设计人员的青睐,也是当前众多电路板EDA设计软件中用户最多的产品之一。此外,这两款软件都支持windows操作系统,所以运用它是可行的。3.3 单片机的电源设计电源电路:单片机是一个电子器件,一个电子器件能够工作的第一个前提就是要有电源,电源是一切电子器件工作的前提,对于单片机系统也不例外。无线发送模块以及温湿度测量模块使用的器件皆为低功耗器件。对发送端而言,可以采用5 V电池供电,很适合在野外等环境进行温湿度测量采集。而接收端可以采用5V开关电源供电。其核心部件LM1117-3.3是一个低压差电压调节器系列。压差在1.2 V输出,此时相应的负载电流为800mA。本设计所需的电压为3.3 V,故采用LM1117-3.3电源供电系统,如图3-1所示;图3-1 单片机电源电路3.4 单片机的外围电路的设计一个单片机的最小系统主要包括这几个方面:复位电路、时钟电路、实现单片机工作的最简单系统就是单片机最小系统,可以这样理解,就是指单片机不管实现什么功能,也不管多复杂,多简单,所必须的最简单的电路。下面我们一一介绍:3.4.1时钟电路时钟电路一般由晶振和电容组成。单片机系统为什么需要时钟电路?单片机工作的时候要有一定规律的,这个规律就是:单片机必须在周期性的时钟信号的作用下工作,如果没有时钟信号的限制,那单片机的工作就乱套了。就像我们上班一样,我们必须在规定的时间上下班,如果我们都不按照这个规定时间上下班,那整个公司就乱套了。电路中电容采用22pF的贴片电容,晶振采用8.0MHZ,典型的时钟电路如图3-2所示:图3-2 时钟电路图 其中X1、X2要分别接到单片机的两个时钟引脚上。两个电容是谐振电容,作用是让晶振更稳定的工作。3.4.2 复位电路就像我们看书一样,看书的时候首先我们要拿出我们要看的书,然后翻到我们想看的那一页。在单片机正式开始工作之前要有一个准备的过程,这个过程就是复位,复位对单片机系统来说,是一个准备开始工作的过程,在复位过程里,单片机要把所有需要用到的东西准备好,这样当单片机正式工作的时候就可以正常干活了。复位一般分为电源复位和手动复位两种,这个跟我们的计算机相似:有开机和重启两个按钮。电源复位是单片机系统上电到开始工作这个时间段,而手动复位就像我们重启计算机一样,是强制让它从头开始工作。复位电路的电容10uf,按下开关即可实现单片机的复位。AVR单片机典型的复位电路如图3-3所示:图3-3 复位电路综上所述,单片机的外围电路由复位电路,时钟电路组成,总的设计图,单片机外围电路设计如图3-4所示: 图3-4 ATmega16L外围电路设计图3.5 温度测量电路的设计对于温度和湿度,它们并非是急剧变化的物理量,温湿度的变化往往是缓慢进行的,因此针对这个特点对于温湿度的测量采集并非需要时时刻刻都在进行。而是每隔T时间(T根据实际需要而定,本系统选用1 s)采集一次,其余时间由于低功耗的要求使得MCU处于休眠状态。其程序流程如图7所示。其中Atmega16L进入休眠状态是通过对SE编程休眠使能,然后通过定时器的计时中断将Atmega16L唤醒,再进行测量以及数据传输。SHT10传感器默认的测量温度和相对湿度的分辨率分别为14位和12位,通过状态寄存器可降至12位和8位,并具有可靠的CRC数据传输校验功能。另电源电压范围为2.45.5 V;电流消耗小:测量时为550A,平均为28A,休眠时为3A。是低功耗产品的最佳选择之一。 由于选择的是无线传输模块,所以SCK,DATA直接与Atmega16L的两线串行接口PA0与PA1相连,用于数据的传输交换,VCC,GND分别接电源与地。SHT10的应用电路如图3-5所示;图3-5 SHT10应用电路3.6 无线发送接收电路的设计单片机与nR F24L01的接口电路很重要。通过配置寄存器可将nRF241L01配置为发射、接收、空闲及掉电四种工作模式。数据在发送接收时只要设置一下无限模块的工作方式即可。发射数据时,首先将nRF24L01配置为发射模式:接着把地址TX_ADDR和数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10s,延迟130s后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。接收数据时,首先将nRF24L01配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在接收堆栈中,同时中断标志位RX_DR置高,IRQ变低,以便通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。具体电路连接如图3-6所示:图3-6 nrf24l01无线收发硬件电路设计图3.7 液晶显示LCD12864的电路设计LCD12864的管脚共有二十个,但是连接的电路并不复杂。但是需要注意的是LCD的电源共有2组,一组是用于驱动LCD显示,另一组用于背光显示,可将这两组连在一起或者背光电源省略,我的设计是将两组连接在一起。另外有个输入管脚需要接入LCD调整电压来调节对比度。通常使用液晶时时由此引起的,对比度过高或者过低均会使屏幕无法正常显示。它可接至10K20K电位器的调整端,这里我选择的是10K的电位器。目前市场上某些LCD12864的对比度可由单片机操作其寄存器调节,可根据不同的条件进行选择。其余的端口连接单片机的引脚。如下图3-7所示:图3-7 液晶显示LCD12864电路设计图综上述设计,主机结构由无线模块,液晶显示和单片机组成,无线模块NRF24L01实现接收SHT10采集到的温湿度,由单片机控制,通过液晶显示器LCD12864显示温湿度。主机原理图如图3-8所示: 图3-8 主机原理图从机由单片机,无线模块,温度采集模块组成,通过温湿度传感器SHT10对室外温度进行采集,经过单片机的处理,由无线发送模块NRF24L01将采集到的温湿度值发送给主机,其从机结构原理图,如图3-9所示;图3-9 从机原理图第四章 系统的软件设计4.1 编程语言的选择 C语言拥有程序移植方便,程序的结构性、坚固性好,支持数学运算,采用条理清晰的结构化编程,程序的可维护性好,可协同开发软件,开发周期短。同时,C语言是面向过程和计算的,屏蔽和模糊了语句的执行时间、生成多少 字节的代码等。因此,对于较复杂的系统,以及开发系统的限制,如果需要短时问内编出执行效率高、代码规范、模范化程度高的程序代码,C语言都能满 足要求。因此我们选用C语言编程,开发软件选择挪威ImageCraft公司开发的ICCAVR。4.2 系统开发环境程序的编辑需要在编辑软件里进行,一个好的编辑软件不仅操作简便容易,并且功能强大,生成的程序质量高。在AVR单片机编程中,一般采用ICCAVR。ImageCraft的ICCAVR 是一种使用符合ANSI标准的C语言来开发微控制器MCU程序的一个工具它有以下几个主要特点:ICCAVR是一个综合了编辑器和工程管理器的集成工作环境IDE其可在 ;WINDOWS9X/NT下工作;源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成;编译错误显示在状态窗口中并且当你用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行,这个工程管理器还能直接产生您希望得到的可以直接使用的 INTEL HEX 格式文件 NTEL HEX 格式文件可被大多数的编程器所支持,用于下载程序到芯片中去,ICCAVR 是一个 32 位的程序,支持长文件名。本章介绍了嵌入式开发系统的一般流程发以及ATmega16l单片机开发和使用软硬件环境,软件包括双龙公司的SLISP和ImageCraft公司的ICCAVR。本系统软件设计主要由主机程序、从机程序、PC机通信及数据处理显示程序三部分组成。 4.3 主机程序设计 主机程序开始后先进行初始化设置,初始化的内容包括nRF24L01初始化、串口初始化、LCD的初始化。然后置nRF24L01为接收状态,nRF24L01判断是否有接收数据,没有数据接收继续查询,有则接收从机通过nRF24l01发送的数据,单片机将接收的数据送LCD12864显示,直到一组数据接收完毕。继续查询接收下一组数据。流程图如图4-1所示:图4-1 主机软件流程图根据软件流程图,见程序如附录2 ;4.4 从机程序设计从机程序开始后首先进行初始化设置。初始化的内容包括nrf24l01初始化、SHT10初始化。然后调用SHT10温度采集子程序,数据处理后将采集的温度值送LCD12864显示并通过nrf24l01发送给主机,如此循环往复。从机程序流程图如图4-2所示。 图4-2 从机软件流程图根据从机软件流程图,具体程序如附录2。4.5 串行外设接口SPI串行外设接口SPI允许ATMEGA16L和外设或其他AVR器件进行高速的同步数据。ATMEGA16L SPI的特点如下: (1)全双工,3线同步数据传输: (2)主机或从机操作: (3)LSB首先发送或MSB首先发送; (4)7种可编程的比特率; (5)传输结束中断标志; (6)写碰撞标志检测; (7)可以从闲置模式唤醒; (8)作为主机时具有倍速模式(CK/2)。 主机和从机之间的SPI连接如图4-1所示。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI 移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS拉高实现与从机的同步。 配置为SPI主机时,SPI接口不自动控制SS引脚,必须由用户软件来处理。 对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机、传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE电位,中断就会发生。主机可以继续往