2020年无线传感器网络实验指导书0506F精品版_第1页
2020年无线传感器网络实验指导书0506F精品版_第2页
2020年无线传感器网络实验指导书0506F精品版_第3页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、无线传感器网络实验指导书电子信息工程教研室目 录实验一光照传感器实验 1实验二红外反射传感器实验 6实验三温湿度传感器实验 9实验四LED灯控制实验 15实验五片上温度AD实验 18实验六模拟电压AD转换实验 22实验七串口收发数据实验 25实验八串口控制LED实验 29实验九点对点无线通信实验 33实验十基于Z-Stack的无线组网实验 34实验一 基于Z-Stack的串口控制LED实验36实验一光照传感器实验、实验目的了解光敏电阻传感器的特性,掌握其工作原理 二、实验环境光照传感器模块、ST-Link仿真器、USB2UAF模块、IAR for STM81.30开发软件、AccessPort

2、串口调试软件。三、实验原理1、光敏电阻光敏电阻是一种对光敏感的元件,它的电阻值能随着外界光照强弱变化而变化。光敏电阻 的结构如图1所示,光照特性曲线如图2所示。卄HmA图2光照特性曲线图1光敏电阻结构GMDDV3.3LED?图3电路原理图2、光敏传感器模块原理图如图3所示,光敏电阻阻值随着光照强度变化时,在引脚Light_AD输出电压也随之变化STM8勺PD2引脚采集Light_AD电压模拟量转化为数字量,当采集的 AD值大于某一阈值时, 精选文档则将PD3即Light_IO引脚置低,表明有光照。传感器使用的光敏电阻的暗电阻为 2M 欧姆左右,亮电阻为 10K 左右。可以计算出:在黑暗 条件下

3、, Light_AD 的数值为 3.3V * 2000K/(2000K + 10K) = 3.28V 。在光照条件下, Light_AD 的数值为3.3V * 10K/(10K + 10K) = 1.65V。STM8单片机内部带有10位AD转换器,参考电压为供电电压3.3V。根据上面计算结果,选定 1.65V (需要根据实际测量结果进行调整) 作为临界值。当 Light_AD 为 1.65V 时,AD读数为 1.65 / 3.3 * 1024 = 512。当AD读数大于512时说明无光照,当AD读数小于512时说明有光照,并点亮LED3作 为指示。并通过串口函数来传送触发(有光照时)信号。3、

4、源码分析#include "main.h"u8 CMD_rx_buf8; /命令缓冲区u8 DATA_tx_buf14; /返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; /传感器类型编号u8 Sensor_ID = 0; /相同类型传感器编号数字类型传感器数据 模拟类型传感器数据 模拟传感器阈值u8 Sensor_Data6; /传感器数据区u8 Sensor_Data_Digital = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ vo

5、id main(void)u8 i = 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); /设置内部时钟 16M 为主时钟Uart1_Init();LED_Init();for(i = 0;i < 14;i+)DATA_tx_bufi = 0; for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根据不同类型的传感器进行修改 */Sensor_Type = 2;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_bu

6、f2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;DATA_tx_buf13 = 0xFF;GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW); / ADCADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D4,ADC1_EXTTRIG_TIM,DISABLE,ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3, DIS

7、ABLE);ADC1_Cmd(ENABLE);ADC1_StartConversion();Sensor_Data_Analog = 0;Sensor_Data_Threshod = 700;delay_ms(1000);while (1)/ 获取传感器数据Sensor_Data_Analog = ADC1_GetConversionValue(); if(Sensor_Data_Analog < Sensor_Data_Threshod) Sensor_Data_Digital = 0; / 无光照 GPIO_WriteHigh(GPIOD, GPIO_PIN_3);elseSen s

8、or_Data_Digital = 1;/有光照GPIO_WriteLow(GPIOD, GPI0_PIN_3);/组合数据帧DATA_tx_buf10 = Se nsor_Data_Digital; /发送数据帧UART1_Se ndStri ng(DATA_tx_buf, 14);LED_Toggle(); delay_ms(1000);#ifdef USE_FULL_ASSERT void assert_failed(ui nt8_t* file, uin t32_t li ne)/* User can add his own implementation to report the f

9、ile name and line number,ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#en dif四、实验步骤1) 首先,我们要把传感器模块插到 USB2UAR模块上,再把ST-Link插到JTAG 口上,最后把 两根USB线插至U PC机的USB端口。2) 我们用 IAR SWSTM8 1.30 软件,打开.2-Sensor_ 光照传感器 ProjectSensor.ewp 。然 后,在窗口左侧的User文件

