传感检测与RFID实验指导书_第1页
传感检测与RFID实验指导书_第2页
传感检测与RFID实验指导书_第3页
传感检测与RFID实验指导书_第4页
传感检测与RFID实验指导书_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 软件安装和工程建立一、实验目的1熟悉IAR For 8051的安装;2掌握开发环境的配置;3掌握工程文件的建立。二、实验任务1IAR For 8051的安装;2根据需要配置开发环境;3工程文件的使用,如建立空工程,选择Device,选择 Code 和 Memory Model,配置linker,配置仿真器和添加文件到工程;三、实验步骤等(一) IAR For 8051安装IAR for 8051 软件时开发 TI Z-Stack 协议栈应用程序的必备软件,所有程序的编译、仿真调试均需使用该软件,当前最新版的 Z-Stack 协议为 ZStack-CC2530-2.5.1a,配套 IAR

2、 版本 V8.101.1 安装文件程序安装包以及破解文件位于开发套件根目录下的 软件工具文件夹下,如下图都解压,在目录内找到安装文件,双击开始安装,如下图:点击第二个选项 Install IAR Embedded Workbench 开始安装,然后点击Next,接受license,再点击next。此时在破解文件目录内找到破解文件,并且双击运行,如果是WIN7系统,请使用管理员权限运行,如下图按照图示步骤,选择好需要破解的IAR 版本,然后获取ID,最后生成注册码,然后回到安装程序,拷贝相应的序列号到需要的地方,然后在点击next,继续安装过程。点击完next后,选择全部安装。安装目录就选择默认

3、的安装目录,最好不要修改,否则在编译程序的过程中有可能出现找不到库文件的错误,如下图。然后一路next,直至安装过程结束。安装结束后,在开始->程序目录中找到IAR FOR 8051,并打开程序打开界面如下1.2 配置开发环境开发环境安装好后,需要对开发环境进行配置,这样能更好的方便开发,具体配置过程如下:打开 Tools - > options选项,在editor配置项中,把Tab Size 与 Indent size均配置为4,如下图然后在该配置项下的colors and Fonts,配置字体大小与显示颜色,如下图:其中语法配色在本环境中配置如下(其中字体配置为Courier

4、New ,Size = 12):名称配色样式C KeywordBlueBoldStringsGreenNormalCharGreenNormalPreprocessorBlueNormalInteger(dec)RedNormalInteger(oct)RedNormalInteger(hex)RedNormalFloatRedNormalC+ commentGreenNormalCommentGreenNormalUser Keyword BlueBoldCompile KeywordBlueBoldAsm KeywordBlueBoldAsm commentGreenNormal所有的配置

5、好后,点击确定保存配置,自此开发环境配置结束,下面开始正式学习CC2530的内容。(二)建立工程在开始实验前首先需要建立一个新的工程,建立过程如下:2.1、建立空工程在Project菜单下点击Creat New Project然后选择建立空工程点击OK后,选择工程建立的目录,例如我们建立了一个名为”1、LED”文件夹,把工程建立在此文件夹下,该文件夹在电脑的位置根据自己习惯定,输入工程名称led,然后保存。2.2、选择Device首先在Workspace工作区内右键点击工程,选择Options,如下图然后选择Device,本开发板中单片机为TI的CC2530F256,选择如下图:然后选择CC2

6、530F256,如下图2.3、选择 Code 和 Memory Model在 code 类型中有 Near 和 Banked 两项可选择“Near”当不需要 Bank 支持是可以选择 Near,例如,你只需要访问 64K flash 空间的时候,不需要更多的 flash 空间,比如你使用的是 CC2530F32 或 CC2530F64,或者使用的 CC2530F256 但并不需要那么大的flash 空间时,可以选择 Near。“Banked”选择该项时标明你需要更多的空间能够仿真 CC253xF128 或者 CC253xF256 的整个 Flash 空间。默认 Near code model

7、中的 data model 是 Small,默认的 Banked,data model 为 Large,data model 决定编译器或者连接器如何使用 8051 的内存来存储变量,选择 small data model,变量典型的存储在 DATA 内存空间,如果使用 Large data model,变量存储在 XDATA 空间。在 CC2530 用户手册和 IAR 8051 编译器参考手册中会详细描述变量内存空间。在这里,重要的事情是,8051 使用不同的指令来访问 various memory spaces 访问 IDATA,一般情况下,比仿真 XDATA 要快,但通常 XDATA 的

