9Zigbee实验报告《ADC》
2022-03-14
来源:乌哈旅游
2019—— 2020学年 第二学期
专 业 班 级 学 号 姓 名 日 期 第实验题目 实验(1) 了解ADC采集原理; ADC实验 一页 目的 (2) 熟悉ADC相关寄存器配置和使用方法; (3)掌握CC2530芯片内温度检测方法;使用ADC进行片内温度单次采样,将采集的电压值转换成温度值,通过串口打印至PC机; 实验过程: (1) 根据实验目的分析实验原理; 2) 根据实验原理编写C程序; (3)编译下载c程序,并在实验箱上观察实验结果。 实验步骤: 步骤一:编写ADC采集芯片内部温度程序,编译无误。 步骤二:将CC2530模块与仿真器连接,仿真器用USB连接线与电脑进行连接。 步骤三:将C2530底板的串口,通过USB转TIL模块与PC机相连,打开串口助手。 步骤四:点击“下载”按钮进行编译下载,然后点击全速执行按钮。步骤五:此时串口助手打印出芯片温度信息;否则返回步骤一,直至调试成功。 程序代码: #include #include \"InitUART_Timer.h\" //注意在option里设置路径 #include \"stdio.h\" /**************************************************************** 温度传感器初始化函数 ****************************************************************/ void initTempSensor(void) { DISABLE_ALL_INTERRUPTS(); //关闭所有中断 InitClock(); //设置系统主时钟为 32M TR0=0X01; //set '1' to connectthe temperature sensorto the SOC_ADC. ATEST=0X01; // Enablesthe temperature sensor } /**************************************************************** 读取温度传感器 AD 值函数 ****************************************************************/ float getTemperature(void){ uint value; ADCCON3 = (0x3E); //选择1.25V为参考电压;14位分辨率;对片内温度传感器采样 ADCCON1 |= 0x30; //选择ADC的启动模式为手动 ADCCON1 |= 0x40; //启动AD转化 while(!(ADCCON1 & 0x80)); //等待 AD 转换完成 value = ADCL >> 4; //ADCL 寄存器低 2 位无效cheng'x value |= (((UINT16)ADCH) << 4); return (value-1367.5)/4.5-5; //根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃ //进行温度校正,这里减去5℃(不同芯片根据具体情况校正) } 实验内容与步骤 第二页 /**************************************************************** 主函数 ****************************************************************/ void main(void) { char i; char TempValue[6]; float AvgTemp; InitUART0(); //初始化串口 initTempSensor(); //初始化 ADC while(1) { AvgTemp = 0; for(i = 0 ; i < 64 ; i++) { AvgTemp += getTemperature(); AvgTemp=AvgTemp/2; //每次累加后除 2 } /****温度转换成ascii码发送****/ TempValue[0] = (unsigned char)(AvgTemp)/10 + 48; //十位 TempValue[1] = (unsigned char)(AvgTemp)%10 + 48; //个位 TempValue[2] = '.'; //小数点 TempValue[3] = (unsigned char)(AvgTemp*10)%10+48; //十分位 TempValue[4] = (unsigned char)(AvgTemp*100)%10+48; //百分位 TempValue[5] = '\\0'; //字符串结束符 UartTX_Send_String( TempValue,6); Delayms(2000); //使用32M晶振,故这里2000约等于1S } } 实验内容与步骤 第三页实验内容与步骤 实验总结 教师评定
签字: 年 月 日