本帖最后由 szn1423 于 2012-4-29 15:55 编辑
程序如下
#include<msp430f413.h>
/***********************************************************
* a到g各段对应的二极管
***********************************************************/
#define d 0x08
#define g 0x02
#define b 0x20
#define a 0x10
#define e 0x04
#define c 0x40
#define f 0x01
/************************************************************
* 用宏定义自动生成段码表
*************************************************************/
const char LCD_Tab[]= //LCD段码表,放在ROM中
{
a+b+c+d+e+f, //Displays"0"
b+c, //Displays"1"
a+b+d+e+g, //Displays"2"
a+b+c+d+g, //Displays"3"
b+c+f+g, //Displays"4"
a+c+d+f+g, //Displays"5"
a+f+g+e+c+d, //Displays"6"
a+b+c, //Displays"7"
a+b+c+d+e+f+g, //Displays"8"
a+b+c+d+f+g, //Displays"9"
};
#undef a //清除宏定义,避免与变量名冲突
#undef b
#undef c
#undef d
#undef e
#undef f
#undef g
/*************************************************************
*名称:LCD_DisplayNumber()
*功能:显示一个0到65535的正整数
*入口参数:Number
*出口参数:无
**************************************************************/
void LCD_DisplayNumber(unsigned int Number)
{
char DispBuff[5]; //存放数字拆分结果
char i; //循环变量
for(i=0;i<5;i++) //65535最多5位
{
DispBuff=Number%10; //拆分数字,取余操作
Number/=10; //拆分数字,除10操作
}
for(i=0;i<5;i++)
{
LCD_DisplayDigit(DispBuff,i); //依次显示拆分后的各位数字
}
}
void main( )
{
WDTCTL=WDTPW+WDTHOLD;
FLL_CTL0=XCAP18PF;
LCDCTL=LCDON+LCD4MUX+LCDSG0_1;
P5SEL=0xFC;
while(1)
{
LCD_DisplayNumber(12345);
}
} |