版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1绪论1.1无线传感器节点研究意义和研究方向1.1.1研究意义无线传感器网络(WirelessSensorNetwork,WSN)是由大量无线传感器节点组成,这些无线传感节点安置在需要监测的区域的各个角落。通过这些造价不高的微型传感节点的无线通信,就形成了一个多对多的组织网络,它综合了传感器技术、嵌入式计算技术、现代网络及无线通信技术、分布式信息处理技术等。WSN发展十分迅猛,其前景十分广阔,被誉为继个人电脑、计算机网络及无线通信之后,IT技术的“第四次产业革命”[1][2]。该网络中的无线传感节点不仅具有无线通信的功能,还需要能采集数据、处理数据,并具备存储信息的功能。另外不同的节点也可以有不同的感知形态,节点与节点之间可以互相交换自己感知到的信息,也可以由节点将信息传送到远程端。现WSN已经应用于各个领域,如军事国防、环境监测、智能家居、交通管理、空间探测、医疗护理和反恐抗灾等领域。未来,无线传感器网络、互联网和移动通信网可以相互融合,形成一个非常巨大的网络实现互联,使信息的传输更加快捷和方便,其应用可以跨越人们日常生活和社会生产活动的所有领域,改变生活和生产方式,提高社会生产力,加深世界各国的相互联系,给社会带来深远影响[3]。1.2.2研究方向现如今WSN发展良好,无线传感节点的研究的主要方向有以下几个方面:研究设计出体积更小、寿命更长、功耗更低、运行速度更快的传感器节点;因为构成网络的节点数量众多,所以需要研究如何降低单个节点的成本;如何设计提高传感器节点的安全性和抗干扰性,让节点在被干扰甚至被破坏的情况下仍能采集、处理和传输数据,可靠地完成任务;研究冗余节点的配置,即使某些节点出故障,也能利用冗余节点为网络持续正常的使用提供保障。在无线传感器网络中,需要用到大量的无线传感节点,而且节点一般采用电池供电,电池电量有限,从延长网络寿命来考虑,需要减小能量的消耗。所以常选用低功耗单片机作为无线传感节点的微控制器。1.2单片机及瑞萨单片机的发展1.2.1单片机的定义单片微型计算机(single-chipmicrocomputer),又称微控制器(microcontroller),或微控制单元(MCU),顾名思义就是小而完善的微型计算机系统。微控制器采用了超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、存储器RAM和ROM、各种输入输出口和定时器/计时器、数模转换电路等集成在一块硅片上形成一个微型计算机系统,国内多用“单片机”称呼它。单片机具有体积小、功耗低、系统结构简单和控制功能强等特点,常被用于嵌入式系统中作测试和控制使用。多数单片机以冯•诺伊曼结构为基础,哈佛结构由于能够提高流水线的速度也逐渐得到了广泛的应用。单片机经过30多年的发展,产品种类繁多、性能各异,按照总线的宽度区别,划分为4bit、8bit、16bit和32bit。前三类存储量相对较小,由于硬件的限制,软件的设计有一定的局限性,通常缺少对应的操作系统。32位的单片机应用环境较为高端复杂,应用程序一般在操作系统下运行。现在开发应用到的单片机都支持高级编程语言,例如:C语言、C++等。1.2.2单片机的发展历程单片机的主要发展历程可以大致分为以下四个阶段:第一阶段:单片机初级阶段。1971年Intel公司生产出第一块4位芯片(4004微处理器),标志着微处理器的诞生。经过发展也推出了8位微处理器,不过这一阶段生产的CPU仍然处于初级阶段,运算能力较弱,速度较慢。第二阶段:低性能单片机阶段。1976年Intel公司生产出的MCS-48单片机对单片机的发展产生深远影响,为后期奠定了坚实基础。但这个阶段的单片机仍然处于低性能阶段。第三阶段:高性能8位机阶段。包括Intel公司的MCS-51系列、Mortorola公司的6805系列、ZILOG公司的Z8系列等。这些产品基本能满足多数嵌入式系统的开发需要,目前为止,在单片机领域主导机型中仍然占有一席之地。第四阶段:16位单位机、32位单片机及64位单片机推出和发展阶段。各公司不断开发集成度更高、容量更大、处理速度更快和性能更优的新型单片机,应用于高端市场、新兴科技,推动着人类社会不断向前发展。1.2.3瑞萨单片机的背景与发展瑞萨电子株式会社即“瑞萨电子”,该公司是由NEC电子与瑞萨科技于2010年通过合并成立的新公司。NEC电子是日本电子巨擘NEC旗下的子公司,该公司不仅精于半导体产品的制造,而且还提供各种多元化市场下半导体解决方案。瑞萨科技提供的半导体处于国际领先水平,为汽车电子、移动通信和个人电脑(PC)/音频视频(AV)等市场提供先进半导体,也是全球领先的微控制器供应商。合并之后的“瑞萨电子”业务优势更加明显,为全世界的客户提供更好的服务。现瑞萨电子主攻控制器(MCU)、系统LSI和模拟及功率半导体器件的研究与开发。主要的微控制器产品有:RL78族、RXFamily、78KFamily、R8C族、瑞萨的FlashMCU、M32R族、M16C族、SH-Mobile、Multi-Core、RZFamily、H8SX族、SuperH族、H8S族、V850FamilyH8族等等。在中国,8bit、16bit超低功耗瑞萨电子MCU产品主要有RL78族、78K族和R8C族产品[5]。本次毕业设计所用的芯片就是RL78族MCU中的R5F100FE,该MCU功能强、能耗低,完全符合本次无线传感节点设计的要求。RL78族结合了R8C族和78K族MCU的优势,使其具备了功耗更低、性能更优、集成度更高的特点,拥有良好的市场前景。1.3本文的主要任务和内容本论文主要工作为了解瑞萨R5F100FE芯片和射频收发器CC2520,学习AltiumDesigner软件和CubeSuite+软件的使用方法,在原有设计基础上优化设计各模块原理图和布局PCB板,然后根据优化设计后的电路进行C语言程序编写,并下载实现基本功能和射频无线数据收发功能,改善原有设计中存在的不足,实现优化设计的目的,使该传感器节点的设计更接近实际应用。本论文的主要内容有:绪论,简单介绍无线传感网络及节点的研究意义与研究方向,介绍单片机的历史背景及瑞萨单片机的发展历程,阐述瑞萨单片机的背景与发展,总结本文的主要任务和主要内容;无线传感器网络的研究,主要讲解与无线传感器网络有关的技术,并梳理了与ZigBee协议相关的理论知识;硬件优化设计,本章首先列出需要的硬件配置,说明硬件资源特性,简单说明了原有设计存在的不足及本次优化设计的思路。然后分别介绍接口及跳线、主控芯片电路、开关和LED电路、键盘电路、LCD显示电路、射频电路、串口电路的设计要点及注意事项,并附带各模块的原理图;软件优化设计,这一章首先表明系统的软件执行流程,然后分别详细的介绍LCD液晶屏、开关、LED灯、4×4矩阵键盘、无线模块的程序执行流程,阐述设计的细节思路,并附带部分重要源代码;设计中发现的问题与解决方法,讲解在设计过程中问题的发现和解决过程;测试结果,展示设计成果,并进行阐述,同时对比之前的设计,说明前后的不同点,各自的优缺点。总结,整体阐述该论文所完成的工作或见解及其意义和作用。
2无线传感器网络的研究近年来,随着嵌入式计算、传感器、现代网络及无线通信和分布式信息处理等技术的飞速发展与日益成熟无线传感器网络(WSN)逐渐成为研究领域的热点。WSN是由综合了感知监测能力、信息处理能力和无线通信能力的微型传感节点构成的无线自组织网络系统。通过运用通信技术、传感器技术、分布式信息处理技术和嵌入式技术等,WSN可以实现各传感节点间实时协作,感知、采集和处理所在区域内的环境数据或被监测对象的信息,处理过的数据或信息便可以通过自组多跳网络以无线通信的方式传送到远程控制端供网络用户使用。WSN能够在任何时间、任何地点获取各种环境的数据或目标信息。因此,被广泛应用于环境监测、国防安全、医疗护理、工农业控制、智能家居、反恐抗灾、危险区域远程操控等领域。由于WSN广阔的应用前景和实用价值,其研究引起了国际上许多国家的高度关注,被认为是21世纪的感知采集信息的一场巨大变革,是21世纪具有深远影响力的技术之一。2.1无线传感器网络系统结构无线传感器网络的系统结构如图2.1所示,由多个传感器节点组成的传感区域、收发器(Sink节点)、互联网或通信卫星和控制中心构成[6][7][8]。由图可以看出传感器节点的信息可以通过节点的相互协作进行传输。图2.1无线传感网络系统结构传感器网络节点是组成传感器网络的基本单元,是构成无线传感网络的硬件基础平台。传感器节点的基本构成如图2.2所示,由图可知,传感器节点主要由四个单元构成,分别为电源单元、处理单元、通信单元和传感单元,实际设计过程中也可以根据需要增加其他功能单元,例如移动系统、定位系统、驱动系统等。这些节点可以通过不同的方式被大量部署在监测对象内部或周围自组织成无线网络,相互协作来感知、采集和处理被覆盖区域中的各种数据信息,经过多跳网络传至Sink节点,再由互联网或通信卫星将采集的数据传送至远程控制中心进行进一步处理。图2.2传感器节点构成2.2无线传感器网络协议体系图2.3无线传感器网络结构体系网络节点的设计方案虽然多种多样,但各方案的本质原理却很相似,区别一般在采用的微处理器及无线通信协议不同。协议方面,用得较多的有:自定义协议、ZigBee协议、802.11协议、路由协议、GEAR协议以及蓝牙协议等。无线网络的网络体系架构如图2.3所示,由图可知,其架构主要由无线传感器网络层间协议、传感器网络管理技术和技术支撑三个部分组成。网络层间协议类似于计算机网络的TCP/IP协议,也为五层协议体系;管理技术主要是节点对自身的管理和用户对传感网络的管理;技术支撑则是基于以上两者为用户提供的各种应用。2.3基于ZigBee协议的组网设计Zigbee标准是Zigbee联盟制定的一种低速率、低成本、低功耗的短距离无线通信协议或技术标准[9]。基于Zigbee标准传输速率低、覆盖范围小、网络容量大、功耗和成本低及安全可靠等技术特点,它常被用于远程监控、智能家居、嵌入式数据采集传感器等领域。2.3.1ZigBee协议栈及其设备类型ZigBee技术是一种低功能、高容错性的无线通信协议,以IEEE802.15.4标准为基础,直接运用其物理层和MAC层规范。Zigbee通过重新规定网络层和应用层规范对IEEE协议进行改造升级。Zigbee协议栈的构成如图2.4所示,自上而下由应用程、网络层、数据链路层、介质存取层和物理层组成[10]。图2.4ZigBee协议栈ZigBee定义了两种设备:一种具有简单功能(RFD:ReducedFunctionDevice),只能作为终端接收器;另一种具有完全功能(FFD:FullFunctionDevice),不仅可以用作终端接收器,还可以作为路由选择器和网络协调器。路由选择器首先要进入Zigbee网络,然后才可以发送或接收数据、路由数据并允许其他路由选择器或终端设备加入该网络;网络协调器可以用来初始化网络、更新网络拓扑结构、管理网络节点和保存节点信息;终端接收器类似于路由选择器,要在加入Zigbee网络后方可发送或接收数据,两者的区别在于终端始终不允许其他设备加入该网络。2.3.2ZigBee组网研究每个网络都需要设定一个网络协调器,因此,FFD设备都可能成为网络协调器,确定方法如下:当一个FFD设备首次被激活时,首先要发送网络协调器的请求,如接收到的回复是网络中已经存在网络协调器,则该FFD设备将会作为路由选择器或终端接收器供网络使用;否则,该FFD设备可以将自身作为网络协调器建立新网络。新网络建立后,需要一个绑定表来告知网络协调器如何连接源端点和终端点。ZigBee协议有两种地址:16位网络地址和64位的唯一地址,网络地址对网络中的节点而言是唯一的,不过它并不是固定不变的。节点加入网络后被分配一个16位的地址,当节点需要传送数据包时,是传送到另一个16位地址。传送信息时首先向整个网络发出搜索网络地址的请求,数据包中已经包含了64位的目标地址,找到与该地址匹配的接收端之后才会反馈数据给发送端,提供目标的网络地址,然后再开始传送数据。反之,若没有接收到反馈,则会丢弃该数据包
3模块硬件设计3.1硬件配置本次无线传感器节点的优化设计与实现中需要用到的实验硬件平台包括:EZ_CUBE片上调试仿真器(如图3.1(a))2、瑞萨RL78/G13系列单片机开发板(如图3.1(b))3、CC2520射频芯片(如图3.1(c))4、USB线(如图3.1(d))(a)(b)(c)(d)图3.1设计中使用的硬件设备基于瑞萨单片机的无线传感器节点的优化设计与实现中需要用到的开发软件平台包括:AltiumDesigner软件界面,可以实现电路原理图设计、PCB板绘制编辑等等。左侧为各模块原理图(如图3.2(a))。Cubesuit+集成开发环境软件的界面,可进行C语言编程。左侧为各模块软件程序(如图3.2(b))。(a)(b)图3.2设计中使用的开发软件平台3.2硬件资源特性瑞萨R5F100FEA瑞萨单片机产品非常丰富,应用领域非常广泛,MCU的类别也很多。瑞萨单片机的共同特点是片内可用资源丰富,容量大、速度快和低功耗,同时也易于扩展,支持C语言编程,这些特点对系统的开发和应用带来很大的便利。考虑到实际设计中需要用到的引脚数量和存储空间等,此次优化设计还是沿用了原有设计中的芯片-瑞萨RL78/G13系列中的R5F100FEA。该芯片共有44个引脚,数据闪存为4KB。RL78/G13系列单片机提供不同数量引脚的MCU,用户可以根据自己的需要选择合适的型号。端口的功能除了作为输入/输出以外,还可以通过复用实现其他的功能。Renesas(RL78/G13)系列单片机的主要特性[3]:最短指令执行时间可在高速32MHZ至超低速32.768KHZ之间更改通用寄存器为8位×32个寄存器(8位×8个寄存器×4组)ROM:16至512KB,RAM:2至32KB,数据闪存:-/4/8KB内置高速片上振荡器时钟:可从32MHZ、24MHZ、16MHZ、12MHZ、8MHZ、4MHZ、2MHZ、1MHZ中选择支持自编程功能(具有引导交换功能/flash屏蔽窗口功能)内置上电复位(POR)电路和电压检测电路(LVD)内置看门狗定时器(可在专用低速片上振荡器时钟下运行)内置乘除法器和乘加器内置按键中断功能内置时钟输出/蜂鸣器输出控制电路内置十进制调整(BCD)电路输入/输出端口:16至120(N沟开漏:0至4)定时器:16位定时器、看门狗定时器、实时时钟、12位间隔定时器、串行接口8/10位分辨率A/D转换器:6至26通道不同电位接口:可以连接1.8/2.5/3v运行的器件电源电压VDD=1.6至5.5V待机功能:HALT,STOP,SNOOZE模式运行环境温度:TA=-40°至+85°射频CC2520CC2520是TI推出的二代2.4GHzZigBee/IEEE802.15.4射频收发器,工作在2394-2507MHz的ISM和SRD频段时主要有以下特性:工作速率250kbps,码片速率2MChip/s较低的电流消耗RX(接收数据帧):18.5mARX(等待接收数据):22.3mATX(输出功率5dBm):33.6mATX(输出功率0dBm):25.8mA利用低电压供电(1.8V至3.8V)使用O-QPSK调制方式采用直接序列扩频DSSS方式灵敏度高(-98dBm)抗邻频道干扰能力强(49dB)输出功率编程可控,最大输出功率5dBm内部集成有VCO、LNA、PA以及电源整流器在基于瑞萨单片实现无线传感器网络设计中,瑞萨芯片R5F100FEA工作在主机模式而射频收发器CC2520工作在从机模式且R5F100FEA控制CC2520收发数据。CC2520寄存器参数和读写缓冲器内的数据是通过SPI接口配置的,详细的引脚连接如表3-1所示。因为CC2520具有完全集成的压控振荡器,配合16MHz晶体振荡器、天线等元器件就能在2.4GHz频段工作。CC2520与微处理器连接的四个端口SI、SO、SCK、CSn都是SPI接口,R5F100FEA通过这个接口完成设置和收发数据工作,并实现读、写操作,同时缓存数据、读/写状态寄存器等。片选信号CSn低电平有效[3]。该接口使用的步骤为:(1)当CSn为低电平时,CC2520开始新的SPI通信周期。(2)CC2520选中后,开始驱动SCK时钟信号。SCK驱动频率不固定,服务周期可变。在SCK信号上升沿,CC2520采样SI、SO上的数据;在SCK信号下降沿,如果SO为输出模式。CC2520将改变SO上的数据。(3)当这一周期完成时,停止SCK的驱动并将CSn信号变为高电平,通信终止。进入新的周期重复上述步骤。电源LI1117-3.3因为系统各模块所需要的电流和电压值不相同,所以电源模块需要包含多个稳压电路来满足各个模块的对电压的需求。LI1117-3.3是一个正向低压降稳压器,它的稳压调整管是由一个PNP驱动的NPN管组成的,分为固定和可调两个版本,输出电压可以是:1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V和5.0V。在本次优化设计中用到的是3.3V和5V,前者仅仅为射频芯片CC2520提供工作电压,而后者满足了瑞萨单片机等大部分元器件的电压需要。
3.3硬件优化设计前后对比3.3.1原硬件设计中的不足必需有外接电源才能工作,因此无法在户外使用,增加了实际应用的困难;由于存在部分引脚的复用,基本功能和通信功能的程序无法组合;通信功能使用中没有用到液晶显示屏,无法判断通信是否正确无误;只能实现点对点的通信功能,没有实现组网功能。3.3.2优化设计思路将原来电源开关的“关”功能改成电池供电的“开”功能;重新分配瑞萨芯片的引脚,减少了开关和LED灯的数量,不使用引脚的复用功能;3.3.3电路板优化设计结果(a)(b)图3.3电路板实物如图3.3所示,(a)图为原设计的电路板,(b)为优化设计后的电路板。优化设计过程中使用的关键元器件基本没有变化。主要改变了MCU与其他基本模块的连接口,没有使用接口的复用功能。
3.4系统硬件模块3.4.1接口及跳线图3.4电路板中借口和跳线3.4.2主控芯片电路图3.5主控芯片电路优化设计过程中对R5F100FEA的44个引脚重新分配,合理充分利用每一个引脚,争取在不使用引脚复用功能情况下,确保能够实现设计需求,做到设计简单化。除了特殊功能的引脚外,其他都被连入了设计的功能电路中(P60至P63、P31、P71至P73作为4*4键盘输出控制端口用于行列扫描;P20至P27用于控制LCD显示的输入控制端口,而P120、P00分别实现LCD的读写操作;P50、P30、P70用于连接输出端口与LED,P147、P146、P51用于输入端口与开关相连;其他功能输入/输出端口进行有选择性的接入射频通信模块),通过对各模块编写程序实现对应模块的功能,然后整合各模块程序,下载调试达到设计目的。3.4.3开关和LED电路图3.6开关和LED电路考虑设计中其他模块对引脚的需求以及本模块需要实现的功能,优化设计中减少了一个开关和LED灯。P51、P146、P147为输入端口,P50、P31、P70为对应输出端口,开关信号从端口输入至瑞萨芯片中,然后通过LED灯输出显示结果。此电路图实现的功能为:开关控制瑞萨芯片端口的高低电平的输入,由上面的开关电路可知,当开关S18闭合时,端口P51输入高电平,开关S18断开时,P51输入低电平。然后通过编程实现对应端口的输出,由上图中的LED电路可知,若P50输出高电平,则D2不会亮,反之则会发亮(电路中所有连接的电阻都是为了稳定电压,防止电流过大烧坏元器件)。
3.4.4键盘电路图3.7键盘扫描电路键盘电路模块在优化设计中基本没有变化,只是考虑电路板布线问题在与主控芯片的连接上改变了端口。如图3.7所示,原理图左侧网络标号cd1、cd2、cd3、cd4和row1、row2、row3、row4分别与瑞萨芯片的端口P31、P73、P72、P71、P60、P61、P62、P63相连作为整个键盘模块电路的输入信号口,通过软件开发工具CubeSuite+进行编程(行与列扫描,判断哪个键被按下),将信号通过按键的键值传送至LCD液晶显示出来。例如:当cd1接收到瑞萨芯片的输出为低电平时,则按键S2、S3、S4、S5一整行被选中,此时若按下其中的任何一个按键,电路即被接通,该按键代表的字符会显示在LCD液晶屏上,按键代表的字符可以在编程时通过查表进行设置。原理图中用到的电阻R1、R2、R3、R4为安全电阻,防止电流过大,造成电路损坏。3.4.5LCD显示电路LCD显示模块较之前的设计依然只是改变了与主控芯片相连的引脚,基本原理方面并没有什么变化。如图3.8所示,将DB0至DB7分别与芯片端口P20至P27相连,实现数据的传送与显示。除了固定电位(电源、地)的连接以外,特别注意的是1602LCD第3引脚的连接。VL能够调整液晶显示器的对比度,电源接正时对比度最弱,电源接地时对比度最高,对比度需要调整到一个适当值,才能使字符在LCD上的显示效果最佳。通常需要先接一个电位器(10K左右)来自主调整到最适合的对比度,不过观察到原设计中LCD显示良好,此次优化设计中依然用到的是3.5K固定电阻代替电位器。图3.8LCD显示电路3.4.6串口电路图3.9串口电路如图3.9所示为电脑与电路板的连接端口,用于5V电源的供电。3.4.7射频电路图3.9射频电路表3.1R5F100FEA与CC2520之间的对应接口瑞萨端口CC2520端口端口功能P15(输出)RESET复位端口P14(输出)VERG_EN电压调整使能端口P13(输出)SCK时钟输入端口P12(输入)MISO数据输入端口P11(输入)MOSI数据输出端口P10(输出)CSN使能P16(输入)GPIO0数据输入0端口P17(输入)GPIO1数据输入1端口4模块软件设计4.1软件开发环境该设计中,使用的是CubeSuite+集成开发软件,用C语言编程,使用EZ_CUBE片上调试仿真器实现在线调试,也可以将程序烧写至微控制器的内置Flash存储器中后做脱机调试[11][12]。CubeSuite+软件不仅可以支持传统的MCU(V850、78K0R和78K0系列),同时也能够支持新款MCU(RL78族和RX系列),该软件可以使用自带的CodeGenerator(DesignTool)功能,选择自己需要设置引脚的功能等,自动生成部分代码和驱动程序;EZ-CUBE支持的产品范围与CubeSuite+相同,能支持8bit到32bit的内置Flash存储器的微控制器,对应不同的微控制器进行不同的固件更新即可下载、调试[13]。4.2原软件设计中的不足及系统设计思路设计以瑞萨单片机的控制为主,由瑞萨单片机控制基本外围电路和射频收发器的两种工作模式。不过原设计中还存在以下两个不足之处:通信功能使用中没有用到液晶显示屏,无法判断通信是否正确无误;只能实现点对点的通信功能,没有实现组网功能。程序编写时需要对每一个功能模块分别编写子程序,方便系统调用,同时也有利于各模块错误的检测和功能的优化,最终只需要将各模块组合起来完成整个系统的功能即可。模块化使得程序看起来逻辑清晰,更容易排查并解决问题,例如在单个模块功能测试成功后,若多模块组合的系统在运行时却出现了错误,便可首先判断错误出现在两个模块的衔接处,从而缩短解决问题的时间。4.3系统总体结构当选择进入基本外围电路工作模式后,矩阵按键作为输入,输入信号通过MCU的处理会在LCD液晶显示屏上输出;3位开关作为输入,通过MCU对开关闭合状态的判断在LED灯上输出。由于延时过长会产生视觉影响,所以设计中,基本外围电路控制部分的按键和开关作用后,LCD与LED的反应时间不能超过0.1秒。当选择进入射频通信工作模式后,矩阵按键同样作为输入,MCU首先对被按下的按键进行判断,然后做出相应的反馈,例如按下发送数据按键,则MCU发送指令控制射频收发器发送数据,同时控制LED灯有相应的反应;为确保能够及时准确的接收到数据信息,MCU会定时检查是否有数据传送至射频收发器,若检测到有数据则接收,并控制LED灯做出相应的反应。系统总体结构图如图4.1。图4.1系统总体结构图电源模块:瑞萨芯片R5F100FEA等大部分元器件由5V电源供电,而CC2520电源将5V电压转化为3.3V电源供电;按键模块:4*4矩阵按键作为模式选择的输入按键、LCD显示数据的输入按键或者射频通信发送数据按键;LCD液晶显示屏模块:显示按键设置并输入的字符或者光标的左右移动;开关模块:由3位拨动开关产生的数字型号作为系统的输入信号,控制LED灯的8种变换模式;LED灯模块:对开关的闭合做出相应的反应、对射频通信模块数据的收发做出相应的反应;射频收发模块:与MCU相连,由MCU控制数据的发送,并定期检查寄存器中是否有收到数据,若有则接收数据。
4.4软件总体结构及流程4.4.1软件总体结构因为有基本外围电路工作模式和无线射频收发工作模式,所以首先要进行工作模式的选择,并在每个模式中设置退出该模式的标志(如图4.2)。图4.2软件总体结构4.4.2软件总体流程在本次设计中,只要保持电源接通的状态,程序开始运行后会一直按照流程执行下去,系统整体规划流程图如图4.3所示。图4.3系统整体规划流程图程序刚开始会执行系统初始化,该段程序是由编程人员按照自己的需要,使用CubeSuite+自带的CodeGenerator功能,选择自己需要设置的功能,由CubeSuite+自动生成部分代码和驱动程序。本次设计中主要是设置引脚的输入输出,选择使用在线调试功能、不使用看门狗功能。然后执行LCD初始化与LED初始化。LCD初始化即将液晶屏清屏,且光标不闪烁(详见LCD液晶屏模块);LED初始化是让LED灯处于全部熄灭状态。最后执行以下程序:在LCD上显示选择项、扫描按键进行模式选择并进入相应模式执行程序。程序中设置一个标志“flag”,该标志的作用是当flag为0时,直接进行按键扫描;当flag为1时,需要重新进行LCD与LED的初始化,然后先在LCD上显示选择项,再重新进入按键扫描、模式选择和模式执行。4.5基础模块软件设计优化设计中的基本模块与原设计并无区别,包括开关模块、LED模块、4*4矩阵键盘模块和LCD液晶屏模块,本节主要介绍键盘模块和液晶屏模块。4.5.14*4矩阵键盘模块键盘的种类有编码键盘和非编码键盘两种,当按键是否闭合由特定的硬件编码实现,且产生固定值的键盘称为编码键盘;利用软件编程进行识别的键盘则是非编码键盘。单片机控制的嵌入式系统中多数用的是非编码键盘,。设计过程中若需要的按键数量较多,则通常会使用矩阵键盘,因为独立键盘的每个按键需要对应一个I/O端口,造成对I/O口资源的浪费。图4.4单个按键的检测原理如图4.4所示为矩阵键盘中单个按键与MCU的连接。以下是对按键检测原理的简单描述。瑞萨单片机R5F100FE是单向I/O口,使用矩阵键盘时,I/O口一半设置为输入,一半设置为输出。图4.4为矩阵键盘中单个按键与MCU的连接。判断按键被按下与否的方法:首先使MCU控制输出端为低电平,若按键没有被按下,节点X与输入端的电位相同,为高电平;若按键已被按下,节点X与输入输出两端口的电位都相同,为低电平。图中使用的电阻起到保护MCU的输入端口的作用,防止电流过大损坏MCU。设计中使用的是4*4矩阵键盘,MCU先在输出中选送一列作为低电平,其余三列输出高电平,确定列数,然后MCU立即检测输入端是否有低电平,如果检测到低电平,则意味着有按键按下,从而确定行数,于是可以确定被按下的按键的坐标。在程序中判断输入端口的电平高低时,不能直接使用端口,需要借助一个中间变量,将端口值赋给该变量,用该变量的值进行判断。程序执行时可能出现抖动,造成显示上的错误,因此,按键的程序设计需要增加防抖功能。第一种是防止在按键没有被按下的时候错误判断其已被按下,设计方法是在MCU判断到输入端有低电平时稍作延时,然后再次扫描检测该输入端是否依旧为低电平,若是才判断为该按键被按下。人按下按键的时间为毫秒级,而单片机的频率为32MHz,延时时间相对于按下按键的时间非常短,所以既保证了不误判,又不会影响操作。第二种是在按键没有被松开的时候不能出现多次操作,要等待按键释放,设计方法是在每个按键判断部分的最后增加一个while循环,循环的内容是读取输入端口的值。当判断该按键连接的输入端口依旧为低电平时,继续执行循环程序;否则,结束循环开始对后面的键盘进行扫描。16个按键对应的字符在电路板上的顺序如图4.5:图4.5矩阵键盘对应字符进入模式选择界面时,只有‘1’、‘2’对应的按键可以用来选择模式,其余按键无用。在基本模式运行过程中,每个按键的具体功能如下:‘R’即Reset,其功能为在基本模式内部复位,直接重新开始内部模式;‘B’指Back,其功能是消除当前显示字符中的最后一个,并使得光标左移一位;‘*’表示reset,其功能是整体复位,退出当前模式并重新从LCD、LED初始化开始运行程序(即使得flag=0);除了上述三个按键,其他被按下后都会在LCD显示屏上显示对应字符。在无线射频收发模式运行时,只有‘1’对应的按键用来发送数据,‘*’表示reset,功能为整体复位,其余无用。矩阵按键模块部分流程图(图3.6)所示。图4.6矩阵键盘流程图从流程图可以看出,首先设定某一输出端口为低电平,然后使用if_else语句判断输入端口是否有低电平。若有按键被按下,该按键判断程序、及其以后的未被按下按键的判断程序依旧会执行一遍,但是由于执行时间极短,所以不会出现按键返回值被后来按下的键覆盖的情况。由于该子程序的结尾是以返回值结束的,当没有按键被按下时,不会出现被设定的按键返回值,所以在调用该矩阵键盘子程序时,需要注意没有按键按下的情况并依照调用情况将此种返回值处理。以下为部分矩阵键盘源代码:if(temp1==0){delay(TIME_DEF);temp1=row1; if(temp1==0)/*防止错误判断*/ {lcdout='ASCII_BEF''; while(temp1==0)/*等待按键释放*/ { temp1=row1; }}}elseif(temp2==0){.......}/*继续向下扫描*/4.5.2LCD液晶显示屏模块液晶显示器(LiquidCrystalDisplay,LCD)的工作原理是用电流来刺激液晶分子,继而产生点、线、面,配合其背部灯管来构成画面。设计中使用的LCD液晶显示屏型号为1602A,该液晶屏虽然内部控制器有80字节的缓存区,但是在屏幕上只能显示两行,每行16个字符。5V电压驱动,有背光引脚,内置有128个字符的ASCII字符字库,可以使用并行操作,简单方便。1602LCD共有16个引脚,除了电源、背光电源、并行数据口和指令数据值传送口DB,下面几个引脚也非常重要:第4脚RS为数据/命令选择端,第5脚R/W为读写选择端,第6脚E为使能端。由于设计中没有涉及读状态和读数据,所以基本的操作时序只介绍写操作时序,时序图如图4.7:首先通过RS引脚的电平值确定是数据操作还是指令操作。MCU向RS引脚输出高电平表示数据操作,输出低电平表示指令操作;R/W引脚设置为W,MCU向该引脚输出低电平;将数据或命令的值送到数据线上;MCU给使能端E输出一个高电平,将数据线上的值传送至液晶屏,操作完成。图4.71602液晶屏写操作时序图数据或指令写入部分源程序如下:voidwrite_com(ucharcom)/*该形参可以为数据可以为指令,参考RS*/{ RS=RSSELECT_BEF;/*0or1分别表示命令和数据*/ DBX=com; /*输出数据或指令*/ delay(TIME_DEF); EN=1; delay(TIME_DEF); EN=0;}程序中的第一个延时用来确保数据或指令被发送到数据线上,第二个延时用来设置EN的高电平,确保数据线上的数据或指令传送至液晶屏。该液晶显示屏的控制器内设置有一个数据地址指针,可以用它来访问80B的RAM缓冲区,指令码为“80H+地址码(范围为0-27H,40-67H)”,且需要设置显示的模式,其指令码为38H。LCD的初始化需要将显示清零,并将数据指针清零,开显示并不显示光标,其指令码集合如表4.1所示。表4.1指令码 功能00001DCBD=1开显示;D=0关显示C=1显示光标;C=0不显示光标B=1光标闪烁;B=0光标不显示000001NSN=1当读或写一个字符后地址指针加一,且光标加一N=0当读或写一个字符后地址指针减一,且光标减一S=1当写一个字符,整屏显示左移(N=1)设计中要在LCD上显示多个字符,因此需要设置数组或者指针,本次设计中采用设置数组的方法。当字符是确定不变时,定义一个字符数组然后显示;当字符有增减时,定义一个数组,将需要显示的值放入数组然后显示。具体源代码如下:for(j=0;j<num;j++){write_data(table[j]);delay(TIME_DEF);/*延时*/}4.6组合模块软件设计本节主要介绍了模式选择、矩阵按键和LCD组合、开关与LED灯组合的软件设计思路。4.6.1模式选择程序本次设计设置了两种模式—基本模式(1.BASIC)和射频模式(2.RF),flag_1和flag_2分别为这两种模式的退出标志,当标志flag的值为0时继续执行该模式的程序,否则退出该模式重新进行模式选择。图4.8模式选择模块流程图模式选择过程中,除了被设置为模式选择的两个按键外,按下剩余的十四个按键都会重新执行键盘扫描程序。模式选择模块流程图如图4.8所示。模式选择使用的是switch语句,表达式命名为sel,同时将键返回值赋给sel。除了设置按键返回值的16个表达式,结束时必须使用default语句,防止在没有按键按下的情况下,返回值为随机值导致程序运行错误。若执行完某模式内的程序并退出时,flag赋值为1;若未进入基本模式和射频模式内执行程序,则flag赋值为0。部分源代码如下:ucharmode_select();/*其中包含键盘扫描程序和LCD显示程序*/While(){LED_init();lcd_init();begin();do{flag=mode_select();}while(flag==0);}4.6.2按键组合LCD液晶显示屏软件设计因为矩阵按键按下后返回的字符是固定的(详见4.5.1),所以使用switch语句并将按键返回值作为分支的表达式。1602型号LCD液晶屏能显示两行,每行只能显示出16个字符。在本次设计中,第一行显示固定的几个字符,第二行根据按键的返回值做出相应的显示(需限制字符数)。在每一个分支的结尾设置一个全局变量Mkey_return,并将其值赋给flag_1来判断是否退出基本模式。按键返回值为除了‘R’、‘B’和‘*’以外的任何字符时,在第二行显示字符未满的情况下,会首先将光标右移一位然后显示对应的字符;当第二行字符显示已满,则光标移至第一位后新的字符覆盖原第一位字符,其他的字符不变,再有按键按下则依次覆盖;当返回值为‘R’时,LCD液晶屏进行初始化清屏,光标回到第一位;当返回值为‘B’时,光标向左移一位,并删除所显示字符中的最后一位。以上情况Mkey_return的值都被设置为0;而当按键返回值为‘*’时,整体复位并将Mkey_return的值设置为1。按键控制LCD显示的流程图如图4.9。图4.9按键控制LCD显示的流程图下面是BACK部分的源程序,其中table[]是存储显示字符的数组,num为数组的下标,是一个全局变量,其初值为0:if(num==0){ Mkey_return=0; break;}else{ j=(--num); write_com(0x80+0x40+j); write_data(''); delay(TIME_DEF); Mkey_return=0;break;}4.6.3开关组合LED灯软件设计3位LED灯的亮灭变换是在确定3位开关的闭合之后才执行,共可以设置8种变换方法。设计思路为使用switch语句,由MCU读取开关输入端口的值,将该值赋给表达式,经过判断后输出该表达式执行的LED变换。需要注意的是结尾要使用default语句,以防程序运行错误。假设在开关输入为0x00时LED呈全灭状态,0x01的情况下LED呈现先亮1s,后灭1s的循环。那么当开关由0x01状态转入0x00状态时,可能不是及时的转变,而是待0x01状态执行完一遍以后才转变,因此需要考虑怎样才能使开关状态改变后LED灯马上做出对应变换。本次设计中使用的方法是在LED灯的延时中设置一个while语句进行判断。设计中使用的MCU是32MHz,所以将1毫秒延时的功能用一个初值为3600变量、每执行一次变量减一的for循环来实现。当LED灯需要延时的时候,设置一个子函数,该子函数包含两个形参,一个是开关的输入值z,一个是延时时长t。在读取开关的输入值z后进入switch分支结构,接着读取一次输入防止判断出现错误,然后进入while循环;while循环条件有两个,分别是时间t倒数未完毕、开关输入值为z,两者必须同时满足才能执行while循环语句;若满足条件则先执行循环语句中的1ms延时,接着再次读取开关输入值且时间t减一;再次执行循环条件,若满足条件继续执行循环,不满足则退出,这样就可以有效的实现及时的判断。流程图如下(图4.10)。图4.10开关控制LED流程图及时判断开关变换部分程序如下,其中onoff表示开关输入值:voiddelay_onoff(uintt,ucharz){uintx;x=t; onoff=onoffkey; while(x!=0&&onoff==z&&Mkey_return==0)/*&&Mkey_retur==0*/ {Mkey_lcd();delay_1ms();/*可插入按键控制LCD部分程序*/onoff=onoffkey;x--;}}由于该组合程序和按键控制LCD显示的程序在基本模式中一同执行,所以不仅需要能即时的判断开关的变换,还需要即时的判断是否有按键按下。因此,在设计时将按键控制LCD显示程序安放在LED延时程序中的while判断程序中,且在循环条件中增加一个Mkey_return值为0(Mkey_return功能详见4.6.2),只有在三个条件同时满足的情况下才继续执行LED灯闪烁部分程序。4.7无线射频模块软件设计本节阐述无线射频模块的基本原理和程序设计,主要内容包括CC2520中指令集设置、SPI模拟串口、GPIO口的设置及无线通信部分系统设计。4.7.1CC2520指令集设置CC2520有固定的指令集[15][16],是由SPI串口传送至CC2520,且这些指令有一个或多个自己字节,其中第一个字节为固定的操作码,后面的字节是选择指令所需的参数。表4.2列出本次设计中使用的指令的指令码及其功能:表4.2CC2520部分指令集及功能SXOSCON(0x40)打开晶体振荡器,如果OXSC已经被打开,则该操作视作无效。(该指令只能作为CSn被拉低后云顶的第一条指令)SRXON(0x42)允许RX接收模式。STXON(0x43)校准后使用TTX,若已执行则无效。SRFOFF(0x45)禁用RX/TX和频率合成器。如果RX,TX和频率合成器已经掀起了USAGE_ERROR引发异常,并且指令没有任何影响。如果一个框架已经收到了RX_FRM_ABORTED异常。SFLUSHRX(0x47)冲洗复位RXFIFO和解调器。SFLUSHTX(0x48)冲洗复位TX。4.7.2SPI软件模拟串口设计SPI(SerialPeripheralInterface)即为串行外设接口,使用软件来模拟串口的一种方式。它是种高速同步串行通信方式,在双向通信时一般使用四个接口:MISO、MOSI、CS和SCLK,而进行单向通信时则只需要三个接口。这种主从通信方式不仅节约了引脚空间,且易于操作,通常被应用于数模转换、数字信号处理与解码之间和无线方面等。本次设计中CC2520射频收发器与MCU之间的信息传送就用到了SPI模拟串口[17][18]。图4.11为SPI的时序图。CC2520用到的四个接口中有三个作为输入(MOSI、CS、SCLK),只有一个为输出接口(MISO):CS是一个使能信号,并且受控于微控制器,当CS信号为低电平的时候,MCU对CC2520的指令操作才是有效;SCLK为时钟信号,相对于CC2520内部的晶振时钟是异步的,也是受控于微控制器,SCLK的最大晶振频率为8MHz,没有最小晶振频率。由于是串行工作方式,即数据是一位一位进行传输的,所以先在SCLK为上升沿的时候改变存储的数据,然后在下降沿时进行一位数据的读操作或写操作;MOSI表示由微控制器向从机输出数据,数据传输总是MSB(最高位数据最先传输)。数据需要在SCLK信号在上升沿时建立,并在其下降沿的时候被锁定;MISO是唯一的输出端口,表示由从机向微控制器传输数据,该引脚数据传输也是MSB。同步输出数据是在SCLK的下降沿,所以MISO信号应在SCLK的下一个上升沿采样。图4.11SPI时序图当使瑞萨单片机使用SPI读数据流程图如图4.12所示。先设置一个8位的变量,将读入的数据一位一位“存入”该变量中,需要注意的是每读取一位数据,变量需要向左位移一位,且每次读数据前SCLK=1,读完后SCLK=0。若读入的数据为1,则将变量的值与0x01作或运算,然后将运算结果赋给变量;若读入的数据为0,则将变量的值与0xFE作与运算,最后将读取的8位数据值返回。图4.12SPI读数据流程图部分代码如下: rxdata=0x00;MISO_IN=MISO; for(i=0;i<8;i++) { rxdata=rxdata<<1;SCLK=1; if(MISO_IN==1){ rxdata|=0x01;} else{rxdata&=~0x01;} SCLK=0; } returnrxdata;当瑞萨单片机使用SPI写数据时,需要先将要输出的数据用变量定义,流程图如图4.13。因为是遵循MSB原则,所以将变量与0x80相与,判断最高位是1还是0使微控制器输出对应的电平值,接着让SCLK变为上升沿,传输该位数据,然后将变量左移一位,SCLK变为下降沿,重复上述步骤一位一位“发送”数据。图4.13SPI写数据流程图部分代码如下: for(i=0;i<8;i++) {if(txdata&0x80) {MOSI=1;} Else{MOSI=0;} SCLK=1;txdata=txdata<<1; SCLK=0; }4.7.3GPIO口的软件设计CC2520射频收发器共有6个GPIO引脚,本次设计中只使用了其中的两个作为微控制器的输入信号—GPIO0和GPIO1。当需要GPIO脚执行特定的功能时,只要将相应的配置值写入对应的寄存器中。由CC2520数据手册可知GPIO0和GPIO1的内存映射分别为0x020和0x021。设置GPIO0与GPIO1的功能时将内存映射与配置值相与,利用SPI写入子程序将其传送至CC2520即可。本次设计中用到的两种功能如表4.3:表4.3对应脚配置值功能GPIO00x2A当输出高电平表示正在传输数GPIO10x27当输出高电平表示RXFIFO中有一字节或多字节数据本文中GPIO用来判断是否接收数据或者信息发送完成的标志。当瑞萨单片机向CC2520命令发送一个数据包时,先将该数据利用SPI写操作写入CC2520的TXFIFO(发送保持器)中,然后用指令先关闭RX和TX,后打开TX,判断GPIO0是否为1,即判断数据是否传送完毕。对应流程图如图4.14(a)。当CC2520要接收一个来自其他节点的数据包时,首先需要设置接收模式,然后接收并判断RXFIFO中是否已经有数据且数据已经传输完毕,若有数据且数据已经传输完毕,再用SPI读操作将数据赋给CC2520协议定义的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026三年级数学下册 小数思维拓展训练
- 硬质合金及刀具系列三:飙升的钨价将推动刀具材料向何方演进
- 传染病报告培训制度
- 会员管理制度
- 企业案经日制度
- 产品采收或销售记录制度
- 艺培学校招生奖惩制度
- 园林质量奖惩制度范本
- 药店财务奖惩制度范本
- 产品价格管理奖惩制度
- 劳动课行李箱收纳课件
- 2025至2030年中国高端餐饮行业市场全景调研及投资规划建议报告
- 口腔颌面外科典型病例分析
- 公物仓管理办法
- 外墙风管施工方案(3篇)
- 中考英语1600词汇(背诵版)
- 大数据赋能企业财务分析的效率提升路径
- TD/T 1033-2012高标准基本农田建设标准
- 阳光房安装施工合同协议
- 浙商银行不良资产管理办法
- DB34-T 4521-2023 国资国企在线监管信息系统数据交换规范
评论
0/150
提交评论