




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zigbee无线传感网技术与应用城市交通照明灯系统01学习目标01了解城市交通照明灯系统应用03了解什么是无线传感网05掌握SmartRF工具安装与使用06掌握如何建立一个简单的ZigBee工程方法04掌握ZigBeeIAR开发环境安装与基本使用02了解什么是ZigBee任务一:工欲善其事,必先利其器任务要求要求读者在Windows系统电脑中安装“IAREmbeddedWorkbench”ZigBee软件开发平台,同时安装SmartRFZigBee程序下载工具。使用SmartRF工具下载城市交通照明系统程序至CC2530开发板中,分别下载一个协调器、两个节点板程序,查看设备与上位机软件效果。任务目标01了解城市交通照明灯了解什么是ZigBee了解什么是无线传感网了解开发平台与程序下载工具了解各种ZigBee下载器02030405储备知识路灯作为城市照明中必不可少的公共基础设施,与人们的日常生活和城市交通安全有着密不可分的联系,路灯控制和管理水平的高低则是检验一个城市现代文明的标志。传统的路灯开/关和巡检方式已逐渐显露出弊端,不但电能利用率低,且增添了不少人工巡检和维护的麻烦,造成了能源和人力资源的过度浪费。针对目前大多数城市对路灯照明控制和管理水平的不足,在日益发展的无线通信技术趋势下,设计了一套路灯无线监控系统。1.城市交通照明灯
试想着有一天,你坐在办公室或教室中,你家里的空调、冰箱、洗衣机、电视等在你手机屏幕前受你掌控时,这便是物联网的时代。作为一名物联网专业的学生或相关初学者感觉ZigBee是个很神秘东西,神秘的无线模块。其实ZigBee芯片上是集成了增强型8051单片机内核,我们直接烧写程序进去就可以使用。2.这就是ZigBee有人问:什么是ZigBee?我回答:储备知识教材采用的ZigBee模块使用TI公司CC2530系列单片机作为单片机主芯片,CC2530开发板均包含程序下载接口与5V电源接口。在后续任务中我们下载程序时需将这两个接口进行对应的连接。2.这就是ZigBee储备知识无线传感网中的传感器通过无线方式通信,因此网络设置十分灵活,网络设备位置可以随时改变,还可以连接互联网进行有线或无线方式的连接。通过无线通信方式形成的一个自组织的网络。3.到处都是WSN储备知识嵌入式系统传感器无线传感网(WSN)全称为:无线传感器网络(WirelessSensorNetworks,WSN)是一种分布式传感网络,它是可以感知和检查外部世界的传感器。是由大量传感器节点通过无线通信的技术构成的自组织网络。采集传输网络覆盖范围内感知对象的信息感知处理网络近年来,传感技术、无线通信技术与嵌入式计算技术的不断进步,推动了低功耗、多功能传感器的快速发展,使其在微小体积内能够集成信息采集、数据处理和无线通信等多种功能。有这种微型传感器网络的应用成为了在物联网发展中的一个重要组成部分。3.到处都是WSN储备知识无线传感网发展史最早可以追溯至越战时期使用的传统传感器系统。当年美越双方在“胡志明小道”进行的一场血型较量,二十世纪80年代至90年代之间。主要是美军研制的分布式传感网络系统、海军协同交战作战能力系统、远程战场传感器系统等,21世纪至今,也就是911事件之后。1995年,美国交通部提出了“国家智能交通系统项目规划”,预计到2025年全面投入使用。在美国旧金山,200个联网传感器已经部署到金门大桥,这些传感器用于确定大桥从一边到另一边的摆动距离。3.到处都是WSN储备知识我国与发达国家在现代意义上的无线传感网研究及应用方面几乎同步启动,它已经成为我国信息领域位居世界前列的少数方向之一。在2006年我国发布的《国家中长期科学与技术发展规划纲要》中,为信息技术确定了三个前沿方向,其中有两项就与传感器网络直接相关,这就是智能感知和自组网技术。无线传感网络是继计算机和互联网之后世界信息产业第三次浪潮,已经成为新一轮全球经济和科技发展战略焦点。无线传感网从简单传输网络到传输传感器网络再到无线传感网络。3.到处都是WSN储备知识网络与通信集成在节点板中计算能力集成的芯片设备中基于控制板的点对点传感器网络无线传感网络智能传感器网络简单传输网络3.到处都是WSN储备知识无线传感网络的体系特征有基础设施的网络,需要固定的基站。比较常见如生活中的手机、有线电视都需要大功率基站和天线信号来支持无线自组网的特点是:网络节点是分布的,没有专门的固定基站,能够快速,灵活和方便的自动断网。无基础设施的网络,又称无线自组基网。3.到处都是WSN储备知识ZigBee无线传感网典型应用1.智能家居在基于ZigBee技术的智能家居应用中,每个ZigBee节点模块都嵌入到智能家居控制系统的传感器设备中,ZigBee协调器与家用路由网关结合,将ZigBee节点通过协调器网关连接到云服务器,用户可通过手机或平板电脑进行远程监控与控制。国内常见的智能家居品牌有小米、欧瑞博(ORVIBO)、极联、欧普照明等,这些智能家居家具的品牌设备均有包含使用Zigbee模块的设备。3.到处都是WSN储备知识2.农业大棚控制基于ZigBee的智能农业大棚控制系统,每个大棚可当成一个分支网络(由一个ZigBee路由器和多个ZigBee终端)。ZigBee终端负责定时采集大棚内的状态(比如温湿度等信息)根据相关状态按照预设定的要求加温和加湿处理,并上传到ZigBee路由器,再由路由器上传至ZigBee协调器总控端,进行统一监控和管理。
思考:请举例说明哪些场景适合使用无线传感网技术,并加以说明?IAR公司总部在北欧的瑞典,在美国、日本、英国、德国、比利时、巴西和中国设有分公司。它最著名的产品是C编译器-IAREmbeddedWorkbench,支持众多知名半导体公司的微处理器。许多全球著名的公司都在使用IARSYSTEMS提供的开发工具,用以开发他们的前沿产品,从消费电子、工业控制、汽车应用、医疗、航空航天到手机应用系统。4.开发必备工具-IAR储备知识IAREmbeddedWorkbench是瑞典IARSystems公司为微处理器开发的一个集成开发环境(下面简称IAREW),支持ZigBee、ARM、AVR、MSP430等芯片内核平台。5.动手安装软件任务实施该任务针对windows系统的电脑,软件安装包位于“1.项目一城市交通照明灯\配置资料\IAR820”目录下。环境准备安装软件步骤1:双击打开“1.项目一城市交通照明灯\配置资料\软件\IAR820”目录“EW8051-8202-Autorun.exe”安装包。5.动手安装软件任务实施步骤2:弹出IAR安装程序窗体选择“InstallIAREmbeddedWorkbench”。图:安装IAREmbeddedWorkbench窗体5.动手安装软件任务实施步骤3:在弹出的新窗体中选择“Next”按钮->点击“Iacceptthetermsofthelicenseagreement”同意协议->点击“Next”按钮。图1:下一步安装图2:同意协议5.动手安装软件任务实施步骤4:在弹出的新窗体选择“Complete”->选择“Next”->点击“Change”选择安装路径“C:\ProgramFiles(x86)\IARSystems\EmbeddedWorkbench6.4_2”->点击“Next”->点击“Install”。图1:典型安装图2:选择安装目录5.动手安装软件任务实施步骤5:等待几分钟软件安装完成,如提示警告界面选择否,选择“finash”完成软件安装。图:安装USB驱动5.动手安装软件任务实施步骤6:在完成软件安装后,在桌面如未生成快捷方式,读者可在计算机“开始”菜单->“IARSystems”目录下->找到“IAREmbeddedWordbench”。图:开始菜单5.动手安装软件任务实施步骤7:运行“IAREmbeddedWorkbench”软件,软件初始化画面。图:IAR运行画面6.程序传输-下载器储备知识程序仿真下载器对于ZigBee单片机程序,编写程序后需要将hex格式文件下载到ZigBee单片机中,程序才能够执行,才能实现相应的功能。单片机程序的下载方式有多种多样,本书使用SmartRF04EB设备CC系列无线芯片调试工具。图:ZigBee下载器6.程序传输-下载器储备知识可以用于CC11xx、CC24xx、CC25xx等多个系列,支持常用多种调试手段如下载、仿真、调试、断点、单步、全速、擦除、读取、加密等,支持协议分析可以与IARforMCS-51编译器进行无缝连接,如IAR730B、IAR751、IAR760、IAR810,支持如下工具软件:SmartRFStudio、SmartRFFlashProgrammer、IEEEAddressProgrammer、PacketSniffer。本书使用SmartRFFlashProgrammer作为下载软件。ZigBee下载器一般有2个接口USB接口与电脑相连下载接口与Zigbee开发板相连7.动手安装软件任务实施环境准备本任务软件安装包与软件程序位于“1.项目一城市交通照明灯\配置资料\Setup_SmartRFProgr_1.11.1”“1.项目一城市交通照明灯\配置资料\程序\城市交通照明灯系统.exe”。安装软件步骤1:双击打开“1.项目一城市交通照明灯\配置资料\软件”目录“Setup_SmartRFProgr_1.11.1”安装包。图:SmartRFProgogr安装包7.动手安装软件任务实施步骤2:出现安装界面后,选择“Next”下一步->如需修改安装路径可选择“Charge”修改安装路径,修改完成后,->选择“Next”下一步。图:安装软件过程7.动手安装软件任务实施步骤3:选择“Complete”完整安装->选择“Next”下一步->点击“Install”,开始安装->安装完成点击“Finish”。图:安装软件过程7.动手安装软件任务实施步骤4:在桌面上找到并打开“SmartRFFlashProgrammer.exe”软件。图:SmartRF软件界面8.下载城市程序任务实施环境准备本任务所需硬件:下载器*1、ZigBee开发板*3、USB转串口线*1、5V电源适配器*1、天线*3。8.下载城市程序任务实施下载程序步骤1:将下载器程序下载接口连接至CC2530开发板中,注意对于接口的正反,缺口的朝向。图:下载接口连接8.下载城市程序任务实施步骤2:将下载器USB口连接至电脑USB口中。图:连接电脑8.下载城市程序任务实施步骤3:连接ZigBee开发板电源,Zigbee开发板电源电压一般为5V,为了安全操作在连接过程中需查看适配器电源的输出电压为5V后再进行连接。图:输入5V电源8.下载城市程序任务实施步骤4:装上ZigBee天线,注意需拧紧。图:安装天线8.下载城市程序任务实施步骤5:查看电脑是否正常安装驱动,点击右键计算机->管理->设备管理器。图:安装天线如发现驱动未识别,则需要将下载器重新上电、重新连接电脑USB口、重新安装“SmartRF”后再试。8.下载城市程序任务实施步骤6:驱动正常,打开“SmartRFFlashProgrammer.exe”,选择芯片型号CCXXX系列。图:选择芯片型号步骤7:查看软件是否识别出CC2530开发板,如图?所示。如未识别则将下载器重新上电再试。图:识别设备8.下载城市程序任务实施步骤8:点击“…”按钮选择下载程序“配套资料\下载程序\协调器.hex”。图:选择下载文件步骤9:选择Actions下载模式,下载常用几种模式:Erase擦除程序、Eraseandprogram擦除并下载程序、Eraseprogramandverify擦除、下载、验证程序,正常选择“Erase,programandverify”即可。图:下载模式8.下载城市程序任务实施步骤10:点击Performactions开始下载程序。图:连接电脑步骤11:重复步骤6-步骤9,选择“节点板”下载程序,下载至其他两块开发板完成下载程序步骤。步骤12:将下载好协调器程序的开发板通过串口连接至电脑串口中,如PC机则直接使用串口进行连接,由于笔记本没有串口故使用USB转串口连接。请同学们体验城市交通照明灯Zigbee无线传感网技术与应用城市交通照明灯系统01学习目标01了解城市交通照明灯系统应用03了解什么是无线传感网05掌握SmartRF工具安装与使用06掌握如何建立一个简单的ZigBee工程方法04掌握ZigBeeIAR开发环境安装与基本使用02了解什么是ZigBee任务二:新的开始,新建工程要求在“IAR”软件中新建一个ZigBee工程,修改对应的配置参数使软件与ZigBee开发板能正常运行程序,同时学会编写最简单的一个ZigBee程序,点亮一个LED灯。了解ZigBee开发板了解LED电路图掌握IAR软件新建工程方法掌握编写程序方法任务要求任务目标01020304cc2530开发板,ZigBee是基于IEEE802.15.4无线标准研制开发的有关组网、安全和应用软件方面的技术标准。1.我们用的开发板其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。ZigBee的技术特性决定它将是无线传感器网络的最好选择,广泛用于物联网,自动控制和监视等诸多领域。以美国TI公司CC2430/CC2530芯片为代表的ZigBeeSOC解决方案在国内高校企业掀起了一股ZigBee技术应用的热潮。储备知识储备知识CC2430/CC2530集成了51单片机内核,相比于众多的ZigBee芯片,CC2430/CC2530颇受青睐。TI开发套件由专业人士精心设计,具有基于2004/2006/2007/PRO协议栈的开发模板、完整的原理图及例程源码。针对CC2430/CC2530芯片的ZigBee开发套件可与IARforMCS-51集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ZigBee产品最好最实用的开发工具。通过USB接口连接电脑,具有代码高速下载,在线调试,断点、单步、变量观察,寄存器观察等功能,实现对CC2430/CC2530系列无线单片机实时在线仿真、调试。1.我们用的开发板储备知识目前比较通用的ZigBee基本是2.4G的,基本是TI的芯片,有CC2520,CC2530和CC2531,其中CC2531有定位功能,CC2530和CC2531用起来都比较方便。1.我们用的开发板图:CC2530芯片封装储备知识1.我们用的开发板教材使用ZigBee开发板中包含有按钮*2,LED灯*4,一个Uart串行接口,外置传感器接口*1,一个复位按钮(按下时程序从走开始执行)。ZigBee开发板模块见右图。Uart串行接口: UART是一种通用串行数据总线,用于异步通信。该总线为双向通信,可以实现全双工传输和接收。串行通信通常被用做单片机与电脑通信的协议,也是最为简单的一种通信协议。知识补充储备知识认知电路图的原理为编写单片机程序最为重要的一个环节,若开发者对电路一无所知则无法针对对应的电路作出正确的开发操作,也无法写出对应的程序,故读者需要其中掌握电路基本原理。对于单片机初学开发者又非电子专业的读者,无需掌握其完整的原理,但需掌握驱动电路所必要的流程。LED驱动电路为最为基本的、最为简单的。其电路原理如右图所示。2.点亮LED必备知识图:LED灯电路原理图储备知识2.点亮LED必备知识如右图所示,芯片的IO所接的LED均为LED正极引脚,LED另一头引脚接了一个1K的限流电阻后接地,驱动LED为正极一端为高电平,另一端为低电平LED灯则亮起。P1.0、P1.1、P1.3、P1.4分别接如D3、D4、D5、D6,故点亮LED操作P1口即可。
本教材所用到的ZigBee开发板共计有______个可编程按钮,______个可编程LED灯,______个可编程串口。图:LED灯电路原理图储备知识ZigBee从不停止,ZigBee或单片机程序都是从一个死循环开始的。在计算程序世界中,以windows为例如果我们学习过windows程序会发现,如果在程序中加入死循环的代码运行程序时会发现计算机的CPU占用率会非常大有时甚至有产生死机的现象,这是因为windows系统不能在同一个时间段做一件事情如果程序在卡在一个死循环中,那么其他如显示屏幕的程序,鼠标移动的程序将无法被正常运行。但是ZigBee或者说是单片机的程序就与其不同,单片机的程序往往都是只做一件事情而且是重复的不断的做这件事情,如果不做这件事情那ZigBee程序死在一个地方无法出来,所以在编写ZigBee程序必须要有死循环。3.ZigBee从不停止4.新建工程任务实施环境准备本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器*1、ZigBee开发板*1、5V电源适配器*1、USB下载线*1。任务实施步骤1:在电脑桌面或开始菜单找到打开“IAREmbeddedWorkbench”编程软件并打开,启动画面。图:启动画面4.新建工程任务实施步骤2:点击Project工程->选择CreateNewProject...新建新的工程。图:新建新的工程4.新建工程任务实施步骤3:选择8050内核->选择EmptyProject空的工程->OK完成->在保存之前先在保存路径下新建一个目录,选择工程路径->填写工程名->保存,此时在新建目录下会产生一个.ewp的文件。图1:空的工程4.新建工程图2:保存工程任务实施步骤4:选择菜单栏File栏目->点击SaveWorkpace弹出保存工程窗体->输入工程名称“project”(名称根据实际工程命名)->点击“保存”按钮此时会产生一个eww后缀扩展名的文件(后续如需继续编辑工程代码可点击eww后缀文件直接打开工程),这样我们就新建一个IAR的工程文件。4.新建工程图:保存工程4.新建工程任务实施配置参数标准的新建工程过程中需要设置很多的参数,由于我们刚刚开始学习故本项目只介绍几个必要的参数,后续再介绍其他的配置参数。步骤1:选择Project工程->Options...选项配置。图:选项配置4.新建工程任务实施步骤2:弹出选项窗体,在Device栏目中点击“...”按钮->选择公司目录中,下拉列表选择“TexasInstruments”目录->选择芯片型号“CC2530F256.i51”。图:选择芯片公司4.新建工程任务实施图:选择芯片型号4.新建工程任务实施步骤3:选择Linker->勾选OverrideDefault。图:选择配置文件4.新建工程任务实施步骤4:点击Debugger->选择TexasInstruments设置仿真模式。图:选择仿真模式自此整个一个简单的工程,就配置完成,接下来我们将开始新建一个C语言文件。4.新建工程任务实施新建文件步骤1:在菜单栏点击File->点击“New”新建->“File”文件,新建一个新的文件。图:新建文件步骤2:在菜单栏点击“File”->“Save”按钮或键盘输入“Ctrl+S”保存文本。图:保存文件4.新建工程任务实施步骤3:弹出窗体->选择刚刚新建的工程目录->输入文件名称为“main.c”注意后缀名称为“.c”表示我们的编写代码的语言为C语言->点击保存。图:保存文件4.新建工程任务实施步骤4:添加文件至工程中,鼠标右键选择工程->在弹出的菜单栏选择“Add”->Add“main.c”(如文件未保存在工程目录下则无法出现本选项则需要点击AddFiles手动选择),添加完成后在工程目录下将多出main.c文件与Output目录。图1:添加文件图2:添加完成至此新建文件过程已完成,我们开始编写实际代码。4.新建工程任务实施编写代码步骤1:由于软件文本编辑器字体太小,所以需要修改代码文字大小,达到比较好的编辑代码环境。在菜单栏选择Tools->Options,弹出窗体选择Font->选择对于字体与字号本教材选择20,读者可根据实际选择自己的字体与字号,点击“OK”->点击“确定”完成设置。图1:选择选项图2:设置字体代码小贴士:#include
表示包含一个头文件"iocc2530.h"
表示为cc2530芯片标准头文件,文件内包含芯片各种IO口与功能寄存器信息4.新建工程任务实施步骤2:在文本编辑器输入代码,包含头文件代码。图:代码输入区域#include"iocc2530.h"4.新建工程任务实施步骤3:输入程序入口函数main。voidmain(){
}
代码小贴士:void表示无返回值类型的函数main()表示程序入口点main函数{…}大括号内表示程序将输入在里面。4.新建工程任务实施步骤4:在main函数中输入死循环单片机基本语句死循环while,完整代码如下:#include"iocc2530.h"voidmain(){
while(1){
}}
代码小贴士:while(1){}代码在单片机程序中虽在计算机代码表示死循环,但是在单片机程序中是必不可少的重要代码,少了该代码单片机的程序指针在运行过程中将跑偏。死循环: 但是ZigBee或者说是单片机的程序就与其不同,单片机的程序往往都是只做一件事情而且是重复的不断的做这件事情,如果不做这件事情那ZigBee程序死在一个地方无法出来,所以在编写ZigBee程序必须要有死循环。知识补充4.新建工程任务实施至此一个最最简单的Zigbee程序雏形已经编写完成,接下来我们将编写功能程序,接下来的程序暂时无需读者理解,先将内容输入到程序中即可。步骤5:在while(1)代码上一行程序输入单片机IO口输入输出方向代码,在while(1)循环中输入点亮灯代码,代码如下:#include"iocc2530.h"voidmain(){P1DIR=0xff;
while(1){P1=0xff;}}4.新建工程任务实施下载程序步骤1:连接下载器与ZigBee开发板电源、USB线号线与下载器接口。图
:下载程序4.新建工程任务实施步骤2:查看设备管理器驱动连接是否正常,驱动正常后点击IAR开发软件“工具栏”“DownloadandDebug”按钮。图
:运行程序步骤3:点击“执行”按钮全速执行程序。图
:执行程序4.新建工程任务实施步骤4:查看开发板效果,全部的LED灯将全部点亮,表示程序已被正确执行。图
:执行效果至此完整执行程序编写与运行过程,读者需要多操作几遍加以熟练掌握,其中过程。Zigbee无线传感网技术与应用城市交通照明灯系统01学习目标01了解城市交通照明灯系统应用03了解什么是无线传感网05掌握SmartRF工具安装与使用06掌握如何建立一个简单的ZigBee工程方法04掌握ZigBeeIAR开发环境安装与基本使用02了解什么是ZigBee任务三:调试点亮智能LED灯要求读者掌握在IAR编写平台,使用调试工具栏调试程序,包含编译程序、断点调试、并最后生成HEX文件,下载至ZigBee开发板中。任务要求任务目标01了解程序执行过程了解调试程序的重要性了解编写程序规范了解什么是HEX文件了解程序运行基本原理02030405在计算机语言中我们必须逐行定义每一个动作,这样计算机才能执行动作,因为计算机只能一步步执行我们定义的动作,如我们制作可乐鸡翅-1将鸡翅洗净,2将鸡翅过油,3捞起放入姜、蒜,4放入鸡翅、盐、生抽、汤、可乐中火慢煮20分钟。计算机程序就如同这样的一个过程,需要有1,2,3,4执行的过程。计算机没有那么聪明我们必须将所有需要执行的每一个小动作都明白地告诉它,这些的动作就是我们的代码。1.可乐鸡翅储备知识什么是软件调试?我们从英文的原词softwaredebug说起。debug是在bug一词前面加上词头de,意思是分离和去除bug。2.虫子产生-Bug1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上(见图),写道:就是这个bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。美国的艾肯博士研制出了马克2号计算机,在研制过程中,诞生了一个新词“debug”来表示排除计算机故障,他的出现是这样的:在盛夏的时候,美国水上研究中心使用马克-Ⅱ计算机进行数据处理时,经常停止工作。储备知识Bug名词的由来其原因是,由于天气炎热加上机房无空调设备,致使大量飞蛾在机房中乱飞,这些飞蛾飞到正要闭合的继电器触点之间被继电器触电夹住,导致电路中断,造成工作故障。只需要将飞蛾找出拿掉,就可以正常工作,因为飞蛾的英文是bug,所以工作人员创出了debug表示排除计算机故障。2.虫子产生-Bug储备知识什么是软件调试图:飞娥的Bug简单来说,软件是程序和文档的集合,程序的核心内容便是按一定顺序排列的一系列指令。如果把每个指令看作一块积木,那么软件开发就是使用这些积木修建一个让CPU(中央处理器)在其中运行的交通系统。这个系统中有很多条不同特征的道路(函数)。储备知识如果说软件的执行过程就像是CPU在无数条道路(指令流)间飞奔,那么开发软件的过程就是设计和构建这个交通网络的过程。其基本目标是要让CPU在这个网络中奔跑时可以完成需求中所定义的功能。对这个网络的其他要求通常还有可靠、灵活、健壮和易于维护,开发者通过简单的改造就能让其他类型的车辆(CPU)在上面行驶……开发一个满足以上要求的软件系统不是一件简单的事。2.虫子产生-Bug测试编码设计分析通过测试并发布后,还需要维护和支持工作。在以上环节中,每一步都可能遇到这样那样的技术难题。储备知识在软件世界中,螺丝刀、万用表等传统的探测工具和修理工具都不再适用了,取而代之的是以调试器为核心的各种软件调试工具。软件调试的基本手段有断点、单步执行、栈回溯等,其初衷就是跟踪和记录CPU执行软件的过程,把动态的瞬间“凝固”下来,以供检查和分析。对于初学者无需学习更高的调试技巧,仅需要掌握最基本的断点、单步执行即可。2.虫子产生-Bug螺丝刀万用表各类软件调试工具3.调试工程环境准备本任务所需软件已安装至电脑可直接使用,所需工程保存在“配套资料\任务三\”目录中。本任务所需硬件:下载器*1、ZigBee开发板*1、5V电源适配器*1、USB下载线。任务实施3.调试工程任务实施编译代码本案例重点学习如何查找代码存在的错误并加以调试,故在案例工程中加入了许多初学者在编辑代码过程中经常错误的问题。步骤1:运行已有工程,找到并运行任务三新建工程文件后缀名为“.eww”的工程文件。图:运行已有工程文件3.调试工程任务实施步骤2:尝试编译工程代码,点击菜单栏->Project工程->Compile编译。图:编译项目3.调试工程任务实施步骤3:当工程文件存在问题时,位于软件下方的Build栏,将弹出错误提示,同时软件的文本编辑区也将提示最近一行代码的错误。图1:Build错误提示3.调试工程任务实施图2:文本编辑区错误提示3.调试工程任务实施步骤4:根据提示debug,错误提示为“cannotopensourcefileiocc52530.h”错误,将其进行翻译表示“为能打开资源文件iocc52530.h”,想想如文件存在为什么无法打开,只能有一个问题那就是输入错误,经观察发现“iocc52530.h”多出一个5,少了c,我们将多出的5删除,补充字母c,再重新编译。再次查看Build区与文本编辑区的提示。图1:Build错误提示3.调试工程任务实施图2:文本编辑区错误提示3.调试工程任务实施步骤5:根据步骤五技巧查看,Build错误提示区提示为“identifier“P1D1R”isundefined”错误,将其进行翻译表示“未能找到P1D1R的定义”,分析错误表示编译器未能再工程内找到对应的定义,P1DIR为iocc2530.h头文件中存在定义的特殊功能寄存器,根据经验,一般情况下如编程人员在肉眼观察下无法辨识代码是否出错则重新输入本行代码,重新输入P1DIR=0xff,重新编译。图:错误提示3.调试工程任务实施步骤6:由上图所示,我们已经将错误排除,本错误在于P1DIR中字母“I”与数字“1”极为相似所引起的文件,故需要读者特别注意输入字母问题,如发现类似的问题无法辨识则重新输入一次。下面我们继续排查错误,由上图可知错误“expecteda“;”,如提示中有‘;’的提示则说明在位于错误的上一行代码存在少了封号的问题,补充P1DIR=0xff;封号即可,重新编译。图:错误提示3.调试工程任务实施步骤7:如上图所示“unrecongnizedtoken”根据提示,翻译表示“无法识别令牌”该提示无针对性,如发现该错误可暂不分析错误,直接查看下一条错误,下一条错误表示“expecteda“)””,如发现本错误提示则重点在提示的符号上,发现提示的符号为括号问题“)”,经观看可发现本行代码的括号比其他行的代码都来的大,在实际代码编辑的过程中,初学者时常将中文括号加入其中,中文符号在代码编译过程中是无法正在编译的,将其改为英文括号,继续编译。图:错误提示3.调试工程任务实施步骤8:如上图所示,英文表示0个错误,0个警告,表示我们已经将程序存在的代码错误已经修复成功,现总结初学者在编辑过程中常见的几处编辑代码过程中存在问题与错误原因。图:常见错误提示与错误原因错误提示样例解决方法cannotopensourcefileiocc52530.h#include"ioc52530.h"找不到头文件,头文件名称输入错误identifier“P1D1R”isundefined1D1R=0xff字母I与数字1类似expecteda“;”P1DIR=0xff缺少封号unrecongnizedtoken“expecteda“)”while(1)中文输入法问题3.调试工程任务实施单步调试法经过上述编译调试,我们将代码修复成功,现我们将代码在仿真器中运行,发现程序无任何效果,灯未被正常点亮(先排除硬件问题),此时对于初学者如通过观看代码来排除错误将十分困难,故我们需要使用软件调试技巧来调试软件,使我们事半功倍。步骤1:点击运行按钮运行程序,不要点击全速执行按钮,发现程序会发现指针指向程序最开始的位置。(图中的绿色箭头为程序指针,指向哪则表示程序执行到哪)。图:程序指针3.调试工程任务实施步骤2:点击,调试工具栏箭头向下“单步调试”按钮。图:单步按钮3.调试工程任务实施步骤3:点击后,发现程序指针指向下一行,表示我们程序执行过“P1DIR=0xff”这行。图:单步调试3.调试工程任务实施步骤4:为了更好得观察P1DIR是否被正常赋值为0xff的数值,我们也可打开Watch观察窗体查看当前P1DIR具体的数值。过程为鼠标右键选中P1DIR->选择AddWatch->在窗体右方将弹出观察窗体。图1:观察变量图2:观察窗体3.调试工程任务实施步骤5:在观察窗体中可查看当前变量的具体数值,其中Value表示数值,Location为变量的地址,Type为变量的类型,当前变量的数值为'与我们的预计的结果不同,那是因为软件中表示为字符方式,我们需要将其修改为hex显示(十六进制显示),步骤为->鼠标右击选中变量P1DIR->选择HexadecimalFormat。发现数值已正常显示为0xff。图1:切换显示模式图2:显示数值3.调试工程任务实施步骤6:在观察窗体观察变量赋值情况可见,我们的第一行代码被正确执行与我们要的结果相同,我们继续使用单步按钮查看下一条代码的结果,程序执行到P1=0x00,继续执行这条代码发现灯全部熄灭了,分析可知代码P1=0x00正是控制灯亮灭的代码,在电路中0表示灭1表示亮,找到问题代码,于是我们点击“停止”按钮终止调试。图:终止按钮3.调试工程任务实施步骤7:将代码修改成P1=0xff(二进制11111111)表示全亮LED灯,点击下载运行程序按钮。这次我们直接全速执行按钮可见灯全亮了。总结:在软件调试过程中单步调试是验证代码是否按照程序员正常执行最为有效的一种方式,故需要读者多加练习掌握。断点调试法在读者掌握单步调试的基础上,在代码比较多的情况下使用单步调试将十分耗时并没有效率,读者则可以使用断点调试法调试程序,其原理就是全速执行在断点之前的全部代码,在打断点的地方停止执行,从而让读者观察代码的执行过程是否符合要求。具体步骤如下:3.调试工程任务实施步骤1:点击运行按钮运行程序,不要点击全速执行按钮,在需要设置断点的代码处->鼠标左键点击->将出现红色的点表示断点。图:断点调试3.调试工程任务实施步骤2:此时我们点击“全速”按钮,发现程序指针,跳到了我们设置的断点的位置表示程序已经全速执行了上述的代码,停在了我们需要观察代码的位置方便读者观察是否符合要求。图:断点处步骤3:此时读者即可使用单步调试法观察程序是否正常运行。总结:断点调试法配合单步调试法可方便开发者能快速的查看到问题所在代码,十分方便,是调试软件人员必不可少的技能。在今后的学习中将大量用到该方法,需要读者重点掌握。4.生成输出HEX文件任务实施在开发人员开发代码完成后,会遇到类似的场景,设备需要大量的下载工作可能是上万个设备,此时需要将程序给大量下载工作人员完成工作,但开发人员又不能将源代码给工作人员,此时就需要将代码生成为hex文件给工作人员下载使用,也就是说hex文件生成也是代码加密的一种过程。图:Option选项步骤1:开发option选择,鼠标右键工程->选择Option选项。3.生成输出HEX文件任务实施图:生成HEX文件配置步骤2:在弹出的Option窗体中选择Linker->OutPut->勾选Overridedefault->修改文件后缀为hex->选择Other->OK保存。4.生成输出HEX文件任务实施图:编译代码步骤3:点击Project->RebuildAll按钮,重新全部编译代码。4.生成输出HEX文件任务实施图:生成HEX文件步骤4:在工程目录->“工程\任务三\Debug\Exe”目录中可找到生成好的HEX文件“点亮LED.hex”。步骤5:复制文件至桌面,使用SmartRF软件测试下载结果。至此HEX文件已生成完成。思考练习:将本任务提供包含错误内容的工程通过编译调试修改成可用的工程,工程文件位于“配套资料\项目一\任务三\思考练习”目录下。Zigbee无线传感网技术与应用空调排气系统0201了解I/O的概念03掌握查看芯片资料方法05了解与、或、非的作用06掌握如何驱动排气扇04掌握使用万用表测量输出电压02了解什么是数字信号学习目标Learningobjectives任务一:测试输出信号任务要求要求读者查看芯片资料在ZigBee开发板上将对应的I/O口设置成输出,驱动对应的I/O口,输出高电平与低电平的电压。查看芯片资料与电路原理图,找到对应I/O口测量位置,使用万用表直流电压档测量I/O口输出电压变化情况。任务目标Missionobjectives01了解什么是数字信号03了解什么是I/O05掌握设置I/O口为输出模式方法06掌握使用万用表测量信号方法04掌握查看芯片资料方法02掌握常用的进制转换方法储备知识进入21世纪,在生活中常常听到“数字时代已经到来”这个说法,然而对于什么数字时代一无所知,在了解什么是数字时代之前先了解数字这个概念,这里说的数字并不是传统意义上的阿拉伯数字,作者理解数字是“通过简单的数字如0、1数字排列组合成大量的数字序列”这大量数字序列可以表示一个字、表示一张图片、表示一段视频、一步电影甚至一个世界。这就是现在“数字”所赋予的意义。1.数字时代已经到来数字时代就如同一部经典的科幻电影“黑客帝国”中的一幕经典的片段:主角“尼奥”在计算机虚拟世界“母体”中被反派角色用手枪打倒,就在被打倒的同时他突然觉醒了一个能力,就是看穿世界的能力,在他眼里整个世界就是一系列的数字阵列组合而成。储备知识他所见到的反派角色也成为了一大堆的数字阵列,他在其中就拥有的超能力无所不能。数字阵列如下图所示:1.数字时代已经到来虽然电影有许多虚假的成分,但是这些的片段的灵感与技术都源于生活当中,近期十分火爆的VR技术不就是跟电影中的设想很相识吗。这就是将来的数字时代,我们生活在一个无处不在的数字当中。作者剪辑了电影部分视频片段有兴趣读者可在配套资料找到相关电影片段。储备知识生活当中实际所看到的图片、视频等信息都是由数字构成的也就是0101afab123e的码构成,就是计算机中的二进制码或十六进制码,构成十六进制码的最小单位就是二进制码,在专业中所描述的数字信号只有两种0与1。在单片机编程中经常使用十六进制Hex与二进制Bin表示数值,这里针对没有基础的读者说明十六进制码与二进制码,如读者已经掌握本知识可跳过本内容。1.数字时代已经到来数字信号 十六进制十六进制即逢十六进一,与我们熟悉的十进制则逢十进一原理类似,这里有个问题1-9可以表示,但10-15则无法表示,所以十六进制则以A、B、C、D、E、F分别表示10、11、12、13、14、15。图:十六进制储备知识二进制即逢二进一,与进位原理与十进制的原理相同,二进制的原理比十六进制来的简单只有两种情况0或1,同时二进制也是构成计算机软件的最基本的元素,也是数字信号中最为基本的元素,上述的十六进制也是由二进制0或1组成。在微观计算机软件世界中二进制是构成计算机软件所有代码元素即机器语言。1.数字时代已经到来二进制二进制十分神奇,即0、1可以表示为有或没有、黑与白、阴与阳、是与非等,这与中国古代太极惊人相识。太极即是阐明宇宙从无极而太极,以至万物化生的过程。其中的太极即为天地未开、混沌未分阴阳之前的状态。易经系辞:“是故易有太极,是生两仪”。两仪即为太极的阴、阳二仪。储备知识二进制的明人是德国思想家莱布尼茨(1646-1716年),他大约在20岁时就已经知道了最初由欧洲来华传教士所介绍的中国《易经》。后来他虽然率先明出二进制,但由于没有找到对其可靠性及意义的有力支持,因此迟迟没有表其论文,直到1697年他与法国传教士白晋相识、随后通信交流对《易经》的看法之后,才使他看到古老《易经》的六十四卦和二进制的数码相对应,给予他极大的启和鼓舞,并于1705年把论文表出来,题为《关于仅用0和1两个符号的二进制算术的说明,并以此解释古代中国伏羲图的探讨》。1.数字时代已经到来图:太极图与二进制储备知识在单片机编程中较为常用的进制转换为二进制转十六进制的计算,所以以二进制转十六进制为主介绍进制转换,介绍最为简单并且快速的计算方法,要求读者掌握其中计算方法后在5秒内得到转换的结果。首先观察右图所示的二进制码与转换结果。计算十六进制步骤分3步走,接下来跟着步骤开始学习吧。1.数字时代已经到来十六进制转换二进制储备知识1.数字时代已经到来步骤1:拆分,将二进制以4位进行拆分,分为0011、1100两个二进制。图:拆分法步骤2:累加,记住一个公式8、4、2、1,分别对应到所在1的位置,并进行累加求和,为0的位置不作为累加。图:累加法储备知识1.数字时代已经到来步骤3:换字母,在得到对应的数字后将10以后的数据转换为字母,10-A、11-B、12-C、13-D、14-E、15-F。图:转换法储备知识1.数字时代已经到来00001111:_____00110101:_____10110001:_____10001111:_____10110011:_____10110001:_____11001111:_____00010011:_____11110011:_____10000111:_____00110011:_____11111111:_____
11001111:_____01010011:_____11110011:_____11000111:_____10110111:_____11111011:_____思考:通过学习转换进制的三步走,接下来思考几道进制转换的练习题并以在2分钟时间内计算中所有结果。储备知识在学习完十六进制转二进制之后,相信读者已经对于其中的转换有了基本的了解,接下来开始学习二进制转十六进制的方法。同样分3步走,同样要求在5秒钟得到最后结果,步骤如下所示。1.数字时代已经到来二进制转十六进制步骤1:拆分,将十六进制以一位为单位进行拆分。图:拆分法储备知识1.数字时代已经到来步骤2:转换,将字母F转换为数字。图:转换法储备知识1.数字时代已经到来步骤2:减法,将拆分的结果分别减去8、4、2、1,结果不为0或负数则该位为1,为0介绍后续的减法,直到无法减到0为止。图:计算数值储备知识1.数字时代已经到来ee:_______fe:_______18:_______21:_______bd:_______12:_______35:_______aa:_______98:_______11:_______81:_______87:_______思考:通过学习转换进制的三步走,接下来思考几道进制转换的练习题并以在2分钟时间内计算中所有结果。储备知识除了口算计算进制转换外,也可以使用windows提供的计算工具计算进制变换,但是作者还是建议读者尽量自行计算。计算步骤如下所示。1.数字时代已经到来系统自带计算器计算步骤1:在系统桌面中按下键盘快捷键“Windows+R”在启动运行窗体,在窗体中输入“calc”回车,或在开始菜单中附件找到计算机启动。建议使用快捷键方式提高工作效率。图:计算机运行储备知识1.数字时代已经到来步骤2:在启动界面中点击“查看”选择模式->程序员型->选择十六进制。图:计算器模式选择储备知识1.数字时代已经到来步骤3:输入计算内容“FE”,然后再次点击“二进制标签”。图:计算结果储备知识I/O,为In、Out的英文简称,其字面意思为输入和输出,再到计算机术语就是信号输入与信号输出,再到电子技术的术语就是电压或电流的输入与输出。Out输出可以将它理解成一跟包含开关的电缆线。当开关打开的时候则通上了电,关闭时则没有电这就是输出。2.这就是I/OIn输入与Out输出储备知识2.这就是I/OIn则表示输入,本身我接收方接收信号,也就是信号从另外的一端发送给自己,有时无法控制什么时候接收到信号,由另一端决定。图:输入表示储备知识为了理解单片机I/O口是处于输入还是输出,这里将项目一LED灯与芯片进行一个简单理解。2.这就是I/O单片机中的I/O口图:电路图在确定输出类型后,数字信号分为两种即0或1,在电子专业的表述是高电平与低电平,通常5V和3.3V电平大致是2V以上表示高电平,0.8V以下是低电平。电平:在数字电路中,分为高电平和低电平,分别用1和0表示。一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0。知识补充储备知识本案例提供的芯片手册,为了更好的用于教学,为官方提供的英文版本翻译而来,(作者又将其做了处理与网络版本相比去除了无用的广告部分),如果读者的英文水平较高也可使用英文版本作为开发手册使用更加贴近开发流程(较为新的芯片正常只有英文资料)。在正规公司的芯片资料中一般都会有目录,可大致浏览目录内容,查看头几页芯片介绍初步了解芯片特性,关键在于了解芯片的ROM、RAM、I/O口、片内频率、外设等信息为后续开发提供思入。在芯片资料中通过软件“搜索”功能搜索关键字,找到设置选项。如需要设置如下图所示,搜索关键字。3.查看芯片资料查看芯片概述(注:资料资料位于“项目二\cc2530芯片手册.pdf”)储备知识通过搜索可以找到一张CC253X方框图,如右图所示。这张方框图即介绍了芯片的所有功能模块与片内内存、时钟等信息,作为开发者需要了解其一些必要信息如:CC253X系列的芯片时钟为32MHz、128/256K的Flash、8K的RAM共有P0、P1、P2二个8位I/O口、一个5位I/O口等信息。3.查看芯片资料储备知识在开始设置I/O之前需要明确我们的任务目的,即找到设置I/O口为输出模式的寄存器,并查看对应“每位”功能加以计算得出赋值数值。3.查看芯片资料芯片I/O设置步骤1:通过上述搜索法,搜索所需的芯片I/O口设置对应资料,先试试搜索“I/O”关键字定位我们资料位置。看到一张表名称为“SFR概览”的表。图:设置I/O关键字储备知识3.查看芯片资料步骤2:SFR表示寄存器在芯片中对应的实际物理地址对应寄存器名称,查看表中对应的描述,查看对应表述中是否有提到端口输出的文字描述,可以看到PxSEL、PxINP、PxDIR(x表示1、2、3)均为设置IO口的设置功能寄存器。图:SFR表储备知识3.查看芯片资料外设功能:表示I/O作为如串口、ADC、PWM输出等其他功能时使用。8位Bit:计算机编程中通常以从0开始表示数据,即0-7表示8位数据。步骤3:搜索对应寄存器更加详细的描述信息,PxSEL如下图所示,可见PxSEL控制的是I/O口是否是作为通用I/O口或者以外设功能使用。设置成0为IO口1位外设口还用。图:设置P0SEL知识补充储备知识3.查看芯片资料步骤4:计算具体数据,假设需要将P0口中P0.0、P0.1作为外设口使用,其他口作为普通I/O口使用,需计算出结果,计算过程如下图所示。根据分析图?,其中7:0表示P0SEL第7位到第0位控制着P0.7-P0.0口的功能选择,故只需要将P0.0,P0.1设置为1其他几位设置成0即可。图:计算结果储备知识3.查看芯片资料(1)将P1.1、P1.4、P1.3设置为外设其他均为通用I/O使用,需修改___P1SEL___寄存器为
1a
数值。(2)将P2.0与P2.6设置为通用I/O口其他均为外设使用,需修改_P2SEL_寄存器为
BE
数值。(3)将P2.2、P2.7设置为外设其他均为通用I/O使用,需修改_________寄存器为__________数值。(4)将P0.2、P0.3设置为外设其他均为通用I/O使用,需修改_________寄存器为__________数值。思考:根据要求填写答案:储备知识3.查看芯片资料步骤5:在理解PxSEL后,继续搜索下一个关键字P0DIR(P0INP为输入的控制本项目重点讲解输出在后续项目会介绍)如下图所示。可见PxDIR,为控制I/O口方向的寄存器,其中7:0表示第7位到第0位。0表示输入,1表示输出。计算方式与刚刚所述的是一致的。储备知识3.查看芯片资料(1)将P2.0、P2.1、P2.6设置为输出其他均为输入,需修改__P2DIR___寄存器为___43___数值。(2)将P1.2与P1.7设置输出其他均为输入,需修改____P1DIR_____寄存器为____84____数值。(3)将P0.1、P0.2设置为输入其他均为输出,需修改_________寄存器为__________数值。(4)将P1.2、P1.3设置为输入其他均为输出,需修改_________寄存器为__________数值。思考:根据要求填写答案:4.编写代码任务实施本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器*1、ZigBee开发板*1、5V电源适配器*1、USB下载线*1。环境准备4.编写代码任务实施步骤1:新建工程->工程名称为“IO输出”->保存->新建语言程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码右图所示。(新建工程具体步骤,不再重复介绍)编写代码#include"iocc2530.h"voidmain(){
while(1){
}}4.编写代码任务实施#include"iocc2530.h"voidmain(){P1SEL=0xe4;P1DIR=0x1b;
while(1){
}}图:LED电路图步骤2:查看LED电路图计算并设置I/O口外设与输出模式,如下图所示,需设置P1.0、P1.1、P1.3、P1.4为输出、并为普通IO口使用,其他暂时作为外设与输入使用,计算结果赋给P1SEL、P1DIR两个寄存器。代码如下所示。1110
0100
0xE4
0001
1011
=
0x1bC语言十六进制表示:在C语言中表示十六进制的数值,使用“0x”表示十六进制数值,如不加则表示10进制数值,标准C语言中没有二进制的表示方式。知识补充步骤3:编写点亮D6、D5两个LED灯代码,即I/O口输出高电平代码P1=0x18,代码如下所示。#include"iocc2530.h"voidmain(){P1SEL=0xe4;P1DIR=0x1d;
while(1){P1=0x18;//输出P1.0、1、3、4高电平P1=0x00;//输出P1.0、1、3、4低电平}}任务实施4.编写代码其中0x18二进制表示为00011000,表示设置P1.4、P1.3IO口输出高电平。计算过程如下图所示。图:计算过程P1寄存器:“P1”寄存器为控制“P1”I/O实际输出高低电平的寄存器知识补充任务实施4.编写代码4.编写代码任务实施步骤4:运行程序,在点亮LED代码P1=0x18的位置设置断点->全速运行至断点代码位置->在程序指针指到代码段时释放断点(即点击红色圆圈)->再点击单步按钮执行该代码。图1:断点位置图2:取消断点4.编写代码任务实施步骤5:使用万用表测量->将量程设置为直流电压大于5V的档位上,测量P1.4电压值,由于芯片封装的限制无法直接测量芯片引脚的电压,故只能测量I/O连接器件的电压,分析电路可知D6+与GND,测量点位与万用表读数。图:测量点、万用表读数3.查看芯片资料寻找GND:方式一:通过分析电路图确定GND的位置方式二:一般情况下,为了防止干扰电路设计人员会将电子器件的外壳与GND连接,如下图所示:知识补充任务实施4.编写代码任务实施步骤6:单步调试执行下一条代码即P1=0x00,使用万用表测量电压,发现电压已经变为0.02V,证明程序执行成功,把电压设置成了低电平。单步调试加万用表测示可直观准确定位出程序所执行后的结果是否正确(根据寻找GND方式二测量电压)。图:方式二GND、万用表读数4.编写代码任务实施步骤7:全速执行代码,再次测量电压,发现电压只剩下0.79V同时灯的亮度也暗了。图:亮度与万用表读数4.编写代码任务实施分析程序,只有两条代码被不断执行:一是让I/O口输出高电平;二是让I/O口输出低电平,这时需要分析芯片执行一条指令的速度,CC2530芯片的默认时钟为32MHZ也就是一条指令理论上为0.032us,速度非常快,通俗说程序实际是执行高低电平不断变化,当由于速度非常快,万用表无法捕获速度的变化,人的肉眼自然也无法捕获故出现这种现象,这种现象叫PWM输出,会经常用在程序开发中。但如果需要实现亮一会再灭一会的效果时怎么办?故需要我们进一步学习任务二的内容。这是为什么呢4.编写代码任务实施一、编写程序,新建一个新的工程,完成如下操作:1、设置I/O口P1.0,P1.1,P1.2为普通I/O口使用;2、设置I/O口P1.0,P1.1 为输出口,其余为输入;3、在死循环程序中让P1.0、P1.1输出高电平与低电平两条代码。二、执行“配套资料\任务一\习题一\配套代码”全速执行,使用万用表测量出D3、D4、D5、D6LED灯的电压值,并填入下表中。D3:_______VD4:_______VD5:_______VD6:_______V思考练习:Zigbee无线传感网技术与应用空调排气系统0201了解I/O的概念03掌握查看芯片资料方法05了解与、或、非的作用06掌握如何驱动排气扇04掌握使用万用表测量输出电压02了解什么是数字信号学习目标Learningobjectives任务二:变化的I/O口任务要求要求读者掌握程序中与、或、非逻辑语法的用法,掌握单片机程序中延迟程序的写法,使用延迟程序修改任务一程序让LED效果慢下来,并使用万用表测量电压。01了解与、或、非逻辑语法的作用03了解延迟在单片机的作用05掌握编写闪烁LED方法04掌握编写延时子程序02了解逻辑语法在单片机的作用任务目标Missionobjectives储备知识逻辑运算符,共有三种常用的计算方式与、或、非,在单片机程序设计中起着十分关键的作用,这先与、或、非计算方式做一个介绍。单片机中的逻辑计算数字都是1或0进行。1.逻辑运算“与”计算“与”计算在C语言中以“&”符号来表示,注意这里为一个的“&”,两个表示对位操作,一个表示对字节的计算。“与”计算英文表示为and,在字面上的理解为and即和,如“我要一个杯子和一块布”字面上意思是说杯子和布我都要,其计算的方式与乘法类似。如右图:图:类似乘法的计算用一个口决表示即:“有0出0,全1出1”。与运算中只要一个有0的存在那么它的结果就为0。储备知识1.逻辑运算“或”计算“或”计算在C语言中以“|”符号来表示,注意这里为一个的“|”,两个表示对位操作,一个表示对字节的计算。“或”计算英文表示为or,在字面上的理解即或者,如“我要一杯酒或者一盏茶”,字面上的意思说我要酒或者茶,其计算方式类似加法计算。如右图:图:类似加法的计算用一个口决表示即:有1出1,全0出0”。或运算中只要一个有1的存在,那么她的结果就是1。储备知识1.逻辑运算“非”计算“非”计算在C语言中以“~”符号来表示,注意与“!”不同,“~”为对字节进行非运算。“非”计算即取反,如果数据为0那么非则为1,1非则为0。如下图:图:取反计算储备知识2.逻辑运算作用“或”计算逻辑运算符在单片机中一个最为重要作用就是对位的计算。如果需要实现将P1.0置成输出模式,然后在不改变原先的状态的情况下再将P1.5设置成输出,在不改变原先的状态的情况下再将P1.7设置成输出,下面列举一行代码,代码如下所示。P1DIR=0x01;//将P1口的P1.0设置为输出P1DIR=0x41;//将P1口的P1.5设置为输出P1DIR=0xC1;//将P1口的P1.7设置为输出储备知识2.逻辑运算作用P1DIR|=0x01;//将P1口的P1.0设置为输出P1DIR|=0x40;//将P1口的P1.5设置为输出P1DIR|=0x80;//将P1口的P1.7设置为输出这里提到有个前提是不影响原先状态的情况下,改变对操作每个位,此时则需要对先前的位进行保留重新计算新的位,大大增加了计算的量,如果这时使用逻辑运算符就可以减轻计算量,同时又可以使得I/O口的位操作变的十分方便,代码如下所示。代码如上所示,其中“|=”表示P1DIR或计算0x01数值。利用或计算的特点,在或计算中如果数据或上0则保留下原先的数据,或上1则强制变为1,如右图所示。图:或计算储备知识2.逻辑运算作用“与”计算在理解完“或”计算之后同样对“与”计算在单片机中的作用进行说明,实际“与”计算则作为或计算相反在使用。同样如果将P1DIR设置成先前的P1.0设置成输入,P1.5设置成输入,那么如果不考虑先前数据的情况下,可以使用“与”计算来进行操作。代码如下所示。P1DIR&=~0x01;//将P1口的P1.0设置为输入P1DIR&=~0x40;//将P1口的P1.5设置为输入P1DIR&=~0x80;//将P1口的P1.7设置为输入储备知识2.逻辑运算作用代码如上所示这里使用到了一个“非”的取反符号,让程序写起来更加容易,0x01取反的到一个0xfe的数据二进制即为11111110,根据与计算的原则任何数与上1得到的为其本身,与上0则强制清0,如下图所示。图:与计算储备知识在任务一中,是否遇到一个问题即程序上写了LED亮与灭的代码,但是全速运行的过程中并未出现同样的亮与灭效果,这是因为程序执行的速度很快,因为太快了所以看不出原先的亮灭的变化,这时希望它的执行速度可以慢下来,但是无法通过修改特殊寄存器的方式让程序慢下来,所以需要使用延迟程序来实现该功能。延迟顾名思义让程序先等一会在执行,延迟的思想在于如何等一会,在这一会的时间我们需要干些什么事情呢?答案就是做没有用的代码,如循环。代码如下所示。3.延迟妙用unsigned
inti=10000;while(i--);储备知识分析刚刚的代码,首先定义了一个整型的变量i,让i赋值10000,再让i一直减1直到i为0时退出循环,在这过程中在这个代码段循环了10000次,如果芯片的一条指令的速度为0.032us,则乘上10000得到320us的时间,也就是得到了停留时间。但是320us并不能达到需求。需要更大的延迟时间来满足要求,但是unsignedint最大值仅仅为65525,也就是最大延迟时间为65535*0.032=2097us时间。故我们需要再加一个嵌套循环来满足需求,代码如下所示。3.延迟妙用unsigned
inti1=100,i2=100;while(--i1){
while(--i2);i2=100;}储备知识3.延迟妙用unsignedint类型: 无符号整型,数值范围0–65535unsignedchar类型: 无符号字符型,数值范围0–255int类型: 整型,数值范围-32767–32768char类型: 字符型,数值范围-128-127知识补充储备知识分析刚刚的代码,代码中使用了两个循环,循环时间为100*100=10000,使用双重循环嵌套即可满足延迟需求,再将其写成一个函数形式方便调用,代码如下所示。3.延迟妙用voiddelay(unsigned
inti1){
unsigned
inti2;
while(--i1){i2=1000;
while(--i2);
}}将代码写成函数,方便调用,把i1变成调用函数的参数,即可自由控制延迟的时间。4.开始闪烁任务实施本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器*1、ZigBee开发板*1、5V电源适配器*1、USB下载线*1。环境准备4.开始闪烁任务实施步骤1:新建工程->工程名称为“闪烁”->保存->新建语言程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)编写程序#include"iocc2530.h"voidmain(){
while(1){
}}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省八所重点中学2025届高考仿真模拟化学试卷含解析
- 2025届济南市重点中学高考化学倒计时模拟卷含解析
- 2025年测试与计量设备项目合作计划书
- 河北省邯郸市2024-2025学年高二下学期第一次联考生物试题(含答案)
- 出血多的护理诊断及措施
- 2025年整熨洗涤设备:洗衣房设备项目合作计划书
- 保险理财讲课课件
- 护士礼仪规范2025
- 江苏省常州市戚墅堰高级中学2025年高考仿真卷化学试卷含解析
- 2025届深圳高级中学高三第二次诊断性检测化学试卷含解析
- 【百强校】【黑吉辽卷】黑龙江省哈尔滨市第三中学2025年高三学年第一次模拟考试(哈三中一模)化学试卷
- 2024高职单招考试(语文)试题(附答案)人人文库
- 物管物业交接验收明细表格(全)模板
- 20S515 钢筋混凝土及砖砌排水检查井
- AQ 1020-2006 煤矿井下粉尘综合防治技术规范(正式版)
- 建筑地基基础检测规范DBJ-T 15-60-2019
- 二级公立医院绩效考核三级手术目录(2020版)
- 110KV升压站工程检验试验计划
- (新版)药品检验基本知识和药品质量标准考试题库(含答案)
- 项目研究助力区域教学改进
- 初中化学优质课评分表.
评论
0/150
提交评论