10、夹下的main.c中输入上述源代码。3)打开后点击“ Project ”的“ Rebuil All ”或者选中工程文件右键“ Rebuil All ”把我们的 工程编译一下。4)点击“ Rebuil All ”编译完后,无警告,无错误。5) 编译完后我们要把程序烧到模块里,点击蔑 上占 中间的Download and Debug进行烧写。6) 打开串口工具.AccessPort.exe ,配置好串口参数,波特率115200, 8个数据位,1个停止位,无校验位。单片机采集的信息发送给PC机。7)传感器底层串口协议返回14个字节,第1位字节和2位字节是包头,第3位字节是传感器 类型,第4位字节是传

11、感器ID,第5位字节是节点命令ID,第6位字节到11位字节是数据位, 其中第11位字节是传感器的状态位,第12位字节和第13位字节是保留位,第14位字节是包 尾。例如:返回“ EE CC 02 01 01 00 00 00 00 00 00 00 00 FF ”时,第 11 位字节为“ 0” 时, 表示无光照,返回“ EE CC 02 01 01 00 00 00 00 00 01 00 00 FF ”时,第11位字节为“ 1” 是表示有光照。测试结果如图4所示。與 AcccssPort COMr(llSJOOrNHS,l) Opered.二 回图4测试结果五、思考题1、如何编程控制PD3输出

12、高低电平?2、编程实现求解光敏电阻的阻值。DV3 3R41KX050S LED3二 J'Rcd实验二红外反射传感器实验一、实验目的了解红外反射传感器的特性,掌握其工作原理。二、实验环境红外反射传感器模块、ST-Link仿真器、USB2UAR模块、IAR for STM8 1.30开发软件、AccessPort串口调试软件。三、实验原理1、红外反射传感器红外反射传感器使用的是反射型红外光电开关,反射型红外光电开关把一个红外光发射 器和一个红外光接收器装在一个同一面上, 前方装有滤镜,滤除干扰光。发光器能发出红外光, 在无阻情况下光接收器不能收到光。 但当前方有障碍物时,光被反射回接收器,

13、光电开关便动 作,输出一个开关控制信号,切断或接通负载电流,从而完成一次控制动作。DV3.3L| IR DATAR5 0KO !R IOGNDGND图5电路原理图2、红外反射传感器模块原理图如图5所示,红外光电开关U3供电电压为5V,集电极开路输出。当无障碍物时,U3的1脚输 出高电平,Q1导通,IR_DATA为低电平;当有障碍物时,U3的1脚输出低电平,Q1截止,IR_DATA 为高电平。通过STM8单片机读取IR_DATA的高低电平状态,即可获知红外反射传感器是否检 测到障碍物,当检测到障碍物时,可以点亮 LED3作为指示。通过串口传输信号。3、源码分析#in clude "ma

14、i n.h"u8 CMD_rx_buf8; / 命令缓冲区u8 DATA_tx_buf14; /返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; /传感器类型编号u8 Sensor_ID = 0; /相同类型传感器编号数字类型传感器数据 模拟类型传感器数据 模拟传感器阈值u8 Sensor_Data6; /传感器数据区u8 Sensor_Data_Digital = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ void main(void)u8 i =

15、 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); / 设置内部时钟 16M 为主时钟Uart1_Init(); LED_Init();GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_SLOW);for(i = 0;i < 14;i+)DATA_tx_bufi = 0;for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根据不同类型的传感器进行修改 */