8、空间会比 IDATA 大。在 Z-Stack 协议栈中,使用 large memory model 来支持 CC2530F256,这样协议栈可以存储在 XDATA 区域,以上设置结束后,如下图所示。在 Banked code model 中,有一些额外的选项需要注意,选择 Code Bank tab,如下图,CC2530 使用 7 个code banks,为了访问整个 256K 的 Flash 空间,Number of 必须设置为 0x07,Register 0x9F 是 CC2530 的FMAP 寄存器,用来控制当前那个 code bank 映射到 8051 的地址空间,第三个 Regist

9、er 未使用,最好设置0xFF,设置如下图。然后选择使用的库,如下图2.4、配置linker下一步需要配置 IDE 怎样使用 Linker 来链接程序代码。在左边的选项中选择 Linker,并在右边的选项卡中选择 Config 一页,在 Linker Command file 中复选Override default,例如,我们选择 lnk51ew_CC2530F256_banked.xcl, banked 表示使用 banked code model。默认路径为:$TOOLKIT_DIR$configdevicesTexas Instrumentslnk51ew_CC2530F256_bank

10、ed.xcl 2.5、配置仿真器 在Debug选项中选择TI的仿真器,其他都默认配置即可至此工程已经配置完毕,我们可以开始在这个环境中编写我们自己的应用了。2.6、添加文件到工程在工具栏中点击新建文件,此时文件还没有保存,然后在点击工具栏上保存按钮,输入文件名,例如我们新建一个led.c的文件,选择保存在我们的工程目录下,如下图:但此时led.c 文件还一个独立的文件,还没有加入到工程,进行如下操作把该文件加入到工程中去,然后编译文件,虽然本文件还是个空文件,编译是不能通过的,因为没main函数,所以我们在led.c文件中加入如下代码即可void main(void)在工程名上点击右键->

11、; make此时会提示保存工程,按如下操作即可。在输出信息窗口可以得到如下结果表示编译成功,此时点击工具栏上的download and debug按钮,即可开始仿真程序。至此我们可以在此文件添加其他的代码,或者在该工程中添加其他文件,方法都如上所述。实验二 LED灯控制实验一、实验目的:熟悉CC2530的I/O口的基本操作;二、实验任务:使用I/O口来控制LED灯,如点亮LED灯,控制LED灯闪烁;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1、实验介绍本次实验的目的是让用户学会使用 CC2530 的 I/0 来控制外设,本例以 LED灯为

12、外设,用CC2530 控制简单外设时,应将 I/O 设置为输出。实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根。底板上共两个LED,电路连接如下图 由电路可知,低电平点亮LED灯。实验中操作了的寄存器有 P1SEL,P1DIR,具体说明如下:P1SEL (P1 口寄存器)位号位名复位值操作性功能描述7:0P17:00x00读/写P1 端口普通功能寄存器,可位寻址P1DIR (P1 方向寄存器)位号位名复位值操作性功能描述7DIRP1_70读/写P1_7 方向0 输入,1 输出6DIRP1_60读/写P1_6 方向0 输入,1 输出5DIRP1_50读/写P1_5

13、 方向0 输入,1 输出4DIRP1_40读/写P1_4 方向0 输入,1 输出3DIRP1_30读/写P1_3 方向0 输入,1 输出2DIRP1_20读/写P1_2 方向0 输入,1 输出1DIRP1_10读/写P1_1 方向0 输入,1 输出0DIRP1_00读/写P1_0 方向0 输入,1 输出2、示例源码如下:led1.c 点亮led1#include <ioCC2530.h>#define LED_1 P1_0void InitLedGPIO(void)P1DIR |= 0x01; /将 P1_0定义为输出LED_1 = 1; /LED 1 offvoid main(v

14、oid) while(1) InitLedGPIO(); LED_1 = 0; Led2.c 将Led2灯闪烁 #include <ioCC2530.h>#include <stdint.h>#define LED_2 P1_1void InitLedGPIO(void)P1DIR |= 0x02; /将 P1_1定义为输出LED_2 = 1; /LED 2 offvoid delay(uint16_t n)uint16_t tt;for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+

15、);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);void main(void) InitLedGPIO(); while(1) LED_2 = !LED_2 ; delay(50000); 3、实验相关函数解释void delay(uint16_t n)uint16_t tt;for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);函数功能是软件延时,在下面学习

