打印
[其他模拟产品-信号链]

读温度源代码

[复制链接]
1307|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yinxiangh|  楼主 | 2014-5-15 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
pangb| | 2014-5-15 21:41 | 只看该作者
//取片内温度传感器为AD 源,并将转换得到温度通过串口送至电脑。
#include "ioCC2430.h"
#include "temp.h"
#include "stdio.h"
#define uint unsigned int
#define ConversionNum 20
//定义控制灯的端口cd wxl
#define led1 P1_0
#define led2 P1_1
void Delay(uint);
void initUARTtest(void);
void UartTX_Send_String(char *Data,int len);
char adcdata[]=" 0.0C ";
//将片内温度传感器AD 转换的结果转换成温度。
#define ADC14_TO_CELSIUS(ADC_VALUE) ( ((ADC_VALUE) >> 4) - 315)
/****************************************************************
* 连续进行4 次AD 转换,
* 将得到的结果求均值后将AD 结果转换为温度返回。****************************************************************/
INT8 getTemperature(void){
UINT8 i;
UINT16 accValue;
UINT16 value;
accValue = 0;
for( i = 0; i < 4; i++ )
{
ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS);
ADC_SAMPLE_SINGLE();
while(!ADC_SAMPLE_READY());
value = ADCL >> 2;
value |= (((UINT16)ADCH) << 6);
accValue += value;
}
value = accValue >> 2; // devide by 4
return ADC14_TO_CELSIUS(value);
}
/****************************************************************
*函数功能 :初始化串口0    *
*入口参数 :无        *
*返 回 值 :无        *
*说    明 :57600-8-n-1      *cd wxl
*将I/0 P10,P11 设置为输出去控制LED, 将系统时钟设为高速晶振,将P0口设置为
*串口0功能引脚,串口0使用UART模式,波特率设为57600,允许接收。在使用串口之前调用。
****************************************************************/
void initUARTtest(void)
{
     CLKCON &= ~0x40;              //晶振
     while(!(SLEEP & 0x40));      //等待晶振稳定
     CLKCON &= ~0x47;            //TICHSPD128分频,CLKSPD不分频
     SLEEP |= 0x04;      //关闭不用的RC振荡器
     PERCFG = 0x00;    //位置1 P0口
     P0SEL = 0x3c;    //P0用作串口
     U0CSR |= 0x80;    //UART方式
     U0GCR |= 10;    //baud_e = 10;
     U0BAUD |= 216;    //波特率设为57600
     UTX0IF = 1;
U0CSR |= 0X40;    //允许接收
     IEN0 |= 0x84;    //开总中断,接收中断
}
/****************************************************************
*将系统时钟设为晶振,设AD 目标为片机温度传感器。
****************************************************************/
Void  initTempSensor(void)
{
DISABLE_ALL_INTERRUPTS();
SET_MAIN_CLOCK_SOURCE(0);
*((BYTE __xdata*) 0xDF26) = 0x80;
}
/****************************************************************
*函数功能 :串口发送字符串函数 cd wxl 。串口发送数据, *data 为发送缓冲的指针,len 为发送数据的长度,在初始化串口后。才可以正常调用。
*入口参数 : data:数据      *
*    len :数据长度            *
*返 回 值 :无              *
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
     U0DBUF = *Data++;
     while(UTX0IF == 0);
     UTX0IF = 0;
}
}
void UartTX_Send_word(char word)
{
     U0DBUF = word;
     while(UTX0IF == 0);
     UTX0IF = 0;
}
/****************************************************************
*函数功能 :主函数      
****************************************************************/
void main(void)
{
    char i;
         char temperature[10];
         INT16 avgTemp;
     initUARTtest();                                //初始化串口cd wxl
     initTempSensor();                              //初始化ADC
         while(1)
         {
           avgTemp = 0;
           for(i = 0 ; i < 64 ; i++)
           {
             avgTemp += getTemperature();
             avgTemp >>= 1;
           }
               sprintf(temperature, (char *)"%dC", (INT8)avgTemp);
             UartTX_Send_String(temperature,4);
             UartTX_Send_word(0x0A);
             Delay(20000);
         }

使用特权

评论回复
板凳
栩栩如生| | 2014-5-15 21:42 | 只看该作者
cc2431的24脚输出1.8v的电压,是cc2431上电后这个脚就输出1.8v的电压?

使用特权

评论回复
地板
栩栩如生| | 2014-5-15 21:43 | 只看该作者
还是要通过软件设置cc2431后,这个脚才输出1.8v的电压?

使用特权

评论回复
5
yinxiangh|  楼主 | 2014-5-15 21:44 | 只看该作者
cc2431开发板连接仿真器后,识别不到器件cc2431是怎么回事?

使用特权

评论回复
6
yinxiangh|  楼主 | 2014-5-15 21:44 | 只看该作者
有点搞不懂啊

使用特权

评论回复
7
morrisk| | 2014-5-15 21:47 | 只看该作者
是不是没安装仿真器的驱动?

使用特权

评论回复
8
chuxh| | 2014-5-15 21:47 | 只看该作者
下载相关数据手册看下

使用特权

评论回复
9
栩栩如生| | 2014-5-15 21:49 | 只看该作者
这个是不是原版的sdk的程序啊

使用特权

评论回复
10
chuxh| | 2014-5-15 21:49 | 只看该作者
估计程序要修改修改才可以用吧,不会直接复制过去就可以用的

使用特权

评论回复
11
zyf部长| | 2014-5-15 21:51 | 只看该作者
精确度高吗?

使用特权

评论回复
12
yinxiangh|  楼主 | 2014-5-15 21:51 | 只看该作者
嗯,嗯,结贴了

使用特权

评论回复
13
shenmu2012| | 2014-5-15 22:30 | 只看该作者
pangb 发表于 2014-5-15 21:41
//取片内温度传感器为AD 源,并将转换得到温度通过串口送至电脑。
#include "ioCC2430.h"
#include "temp ...

我也参考的啦,很不错的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