注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
hjl240的个人空间 https://home.eeworld.com.cn/space-uid-421788.html [收藏] [复制] [分享] [RSS]
日志

(msp430)单通道单次转换对内部温度传感器的操作

已有 2070 次阅读2012-8-17 19:23

msp430中的ADC12的通道10连接到内部模拟温度传感器上,可以测量msp430芯片温度,并且把温度显示在12864液晶上。
    下面是调试后的程序。


#include

unsigned int long temp;
unsigned int long TemperF;  //华氏温度
unsigned int long TemperC;    //摄氏温度

#define uchar unsigned char
#define uint unsigned int

uchar a[]={\"华氏温度: \"};
uchar b[]={\"摄氏温度: \"};

//省略12864部分的程序

void main()
{
        WDTCTL=WDTPW+WDTHOLD;
        uint i;
        initsys();//msp430 系统初始化
        PSB_0;//液晶串行
        init();//液晶初始化

        ADC12CTL0=SHT0_8+REFON+ADC12ON;//内部1.5v参考电压,打开adc12,设置采样保持时间
        ADC12CTL1=SHP;//使用采样定时器
        ADC12MCTL0=SREF_1+INCH_10;//参考电压和通道选择
        ADC12IE=BIT0;//ADC12MEM0  具有中断能力
        ADC12CTL0|=ENC;  //允许转换

        _EINT();  //开启系统中断
        while(1)
        {
                ADC12CTL0|=ADC12SC; //开启采样并AD转换


                TemperF=(temp-2519)*761;
                TemperF=TemperF/4096;  //简化的华氏温度
                TemperC=(temp-2692)*423;
                TemperC=TemperC/4096;//简化的摄氏温度

                send_com(0x80);
                for(i=0;i<10;i++)
                        send_data(a);
                display((uint)TemperF);//12864显示华氏温度
                send_com(0x90);
                for(i=0;i<10;i++)
                        send_data(b);
                display((uint)TemperC);//12864显示摄氏温度
        }
       
}

#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{
        temp=ADC12MEM0;
}
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章