16、了定时器后,可以使用定时器进行精确的延时。4、实验要求 (1)建立工程,编写代码点亮LED2 (2)建立工程,编写代码同时实现LED1、LED2闪烁实验三 按键控制LED实验一、实验目的:增加对IO口设置的认识;二、实验任务:按下K1键LED1状态取反,按下K2键LED2状态取反;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:电路连接如下图2 、实验相关寄存器实验中相关的寄存器除LED相关的外,还有有 P0SEL, P1SEL,P0DIR,P1DIR,P0INP,P1INP。前面三个寄存器在实验 1 已经有详述, 这里不再重复

17、介绍。下面为P0INP,P1INP的描述3、实验源码 key控制LED1 #include <ioCC2530.h>#include <stdint.h>#define LED_1 P1_0#define KEY_1 P0_1void InitLedGPIO(void) P1DIR|=0x03;/IO口为输出 LED_1=1;/关闭LED1灯void InitKeyGPIO(void) P0DIR&=0x01; /P0_1口为输入void delay(uint16_t n)uint16_t tt;for(tt = 0;tt<n;tt+);for(tt =

18、0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);uint8_t get_key(void) if(KEY_1 = 0) delay(200); /delay sometime avoid Mechanical dither if(KEY_1 = 0) while(KEY_1 = 0); /Wait until Release return 1; return 0; void main(void) uint8_t key; InitLedGPIO(); InitKeyGP

19、IO(); while(1) key = get_key(); if(key = 1) LED_1 = !LED_1;4、实验要求 (1)建立工程,编写代码实现KEY2控制Led2的亮灭 (2)建立工程,编写代码同时实现KEY1控制Led1,KEY2控制Led2的亮灭实验四 外部中断实验一、实验目的:增加对IO口设置的认识;二、实验任务:使用中断方式,按下K1键LED1状态取反,按下K2键LED2状态取反;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:电路连接如下图2、实验相关寄存器:实验中操作了的除前面使用的寄存器外,中断涉

20、及到的寄存器有P0IEN,P0CTL,IEN2,P0IFG 等寄存器。P0IEN (P0口中断掩码)位号位名复位值可操作性功能描述7P0_7IEN0读/写P07 中断掩码0 关中断,1 开中断6P0_6IEN0读/写P06 中断掩码0 关中断,1 开中断5P0_5IEN0读/写P05 中断掩码0 关中断,1 开中断4P0_4IEN0读/写P04 中断掩码0 关中断,1 开中断3P0_3IEN0读/写P03 中断掩码0 关中断,1 开中断2P0_2IEN0读/写P02 中断掩码0 关中断,1 开中断1P0_1IEN0读/写P01 中断掩码0 关中断,1 开中断0P0_0IEN0读/写P00 中断

21、掩码0 关中断,1 开中断PICTL (P 口中断控制寄存器)位号位名复位值可操作性功能描述70读预留6PADSC0读/写输出驱动能力选择0 最小驱动能力,1 最大驱动能力5P2IEN0读/写P2(0-4)中断使能位0 关中断,1 开中断4P0IENH0读/写P0(4-7)中断使能位0 关中断,1 开中断3P0IENL0读/写P0(0-3)中断使能位0 关中断,1 开中断2P2ICON0读/写P2 (0-4)中断配置0 上升沿触发,1 下降沿触发1P1ICON0读/写P1 (0-7)中断配置0 上升沿触发,1 下降沿触发0P0ICON0读/写P0 (0-7)中断配置0 上升沿触发,1 下降沿触

22、发P0IFG(P0 口中断标志寄存器)位号位名复位值可操作性功能描述7:0P0IF7:00x00读/写P0(0-7)中断标志位,在中断条件发生,相应位自动置 1IEN1 (中断使能寄存器 1)位号位名复位值功可操作性功能描述7:6-00读没有,读出为005P0IE0读/写端口0中断使能0: 中断禁止1: 中断使能4T4IE0读/写定时器4中断使能0: 中断禁止1: 中断使能3T3IE0读/写定时器3中断使能0: 中断禁止1: 中断使能2T2IE0读/写定时器2中断使能0: 中断禁止1: 中断使能1T1IE0读/写定时器1中断使能0: 中断禁止1: 中断使能0DMAIE0读/写DMA传输中断使能

