您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 11、CC2530串口发送指令控制LED灯
TEL:15882009209目录串口发送指令控制LED灯.................................................................................................21、适用平台佳杰科技Q2530SB硬件平台.................................................................22、实验设备.............................................................................................................23、实验目的.............................................................................................................34、实验相关寄存器...................................................................................................35、程序效果.............................................................................................................46、程序代码.............................................................................................................4TEL:15882009209串口发送指令控制LED灯1、适用平台佳杰科技Q2530SB硬件平台2、实验设备1.RF2530N或者RF2530A1块2.Q2530SB底板1块3.USB连接线1条4.SmartRF04EB仿真器1个TEL:15882009209、实验目的PC通过串口发送指令控制目标板LED开关。可以分别控制每个开关。4、实验相关寄存器相关寄存器:P1,P1DIR,P1SEL,CLKCONCMD,SLEEPSTA,U0CSR,U0GCR,U0BAUD,U0DBUF(前面以介绍过的这里不再重复介绍,寄存器功能说明请参阅CC2530Datasheet.pdf)CLKCONCMD(0XC6)时钟频率控制寄存器Bit7:32K时钟源选择0:32K晶振1:32KRC震荡Bit6:系统主时钟源选择0:32M晶振1:16MRC震荡Bit5:Bit3定时计数器时钟选择[2:0]001:16M010:8M011:4M100:2M101:1M110:500K111:250KBit2:Bit0系统主时钟频率选择[2:0]000:32M001:16M010:8M011:4M100:2M101:1M110:500K111:250KCLKCONSTA(0X9E)UART0状态和控制寄存器Bit7:串口模式选择:0:UART1:SPIBit6:UART接收使能:0:关1:开U0BAUD(0XC2)UART0波特率控制寄存器:UTX0IF(0XEF)UART0TX中断标志位UART波特率设定参数表:波特率BAUD_MBAUD_E误差(%)24005960.1448005970.1496005980.141440021680.03192005990.142880021690.033840059100.1457600216100.037680059110.14115200216110.03230400216120.03TEL:15882009209、程序效果发送以下指令控制对应LED灯的开或者关。测试效果查看文件夹类视频。R1#D1关R0#D1开G1#D2关G0#D2开Y1#D3关Y0#D3开A1#:所有LED灯灭A0#所有LED灯开6、程序代码//┏━━━━━━━━━━━━━━━━━━━━┓//┃出品公司:佳杰科技有限公司......──────┃//┃版本:1.1…───────────────┃//┃硬件平台:Q2530SB.───────────┃//┗━━━━━━━━━━━━━━━━━━━━┛#includeiocc2530.h#includestring.h#defineuintunsignedint#defineucharunsignedchar//定义控制灯的端口#defineRLEDP1_0#defineGLEDP1_1#defineYLEDP1_4voidinitUART0(void);ucharRecdata[3]=000;ucharRXTXflag=1;uchartemp;uintdatanumber=0;uintstringlen;/****************************************************************串口(UART0)初始化函数:****************************************************************/voidinitUART0(void){CLKCONCMD&=~0x40;//设置系统时钟源为32MHZ晶振while(CLKCONSTA&0x40);//等待晶振稳定CLKCONCMD&=~0x47;//设置系统主时钟频率为32MHZPERCFG=0x00;//位置1P0口P0SEL=0x3c;//P0用作串口P2DIR&=~0XC0;//P0优先作为UART0U0CSR|=0x80;//串口设置为UART方式U0GCR|=9;TEL:15882009209|=59;//波特率设为19200UTX0IF=1;//UART0TX中断标志初始置位1U0CSR|=0X40;//允许接收IEN0|=0x84;//开总中断,接收中断}/*****************************************初始化LEDIO口*****************************************/voidInit_LED_IO(void){P1DIR=0x13;//P10P11P14为输出RLED=0;YLED=0;GLED=0;//灭LED}/****************************************************************主函数****************************************************************/voidmain(void){uchari;nInit_LED_IO();initUART0();while(1){if(RXTXflag==1)//接收状态{if(temp!=0){if((temp!='#')&&(datanumber3)){//’#‘被定义为结束字符//最多能接收3个字符Recdata[datanumber++]=temp;}else{RXTXflag=3;//进入改变小灯的程序}if(datanumber==3)RXTXflag=3;temp=0;}}if(RXTXflag==3){TEL:15882009209(Recdata[0]=='R'){if(Recdata[1]=='0')RLED=0;//R0#关D1elseRLED=1;//R1#开D1}if(Recdata[0]=='Y'){if(Recdata[1]=='0')YLED=0;//Y0#关D3elseYLED=1;//Y1#开D3}if(Recdata[0]=='G'){if(Recdata[1]=='0')GLED=0;//G0#关D2elseGLED=1;//G1#开D2}if(Recdata[0]=='A'){if(Recdata[1]=='0'){RLED=0;YLED=0;GLED=0;//A0#关所有LED}else{RLED=1;YLED=1;GLED=1;//A1#开所有LED}}RXTXflag=1;for(i=0;i3;i++)Recdata[i]='';//清除刚才的命令datanumber=0;//指针归0}}//while}/****************************************************************串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.****************************************************************/#pragmavector=URX0_VECTORTEL:15882009209(void){URX0IF=0;//清中断标志temp=U0DBUF;}佳杰科技出品欢迎项目合作开发TEL:15882009209网址:
本文标题:11、CC2530串口发送指令控制LED灯
链接地址:https://www.777doc.com/doc-4981041 .html