辜渝傧

13037102709

027-87870986

教学实训

您当前的位置:首页 > 教学资源 > 实训方案 >

无线传感网络实训|实验3.3 温湿度采集实验

发布者:唯众    布时间:2020-11-27 15:41:52    点击量:

1.实验目的

1)、通过实验掌握CC2530芯片GPIO的配置方法,熟悉GPIO的输入功能
2)、掌握获取唯众传感器编号的方法,此实验使用温湿度传感器,只读取传感器的编号,对温湿度的数据暂不处理,温湿度传感器的编号是18
3)、掌握DHT11温湿度传感器的驱动程序(单总线方式)

2.实验设备

硬件:PC机1台、ZIGBEE节点板1套(底板、核心板、仿真器、USB 线)
软件:2000/XP/win7 系统,IAR 8.10 集成开发环境

3.实验相关电路图

实验3.3 温湿度采集实验实验3.3 温湿度采集实验

4.实验相关寄存器

5.源码分析

#include <ioCC2530.h>
#include <string.h>
#include <stdio.h>
 
#include "DHT11.h"
#include "OLED.h"
 
void clock_setup(void)
{
       CLKCONCMD &= ~0x40;                         //设置系统时钟源为32MHZ晶振
    while(CLKCONSTA & 0x40);                    //等待晶振稳定
    CLKCONCMD &= ~0x47;                         //设置系统主时钟频率为32MHZ
}
void init_sensor_io(void)
{
       //1.设置IO为普通IO
       P0SEL  |= 0xC0;
       P1SEL  |= 0x07;
      
       //2.设置编码口为输入
       P0DIR &= ~0xC0;
       P1DIR &= ~0x07;
}
 
uchar get_sensor_id(void)
{            
       volatile uchar temp = P0_6<<4|P0_7<<3|P1_0<<2|P1_1<<1|P1_2;    
       return temp;
}
void main(void)

       uint temp16;
    uchar buf[16];
       clock_setup();                         //系统时钟设置,精确延时必须要设置
    Delay_ms(1000);          //让设备稳定
      
       port_init();
       initial_lcd(); 
       init_sensor_io();
      
       clear_screen();                                                            //清屏
       disp_string_8x16_16x16(1,1,"武汉唯众智创科技");       //显示字符串,括号里的参数分别为(PAGE,列,字符串指针)
       disp_string_8x16_16x16(3,1,"有限公司荣耀创造");
       Delay_ms(500);
      
    while(1)
    {                
        temp16 = DHT11();                                      //获取温湿度
 
              clear_screen();                                                     //清屏
              sprintf(buf,"编号:%d",get_sensor_id());
              disp_string_8x16_16x16(1,1,buf);                      //显示字符串,括号里的参数分别为(PAGE,列,字符串指针)
              sprintf(buf,"温度:%d 湿度:%d",temp16>>8,(uchar)temp16);
              disp_string_8x16_16x16(3,1,buf);        
        Delay_ms(1000);                                              //延时,1S读取1次
    }
}

6.实验现象

       蓝色OLED第一行显示“编号:18”,第二行显示“温度:28 湿度:54”,并且每秒刷新一下,如图所示:
实验3.3 温湿度采集实验


上一篇:无线传感网络实训|实验3.2 传感器编号实验

下一篇:无线传感网络实训|实验3.4 红外发送实验