23、0: 中断禁止1: 中断使能IEN2 (中断使能寄存器 2)位号位名复位值可操作性功能描述7:600读没有,读出为 05WDTIE0读/写看门狗定时器中断使能0 关中断,1 开中断4P1IE0读/写P1 中断使能使能0 关中断,1 开中断3UTX1IE0读/写串口 1 发送中断使能0 关中断,1 开中断2UTX0IE0读/写串口 0 发送中断使能0 关中断,1 开中断1P2IE0读/写P2 口中断使能0 关中断,1 开中断0RFIE0读/写普通射频中断使能0 关中断,1 开中断3、示例源码(使用中断,用按键K1控制LED1灯亮灭)按照表格寄存器内容,我们对LED1和按键K1,也就是P1.0和P

24、0.1口进行配置,当P1.0输出低电平LED1被点亮,按键K1按下时P0.1产生外部中断从而控制LED1的亮灭,具体配置如下:(1) LED1初始化: (2) 外部中断初始化:(3) 中断函数:(4) 示例源码:#include <ioCC2530.h>#include <stdint.h>#define LED_1 P1_0#define KEY_1 P0_1void delay(uint16_t n)uint16_t tt;for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);

25、for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);void InitLedGPIO(void) P1DIR |= 0x01; /P1.0 定义为输出 LED_1 = 1; /LED1灯关闭void InitKeyGPIO(void) P0DIR &= 0x02; /设置K1:P0.1 as input定义为输入 P0IEN |= 0x02; /P0.1设置为中断方式 PICTL |= 0x01; / 下降沿触发 IEN1 |= 0x20; / 端口0中断使能 P0IFG =0x00; / 中断标志位初始化 EA = 1; /开总中断#pra

26、gma vector = P0INT_VECTOR /中断格式:#pragma vector=中断向量 /紧接着是中断处理程序 _interrupt void P0_ISR(void) delay(2000); /去抖动 LED_1 = !LED_1; /改变LED1状态 P0IFG = 0; /清中断标志 P0IF = 0; / 清中断标志void main(void)InitLedGPIO();/调用初始化函数 InitKeyGPIO(); while(1); /等待外部中断4、实验要求请实现上述示例源码功能,并编写代码使用中断,实现K2控制Led2灯的亮灭,完成程序的下载和实现。实验五

27、定时/计数器实验(T1自由运行模式)一、 实验目的:了解定时器1的基本上使用方法二、实验任务:用定时器 1 来改变LED灯的状态,T1 每溢出一次,两个led闪烁取反,使用定时器中断。三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:定时器包括一个 16 位计数器,在每个活动时钟边沿递增或递减。活动时钟边沿周期由寄存器位CLKCON.TICKSPD 定义,它设置系统时钟的划分,提供了从 0.25MHz 到 32MHz 的不同的时钟标签频率(可以使用 32 MHz XOSC 作为时钟源)。这在定时器 1 中由 T1CTL.DIV 设

28、置的分频器值进一步划分。这个分频器值可以从 1、8、32 或 128。因此当 32 MHz 晶振用作系统时钟源时,定时器 1 可以使用的最低时钟频率是1953.125Hz,最高是 32 MHz。当 16MHz RC 振荡器用作系统时钟源时,定时器 1 可以使用的最高时钟频率是16MHz。计数器可以作为一个自由运行计数器,一个模计数器或一个正计数/倒计数器运行,用于中心对齐的 PWM。可以通过两个 8 位的 SFR 读取 16 位的计数器值:T1CNTH 和 T1CNTL,分别包含在高位字节和低位字节中。当读取 T1CNTL 时,计数器的高位字节在那时被缓冲到 T1CNTH,以便高位字节可以从

29、T1CNTH 中读出。因此 T1CNTL 必须总是在读取 T1CNTH 之前首先读取。对 T1CNTL 寄存器的所有写入访问将复位 16 位计数器。当达到最终计数值(溢出)时,计数器产生一个中断请求。可以用 T1CTL 控制寄存器设置启动并停止该计数器。当一个不是 00 值的写入到 T1CTL.MODE 时,计数器开始运行。如果 00 写入到 T1CTL.MODE,计数器停止在它现在的值上。2、实验相关寄存器在前面介绍的寄存器在这就不在介绍,在这里需要时钟控制的相关的寄存器CLKCOMMD与CLKCONSTA,具体介绍如下:另外还有中断使能控制器IEN1:定时器1的控制寄存器T1CTL3、示例

