基于EB2530单片机,采集到内部温度传感器信息通过串口发送到上位机。
单片机源程序如下:
- /****************************************************************************
- * 文 件 名: main.c
- * 作 者: Andy
- * 修 订: 2013-01-09
- * 版 本: 1.0
- * 描 述: ADC把芯片温度通过串口发给电脑,部分芯片误差较大需校准
- * 手摸芯片温度有明显变化
- ****************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include "UartTimer.h"
- /****************************************************************************
- * 名 称: InitSensor()
- * 功 能: 温度传感器初始化函数
- * 入口参数: 无
- * 出口参数: 无
- ****************************************************************************/
- void InitSensor(void)
- {
- DISABLE_ALL_INTERRUPTS(); //关闭所有中断
- InitClock(); //设置系统主时钟为 32M
- TR0=0x01; //设置为1来连接温度传感器到SOC_ADC
- ATEST=0x01; //使能温度传感
- }
- /****************************************************************************
- * 名 称: GetTemperature()
- * 功 能: 获取温度传感器 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 位无效,由于他只有12位有效,ADCL寄存器低4位无效。网络上很多代码这里都是右移两位,那是不对的
- value |= (((uint)ADCH) << 4);
-
- return (value-1367.5)/4.5-5; //根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃
- //进行温度校正,这里减去5℃(不同芯片根据具体情况校正)
- }
- /****************************************************************************
- * 程序入口函数
- ****************************************************************************/
- void main(void)
- {
- char i;
- float fSum, AvgTemp;
- char strTemp[6];
-
- InitUART(); //初始化串口
- InitSensor(); //初始化 ADC
-
- while(1)
- {
- fSum = 0;
- for (i=0; i<64; i++)
- {
- fSum += GetTemperature(); //取64次温度总和
- }
- AvgTemp = fSum/64; //取64次温度平均数
-
- memset(strTemp, 0, 6);
- sprintf(strTemp,"%.02f", AvgTemp);//将浮点数转成字符串,保留2位小数位
- UartSendString(strTemp, 5); //通过串口发给电脑显示芯片温度
- DelayMS(1000); //延时
- }
- }
复制代码
所有资料51hei提供下载:
ADC.zip
(45.43 KB, 下载次数: 10)
|