16、Sensor_Type = 4;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_buf2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;精选文档DATA_tx_buf13 = 0xFF;delay_ms(1000);while (1)/ 获取传感器数据 if(!GPIO_ReadInputPin(GPIOD, GPIO_PIN_3) Sensor_Data_Digital = 0; / 无障碍 GPIO_WriteHigh

17、(GPIOD, GPIO_PIN_2);elseSensor_Data_Digital = 1; / 有障碍 GPIO_WriteLow(GPIOD, GPIO_PIN_2);/组合数据帧DATA_tx_buf10 = Sensor_Data_Digital;/发送数据帧UART1_SendString(DATA_tx_buf, 14); LED_Toggle();delay_ms(1000);#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line)/* User can add his own impleme

18、ntation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#endif精选文档四、实验步骤我们把红外反射传感器模块插到 USB2UAR模块上,重复第1个实验的编译、链接、下载代码、 与 PC 机通信过程。例如:返回“ EE CC 04 01 01 00 00 00 00 00 00 00 00 FF”时,第 11 位字节为“ 0”时,表示

19、无障碍,返回“ EE CC 04 01 01 00 00 00 00 00 01 00 00 FF”时, 第 11 位字节为“ 1”是表示有障碍。五、思考题1、简述红外反射传感器模块IR_DATA引脚电平变化原理。2、编程实现计数,红外反射传感器模块被障碍物挡住的次数。实验三 温湿度传感器实验、实验目的了解温湿度传感器的特性,掌握其工作原理 二、实验环境温湿度传感器模块、ST-Link仿真器、USB2UAR模块、IAR for STM8 1.30 开发软件、AccessPort串口调试软件。三、实验原理1、温湿度传感器AM2302湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传

20、感器。它应 用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。如图6所示,AM2302引脚图。引脚:名称描述VDD电握(3.5V-55V)SDA串用遂斓匸NC空UGNI)NC图6 AM2302引脚图-ft S 三-s图7 AM2302单总线通信协议AM2302器件采用简化的单总线通信,单总线通信协议如图7所示,单总线通信格式如图8 所示。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。设备(微处理器) 通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据

21、时能够释放总线, 而让其它设备使用总线;单总线通常要求外接一个约5.1k Q的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结构,只有主机呼叫传感器时,传感器才会应答,因此主机 访问传感器都必须严格遵循单总线序列,如果出现序列混乱,传感器将不响应主机。精选文档单总线数据计算示例示例一:接收到的"位数拯为:OOD0 0010 湿J®,頁H位 计算匕lorn oniooooooom湿度低8応 温度為nd000。1101 1010 0010温度低«位 校验位(JO10+ 1001 0010 +0000 0001+0000 1101= 1010 0010 (

22、校验)接收数据正确,湿度:0000 00101001 0010 = 0292H (十六进制尸 2 x 25& + 9x16 + 2 = 658=> 湿度=65.8%1<H00(>0 ()001000() I im = 10Dhi(卜六进制)=1 x 256 + <) x 6 + = 269=a 温度=26.9*XZ名称单总线格式定义做处理曙把敌据息纯(SDA)拉低 段财何(勒少曲h啊)通知障密劇准箫数搦响应仿:传临器把数抑:总级C SDA )拉低押叭.再接加】M3 以响Z 1制1的起幷StIK格式收:刑主机屆焰倩打眉.代烛器-次忖从数撫总线(SDA>和侍数

23、整“梅位先HI潍度4UE分耕率建高悅在1)筋 倚率出的蓬度馆绘耗關湿度備的 血倍袒度分耕申址Ifitiir. iPVi iiVt传曲器的ill度就址实降MEH肯的I命伯t 温理漲7;位(Bills ) 7; t炭示员iA度.度fti商位f BitlS >尊TO &示正ai度*校監位检灘恤=湿陵再位+瑶酸低位+渦度曲位+J山夏低位图8 AM2302单总线通信格式2、温湿度传感器模块原理图如图9所示,AM2302通过DATA与单片机相连。VISdLbOi RXDSeiM ftST亠U,V广广1H 4.7KDATA十IC? DATAA3GND斗1DV7.3TfAPEWHISiBLET