30、源码用定时器 1 来改变LED1灯的状态,T1 每溢出一次,LED1闪烁取反,使用定时器中断: (1) 系统时钟设置:该函数实现的功能是切换外部时钟,使用外部时钟32M晶体(2) 定时器T1设置:该函数把定时器1初始化为自由运行模式,对系统时钟32分频,也就是定时器工作的时钟是1M,这样当定时器计数从0000 - FFFF时溢出产生中断,时间为=65536us。(3) 完整源码:#include <ioCC2530.h>#include <stdint.h>#define LED_1 P1_0void InitLedGPIO(void)P1DIR |= 0x01; /将

31、 P1_0定义为输出LED_1 = 1; /LED 1 offvoid InitSysTick(void) CLKCONCMD &= 0x40; /设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); /等待晶振稳定为32M CLKCONCMD &= 0x47; /设置系统主时钟频率为32MHZ void InitTimer1(void) T1CTL = (0x02<<2)|(0x01); /DIV1:0 = 10,T1时钟 标记频率/32 /MOD1:0 = 01,T1自由运行模式 IEN1 |= 0x02; /允许T1中断 E

32、A = 1; /开总中断void main(void)InitSysTick(); InitLedGPIO(); InitTimer1();while(1);#pragma vector = T1_VECTOR _interrupt void T1_ISR(void) LED_1 = !LED_1;4、实验要求请实现上述示例源码功能,并编写代码使用中断,实现T1控制Led2灯的亮灭,完成程序的下载和实现。实验六 串口通信(查询模式)一、实验目的:了解串口的使用方法;二、实验任务:使用查询方式,串口发送Hello World!字符串;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,U

33、SB 连接线 1 根;四、实验步骤等1 、实验介绍:电路连接如下图由上图可知,串口的管脚分别在单片机的P0.2(RX)与P0.3(TX),使用的为USART0。在CC2530中,USART0和USART1是串行通信接口,它们能够分别运行于异步USART模式或者同步SPI模式。两个USART的功能是一样的,可以通过设置在单独的IO引脚上。 USART 模式的操作具有下列特点:1、8位或者9位负载数据 2、奇校验、偶校验或者无奇偶校验 3、配置起始位和停止位电平4、配置 LSB 或者 MSB 首先传送 5、独立收发中断 6、独立收发 DMA 触发 注:在本次实验中,我们用到的是UART0。 CC2

34、530配置串口的一般步骤: 1、 配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART0 2、 配置相应串口的控制和状态寄存器。此处配置UART0的工作寄存器 3、 配置串口工作的波特率。此处配置为波特率为115200 注意:在本实验中需要使用到USB转串口,所以要在PC机上安装usb转串口的驱动。2、实验相关寄存器P0SEL (P1 功能选择寄存器)位号位名复位值操作性功能描述7SELP0_70读/写P0_7 功能0 普通 I/O,1 外设功能6SELP0_60读/写P0_6 功能0 普通 I/O,1 外设功能5SELP0_50读/写P0_5 功能0 普通 I/O,1 外设

35、功能4SELP0_40读/写P0_4 功能0 普通 I/O,1 外设功能3SELP0_30读/写P0_3 功能0 普通 I/O,1 外设功能2SELP0_20读/写P0_2 功能0 普通 I/O,1 外设功能1SELP0_10读/写P0_1 功能0 普通 I/O,1 外设功能0SELP0_00读/写P0_0 功能0 普通 I/O,1 外设功能3、示例源码在串口调试助手上可以看到不停的收到CC2530发过来的:Hello world!波特率:9600,并用LED1的闪烁来标志数据的每一次发送。1) 系统时钟设置:2) 串口设置:3) 数据发送模块:4、实验要求:完成上述的完整源码,实现程序下载和

36、调试,完成数据通信,得出实验结果。实验六 串口通信(中断模式)一、实验目的:了解串口的使用方法;二、实验任务:使用中断方式,从PC机接收字符并返回;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:电路连接见实验五2、实验相关寄存器:在此给出新的寄存器,其他见实验五3、示例源码: 从串口调试助手发送数据到CC2530,而CC2530将数据返回计算机。1) 系统时钟设置:2) 串口设置:3) 中断设定4、实验要求:完成上述的完整源码,实现程序下载和调试,完成数据通信,得出实验结果。实验七 A/D实验一、实验目的:了解CC2530的A

37、DC使用方法;二、实验任务:通过串口输出AD通道0转换的值;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1、实验相关寄存器:实验需要使用到的寄存器ADCCON32、实验源码:void InitialAD(void) APCFG |= _BV(0); /Enable IO AD P0SEL |= _BV(0); ADCCON3 = 0x03<<4; /Select Internal reference,Channal:AIN0 /512 decimation rate (12 bits ENOB)ADCCON1 = 0x03<

