您好,欢迎访问三七文档
中南林业科技大学课程设计实验报告专业班级:2013级计算机科学与技术2班授课教师:张艳学生姓名:陆焕丽学生学号:20134636201346362实验一继电器闪烁一.实验目的:学会使用修改程序,使得继电器按要求闪烁。二.内容:修改以下程序,使得继电器的绿灯闪一下,红灯闪五下#includeioCC2530.htypedefunsignedintuint;typedefunsignedcharuchar;//定义控制灯的端口#defineRLEDP1_0//定义LED1为P10口控制#defineYLEDP1_1//定义LED2为P11口控制//函数声明voidDelay(uint);//延时函数voidInitial(void);//初始化P0口/****************************//延时*****************************/voidDelay(uintn){uchari;while(n--){for(i=200;i0;i--);}}/****************************201346363初始化程序*****************************/voidInitial(void){P1DIR|=0x03;//P10、P11定义为输出RLED=1;YLED=1;//LED灭}/***************************//主函数***************************/voidmain(void){Initial();//调用初始化函数RLED=0;//LED1YLED=0;//LED2while(1){RLED=0;YLED=1;Delay(1000);RLED=1;YLED=0;Delay(1000);}201346364}三.实验记录:修改好的程序如下:#includeioCC2530.htypedefunsignedintuint;typedefunsignedcharuchar;//定义控制灯的端口#defineRLEDP1_0//定义LED1为P10口控制#defineYLEDP1_1//定义LED2为P11口控制//函数声明voidDelay(uint);//延时函数voidInitial(void);//初始化P0口/****************************//延时*****************************/voidDelay(uintn){uchari;while(n--){for(i=200;i0;i--);}}/****************************初始化程序201346365*****************************/voidInitial(void){P1DIR|=0x03;//P10、P11定义为输出RLED=1;YLED=1;//LED灭}/***************************//主函数***************************/voidmain(void){uinti;Initial();//调用初始化函数RLED=0;//LED1YLED=0;//LED2while(1){RLED=0;YLED=1;Delay(1000);for(i=0;i5;i++){RLED=0;YLED=0;Delay(1000);201346366RLED=1;YLED=0;Delay(1000);}RLED=0;YLED=0;Delay(1000);}}实验显示结果:继电器的绿灯闪一下,红灯闪五下,一直循环着.整个过程中所有仪器都正常。201346367四.实验心得:通过这次的实验,利用C语言将程序修改,学会使用接口编程,学会使用IAR8.10与CC2530接口编程,重新温习for循环语句,掌握继电器的连接方式及工作原理201346368实验二Zigbee无线传感网开发入门一、实验内容:1、zigbee协议栈使用简介协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;协议栈是协议的具体实现形式,通俗的理解为用代码实现的函数库,以便于开发人员调用。ZigBee的协议分为两部分,IEEE802.15.4定义了物理层和MAC层技术规范,ZigBee联盟定义了网络层、安全层和应用层技术规范,ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。注意:虽然协议是统一的,但是协议的具体实现形式是变化的,即不同厂商提供的协议栈是有区别的,例如:函数名称和参数列表可能有区别,用户在选择协议栈以后,需要学习具体的例子,查看厂商提供的Demo演示程序和说明文档来学习各个函数的使用方式,进而快速的使用协议栈进行应用程序的开发工作。使用ZigBee协议栈进行开发的基本思路可以概括为如下三点:1、用户对于ZigBee无线网络的开发就简化为应用层的c语言程序开发,用户不需要深入研究复杂的ZigBee协议栈;2、ZigBee无线传感器网络中数据采集,只需用户在应用层加入传感器的读取函数即可;3、如果考虑节能,可以根据数据采集周期进行定时,定时时间到就唤醒ZigBee的终端节点,终端节点唤醒后,自动采集传感器数据,然后将数据发送给路由器或者直接发给协调器。既然ZigBee协议栈已经实现了ZigBee协议,那么用户就可以使用协议栈提供的API进行应用程序的开发,在开发过程中完全不必关心ZigBee协议的具体实现细节,只需关心一个核心的问题:应用程序数据从哪里来到哪里去。下面举一个例子,当用户应用程序需要进行数据通信时,需要按照如下步骤实现:201346369(1)调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入;(2)发送设备调用协议栈提供的无线数据发送函数,实现数据的发送;(3)接收设备调用协议栈提供的无线数据接收函数,实现数据的正确接收。因此,使用协议栈进行应用程序开发时,开发者不需要关心协议栈是具体怎么实现的(例如,每个函数是怎么实现的,每条函数代码是什么意思等),只需要知道协议栈提供的函数实现什么样的功能,会调用相应的函数来实现自己的应用需求即可。例如,在TI提供的Zstack协议栈中,数据发送函数定义如下:afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)用户调用该函数即可实现数据的无线发送,当然,在此函数中有8个参数,用户需要将每个参数的含义理解以后,才能达到熟练应用该函数进行无线数据通信的目的。AF_DataRequest()函数中最核心的两个参数:·uint16len-----发送数据的长度;·uint8*buf-----指向存放发送数据的缓冲区的指针。至于调用该函数后,如何初始化硬件进行数据发送等工作,用户不需要关心,ZigBee协议栈已经将所需要的初始化工作初始化好了,这就类似于学习TCP/IP网络编程时,用户只需要调用相应的数据发送、接收函数即可,而不必关心具体的网卡驱动的具体实现细节。2zigbee协议栈安装ZigBee协议栈具有很多版本,不同厂商提供的ZigBee协议栈有一定的区别,本手册选用的是TI推出的ZigBee2007协议栈进行讲解。2013463610ZigBee2007协议栈ZStack-CC2530-2.5.1a要安装以后才能使用,下面讲解安装步骤。../工程源码,双击ZStack-CC2530-2.5.1a.exe即可进行协议栈的安装,默认是安装到c盘。然后在路径C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB下找到GenericApp.eww,打开该工程。打开该工程后,可以看到GenericApp工程文件布局,如图4.1所示。在图中所示的文件布局中,左侧有很多文件夹,如App,HAL,MAC等;这些文件夹对应了ZigBee协议中不同的层,使用ZigBee协议栈进行应用程序的开发,一般只需要修改App目录下的文件即可。3点对点数据传输实验尽管到此为止,读者对ZigBee协议的基本内容都不了解,甚至ZigBee协议是什么也可能存在诸多的疑问与不解,但与其阅读“深奥”的ZigBee协议栈,不如通过一个数据传输实验来对ZigBee协议以及ZigBee协议栈建立一个形象、直观的认识,这将有助于读者对ZigBee协议的理解。数据传输实验的基本功能:两个ZigBee节点进行点对点通信,ZigBee节点2向节点1发送“ChinaSofti”10个字符,同时LED绿灯闪烁两下表示成功发送。ZigBee节点1收到节点2发送过来的数据后,对接收到的数据进行判断,如果收到的数据是“ChinaSofti”,则使开发板上的LED红灯闪烁两下表示成功接收。数据传输实验原理图如图4.2所示。2013463611(1)协调器程序在ZigBee无线传感器网络中有三种设备类型:协调器、路由器和终端节点,设备类型是由ZigBee协议栈不同的编译选项来选择的。协调器负责ZigBee网络的组建,维护,控制终端节点的加入等。路由器主要负责数据包的路由选择,终端节点负责数据的采集,不具备路由功能。在本实验中,ZigBee节点1配置为1个协调器,负责ZigBee网路的组建,ZigBee节点2配置为一个终端节点,上电后加入ZigBee节点1建立的网络,然后发送ChinaSofti给节点1。将GenericApp工程中的GenericApp.c删除,删除方法是:右键单击GenericApp.c,在弹出的下拉菜单中选择Remove即可,如图4.3所示。2013463612单击File,在弹出的下拉菜单中选择New,然后选择File,如图4.4所示。图4.4新建源文件将该文件保存为Coordinator.c,然后以同样的方法建立一个Enddevice.c文件(最佳保存路径:就保存在GenericApp工程中的Source文件夹下,具体路径为C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\Source)。下面讲解向该工程添加源文件的方法:右键单击App,在弹出的下拉菜单中选择Add,然后选择AddFlies,如图4.5所示,选择刚才建立的两个文件Coordinator.c和Enddevice.c即可。2013463613添加完上述文件后,GenericApp工程文件布局如图4.6所示。在Coordinator.c中输入以下代码:#includeOSAL.h#includeAF.h#includeZDApp.h#includeZDObject.h#includeZDProfile.h#includeGenericApp.h#includeDebugTrace.h#if!defined(WIN32)#includeOnBoard.h#endif#includehal_led.h#includehal_key.h#includehal_uart.hconstcId_tGenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS]={2013463614GENERICAPP_CLUSTERID};constSimpleDescriptionFormat_tGenericApp_SimpleDesc={GENERICAPP_ENDPOINT,GENERICAPP_PROFID,GENERICAPP_DEVICEID,GENERICAPP_DEVICE_VERSION,GENERICA
本文标题:物联网实验报告
链接地址:https://www.777doc.com/doc-41249 .html