这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 447,LCD 看看这段关于447片内LCD代码为什么但K为3以后就不能正常显示

共2条 1/1 1 跳转至

447,LCD 看看这段关于447片内LCD代码为什么但K为3以后就不能正常显示了???不能

院士
2006-09-17 18:14:16     打赏
447,LCD 看看这段关于447片内LCD代码为什么但K为3以后就不能正常显示了???不能



关键词: 看看     这段     关于     447片内     代码     为什么     以后         

院士
2006-12-22 22:43:00     打赏
2楼
问 #include "MSP430x44x.h"
void initLCD( void );
void displayLCD(char *displp);
long int j;
char *LCD = LCDMEM;
char keybuf [4];
char *keylp=keybuf;


void main(void)
{
char u;
keylp = keybuf;
WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer
SCFI0 |= FN_4; // x2 DCO frequency, 8MHz nominal DCO
SCFQCTL = 121; // (121+1) x 32768 x 2 = 7.99 Mhz
FLL_CTL0 = DCOPLUS + XCAP18PF; // set load capacitance for 32k xtal
P1DIR = 0x00; // set port to outputs
P2DIR = 0x00; // set port to outputs
P3DIR = 0x00; // set port to outputs
P4DIR = 0x00; // set port to outputs
P5DIR = 0x00; // set port to outputs
P6DIR = 0x00; // set port to outputs
P5SEL = 0xFF;
//延迟
for(j=0;j<350000;j++)
{
_NOP();
}

initLCD ();

for (u=0;u<4;u++)
{
keybuf [u]=u;
}
displayLCD(keylp);
while(1);
}

//////////////////////////////////////////////////////////////////////////////////////////
//本函数功能为初试化片内LCD
// 依赖性:无
// 前提条件:1。片内必须有LCD
// 2。ACLK 必须是低速晶体,32,768以下,
// 参数:无
// 返回值:无
///////////////////////////////////////////////////////////////////////////////////////////
void initLCD(void )
{
char i=0;
// 初试化 LCD initialize LCD driver (static mode) //
LCDCTL = 0xA5; //static LCD, segments = 0 - 31
BTCTL = BTFRFQ1+BTFRFQ0; // BTCTL ;set fLCD = ACLK / 256 BTFRFQ1
// 清楚 LCD 存储器 clear LCD memory to clear display //
for (i=0; i<20; i++)
{
LCD[i] =0x00;
}
}

//////////////////////////////////////////////////////////////////////////////////////////
//本函数功能为将KRYBUF中的数据读出放到LCDRAM单元
// 依赖性:无
// 前提条件:1。片内LCD必须是已经被初试化,
// 2。无
// 参数:KEYBUF 的地址指针
// 返回值:无(1字节)
///////////////////////////////////////////////////////////////////////////////////////////
void displayLCD(char *displp)
{
char h,k,i;
char digit[40] = {
0x11, 0x11, 0x11, 0x00, // "0"
0x10, 0x01, 0x00, 0x00, // "1"
0x11, 0x10, 0x01, 0x01, // "2"
0x11, 0x11, 0x00, 0x01, // "3"
0x10, 0x01, 0x10, 0x01, // "4"
0x01, 0x11, 0x10, 0x01, // "5"
0x01, 0x11, 0x11, 0x01, // "6"
0x11, 0x01, 0x00, 0x00, // "7"
0x11, 0x11, 0x11, 0x01, // "8"
0x11, 0x11, 0x10, 0x01, // "9"
};
h=0;
i=0;
k=0;
while(h<16)
{
for (i=0; i<4; i++)
{
LCD[h+i] = digit[((*(displp+k))* 4)+i]; // K等于3以后就不显示了
}
h=h+4;
k++;
}
h=0;
k=0;
}

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]