38、;<4; /stop AD convertADCCON1 |= _BV(6); /start AD convert/* * brief delay sometime. * param n delay count * retval None */void delay(uint16_t n)uint16_t tt;for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);for(tt = 0;tt<n;tt+);/* * brief init syste

39、m tick clock. * param None * retval None */void InitSysTick(void) CLKCONCMD &= 0x40; /* select xosc 32MHz as system clock */ while(CLKCONSTA & 0x40); /* wait until xosc stable */ CLKCONCMD = 0; /* use xosc 32MHz as system,timer1 clock 32Mhz */* * brief init uart. * param None * retval None *

40、/void InitUart(void) PERCFG &= _BV(0); /*use default pin as uart 0 pin: TX-P0.3 RX-P0.2*/ P0SEL |= (_BV(2)|_BV(3); /*select P0.2 P0.3 used as Peripheral function*/ P0DIR &= _BV(2); /*P0.2:RX set input */ U0CSR |= _BV(7); /* Select uart mode */ U0GCR |= 8; U0BAUD = 59; /*set baud rate : 9600*

41、/ UTX0IF = 0;/* * brief send string use uart0 * param None * retval None */void uart_send_string(uint8_t *dat,int len) uint16_t j; for(j=0;j<len;j+) U0DBUF = *dat+; while(UTX0IF = 0); UTX0IF = 0; /* * brief get adc value . * param None * retval None */void get_adc(void) uint16_t adc; uint8_t i; u

42、int8_t tmp2; float ad; if(ADCCON1 >= 0x80) InitialAD(); tmp1 = ADCL; tmp0 = ADCH; adc = tmp1; adc |= (tmp0<<8); adc >>= 4; if(adc&0x8000) adc = 0; /if negative ,adc = 0; ad = adc*1.25/2048; memset(get_dat,' ',8); /format string adc =(uint16_t)(ad * 1000); sprintf(void*)get

43、_dat,"%d",adc); get_datstrlen(void*)get_dat) = ' ' for(i=0;i<8;i+) buf13+i = get_dati; uart_send_string(buf,sizeof(buf); /* * brief Main program. * param None * retval None */void main(void) InitSysTick(); InitUart(); InitialAD(); while(1) get_adc(); delay(50000); delay(50000);

44、3、实验要求:完成上述的完整源码,并给主要源码加以注释,实现程序下载和调试,完成数据通信,得出实验结果。实验八 热释红外实验一、实验目的:熟悉热释红外传感器的使用方法;二、实验任务:通过检测热释红外传感器检测是否有人,并通过串口显示“有人”,“无人”;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:1)热释红外原理:专门用作探测人体辐射的红外线传感器,由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,它和放

45、大电路相配合,可将信号放大70分贝以上,这样就可以测出20米范围内人的行动。人体辐射的红外线中心波长为910-um,而探测元件的波长灵敏度在0.220-um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为710-um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。2)实验所用传感器简介:本实验的热释红外传感器如下图所示: 当有人进入其感应范围则输出高电平, 人离开感应范围则自动延时关闭输出低电平。感应距离7米,感应角度110°传感器电路板接口电路图如下:终端与传感器板

46、接口,热释红外的输出接到了单片机的P0.0口2、实验源码:使用传感器检测其周围是否有人:当有人出现在其检测范围时,在计算机上显示“有人”,否则显示“无人”。1) 系统时钟设置:2) 串口设置:3) 数据发送模块:4) 传感器检测模块:3、实验要求:完成上述的完整源码,实现程序下载和调试,完成传感器检测和通信,得出实验结果。实验九 超声波传感器实验一、实验目的:了解超声波传感器的使用方法;二、实验任务:通过超声波传感器串口打印被测量物体的距离;三、实验设备:仿真器 1 台, ZigBee 模块 1 块,USB 连接线 1 根;四、实验步骤等1 、实验介绍:1)超声波原理: 超声波传感器是利用超声

47、波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业、国防、生物医学等方面。2)实验所用超声波传感器简介:传感器参数:感应角度:不大于 15 度 。 探测距离:2cm-400cm 高精度:可达 0.3cm。电路图:Trig(控制端) P0.0, Echo(接收端)P0.1时序图:控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。检测流程:(1)采用 IO 触发测距,给至少 10us 的高电平信号;(2)模块自动发送 8 个 40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论