高职Zigbee点对点开发-物联网应用开发
题目ZigBee 设备功能开发使用两个蓝色 ZigBee 节点盒进行组网通讯并分别命名为节点端和控制端。节点端上安装双联继电器模块并外接风扇、照明灯。根据任务要求完成功能开发。任务要求在控制端点击 SW1 键后板上的 LED1 灯实现间隔 0.5 秒亮灭状态同时节点端的风扇转动。再次点击 SW1 键后板上的 LED1 灯熄灭、风扇停止。可以反复实现此功能。在节点端点击 SW1 键后板上 LED1 灯实现呼吸灯效果同时照明灯亮起。再次点击 SW1 键后板上的 LED1 灯和照明灯都熄灭。可以反复实现此功能。控制端#include hal_defs.h #include hal_cc8051.h #include hal_int.h #include hal_mcu.h #include hal_board.h #include hal_led.h #include hal_rf.h #include basic_rf.h #include hal_uart.h #include stdio.h #include string.h #include stdarg.h /*****点对点通讯地址设置******/ #define RF_CHANNEL 11 // 频道 11~26 #define PAN_ID 2201 //网络id #define MY_ADDR 0x0A //本机模块地址 #define SEND_ADDR 0x0B //发送地址 /**************************************************/ static basicRfCfg_t basicRfConfig; // 无线RF初始化 void ConfigRf_Init(void) { basicRfConfig.panId PAN_ID; basicRfConfig.channel RF_CHANNEL; basicRfConfig.myAddr MY_ADDR; basicRfConfig.ackRequest TRUE; while(basicRfInit(basicRfConfig) FAILED); basicRfReceiveOn(); } void init(){ P1SEL ~ 0x1F; P1DIR | 0x1B; P1 0; } unsigned char flag 0; void KeyScanner(){ if(P1_2 0){ while(P1_2 0); flag flag 0?1:0; P1_0 0; } } /********************MAIN************************/ void main(void) { halBoardInit();//选手不得在此函数内添加代码 ConfigRf_Init();//选手不得在此函数内添加代码 init(); unsigned int t 0; while(1) { /* user code start */ KeyScanner(); if(flag 1){ t ; halMcuWaitMs(1); if(t 500){ P1_0 1; } if(t 1000){t 0; P1_0 0; } } basicRfSendPacket(SEND_ADDR,flag,1); /* user code end */ } }节点端#include hal_defs.h #include hal_cc8051.h #include hal_int.h #include hal_mcu.h #include hal_board.h #include hal_led.h #include hal_rf.h #include basic_rf.h #include hal_uart.h #include stdio.h #include string.h #include stdarg.h /*****点对点通讯地址设置******/ #define RF_CHANNEL 11 // 频道 11~26 #define PAN_ID 2201 //网络id #define MY_ADDR 0x0B //本机模块地址 #define SEND_ADDR 0x0A //发送地址 /**************************************************/ static basicRfCfg_t basicRfConfig; // 无线RF初始化 void ConfigRf_Init(void) { basicRfConfig.panId PAN_ID; basicRfConfig.channel RF_CHANNEL; basicRfConfig.myAddr MY_ADDR; basicRfConfig.ackRequest TRUE; while(basicRfInit(basicRfConfig) FAILED); basicRfReceiveOn(); } void Read(); unsigned char read 0; void init(){ P1SEL ~ 0x1F; P1DIR | 0x1B; P1 0; P1SEL ~0x80; P1DIR | 0x80; P2SEL ~ 0x01; P2DIR | 0x01; P2 0; } unsigned flag 0; void KeyScanner(){ if(P1_2 0){ while(P1_2 0); flag flag 0?1:0; } } void Led1_HX(){ P1_7 1; unsigned int time 300,i,j; for(i 0;i time;i){ for(j 0;j i;j){ P1_0 1; KeyScanner();Read(); if(flag ! 1)break; } for(j 0;j time - i;j){ P1_0 0; KeyScanner();Read(); if(flag ! 1)break; } } for(i 0;i time;i){ for(j 0;j i;j){ P1_0 0; KeyScanner();Read(); if(flag ! 1)break; } for(j 0;j time - i;j){ P1_0 1; KeyScanner();Read(); if(flag ! 1)break; } } } void Read(){ basicRfReceive(read,1,NULL); if(read){ P2_0 1; }else P2_0 0; } /********************MAIN************************/ void main(void) { halBoardInit();//选手不得在此函数内添加代码 ConfigRf_Init();//选手不得在此函数内添加代码 init(); while(1) { /* user code start */ Read(); KeyScanner(); if(flag) Led1_HX(); else P1_7 P1_0 0; /* user code end */ } }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411150.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!