欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    通信新技术综合训练报告.docx

    • 资源ID:15068410       资源大小:630.11KB        全文页数:67页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    通信新技术综合训练报告.docx

    1、通信新技术综合训练报告JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 通信新技术综合训练报告学院名称: 电气信息工程学院 专 业: 通信工程 班 级: 08通信 姓 名: 学 号: 指导老师: 贾中宁 陶为戈 宋伟 2011年10月附件 ADC及数据采集实验 33实验一 Jennic-WSN开发环境一、实验内容1. 熟悉基于JN5139芯片所设计的WSN开发板及其部件。2. 软件的安装于调试。3熟悉常用API接口函数。二、实验原理1. 基于JN5139芯片所设计的WSN开发板,其部件如下:U1: JN5139系列Zigbee模块; U2: 板载光照度传感器;

    2、 U3: 板载温湿度一体传感器; J3: 外供电(5VDC)接口;Swith: 供电开关; J7: 编程与运行状态选择,左跳并给传感器板加电,则进入可编程状态,或者在加电的情况下,按住RESET按钮,左跳J7,然后放开RESET按钮,再右跳J7,也可进入可编程状态,退出可编程状态,只需要按一下RESET按钮即可; J8: Flash写保护跳选,编程与运行都跳选到RUN(右跳); DB9: RS232编程接口; UART0: 串口0; JP6: 模块所有管脚的引出排线(引脚编号如图1-4所示,功能如表1-1所示); LCD: 液晶接口; Power: 电源指示灯; REST: 复位按键; LED

    3、3,LED2,LED1,LED0:可编程LED,分别对应DIO19、DIO18、DIO17、DIO16; SW3,SW2,SW1,SW0:可编程按键,分别对应DIO20、DIO11、DIO10、DIO9; GND: 地。 2. 软件的安装与调试(1)建立开发环境在光盘中找到software文件夹下的JN-SW-4031-SDK-Toolchain-v1.1.exe文件(或者在Jennic公司网站上获得该文件)并运行。在安装过程中,最简单的方法是按默认设置安装。 (2)编写程序代码并进行下载与调试 编写代码完成后,可按Ctrl+F9快捷键或选择主菜单Build下的Build子菜单或点击图标建立可

    4、执行二进制代码文件。 若工程编译(Build)成功,则可在C:JenniccygwinjennicSDKApplicationtestJN5139_ BuildRelease目录下生成test.bin文件。否则,出错信息会显示在信息窗口中,根据出错信息调试程序。Jennic JN51xx Flash可编程器是用来将编译好的二进制代码文件(*.bin)下载到JN51xx模块中的Flash芯片的代码下载工具,它通过串行总线与JN51xx模块相连。Jennic JN51xx Flash可编程器的用户界面如图1-18所示,它可以将* .bin文件下载到目标板或模块中,下载步骤如下: 用串口线连接PC机

    5、和目标板或模块。运行Flash可编程器,选择PC机与目标板相连的串行通讯端口。 将目标板上的J7跳线至编程(左侧)状态,给目标板上电,按一下RESET按钮后释放,再恢复J7跳线至右侧。 在图1-18所示的Flash可编程界面上点击Browse按钮(图中处)查找并选择要下载的目标文件。 选择好目标文件后,点击Progrm按钮(图中处)开始下载。在下载的过程中会显示一个下载的进度条,如图1-19所示。当下载完成后,将显示下载成功或错误,如图1-20所示下载成功对话框。如果遇到错误,请尝试重新下载。 成功下载后,关掉Flash可编程器再给目标板或模块上电、或按Reset按钮,则刚下载的代码自动运行。

    6、(3)常用API接口函数介绍 应用程序初始化函数如下:AppColdStart( ) 应用程序的入口,相当于标准C中的main函数,结点上电后将从这里开始执行应用程序。该函数需要完成以下功能:1. 通过设置函数中的参数值来设置信道号(JZS_sConfig.u32Channel)和PAN ID(JZS_sConfig.u16PanId); 2. 调用函数JZS_u32InitSystem(TRUE)来初始化ZigBee 协议栈;3. 调用函数vInit( )对用户的应用进程进行初始化,包括初始化按钮动作和程序变量,设定绑定等操作;4. 调用bBosRun(TRUE)来启动操作系统BOS。用户可

    7、根据具体的应用设计该函数。AppWarmStart( ) 结点从内存供电的休眠模式唤醒的时候将进入这个函数。启动后所有的内存数据都没有丢失。如果设备不需要休眠唤醒功能,这个函数可以为空。用户可根据具体的应用设计该函数。一般情况下,该函数会调用AppColdStart( )重新启动设备。应用程序调用协议栈的函数如下:JZS_u32InitSystem( ) 初始化Jennic ZigBee协议栈。JZS_vStartStack ( ) 设备将作为Coordinator、Router或者End Device启动。如果是Coordinator将启动网络,如果是Router或者End Device将加

    8、入网络。JZS_vStartNetwork ( ) 手动控制Coordinate网络启动,相对于自动网络启动,使用该功能,需要设置JZS_sConfig.bAutoJoin=FALSE.该函数执行后,返回的协议栈事件为JZS_EVENT_NWK_STARTED JZS_EVENT_FAILED_TO_START_NETWORK 。vAppSaveContexts ( ) 保存网络参数以及用户的数据,如果你的应用是固定点的话,建议你进行网络参数的保存。u16AppGetContextSize ( ) 用来获取保存的网络参数以及用户数据的尺寸。vAppGetContexts ( ) 读取保存的网络

    9、参数的内容。协议栈调用应用函数的函数如下:JZA_boAppStart( ) 让用户可以在协议栈启动前定义endpoint的descriptor,通常开发人员应该在这个函数中调用JZS_vStartStack启动协议栈。JZA_vStartEvent( ) 协议栈将通过这个函数反馈网络层的一些网络事件,比如网络启动成功、结点加入成功或者数据发送完成等。JZA_vPeripheralEvent( ) 该函数主要用来处理外部的硬件中断,比如按钮、定时器、UART等。JZA_vAppEventHandler( ) BOS周期性地调用该函数处理硬件中断。用户可以利用它进行网络状态的判断和按钮的检查等,

    10、也可以在这个函数中,写入自己的应用程序。在设计该函数时,要尽可能地使其运行时间短,以便BOS调度其他活动事件。JZA_vAppDefineTasks( ) 该函数用于向BOS注册自己的用户任务,一般很少使用该函数。JZA_bAfMsgObject( ) 收到其他结点发送来的MSG帧的处理函数。 实验二 GPIO及LCD使用实验一、实验内容1. 运用基本的GPIO函数设计一个程序,分别通过各按键的切换对应的LED亮灭状态;2. 设计一个程序实现LED灯的逐次自动闪烁;3.设计一个程序,按下按键SW0,LCD显示数据加1;如果按下按键SW1,LCD上显示的数据减一。二、实验原理1. GPIO的使用

    11、 Jennic模块具有21路通用GPIO口,可以通过软件方式进行设置,这些端口与其他外围电路公用一个端口。对于GPIO操作首先要通过VAHI_DioSetDirectoin来进行GPIO引脚的输入输出方向的设置,函数原型如下:2.LED的使用LED的驱动库文件提供了LED的控制方法,开放版中LED驱动电路如下: 对LED的操作,首先要进行LED的初始化。调用LED初始化函数:vLedInitFrd( )对FFD开发板上的四个LED灯进行初始化;在调用LED灯控制函数:vLedControl(LED,ON)控制相应的LED灯亮灭。相应的函数如下: 3.按键开关的使用 按键驱动库提供了按键的控制方

    12、法:在Button.h中宏定义了相应功能的函数.电路图如下对于按键操作,首先要调用初始化函数:vButtonInitFfd()初始化FFD开发板上的四个按键,然后调用函数:u8ButtonReadFfd()读取相应的按键状态相应的函数原型如下: 4.LCD的使用5.BOS定时器的使用为了消除按钮抖动对控制的影响,实验加入了一个人标识变量NextReadStart, 利用BOS定时函数,使500ms后再次设置NextReadStart 为真,通过这种方法可有效地消除按钮抖动的影响。bBosCreateTimer() 函数是一个处理软件定时器的BOS API函数,调用该函数可由BOS创建一个软件定

    13、时器,该定时器需要利用内部硬件滴答定时器(tick timer)来实现。当定时时间到,立即调用由 bBosCreateTimer() 指定的定时处理程序。该函数的原型如下;三、软件设计1. 程序流程图 : 首先初始化函数LED和按键的初始化,建网成功,改变LED熄灭,表示建网成功。再读取是否有按键按下,有点亮相应的灯2. 程序流程图: 程序从冷启动开始,初始化灯状态,建网建成后灯自动闪烁,当(表示方向向左)、改变,当,且.改变;这样依次点亮灯再返回点亮灯,这样闪烁一直下去。3 程序流程图: 接通电源,程序初始化和以及按键的初始化;建网成功后,初始化函数,然后检测按键是否按下,检测到按键按下,使

    14、显示的数据加,调用显示出来,当检测到按下时使显示数据减,调用显示处理后的数据。四、实验结果与分析. 分别按动按键LED0LED3,可以控制相应灯的亮灭状态。 分析:在程序中已经设定按键SW0SW3分别对应于LED0LED3,所以可以按动按键控制相应灯的亮灭。 . 网络建网成功后,LED0LED3周期性的闪烁,周期为1秒。 分析:程序中写入了LED依次加1并点亮,再经过延时程序,所以可以出现周期为1秒的闪烁。按下按键SW0,LCD显示数据加1;按下按键SW1,LCD显示数据减1。分析:按动按键SW0和SW1时分别执行了一个自加1和自减1的函数,再经过LCD显示从而可以得出如上结果。五、存在问题和

    15、解决方法1. 再设计设计性试验2,实现LED灯自动闪烁时,只能实现LED灯的按规定的方向依次点亮。与我理想结果没有结果没有达到,后通过加入一个标志量,控制LED的来去方向,当(表示方向向左)、改变,当,且.改变;这样依次点亮灯再返回点亮灯,这样才实现了跑马灯的效果。其次 在按键的时候,按键出现问题,后来讨论在知道是没有加入去抖动程序导致。2. 在设计LCD程序时,遇到的有LCD的调试问题,开始对LCD的写入字、位图、LCD能写64字符,32个汉字,且汉字必须送入要求的内存中,才可以写出正确的字,或则会出现乱码。实验三 简单点对点无线通信实验一、实验内容1. 分别为Coordinator和End

    16、Device设计一个程序,分别用按键控制切换对方对应LED亮/灭状态。如Coordinator的SW3控制EndDevice的LED3,EndDevice的SW0控制Coordinator的LED0。2. 分别为Coordinator和EndDevice设计一个程序,其功能为:按下Coordinator的SW0,某变量X(初始值0)显示在LCD上,同时将X发送给EndDevice,EndDevice收到该数据后进行数据处理(加1),等待1秒后再将其发送给Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次发送给EndDevice,如此重复运行。二、实验原理

    17、1. 主要分别为Coordinator和EndDevice设计一个程序,因为Coordinator的地址是固定不变的(0x0000),所以EndDevice向Coordinator发数据时,目标地址设置为0x0000。但是当Coordinator向EndDevice发数据时,由于EndDevice地址不知道,因此我们要保存EndDevice地址,但EndDevice 结点加入时,Coordinator会保存 EndDevice 的16位短地址。从此来着直接可以进行通信。2. Coordinator 的BOS周期调用函数当检测按键按下,调用发送函数,将发送协议数据。当EndDevice的 Msg

    18、Object 调用的函数 JZA_bAfMsgObject ( ) ,接受数据处理相应的协议内容,点亮对应的LED灯。相反一样。三、软件设计1. 程序流程图 Coordinator建网,EndDevice结点加入成功后,两者进行通信。按下中断SW0,发送数据0,当协调器接受到0时,点亮LED0灯,其他一样。同样按下Coordinator的按键SW0SW3,可以点亮EndDevice的LED0LED3。2. 程序流程图: 按下Coordinator的SW0,某变量X(初始值30)显示在LCD上,同时将X发送给EndDevice,EndDevice收到该数据后进行数据处理(加1),等待1秒后再将其

    19、发送给Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次发送给EndDevice,如此重复运行。四、实验结果与分析1. 实验现象: 分别按动Coordinator的按键SW0SW3,可以控制EndDevice的LED0LED3的亮灭状态。同样分别按动EndDevice的按键SW0SW3,可以控制Coordinator的LED0LED3的亮灭状态。 分析:Coordinator建网,EndDevice结点加入成功后,两者进行通信。按下中断SW0,发送数据0,当协调器接受到0时,点亮LED0灯,其他一样2. 实验现象:接通电源,可以看到LCD上显示030;让

    20、后,LCD上数据会自动加1。时间间隔1s(左右)。五、存在问题和解决方法1. 第一问题:设计好Coordinator和EndDevice,但接通电源后,结点加到别人的Coordinator,EndDevice控制了其他人的LED灯的亮灭。经老师的告诉,因为大家的信道用了相同的信道,因此结点加到了别人那里。改变信道后,实验圆满成功。2. LCD的实验,主要在于是使用影子内存的处理,在实验时,显示存在问题。30显示为030 程序存在问题。还没有找到解决措施。实验四 两个EndDevice之间的无线通信实验一、实验内容1. 分别为 Coordinator 和 EndDevice 设计一个程序,其功能

    21、为:Coordinator 负责建立网络和分配短地址。按下 EndDevice A 的按钮 SW0发送广播请求绑定信息,收到该信息的 EndDevice B 的 LED0闪烁,按下其按钮 SW0 则返回绑定应答信息,同时 LED0 处于点亮状态,EndDevice A 收到应答后 LED0 也处于点亮状态,表示双方绑定成功。之后按动每个 EndDevice 的按钮SW2、SW3 可分别切换对方对应 LED 亮/灭状态。如果按下任何 EndDevice 的 SW1 则解除绑定,且 LED1 闪烁 3 秒。2. 分别为 Coordinator 和 EndDevice 设计一个程序,其功能为:Coo

    22、rdinator 负责建立网络和分配短地址及绑定的媒介。按动 EndDevice 按钮 SW0,向 Coordinator 发送绑定请求信息,LED0 闪烁 10 秒,Coordinator 收到该信息后记录其短地址并定时 10 秒,按动另外一个EndDevice 的按钮 SW0 向 Coordinator 发送绑定应答信息,LED0 闪烁 5 秒,在有效定时时间 10 秒内若 Coordinator 收到该应答信号,则记录其短地址,分别将记录的两个短地址发送给两个对应 EndDevice,两个 EndDevice 收到短地址后分别点亮 LED0(不再闪烁),若在规定时间内没有建立绑定关系,超

    23、时后灭 LED0。如果按下任何 EndDevice 的 SW1 则解除绑定,且 LED1 闪烁 3 秒。绑定状态下按动每个 EndDevice 的按钮 SW2、SW3 可分别切换对方对应 LED 亮/灭状态。二、实验原理 在基于Jennic ZigBee协议栈中,每个设备必须知道对方的16位短地址,才能进行直接通信,而16位短地址是在EndDevice或Router加入网络时由Coordinator动态分配的。本次我们采用使用在使用afdeDataRequest( )函数发送数据包时,将16位的目标地址设置为0xffff,将数据包以广播包的形式发送出去,按动EndDevice或Router按钮

    24、,调用afdeDataRequest( )函数向Coordinator发送绑定请求信息,Coordinator收到该信息后记录其短地址并定时,按动另外一个结点的按钮使用afdeDataRequest( )函数向Coordinator发送绑定应答信息,在有效定时时间内若Coordinator收到该应答信号,则记录其短地址,分别将记录的两个段地址发送给两个对应结点,两个结点收到短地址后便可以相互直接通信。JZA_vZdpResponse( ) 是 一 个 协 议 栈 调 用 应 用 程 序 的 函 数 , 当 一 个 结 点 通 过zdpNwkAddrReq( )发送查找另一个结点的短地址后,匹配

    25、的结点发送的应答消息可通过请求者 的 协 议 栈 调 用 JZA_vZdpResponse( ) 处 理 三、软件设计1. 程序流程图: 实验一流程图: 将网络成功节点加入成功后,改变灯的状态,发送广播包得形式获取对方地址,让人眼看到入网成功,按下 EndDevice A 的按钮 SW0发送广播请求绑定信息,收到该信息的 EndDevice B 的 LED0闪烁,按下其按钮 SW0 则返回绑定应答信息,同时 LED0 处于点亮状态,EndDevice A 收到应答后 LED0 也处于点亮状态,表示双方绑定成功。如果按下任何 EndDevice 的 SW1 则解除绑定,且 LED1 闪烁 3 秒

    26、。 实验二流程图: EndDevice A向Coordinator发送数据,Coordinator保存EndDevice A的地址;EndDevice B向Coordinator发送数据,Coordinator保存EndDevice B的地址;然后Coordinator分别将EndDevice A地址给EndDevice B,EndDevice B的地址发给EndDevice A,得到对方的地址,两者之间互相通信,可以绑定也可以解除绑定。2. 四、实验结果与分析1. 按下EndDevice A的按钮SW0,LED0闪烁。 EndDevice B的LED0闪烁,按下其按钮SW0则 LED0处于点

    27、亮状态,同时EndDevice A的LED0也处于点亮状态。之后按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。如果按下任何EndDevice的SW1则解除绑定,各EndDevice的LED0灭,且LED1闪烁3秒。2. 按动EndDevice按钮SW0,LED0闪烁10秒,按动另外一个EndDevice的按钮SW0,LED0闪烁5秒,在有效定时时间10秒内,两个EndDevice分别点亮LED0(不再闪烁),之后按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。如果按下任何EndDevice的SW1,则各EndDevice的L

    28、ED0灭,且LED1闪烁3秒。五、存在问题和解决方法1. 开始时不知道广播包怎么发送,后请才考原始程序了解到,两个EndDevice 之间是如何等到对方的地址,开始实现LED的亮灭总是存在问题,后来解决是程序写错。但是解决绑定的时候灯的效果不没有达到设计的效果,时间相差一点。实验五 DIO中断实验一、实验内容1. 分别为 Coordinator 和 EndDevice 设计一个程序,运用 DIO 中断的方式分别用按键控制切换对方对应 LED 亮/灭状态。如 Coordinator 的 SW3 控制 EndDevice 的 LED3,EndDevice 的SW0 控制 Coordinator 的

    29、 LED0 等等。 2. 分别为 Coordinator 和 EndDevice 设计一个程序,运用 DIO 中断的方式分别用 DIO4、DIO5、DIO6、DIO7 切换对方相应 LED 亮/灭状态。如 Coordinator 的 DIO4 控制 EndDevice 的 LED0,EndDevice 的 DIO5 控制 Coordinator 的 LED1 等等。二、实验原理1. 介绍几个常用函数: (1) vAHI_DioSetDirection( )函数 该函数用来设置DIO引脚的方向(输入或输出), (2)vAHI_DioInterruptEdge( )函数 当某个 DIO 作为输入引

    30、脚时,则用该函数设置中断产生时是采用上升沿还是下降沿触发。该函数的原型如下: void vAHI_DIOInterruptEdge ( uint32 u32Rising, uint32 u32Falling ); u32Rising 对应为1表示文上升沿触发中断,其中2131没有用 u32Falling 对应为1 表示下降沿触发中断,其中2131没有用 注:该函数仅将 u32Rising 中为 1 的位对应的引脚设置为上升沿触发中断,u32Falling 中为 的位对应的引脚设置为下降沿触发中断,没有涉及到的引脚保持它原来的状态。如果某一个引脚在 u32Rising 和 u32Falling

    31、中都进行了设置,则默认为上升沿触发。该函数仅对设置为输入的 DIO 引脚有效。如果一个 DIO 引脚已安排给另一个外设且该外设已启用,则该函数对该 DIO 引脚不产生影响。 (3) vAHI_DioInterruptEnable( ) 函数 当某个 DIO 作为输入引脚时,则该函数用来设置接收或屏蔽该引脚发来的中断,及使能/屏蔽中断。该函数的原型如下: void vAHI_DIOInterruptEnable (uint32 u32Enable, uint32 u32Disable); 注:该函数仅使能 u32Enable 中为 1 的位对应的引脚中断,屏蔽 u32Disable 中为 1 的位对应的 引脚中断 ,没有涉 及到的引 脚保持它 原来的状 态。如 果某一个 引脚在 u32Enable 和u32Disable 中都进行


    注意事项

    本文(通信新技术综合训练报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开