主题中讨论的其他部件: 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;//将端口设置为输出
}