[讨论] 新人求罩!!MSP430内部的温度传感器温度无法显示到LCD上

Aruba   2015-6-30 09:02 楼主
程序是MSP430F149的,现在想用在MSP430F437上,然后把内部温度传感器的温度显示在LCD上,不知道怎么做,求大神笼罩

回复评论 (19)

奉上代码
#include
unsigned int long temp;
unsigned int long TemperF;                                        //华氏温度
unsigned int long TemperC;                                        //摄氏温度
char digit[10]={0X5F,0X50,0X3D,0X79,0X72,0X6B,0X6F,0X51,0X7F,0X7B};
void main(void) {
    WDTCTL = WDTPW + WDTHOLD;                          //关闭系统看门狗
    ADC12CTL0 = SHT0_8 + REFON + ADC12ON;           //内部1.5V参考电压,打开ADC12模块,设置采样保持定时器
    ADC12CTL1 = SHP;                                               //采使用采样定时器
    ADC12MCTL0 = SREF_1 + INCH_10;                        //参考电压和通道选择
    ADC12IE = BIT0;                                                  //ADC12MEM0
    ADC12CTL0 |= ENC;                                              //允许转换

    _BIS_SR(GIE);                                                     //开启系统中断

    while(1) {
        ADC12CTL0 |= ADC12SC;                                  //开始采样并AD转换

        //oF = ((x/4096)*1500mV)-923mV)*1/1.97mV = x*761/4096 - 468
        //IntDegF = (ADC12MEM0 - 2519)* 761/4096
        TemperF = (temp - 2519) * 761;
        TemperF = TemperF / 4096;                            //简化的华氏温度转换公式

        //oC = ((x/4096)*1500mV)-986mV)*1/3.55mV = x*423/4096 - 278
        //IntDegC = (ADC12MEM0 - 2692)* 423/4096
        TemperC = (temp - 2692) * 423;
        TemperC = TemperC / 4096;                           //简化的摄氏温度转换公式
        //LCDMEM[0]=digit[temp/1000];
        //LCDMEM[1]=digit[(temp%1000)/100];
        //LCDMEM[2]=digit[(temp%100)/10];
        //LCDMEM[3]=digit[temp%10];
        _NOP();                                                         //加入断点可用来观察IntDegF和IntDegC结果
    }
}

#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void) {
    temp = ADC12MEM0;                                          //保存转换结果
}
点赞  2015-6-30 09:03
对比下结构图,看哪些控制寄存器变了,这样最直接
点赞  2015-6-30 09:13
数码管不是LCD


换型号之后内置的温度传感器的ADC通道、用法等信息都与原来不一样,需要重新计算




点赞  2015-6-30 09:21
引用: 数码小叶 发表于 2015-6-30 09:13
对比下结构图,看哪些控制寄存器变了,这样最直接

看了下都差不多啊
点赞  2015-6-30 09:31
引用: qiushenghua 发表于 2015-6-30 09:21
数码管不是LCD


换型号之后内置的温度传感器的ADC通道、用法等信息都与原来不一样,需要重新计算


...

版主大大 我现在用的是LCD显示屏,只是先想把转化前的temp显示出来
点赞  2015-6-30 09:43
引用: Aruba 发表于 2015-6-30 09:31
看了下都差不多啊

那结过出来没?
点赞  2015-6-30 09:44
引用: 数码小叶 发表于 2015-6-30 09:44
那结过出来没?

还是只能按程序中的方法 加断点观察 没能显示在LCD上
点赞  2015-6-30 09:46
引用: Aruba 发表于 2015-6-30 09:46
还是只能按程序中的方法 加断点观察 没能显示在LCD上

看看IO和之前是否一样,先烧录进去看看,到底是否和之前测试的结果一样。
点赞  2015-6-30 10:15
引用: Aruba 发表于 2015-6-30 09:43
版主大大 我现在用的是LCD显示屏,只是先想把转化前的temp显示出来

你那明显是数码管的程序呀!!!
莫非你使用的是段式液晶?那可能没错。
你好好检查一下LCD的驱动吧
点赞  2015-6-30 10:18
引用: Aruba 发表于 2015-6-30 09:46
还是只能按程序中的方法 加断点观察 没能显示在LCD上

你的意思是程序结果现在没问题,就是不能显示在液晶屏上?
点赞  2015-6-30 10:23
引用: 数码小叶 发表于 2015-6-30 10:23
你的意思是程序结果现在没问题,就是不能显示在液晶屏上?

他程序里根本就没有驱动液晶屏的代码,能显示那才叫见鬼了呢
点赞  2015-6-30 10:49
引用: huaiqiao 发表于 2015-6-30 10:15
看看IO和之前是否一样,先烧录进去看看,到底是否和之前测试的结果一样。

已解决 谢谢
点赞  2015-6-30 10:55
引用: qiushenghua 发表于 2015-6-30 10:18
你那明显是数码管的程序呀!!!
莫非你使用的是段式液晶?那可能没错。
你好好检查一下LCD的驱动吧

已解决 多谢
点赞  2015-6-30 10:56
引用: Aruba 发表于 2015-6-30 10:55
已解决 谢谢

怎么解决的?
点赞  2015-6-30 10:58
引用: huaiqiao 发表于 2015-6-30 10:58
怎么解决的?

LCD初始化忘加了
点赞  2015-6-30 11:59
引用: Aruba 发表于 2015-6-30 11:59
LCD初始化忘加了

我说呢,你贴出来的程序中也没有LCD的相关程序啊。
点赞  2015-6-30 12:45
引用: qiushenghua 发表于 2015-6-30 10:49
他程序里根本就没有驱动液晶屏的代码,能显示那才叫见鬼了呢

他那是全部代码啊 我还以为是部分代码呢
点赞  2015-6-30 14:41
你好 ,我的问题与你一样,请问你是怎样解决的?谢谢
点赞  2015-8-5 11:27
引用: 美人美人 发表于 2015-8-5 11:27
你好 ,我的问题与你一样,请问你是怎样解决的?谢谢

看上面
点赞  2015-8-15 15:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复