实训四 温湿度传感器实验.doc_第1页
实训四 温湿度传感器实验.doc_第2页
实训四 温湿度传感器实验.doc_第3页
实训四 温湿度传感器实验.doc_第4页
实训四 温湿度传感器实验.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

更多精品资料请关注:歌楼听雨/andyliujiannan(下载后请将页眉去掉即可)实训 温湿度传感器实验1. 实验环境 硬件:zigbee(cc2431)模块,zigbee下载调试板,配套温湿度传感器,usb仿真器,pc机 软件:iar embedded workbench for mcs-512. 实验内容 阅读up-cup iot-6410系统zigbee模块硬件部分文档,熟悉zigbee模块相关硬件接口。 阅读shtx0温湿度传感器芯片文档,熟悉该传感器的使用及时序操作。 使用iar开发环境设计程序,利用cc2431的io中断来监测温湿度传感器的状态。3. 实验原理3.1 硬件接口原理 zigbee(cc2431)模块led硬件接口图4.6.1 led硬件接口zigbee(cc2431)模块硬件上设计有2个led灯,用来编程调试使用。分别连接cc2431的p1_0、p、1_1两个io引脚。从原理图上可以看出,2个led灯共阳极,当p1_0、p1_1引脚为低电平时候,led灯点亮。 温湿度传感器模块硬件接口图4.6.2 温湿度传感器硬件接口图4.6.3 zigbee模块主板j5接口系统配套的温湿度传感器,与zigbee模块的j5排线相连,这样我们可以知道,温湿度传感器模块的时钟线与zigbee模块的p0_0 io引脚相连,温湿度传感器的数据线与p0_1 io引脚相连。因此我们需要在代码中将相应引脚进行输入输出控制模拟该传感器时序,来监测温湿度传感器状态。 cc2431 相关寄存器表4.6.1 p0dir寄存器表4.6.2 p0inp寄存器表4.6.3 p2inp寄存器表4.6.4 p1寄存器表4.6.5 p1dir寄存器以上图表列出了关于cc2431处理器的p0和p1 io端口相关寄存器,其中p0dir、p1dir为io方向寄存器,p0inp为p0端口输入配置寄存器,p2inp用来控制p0端口的上拉下拉电阻设置寄存器。表4.6.6 clkcon寄存器表4.6.7 sleep寄存器表4.6.8 percfg寄存器表4.6.9 u0csr寄存器表4.6.10 u0gcr寄存器表4.6.11 u0buf和u0baud寄存器以上图表列举了和cc2431处理器串口相关寄存器,用来初始化串口0配置的。详情见软件代码部分。3.2 软件设计关键源码分析:设置cc2430 io 状态,模拟温湿度传感器时序,其中将数据线上拉电阻功能打开:#define sensor_data_in() dop0dir &= (0x020);p0inp &= 0x02;p2inp &= (0x015);while(0); #define sensor_clk_in() dop0dir &= (0x010);while(0); #define sensor_data_out() dop0dir |= (0x020);p0inp &= 0x02;p2inp &= (0x015);while(0);#define sensor_clk_out() dop0dir |= (0x010);while(0);#define set_data_1() (p0_1 = 1)#define set_data_0() (p0_1 = 0)#define set_clk_1() (p0_0 = 1)#define set_clk_0() (p0_0 = 0)#define is_data_1() ( p0_1 )#define is_clk_1() ( p0_0 )温湿度采集模拟时序代码参见工程代码sht11.c文件,其中大部分采用官方提供demo代码完成,稍加时序控制即可使用。函数定于如下:void udelay(uint n);void _nop_(void);void s_connectionreset(void);char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode);void calc_sth11(float *p_humidity ,float *p_temperature);float calc_dewpoint(float h,float t);char s_read_byte(unsigned char ack);char s_write_byte(unsigned char value);主函数如下:/*函数功能 :主函数*入口参数 :无*返 回 值 :无*说 明 :无*/void main(void) value humi_val,temp_val; unsigned char error=0,checksum; char temp_buf10; char humi_buf10; float dew_point; / 初始化串口 波特率57600inituart(); init_io();/ p1、p0 io初始化 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(unsigned char*) &humi_val.i,&checksum,humi); /measure humidity delay(50000); error+=s_measure(unsigned char*) &temp_val.i,&checksum,temp); /measure temperature delay(50000); 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); /calculate humidity, temperature dew_point=calc_dewpoint(humi_val.f,temp_val.f); /calculate dew point delay(50000); / 格式化数据输出 sprintf(humi_buf, (char *)%f, (float)humi_val.f); sprintf(temp_buf, (char *)%f, (float)temp_val.f); uarttx_send_string(temp:,5); uarttx_send_string(temp_buf,sizeof(temp_buf); uarttx_send_string(humi:,5); uarttx_send_string(humi_buf,sizeof(humi_buf); uarttx_send_word(0x0a); uarttx_send_word(0x0d); /delay(50000); 程序通过配置cc2431 处理器的io p0_0、p0_1引脚来模拟温湿度传感器时序,进而取得传感器的状态,如果顺利采集到温湿度状态,则led2闪烁且在串口输出相应的温湿度数据。4. 实验步骤 使用usb仿真器连接pc机和zigbee(cc2431)模块,将zigbee调试板的电源拨到3.3v段,打开ziebee模块开关供电。将系统配套串口线一端连接pc机,一端连接zigbee调试板的串口上。将系统配套温湿度传感器连接到zigbee模块的主板上,连接j5线排端,且保证rj1电阻跳线跳至3.3v供电端。勿要连接错!。 启动iar开发环境,新建工程,将exp6实验工程中代码拷贝到新建工程中。 在iar开

温馨提示

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

评论

0/150

提交评论