24、TTE CIIIUT CKPm'iES).|S lTIM2 CH: .AlX'JTR EIS) .AK5 C.ym TXP):(HS>|.4N1)|TM?_(Tn| PLK<EiSi.>6C.RTL RX(il>MtSL<6C1SPAL<ri(K'| PVWDPC-HfISi TD1I VCAPPDKEbiSWJMrceiEisi spi so引 jd.ii cmrcsiEEj spian;CEUC1X ICO TTMinEN(T1MI nt IN TU UM 013 (H5iPC3ADC ElKl3T_SCL(riP&4 S

25、PI KS5| T1M2JCW (HSJP.A3UML BKINJJ2C SDAi'IiHJ?jii r3、源码分析#in elude "mai n.h"图9温湿度传感器原理图u8 CMD_rx_buf8; /命令缓冲区u8 DATA_tx_buf14; /返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; /u8 Sensor_ID = 0; /传感器类型编号 相同类型传感器编号数字类型传感器数据 模拟类型传感器数据 模拟传感器阈值u8 Sensor_Data6; / 传感器数据区u8 Sensor_Data_Digit

26、al = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ void main(void) u8 i = 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); /设置内部时钟 16M 为主时钟Uart1_Init(); LED_Init(); DHT22_Init();for(i = 0;i < 14;i+)DATA_tx_bufi = 0;for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根据不同类型的传感器进行修改 */Sen

27、sor_Type = 10;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_buf2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;DATA_tx_buf13 = 0xFF;delay_ms(1000);精选文档while (1)/ 获取传感器数据if(DHT22_Read()Sensor_Data2 = Humidity >> 8;Sensor_Data3 = Humidity&0xFF;Sensor

28、_Data4 = Temperature >> 8;Sensor_Data5 = Temperature&0xFF;/ 组合数据帧for(i = 0;i < 6;i+)DATA_tx_buf5+i = Sensor_Datai;/ 发送数据帧UART1_SendString(DATA_tx_buf, 14);LED_Toggle();delay_ms(1000);#ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line)/* User can add his own implement

29、ation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#endif四、实验步骤我们把温湿度传感器模块插到 USB2UAR模块上,重复第1个实验的编译、链接、下载代码、与 PC 机通信过程。例如:返回 EE CC 0A 01 01 00 00 HH HL TH TL 00 00 FF ,HH,HL 代表温度变化, TH, TL 代表湿度变化

30、。五、思考题1、计算温湿度传感器输出的温度值、湿度值。2、分析 C 语言实现单总线协议的过程。3、编程实现模拟报警系统,当温度超过某一阈值时,LED闪烁。实验四 LED灯控制实验一、实验目的掌握CC2530芯片的输入输出端口编程控制。二、实验环境实验开发箱平台、ZigBee(CC2530模块、J-Link仿真器、IAR for MCS-51开发软件、 AccessPort串口调试软件。三、实验原理原理图如图10所示,ZigBee(CC2530)模块硬件上设计有2个LED灯,2个按键,用来编程 调试使用。2个LED灯分别连接CC2530的P1_0 P1_1两个IO引脚。从原理图上可以看出,2 个

31、LED灯共阳极,当P1_0 P1_1引脚为低电平时候,LED灯点亮。ITD1R3510LLD2Pl 10 LuFDV3.3RESETRESET N 20PIOPl 1Pl 2PBP14Pl?PI 6Pl -RESET NXOSC32K QI SOSC QI S0SC_Q2 DCOUFL "图10输入输出原理图2、源码分析#in clude <ioCC2530.h>#defi ne uint un sig ned int#defi ne uchar un sig ned char/定义控制LED灯的端口#define LED1 P1_0 / 定义 LED1 为 P10口控制

32、#define LED2 P1_1 / 定义 LED2为 P11 口控制9/ 函数声明延时函数/ 初始化 P1 口void Delay(uint);void Initial(void); /* / 延时函数void Delay(uint n) uint i,t;for(i = 0;i<5;i+) for(t = 0;t<n;t+);/*/ 初始化程序void Initial(void)P1DIR |= 0x03; P1_0、P1 1定义为输出灯熄灭LED1 = 1; /LED1LED2 = 1; /LED2 灯熄灭/ 主函数* void main(void)Delay(50000)

33、;Initial();/ 调用初始化函数LED1 = 0;/LED1 点亮LED2 = 0;/LED2 点亮while(1)LED2 =!LED2; /LED2闪烁四、实验步骤(在实验箱的ZigBee协调器(CC2530上进行实验)1) 把J-Link仿真器一端连到实验箱右下角的 JLink插座上,另一端连到PC机USB端口上。 打开实验箱左上角的开关和 ZigBee协调器的开关供电,Power LED红灯点亮。按下“选择” 按钮,当ZigBee协调器的Debugled黄灯点亮时,选中该模块。2) 用 IAR for MCS-51 软件,打开. SrcZigBeeTIexpBasicExp1.

34、ewp。然后,在窗口左 侧的main.c中输入上述源代码。3)打开后点击“ Project ”的“ Rebuil All ”把工程编译一下。点击“ Rebuil All ”编译完后, 无警告,无错误。4)编译完后我们要把程序烧到模块里,点击丄丄左侧的Debug进行烧写。若烧写失败,重 新插拔J-Link仿真器的USB端口。5)点击二运行,点击塔停止。五、思考题1、分析输入输出端口的编程控制 2、编程实现,初始化LED1, LED2全灭;按下S2, LED1, LED2点亮;按下3次S4, LED1, LED2闪烁。实验五 片上温度 AD 实验一、实验目的利用CC2530勺内部温度传感器作为AD

35、输入源,将转换后的温度数值利用串口发送给 PC 机终端。二、实验环境实验开发箱平台、ZigBee(CC2530模块、J-Link仿真器、IAR for MCS-51开发软件、 AccessPort 串口调试软件。三、实验原理1 、源码分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h"#define uchar unsigned char#define uint unsigned int#define uint8 uchar#define uint16 uin

36、t#define TRUE 1#define FALSE 0 /定义控制LED灯的端口#define LED1 P1_0 / 定义 LED1 为 P10口控制#define LED2 P1_1 / 定义 LED2为 P11 口控制9/#define HAL_MCU_CC2530 1/ ADC definitions for CC2430/CC2530 from the hal_adc.c file#define HAL_ADC_REF_125V 0x00#define HAL_ADC_DEC_064 0x00#define HAL_ADC_DEC_128 0x10 #define HAL_AD

37、C_DEC_512/* Internal 1.25V Reference */* Decimate by 64 : 8-bit resolution */* Decimate by 128 : 10-bit resolution */0x30 /* Decimate by 512 : 14-bit resolution */#define HAL_ADC_CHN_VDD3 0x0f /* Input channel: VDD/3 */#define HAL_ADC_CHN_TEMP 0x0e /* Temperature sensor */*/ 延时函数* void Delay(uint n)

38、uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitLed(void)、P1_1定义为输出灯熄灭灯熄灭P1DIR |= 0x03; /P1_0LED1 = 1; /LED1LED2 = 1; /LED2/* fn readTemp* brief read temperature from ADC* param none* return temperature*/static char readTemp(void)static uint16 voltageAtTemp22;static uint8 bCalibrate=TRUE;

39、 / Calibrate the first time the temp sensor is read uint16 value;char temp;ATEST = 0x01;TR0 |= 0x01;ADCIF = 0; /clear ADC interrupt flagADCCON3 = (HAL_ADC_REF_125V | HAL_ADC_DEC_512 | HAL_ADC_CHN_TEMP);while ( !ADCIF ); /wait for the conversion to finishvalue = ADCL; /get the resultvalue |= (uint16)

40、 ADCH) << 8;value >>= 4;/ Use the 12 MSB of adcValue/* Assume ADC = 1480 at 25C and ADC = 4/C */#define VOLTAGE_AT_TEMP_25 1480#define TEMP_COEFFICIENT 4/ Calibrate for 22C the first time the temp sensor is read./ This will assume that the demo is started up in temperature of 22C if(bCal

41、ibrate)voltageAtTemp22=value;bCalibrate=FALSE;temp = 22 + ( (value - voltageAtTemp22) / TEMP_COEFFICIENT );/ Set 0C as minimum temperature, and 100C as maxif( temp >= 100) return 100;else if(temp <= 0) return 0;elsereturn temp;void main(void)char temp_buf20;/, vol_buf20;uint8 temp;/, vol;InitU

