This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F425:如何同时显示2个测量值,即2位值和放大器;5位值,7位,分段LCD

Guru**** 662690 points
Other Parts Discussed in Thread: MSP430F425, MSP430FE425
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/630687/msp430f425-how-to-show-2-measurement-values-ie-a-2-digit-value-5-digit-value-on-a-7-digit-segment-lcd-simulataneously

部件号:MSP430F425
主题中讨论的其他部件: MSP430FE425

大家好,

我目前已将 MSP430F425与 5位7段显示屏进行了集成。 我可以计算一个值并在同一个位置显示一个5位数。 现在,我打算在7位数,7段中使用它,其中我想显示2个单独的值,表示2个测量值。

例如:-我 之前显示电压1.0000 至5.0000 ,现在我想在单独测量时显示10.000 至50.000 和00至99mA。

下面是我所使用的代码,它像一个梦一样运行


包括"MSP430FE425.h"
包括"4_5_LCD_40_STATIC_Test.h"

/*变量声明*/
//要显示的数字,
//范围= 0 - 1999 =最大显示
//注意:不要使用前导零

无符号int h;
无符号int索引;
无符号int dig PNTR;


/* LCD映射阵列*/
const char digit [10]=

0xEB,//'0' LCD段
0x60,//'1'
0xC7,//'2'
0xE5,//'3'
0x6C,//'4'
0xAD,//'5'
0xAF,//'6'
0xE0,//'7'
0xEF,//'8'
0xED,//'9'
};


/***************************************
*
*函数:disp_decimal
*说明:小数点打印
*
************* /
void disp_decimal (int value_exp)

如果( value_exp ==(4))
LCDM1 |= 0x10;// 1dp exp -4
否则,如果( value_exp ==(3))
LCDM2 |= 0x10;// 2dp exp -3
else if (value_exp ==(2))
LCDM3 |= 0x10;// 3DP exp -2
否则,如果(value_exp ==(1))
LCDM4 |= 0x10;// 4dp exp -1
}


/***************************************
*
*函数:disp_digit
* args:以十进制形式输入
*
************* /
//void disp_digit (无符号int值,int value_exp)
void disp_digit(无符号长整型值)

unsigned long int value_long;
// char* lcd = LCDMEM;
value_long = dec2bcd (value);//十进制到BCD的转换

用于(index=5; index>0; index--)

LCDMEM[index-1]= Digit[value_long & 0xF];//余数=要显示的表中的字符
value_long >>=4;//向右移动,以便可以显示下一个字符
}
}

/**************************************
*
*函数: dec2bcd
* DESC:十进制到BCD的转换
*
************* /
unsigned long int dec2bcd (unsigned long int值)

//示例:如果值=1.2345万
无符号int a[5];
无符号int h;
unsigned long int bcd_value;

(h = 0;h < 5;h++)

a[h]=值% 10;// 5,4,3,2,1
值/= 10;// 1 23.4123万 ,12,1,0
}

bcd_value = 0x0000;

(h = 5;h > 0;h -)

BCD_值<<= 4;
bcd_value |= A[h-1];
}
返回bcd_value;
}

/**************************************
*
*功能:Clear_LCD_SCR
*说明:清除所有连接的LCD区段
*
************* /

void clean_lcd_scr (unsigned char clean_value)

(索引= 0;索引< 13;索引++)

LCDMEM[index]=清除值;
}
延迟(5万);

}
/***************************************
*函数:延迟
* DESC:提供的延迟
* j *(每个指令的时间)
*
************* /
void delay (无符号int j)

while ((j--));
}

/*************************************************
*函数: LCD_3_5_INIT
* DESC:函数初始化LCD引脚
* args :不适用
返回类型:不适用
*************** /

void lcd_3_5_init( void )

// LCDCTL = LCDP1+LCDP0+LCDSTATIC+LCDON;//静态LCD,S0-S23段
LCDCTL = LCDP1+LCDP0+LCD4MUX+LCDON;// LCD 4MUX初始化
//BTCTL = BTFRFQ1+BTFRFQ0;//设置freqLCD = ACLK/256
BTCTL = 0x00;//设置频率LCD - ACLK/128
//初始化端口引脚
//P1DIR = 0xFF;//将端口设置为输出
//P2DIR = 0xFF;//将端口设置为输出
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vinay,

    我不确定我是否理解您的问题。 您发布的代码是否完成了您要做的事情?

    无论采用哪种方式,我都建议您查看 “使用MSP430TmMCU和细分市场LCD进行设计 ”应用报告,以获得有关如何在具有细分市场LCD的MSP430器件上使用LCD模块的更详细说明。

    此致,

    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Vinay,

    您是否能够解决您遇到的问题? 如果是,您是否可以将解决方案发布到论坛,以供可能遇到相同问题的其他人使用。

    此致,
    Caleb Overbay