单片机技术与应用课件 38.Zigbee技术开发综合实训_第1页
单片机技术与应用课件 38.Zigbee技术开发综合实训_第2页
单片机技术与应用课件 38.Zigbee技术开发综合实训_第3页
单片机技术与应用课件 38.Zigbee技术开发综合实训_第4页
单片机技术与应用课件 38.Zigbee技术开发综合实训_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

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

文档简介

Zigbee技术开发综合实训zigbee技术开发主讲人:XXXZigbeetechnologydevelopmentZigbee技术开发综合实训任务描述基于ZigBee模块进行基础开发,上电先让LED1和LED2都灭,然后通过定时器每隔1秒进行温湿度光敏传感器数据的定时采集。并根据光照值来控制LED1和LED2的亮灭,当有光照时,LED1和LED2灭,当没有光照时,LED1和LED2亮。每次LED1和LED2的状态发生改变时,往串口发送相应数据告知光照情况的变化。设备列表ZigBee模块1个CCDebugger烧写器1个温湿度光敏传感器1个(或光敏传感器1个)010203Zigbee技术开发综合实训任务要求1.ZigBee模块一上电,LED1灯和LED2灯都灭。2.使用定时器1中断方式来控制采集传感器数据的时间,定时器1参数配置要求采用自由运行模式、128分频。3.温湿度光敏传感器插在ZigBee的传感器插槽上,查看相关的电路图和数据手册,设置采集温湿度光敏传感器的引脚初始化和ADC相关参数,ADC要求配置为:3.3V电压(AVDD5引脚)、128位抽取率、AIN0单通道。4.串口通信要求使用串口0的备用位置1:P0_2(RX),P0_3(TX),波特率19200,奇偶校验无,1位停止位,8位数据位,流控无。5.定时1秒后,采集一次传感器的值(注:要求将该处代码中的“100”改成正确的值,且通过使用变量“light_val”实现采集传感器的值)。6.根据光照状态是否发生变化来控制两个LED的亮灭,有光照则两个LED都亮,没有则都灭。7.将光照情况上发到串口显示。注:串口接收信息时要选择“ASCII码”格式;发送的光照信息格式应如:“光照值:0.25V”,且添加相应的回车(“\r”)、换行(“\n”)、结束(“\0”)符号。Zigbee技术开发综合实训任务分析本次任务涉及到了CC2530单片机的I/O端口、定时器、串口及ADC相关寄存器的配置、初始化函数的设计及定时器中断、串口接收/发送、ADC转换等相关函数的设计相关知识。1.知识分析实训任务选择ZigBee实训模块如图所示,要会识读此实训模块电路图,温湿度光敏传感器插在ZigBee的传感器插槽上,会查看相关的电路图和数据手册。2.设备分析认真分析任务要求,明确各功能模块的程序设计要求,会运用IAR软件进行编程,并能够编译、链接、调试程序;会利用CCDebugger仿真下载器,将仿真器的下载线连接到ZigBee实训模块与电脑,利用串口调试工具进行仿真演示。3.技能分析主要包括基础函数及功能实现函数的调用包括按键中断服务函数、字符串发送函数、定时器中断服务函数、串口中断服务函数、ADC电压值获取函数Zigbee技术开发综合实训引用头文件定义相关变量、声明函数设计基础函数设计功能实现函数设计主函数一、程序设计基本流程包括时钟初始化函数、延时函数、灯的端口初始化函数、按键端口初始化函数、定时器初始化函数、串口初始化函数、ADC初始化函数任务实施一、搭建开发环境(1)新建工作区,工作区名为:work。(2)新建工程,工程名为:project。(3)新建源程序文件,命名为test.c。(4)将test.c文件添加到project工程中。(5)按键CTRL+S保存工作区。(6)配置工程选项,“Project”->“Options”->“GeneralOptions”,“Device”->“TexasInstruments”->“CC2530F256”。(7)配置linker,勾选Overridedefault(8)配置Debugger,“Debugger”->“Setup”->“Driver”->“TexasInstruments”。Zigbee技术开发综合实训二、在编辑窗口编写程序程序设计过程1.引入头文件,定义相关变量声明相关函数/*包含头文件*/#include<iocc2530.h>#include<string.h>/*宏定义*/#defineLED1P1_0#defineLED2P1_1#defineuint16unsignedshort/*定义变量*/intcount=0;//统计定时器溢出次数charoutput[8];//存放转换成字符形式的传感器数据uint16light_val=0;//ADC采集结果uint16light_flag=0;//光照状态标志位1:有光照;0:没光照uint16light_flag_last=0;//上一次的光照状态/*声明函数*/voidInitCLK(void);//系统时钟初始化函数,为32MHzvoidInitUART0();//串口0初始化voidInitT1();//定时器1初始化voidDelay(intdelaytime);//延时函数voidInitADC();//ADC初始化函数unsignedshortGet_adc();//ADC采集voidUart_tx_string(char*data_tx,intlen);//往串口发送指定长度的数据voidInitLED(void);//灯的初始化Zigbee技术开发综合实训2.定义相关函数函数程序设计过程(1)时钟初始化函数voidInitCLK(void){CLKCONCMD&=0x80;while(CLKCONSTA&0x40);}Zigbee技术开发综合实训(2)灯的端口初始化函数(3)T1初始化函数voidInitLED(){P1SEL&=~0x03;//设置P1_0、P1_1为GPIO口P1DIR|=0x03;//设置P1_0和P1_1为输出LED1=LED2=0;//设置LED1和LED2的初始状态}voidInitT1(){T1CTL=0X0D;//128频,自由运行模式(1101)TIMIF|=0X40;//使能定时器溢出中断IEN1|=0X02;//定时器1中断使能或T1IE=1EA=1;}程序设计过程(4)串口初始化函数voidInitUART0(){U0CSR|=0X80;//串口模式PERCFG|=0x00;//USART0使用备用位置1P0_2P0_3P0SEL|=0X0C;//设置P0_2P0_3为外设U0UCR|=0X80;//流控无8位数据位无奇偶校验1位停止位U0GCR=9;//设置波特率为19200(见书上对应表)U0BAUD=59;UTX0IF=0;EA=1;}Zigbee技术开发综合实训(5)串口发送函数voiduart_tx_string(char*data_tx,intlen){unsignedintj;for(j=0;j<len;j++){U0DBUF=*data_tx++;while(UTX0IF==0);UTX0IF=0;}}程序设计过程(6)ADC初始化函数voidInitADC(){APCFG|=1;//设置P0_0为模拟端口P0SEL|=0x01;//设置P0_0为外设P0DIR&=~0x01;//设置P0_0为输入方向ADCCON3=0xA0;//设置参考电压3.3V256抽取率使用AIN0通道}Zigbee技术开发综合实训(7)ADC采集函数uint16Get_adc(){while(!ADCIF);ADCIF=0;unsignedlongvalue;value=ADCH;value=value<<8;value|=ADCL;value=value*330;//VALUE*3.3v/32768value=value>>15;return(uint16)value;}程序设计过程Zigbee技术开发综合实训3.定时器T1中断服务函数#pragmavector=T1_VECTOR__interruptvoidt1(){T1IF=0;//清除定时器1中断标志count++;//累加中断次数/*.......定时1秒后,采集一次传感器的值*/if(count==4)//定时1秒到{light_val=Get_adc();//获取光照值if(light_val>50)light_flag=1;//光照强elselight_flag=0;//几乎无光照程序设计过程Zigbee技术开发综合实训3.定时器T1中断服务函数if(light_flag_last!=light_flag)//当光照状态发生改变时{/*.......根据光照状态控制两个LED的亮灭,有光照则都灭,没有则都亮*/if(light_flag==1){LED1=0;LED2=0;}else{LED1=1;LED2=1;}程序设计过程Zigbee技术开发综合实训3.定时器T1中断服务函数/*.......将光照情况按要求组帧后上发到串口显示*/output[0]=light_val/100+'0';output[1]='.';output[2]=light_val/10%10+'0';output[3]=light_val%10+'0';output[4]='V';output[5]='\r';output[6]='\n';output[7]='\0';Uart_tx_string("光照值:",sizeof("光照值:"));Uart_tx_string(output,sizeof(output));//发送传感数据到串口light_flag_last=light_flag;//保持上一次的光照状态}count=0;//计数值清零}}程序设计过程Zigbee技术开发综合实训4.主函数voidmain(){InitCLK();//系统时钟32MInitLED();//灯的初始化InitT1();//定时器初始化InitUART0();//串口初始化InitADC();//ADC初始化while(1);}3.编译、分析、调试程序1编译无误后,将CCDebugger

温馨提示

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

评论

0/150

提交评论