42、art(); / baudrate:57600InitLed();LED1 = 0;while(1)LED2 = !LED2; /LED2 blink表示程序运行正常temp = readTemp();/vol = readVoltage();sprintf(temp_buf, (char*)"temperature:%drn", temp);/spri ntf(vol_buf, (char*)"vol:%drn", vol);prin ts(temp_buf);/prin ts(vol_buf);Delay(50000); Delay(50000);

43、Delay(50000);四、实验步骤1) 重复第四个实验的实验步骤 1)5),打开. SrcZigBeeTIexpBasicExp6.ewp 。2) 串口线一端连到PC机COM口,另一端连到实验箱右下角 Debug_UAR端口,仅把拨码开关 S7的4开关拨上去,其余3个及S8、S9 S10的拨码开关都拨下来。3) 打开串口工具.AccessPort.exe,配置好串口参数,波特率 57600,8个数据位,无奇偶校验位,无硬件流模式。单片机采集的温度发送给PC机,如图11所示。图11实验结果五、思考题1、编写温度转换的流程图实验六模拟电压AD转换实验一、实验目的利用CC2530勺1/3模拟电压

44、源作为AD输入源,将转换后的数值利用串口发送给 PC机终 端。二、实验环境实验开发箱平台、ZigBee(CC2530模块、J-Link仿真器、IAR for MCS-51开发软件、 AccessPort 串口调试软件。三、实验原理1 、源码分析#include "ioCC2530.h" #include "./uart/hal_uart.h"#define uint unsigned int#define ConversionNum 20/ 定义控制灯的端口#define led1 P1_0 #define led2 P1_1void Delay(uin

45、t);void InitialAD(void);char adcdata=" 0.0V "/*/ 延时函数*/void Delay(uint n)uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitialAD(void) P1DIR = 0x03; led1 = 1;led2 = 1;/P1 控制 LED/ 关 LEDADCC0N1 &= 0X80;/ 清 EOC标志12 位分辨率ADCCON3=Oxbf; /单次转换,对1/3 AVDD进行A/D转换,ADCCON1 = 0X30;/ 停止 A/DA

