物联网传感器原理与应用课程实验指导书实训3.docx
《物联网传感器原理与应用课程实验指导书实训3.docx》由会员分享,可在线阅读,更多相关《物联网传感器原理与应用课程实验指导书实训3.docx(17页珍藏版)》请在冰豆网上搜索。
物联网传感器原理与应用课程实验指导书实训3
实训三干黄门磁/霍尔开关传感器实验
1.实验环境
♦硬件:
ZIGBEE(CC2431)模块,ZIGBEE下载调试板,配套干黄门磁/霍尔开关传感器,USB仿真器,PC机
◆软件:
IAREmbeddedWorkbenchforMCS-51
2.实验内容
♦阅读UP-CUPIOT-6410系统ZIGBEE模块硬件部分文档,熟悉ZIGBEE模块相关硬件接口。
♦使用IAR开发环境设计程序,利用CC2431的IO中断来监测干黄门磁/霍尔开关传感器的状态。
3.实验原理
3.1硬件接口原理
◆
ZIGBEE(CC2431)模块LED硬件接口
图4.5.1LED硬件接口
ZIGBEE(CC2431)模块硬件上设计有2个LED灯,用来编程调试使用。
分别连接CC2431的P1_0、P、1_1两个IO引脚。
从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。
♦干黄门磁/霍尔开关传感器模块硬件接口
图4.5.2干黄门磁/霍尔开关传感器硬件接口
图4.5.3ZIGBEE模块主板J5接口
系统配套的干黄门磁/霍尔开关传感器,与ZIGBEE模块的J5排线相连,这样我们可以知道,干黄门磁传感器模块的信号线与ZIGBEE模块的P0_0IO引脚相连,霍尔开关传感器与P0_1IO引脚相连。
因此我们需要在代码中将相应引脚配置成中断输入模式,来监测干黄门磁/霍尔开关传感器状态。
♦CC2431相关寄存器
表4.5.1P0DIR寄存器
表4.5.2P0INP寄存器
表4.5.3PICTL寄存器
表4.5.4P1寄存器
表4.5.5P1DIR寄存器
以上图表列出了关于CC2431处理器的P0和P1IO端口相关寄存器,其中P0DIR、P1DIR为IO方向寄存器,P0INP为P0端口输入配置寄存器,PICTL用来控制P0端口中断使能和中断触发模式寄存器。
表4.5.6IEN0寄存器
表4.5.7IEN1寄存器
表4.5.8P0IFG寄存器
以上为与P0端口中断控制和配置相关寄存器,其中IEN0为系统中断总开关控制寄存器,IEN1用来控制P0端口中断使能,P01FG寄存器用来监测P0端口中断状态的标志寄存器。
表4.5.9CLKCON寄存器
表4.5.10SLEEP寄存器
表4.5.11PERCFG寄存器
表4.5.12U0CSR寄存器
表4.5.13U0GCR寄存器
表4.5.14U0BUF和U0BAUD寄存器
以上图表列举了和CC2431处理器串口相关寄存器,用来初始化串口0配置的。
详情见软件代码部分。
3.2软件设计
源码分析:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
//定义控制灯的端口
#defineLED1P1_0
#defineLED2P1_1
//函数声明
voidDelay(uint);
voidinitUARTtest(void);
voidUartTX_Send_String(char*Data,intlen);unsignedintswitch_flag;
unsignedintswitch2_flag;
/****************************************************************
*函数功能:
延时
*入口参数:
定性延时
*返回值:
无
*说明:
****************************************************************/voidDelay(uintn)
{
uinti,t;
for(i=0;i<5;i++)for(t=0;t}
/****************************************************************
*函数功能:
初始化串口
*入口参数:
无
*返回值:
无
*说明:
57600-8-n-1
****************************************************************/voidinitUART(void)
{
CLKCON&=~0x40;//晶振while(!
(SLEEP&0x40));//等待晶振稳定
CLKCON&=~0x47;//TICHSPD128分频,CLKSPD不分频
SLEEP|=0x04;//关闭不用的RC振荡器
PERCFG=0x00;//位置1P0口
P0SEL=0x3c;//P0用作串口
P2DIR&=~0XC0;//P0优先作为串口0
U0CSR|=0x80;//UART方式
U0GCR|=10;//baud_e
U0BAUD|=216;//波特率设为57600
UTX0IF=0;
}
/****************************************************************
*函数功能:
串口发送字符串函数
*入口参数:
data:
数据
*len:
数据长度
*返回值:
无
*说明:
****************************************************************/voidUartTX_Send_String(char*Data,intlen)
{
intj;
for(j=0;j{
U0DBUF=*Data++;while(UTX0IF==0);
UTX0IF=0;
}
}
voidUartTX_Send_word(charword)
{
U0DBUF=word;while(UTX0IF==0);
UTX0IF=0;
}
/*****************************************
//IOP0_0中断模式初始化
*****************************************/voidInit_IO(void)
{
P1DIR=0X03;//设置LED
LED1=1;
LED2=1;
P0DIR&=~(0X03<<0);//P0_0输入模式P0INP&=~0X03;//P0_0开开上拉、下拉PICTL|=0X08;//P0_0中断使能
//PICTL&=~(0X01<<0);//P0上升沿触发
PICTL|=0X01;//P0下降沿触发
IEN0|=0x80;//全局允许中断IEN1|=0x20;//P0端口中断允许
P0IFG&=~(0x03<<0);//P0_0中断标志清0
};
/****************************************************************
*函数功能:
主函数
*入口参数:
无
*返回值:
无
*说明:
无
****************************************************************/voidmain(void)
{
switch_flag=0;
switch2_flag=0;
initUART();
Init_IO();//P1_0IO初始化
while
(1)
{
LED1=1;
LED2=1;
//麦克声感中断处理
if((1==switch_flag)&&(P0IFG==0)){switch_flag=0;
LED1=0;
//LED2=0;
UartTX_Send_String("SWITCHWarning!
",14);
UartTX_Send_word(0x0A);UartTX_Send_word(0x0D);
Delay(10000);//延时
}
//光感传感器中断处理
if((1==switch2_flag)&&(P0IFG==0)){switch2_flag=0;
//LED1=0;
LED2=0;
UartTX_Send_String("SWITCH2Warning!
",14);
UartTX_Send_word(0x0A);UartTX_Send_word(0x0D);
Delay(10000);//延时
}
}
}
/*********************************************************************
//中断服务程序(P0_0端口)
*********************************************************************/
#pragmavector=P0INT_VECTORinterruptvoidP0_ISR(void)
{
if(P0IFG&0x01)//麦克声感中断
{
P0IFG=0;
switch_flag=1;
}
if(P0IFG&0x02)//光感中断
{
P0IFG=0;
switch2_flag=1;
}
P0IF=0;//清中断标志
}
程序通过配置CC2431处理器的IOP0_0、P0_1引脚为输入中断引脚,用来监测干黄门磁/霍尔开关传感器传感器的状态,如果干黄门磁关闭或霍尔开关开关监测到磁力信号则产生相应中断,则将分别点亮LED1和LED2,并向串口输出“SWITCHWarning!
”和“SWITCH2Warning!
”字符串。
4.实验步骤
♦使用USB仿真器连接PC机和ZIGBEE(CC2431)模块,将ZIGBEE调试板的电源拨到3.3V段,打开ZIEBEE模块开关供电。
将系统配套串口线一端连接PC机,一端连接ZIGBEE调试板的串口上。
将系统配套干黄门磁/霍尔开关传感器连接到ZIGBEE模块的主板上,连接J5线排端,且保证RJ1电阻跳线跳至5V供电端。
勿要连接错!
。
♦启动IAR开发环境,新建工程,将Exp5实验工程中代码拷贝到新建工程中。
♦在IAR开发环境中编译、运行、调试程序。
♦使用PC机自带的超级终端连接串口,将超级终端设置为串口波特率57600、8位、无奇偶奇校验、无硬件流模式,当干黄门磁开关检测到磁力,则点亮ZIGBEE模块的LED1灯、且串口输出“SWITCHWarning!
”。
当霍尔开关监测到磁力则点亮ZIGBEE模块的LED2灯、且串口输出“SWITCH2Warning!
”字符串。
♦备注:
所有传感器实验,在运行测试时候,请使用5V电源给ZIGBEE供电,否则传感器供电将不足。
即使用仿真器下载万程序后,将ZIGBEE调试板电源开关拨至5V供电,下载调试时候再改回3.3V供电。
♦备注说明:
干黄门磁和霍尔开关可以使用磁铁来测试状态。