辜渝傧

13037102709

027-87870986

教学实训

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

无线传感网络实训|实验2.5 ADC采集实验

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

1.实验目的

1)、通过实验掌握 CC2530 芯片串口配置与使用
2)、集到内部温度传感器信息通过串口发送到上位机

2.实验设备

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

3.实验相关电路图

实验2.5 ADC采集实验
如图所示,J1接数字温湿度传感器DHT11, DHT11是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。DHT11所测温湿度值经由P01接到ZIGBEE通讯模块CC2530单片机的P0.1口。

4.实验相关寄存器



       P0_2、P0_3配置为外设功能时:P0_2为 RX,P0_3为TX. USART0和 USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI模式。两个USART具有同样的功能,可以设置在单独的I/O引脚。此种串口设计是没有流控功能的。

5.源码分析

#include "ioCC2530.h"
#include "initUART_Timer.h"
#include "stdio.h"
#include "string.h"
#include "LCD.h"
INT16 AvgTemp;
/****************************************************************
温度传感器初始化函数
****************************************************************/
void initTempSensor(void){
DISABLE_ALL_INTERRUPTS(); //关闭所有中断
InitClock(); //设置系统主时钟为 32M
*((BYTE __xdata*) 0x624B) = 0x01; //开启温度传感器,TR0 的地址为 0x624B
*((BYTE __xdata*) 0x61BD) = 0x01; //将温度传感器与 ADC 连接起来,ATEST 的地址为0x61BD
}
/****************************************************************
读取温度传感器 AD 值函数
****************************************************************/
INT8 getTemperature(void){
UINT8 i;
UINT16 AdcValue;
UINT16 value;
AdcValue = 0;
for( i = 0; i < 4; i++ )
{
ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS); // 使
用 1.25V 内部电压,12 位分辨率,AD 源为:温度传感器
ADC_SAMPLE_SINGLE(); //开启单通道 ADC
while(!ADC_SAMPLE_READY()); //等待 AD 转换完成
value = ADCL >> 2; //ADCL 寄存器低 2 位无效
value |= (((UINT16)ADCH) << 6);
AdcValue += value; //AdcValue 被赋值为 4 次 AD 值之和
}
value = AdcValue >> 2; //累加除以 4,得到平均值
return ADC14_TO_CELSIUS(value); //根据 AD 值,计算出实际的温度
}
/****************************************************************
主函数
****************************************************************/
void main(void)
{
char i;
char TempValue[30]={0};
InitUART0(); //初始化串口
initTempSensor(); //初始化 ADC
LCD_Init();//初始化 LCD
LCD_CLS();
LCD_welcome();
while(1)
{
AvgTemp = 0;
for(i = 0 ; i < 64 ; i++)
{
AvgTemp += getTemperature();
AvgTemp >>= 1; //每次累加后除 2.
}
memset(TempValue, 0, 30);
sprintf(TempValue, "ADTestRead = %dC", (INT8)AvgTemp);
UartTX_Send_String(TempValue,strlen(TempValue));
UartTX_Send_String("\n",1);
LCD_P8x16Str(0, 4, (unsigned char*)TempValue);
Delay(50000);
}
}

6.实验现象

       COM3 是我的 USB 转串口在电脑上生成的,查看方法“我的电脑”->“设备管理器”,如图:

实验2.5 ADC采集实验实验2.5 ADC采集实验


上一篇:无线传感网络实训|实验2.4 定时器控制实验

下一篇:无线传感网络实训|实验2.6 外部中断控制蜂鸣器