46、DCCON1 |= 0X40; / 启动 A/Dvoid main(void)char temp2;float num;InitUart();/ baudrate: 57600InitialAD();/初始化 ADCled1 = 1;while(1)if(ADCCON1>=0x80)led1 = 1;temp1 = ADCL;temp0 = ADCH;ADCCON1 |= 0x40;temp1 = temp1>>2; temp1 |= temp0<<6;/ 转换完毕指示/ 开始下一转换/ 数据处理temp0 = temp0>>2;位,取2A12;tem

47、p0 &= 0x3f;num = (temp0*256+temp1)*3.3/4096; /12num = num/2+0.05; / 四 舍五入处理/定参考电压为3.3V。12位精确度adcdata1 = (char)(num)%10+48;adcdata3 = (char)(num*10)%10+48;prints(adcdata); /Delay(30000);led1 = 0; /Delay(30000);将模拟电压值发送到串口完成数据处理四、实验步骤1)重复第五个实验的实验步骤 1)3),打开. SrcZigBeeTIexpBasicExp7.ewp 单片机采集的模拟电压发送

48、给PC机。五、思考题1、编写模拟电压转换的流程图。2、求10次电压的和,并显示在 PC机上实验七 串口收发数据实验一、实验目的利用CC2530勺串口与PC机之间实现数据收发。二、实验环境实验开发箱平台、ZigBee (CC2530模块、J-Link仿真器、IAR for MCS-51开发软件、 AccessPort 串口调试软件。三、实验原理1 、源码分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h" #define uchar unsigned char#

49、define uint unsigned int#define uint8 uchar#define uint16 uint#define TRUE 1#define FALSE 0/定义控制LED灯的端口#define LED1 P1_0 / 定义 LED1 为 P10口控制#define LED2 P1_1 / 定义 LED2为 P11 口控制9uchar temp;void Delay(uint n)uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitLed(void)P1DIR |= 0x03; /P1_0、 P1_1

50、定义为输出LED1 = 1; /LED1 灯熄灭LED2 = 1; /LED2 灯熄灭void main(void)char receive_buf30;uchar counter =0;uchar RT_flag=1;InitUart(); / baudrate:57600InitLed();while(1) if(RT_flag = 1)/ 接收LED2=0; / 接收状态指示 if( temp != 0)回车键为结束字符进入发送状态 if(temp!='r')&&(counter<30) /'r/ 最多能接收 30 个字符receive_bu

51、fcounter+ = temp;elseRT_flag = 3;/ if(counter = 30) RT_flag = 3;temp = 0;if(RT_flag = 3)/ 发送LED2 = 1;LED1 = 0;UOCSR &= 0x40; receive_bufco un ter prin ts(receive_buf); prin ts("rn");U0CSR |= 0x40;RT_flag = 1; coun ter = 0;LED1 = 1;/关 LED2/发送状态指示/ 禁止接收'0'/允许接收/恢复到接收状态/指针归0/关发送指示

52、函数功能:串口接收一个字符说 明:接收完成后打开接收#pragma vector = URX0_VECTOR_in terrupt void UART0_ISR(void)URX0IF = 0;/清中断标志temp = U0DBUF;四、实验步骤1)重复第五个实验的实验步骤 1)3),打开. SrcZigBeeTIexpBasicExp9.ewp在图11中,选中字符串,在下面的窗口输入字符串,必须以回车键结束或输入字符串长度超 过30个字符,才会显示在的上面窗口。图11串口调试窗口五、思考题1、编写串口数据收发的流程图。error 。2、在串口调试窗口,输入 5 个字符密码,按下回车。正确返回

53、 right ,错误返回实验八 串口控制 LED 实验一、实验目的利用CC2530与PC机之间串口通信,由PC机发送命令控制CC2530莫块LED灯亮灭。二、实验环境实验开发箱平台、ZigBee(CC2530模块、J-Link仿真器、IAR for MCS-51开发软件、 AccessPort 串口调试软件。三、实验原理1 、源码分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h" #define uchar unsigned char#define uint un

温馨提示

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

评论

0/150

提交评论