实训四温湿度传感器实验Word文档格式.docx
《实训四温湿度传感器实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《实训四温湿度传感器实验Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
分别连接CC2431的P1_0、P、1_1两个IO引脚。
从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。
♦温湿度传感器模块硬件接口
图4.6.2温湿度传感器硬件接口
图4.6.3ZIGBEE模块主板J5接口
系统配套的温湿度传感器,与ZIGBEE模块的J5排线相连,这样我们可以知道,温湿度传感器模块的时钟线与ZIGBEE模块的P0_0IO引脚相连,温湿度传感器的数据线与P0_1IO引脚相连。
因此我们需要在代码中将相应引脚进行输入输出控制模拟该传感器时序,来监测温湿度传感器状态。
♦CC2431相关寄存器
表4.6.1P0DIR寄存器
表4.6.2P0INP寄存器
表4.6.3P2INP寄存器
表4.6.4P1寄存器
表4.6.5P1DIR寄存器
以上图表列出了关于CC2431处理器的P0和P1IO端口相关寄存器,其中P0DIR、P1DIR为IO方向寄存器,P0INP为P0端口输入配置寄存器,P2INP用来控制P0端口的上拉下拉电阻设置寄存器。
表4.6.6CLKCON寄存器
表4.6.7SLEEP寄存器
表4.6.8PERCFG寄存器
表4.6.9U0CSR寄存器
表4.6.10U0GCR寄存器
表4.6.11U0BUF和U0BAUD寄存器
以上图表列举了和CC2431处理器串口相关寄存器,用来初始化串口0配置的。
详情见软件代码部分。
3.2软件设计
关键源码分析:
设置CC2430IO状态,模拟温湿度传感器时序,其中将数据线上拉电阻功能打开:
#defineSensor_DATA_IN()do{P0DIR&
=~(0X02<
<
0);
P0INP&
=~0X02;
P2INP&
=~(0x01<
5);
}while(0);
#defineSensor_CLK_IN()do{P0DIR&
=~(0X01<
#defineSensor_DATA_OUT()do{P0DIR|=(0X02<
#defineSensor_CLK_OUT()do{P0DIR|=(0X01<
#defineset_DATA_1()(P0_1=1)
#defineset_DATA_0()(P0_1=0)
#defineset_CLK_1()(P0_0=1)
#defineset_CLK_0()(P0_0=0)
#defineIS_DATA_1()(P0_1)
#defineIS_CLK_1()(P0_0)
温湿度采集模拟时序代码参见工程代码sht11.c文件,其中大部分采用官方提供DEMO代码完成,稍加时序控制即可使用。
函数定于如下:
voiduDelay(uintn);
void_nop_(void);
voids_connectionreset(void);
chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);
voidcalc_sth11(float*p_humidity,float*p_temperature);
floatcalc_dewpoint(floath,floatt);
chars_read_byte(unsignedcharack);
chars_write_byte(unsignedcharvalue);
主函数如下:
/****************************************************************
*函数功能:
主函数
*入口参数:
无
*返回值:
无
*说明:
****************************************************************/
voidmain(void)
{
valuehumi_val,temp_val;
unsignedcharerror=0,checksum;
chartemp_buf[10];
charhumi_buf[10];
floatdew_point;
//初始化串口波特率57600
initUART();
Init_IO();
//P1、P0IO初始化
Delay(200);
Sensor_DATA_OUT();
set_DATA_0();
Sensor_CLK_OUT();
set_CLK_0();
s_connectionreset();
//复位温湿度传感器
Delay(20);
//循环采集温湿度状态并通过串口发送数据
while
(1)
{
error=0;
LED2=1;
error+=s_measure((unsignedchar*)&
humi_val.i,&
checksum,HUMI);
//measurehumidity
Delay(50000);
temp_val.i,&
checksum,TEMP);
//measuretemperature
if(error!
=0){s_connectionreset();
UartTX_Send_String("
error"
5);
LED1=0;
Delay(50000);
LED1=1;
}
else
{
LED2=0;
humi_val.f=(float)humi_val.i;
temp_val.f=(float)temp_val.i;
//进行温湿度原始数据参照校准
calc_sth11(&
humi_val.f,&
temp_val.f);
//calculatehumidity,temperature
dew_point=calc_dewpoint(humi_val.f,temp_val.f);
//calculatedewpoint
//格式化数据输出
sprintf(humi_buf,(char*)"
%f"
(float)humi_val.f);
sprintf(temp_buf,(char*)"
(float)temp_val.f);
UartTX_Send_String("
temp:
"
UartTX_Send_String(temp_buf,sizeof(temp_buf));
humi:
UartTX_Send_String(humi_buf,sizeof(humi_buf));
UartTX_Send_word(0x0A);
UartTX_Send_word(0x0D);
//Delay(50000);
}
}
}
程序通过配置CC2431处理器的IOP0_0、P0_1引脚来模拟温湿度传感器时序,进而取得传感器的状态,如果顺利采集到温湿度状态,则LED2闪烁且在串口输出相应的温湿度数据。
4.实验步骤
♦使用USB仿真器连接PC机和ZIGBEE(CC2431)模块,将ZIGBEE调试板的电源拨到3.3V段,打开ZIEBEE模块开关供电。
将系统配套串口线一端连接PC机,一端连接ZIGBEE调试板的串口上。
将系统配套温湿度传感器连接到ZIGBEE模块的主板上,连接J5线排端,且保证RJ1电阻跳线跳至3.3V供电端。
勿要连接错!
。
♦启动IAR开发环境,新建工程,将Exp6实验工程中代码拷贝到新建工程中。
♦在IAR开发环境中编译、运行、调试程序。
♦使用PC机自带的超级终端连接串口,将超级终端设置为串口波特率57600、8位、无奇偶奇校验、无硬件流模式。
运行程序观察串口数据输出。
♦备注:
所有传感器实验,在运行测试时候,请使用5V电源给ZIGBEE供电,否则传感器供电将不足。
即使用仿真器下载万程序后,将ZIGBEE调试板电源开关拨至5V供电,下载调试时候再改回3.3V供电。