共2条
1/1 1 跳转至页
447,LCD 看看这段关于447片内LCD代码为什么但K为3以后就不能正常显示了???不能

问
#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;
}
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 跳转至页
回复
有奖活动 | |
---|---|
分享开发笔记,赚取电动螺丝刀(便携轻巧与无刷电机两款可选) | |
看《关键跃升》,聊聊工作心法、动力、能力、沟通与协作,从五个方面深入交流你的工作心得 | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
我要给自己挣一部逻辑分析仪 | |
用知识换取送给亲朋的礼物,做个浪漫的开发者 | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 |
打赏帖 | |
---|---|
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 | |
【换取手持示波器】树莓派PICO逻辑分析仪被打赏16分 |