共2条
1/1 1 跳转至页
F449,LCD F449的LCD显示问题
问
我使用430F449在做设计,需要使用到1/4DUTY的LCD显示,
现在碰到的问题是,我在debug状态下已经看到LCDMEM[0],LCDMEM[1],LCDMEM
[2]的值有改变,但是LCD并没有显示。我的程序如下:(因为LCD连线的问题,我自己做的显示编码)
char Group1[10] = {
//[ p c g b d e f a ]
//091H~093H
0x5F, /* "0" LCD segments a+b+c+d+e+f = 0101 1111 */
0x50, /* "1" LCD segments b+c */
0x3D, /* "2" LCD segments a+b+d+e+g */
0x79, /* "3" LCD segments a+b+c+d+g */
0x72, /* "4" LCD segments b+c+f+g */
0x6B, /* "5" LCD segments a+c+d+f+g */
0x6F, /* "6" LCD segments a+c+d+e+f+g */
0x51, /* "7" LCD segments a+b+c */
0x7F, /* "8" LCD segments a+b+c+d+e+f+g */
0x7B /* "9" LCD segments a+b+c+d+f+g */
};
void DispLockTime(int time1,int time2,int time3) //display lock time setting
{
LCDMEM[12] = Group1[time1];
LCDMEM[11] = Group1[time2];
LCDMEM[10] = Group1[time3];
}
void main(viod)
{
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
FLL_CTL0 |= XCAP14PF; // Configure load caps
LCDCTL = LCDON + LCD4MUX + LCDP2; // STK LCD 4Mux, S0-S17
BTCTL = BTFRFQ1; // STK LCD freq
P5SEL = 0xFC; // Common and Rxx all selected
StartInit();
TACTL = TASSEL1 + TACLR; // SMCLK, clear TAR
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 5000;
P4DIR |= 0xff; // P5.1 output
P4OUT=0x00;
P6DIR |=0XFF;
P6OUT=0X06;
TACTL |= MC1; // Start Timer_A in continuous mode
_EINT(); // Enable interrupts
ClrDisp();
DispLockTime(4,5,6);
for (;;)
{
for (i=0; i<3; ++i) // Display "210"
LCDMEM[i] = Group1[i];
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
ulcount++;
if(ulcount>5)
{
P4OUT ^= 0xf7; // Toggle P5.1
P6OUT ^= 0X06;
//CCR0 += 50000; // Add Offset to CCR0
ulcount=0;
}
}
void StartInit(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer
FLL_CTL0 = XCAP18PF; // set load capacitance for 32k xtal
FLL_CTL1 = FLL_CTL1 & ~XT2OFF; // clear bit = high freq xtal on
do // loop until flag is clear
{
FLL_CTL0 = FLL_CTL0 & ~XT2OF; // clear high freq oscillator fault flag
for (i = 50000; i; i--); // delay for crystal to start and FLL to lock
}
while (FLL_CTL0 & XT2OF); // test high freq oscillator fault flag
// if flag remained clear then -
FLL_CTL1 = SELS; // switch SMCLK = HF xtal
P1DIR = 0x32; // P1.1, P1.4 & P1.5 to outputs
P1SEL = 0x32; // P1.1, P1.4 & P1.5 functions to output
}
如果外接的晶体振荡器没有起振的话,会不会对LCD的显示有影响?或者是我在配置430的初始化环境的时候出错了?
我刚刚开始使用430,请各位高手不吝指教! 答 1: LCD时钟呢? 答 2: BTCTL = BTFRFQ1; // STK LCD freq
我用他的基本定时器啊!
还有要怎么设置吗? 答 3: 请大家帮我看看啊!
谢谢各位了! 答 4: 基本定时器是使用ACLK来作为时钟来源的,
但是我的板子上并没有连接XIN和XOUT,这样会有影响吗? 答 5: 晶振是必须的。
不良也可能是其他原因。测量如下电压是否正常:1、r03-r33,每个电阻分压约1/3vcc,2、com和地的压差,用万用表测约1/2vcc,seg和地也是,如果用示波器可以看到梯形波。
如果有不正常的,先排除虚焊,再查程序,再怀疑芯片坏了。 答 6: 引用:
现在碰到的问题是,我在debug状态下已经看到LCDMEM[0],LCDMEM[1],LCDMEM
[2]的值有改变,但是LCD并没有显示。我的程序如下:(因为LCD连线的问题,我自己做的显示编码)
char Group1[10] = {
//[ p c g b d e f a ]
//091H~093H
0x5F, /* "0" LCD segments a+b+c+d+e+f = 0101 1111 */
0x50, /* "1" LCD segments b+c */
0x3D, /* "2" LCD segments a+b+d+e+g */
0x79, /* "3" LCD segments a+b+c+d+g */
0x72, /* "4" LCD segments b+c+f+g */
0x6B, /* "5" LCD segments a+c+d+f+g */
0x6F, /* "6" LCD segments a+c+d+e+f+g */
0x51, /* "7" LCD segments a+b+c */
0x7F, /* "8" LCD segments a+b+c+d+e+f+g */
0x7B /* "9" LCD segments a+b+c+d+f+g */
};
void DispLockTime(int time1,int time2,int time3) //display lock time setting
{
LCDMEM[12] = Group1[time1];
LCDMEM[11] = Group1[time2];
LCDMEM[10] = Group1[time3];
}
void main(viod)
{
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
FLL_CTL0 |= XCAP14PF; // Configure load caps
LCDCTL = LCDON + LCD4MUX + LCDP2; // STK LCD 4Mux, S0-S17
BTCTL = BTFRFQ1; // STK LCD freq
P5SEL = 0xFC; // Common and Rxx all selected
StartInit();
TACTL = TASSEL1 + TACLR; // SMCLK, clear TAR
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 5000;
P4DIR |= 0xff; // P5.1 output
P4OUT=0x00;
P6DIR |=0XFF;
P6OUT=0X06;
TACTL |= MC1; // Start Timer_A in continuous mode
_EINT(); // Enable interrupts
ClrDisp();
DispLockTime(4,5,6);
for (;;)
{
for (i=0; i<3; ++i) // Display "210"
LCDMEM[i] = Group1[i];
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
ulcount++;
if(ulcount>5)
{
P4OUT ^= 0xf7; // Toggle P5.1
P6OUT ^= 0X06;
//CCR0 += 50000; // Add Offset to CCR0
ulcount=0;
}
}
void StartInit(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer
FLL_CTL0 = XCAP18PF; // set load capacitance for 32k xtal
FLL_CTL1 = FLL_CTL1 & ~XT2OFF; // clear bit = high freq xtal on
do // loop until flag is clear
{
FLL_CTL0 = FLL_CTL0 & ~XT2OF; // clear high freq oscillator fault flag
for (i = 50000; i; i--); // delay for crystal to start and FLL to lock
}
while (FLL_CTL0 & XT2OF); // test high freq oscillator fault flag
// if flag remained clear then -
FLL_CTL1 = SELS; // switch SMCLK = HF xtal
P1DIR = 0x32; // P1.1, P1.4 & P1.5 to outputs
P1SEL = 0x32; // P1.1, P1.4 & P1.5 functions to output
}
如果外接的晶体振荡器没有起振的话,会不会对LCD的显示有影响?或者是我在配置430的初始化环境的时候出错了?
我刚刚开始使用430,请各位高手不吝指教! 答 1: LCD时钟呢? 答 2: BTCTL = BTFRFQ1; // STK LCD freq
我用他的基本定时器啊!
还有要怎么设置吗? 答 3: 请大家帮我看看啊!
谢谢各位了! 答 4: 基本定时器是使用ACLK来作为时钟来源的,
但是我的板子上并没有连接XIN和XOUT,这样会有影响吗? 答 5: 晶振是必须的。
不良也可能是其他原因。测量如下电压是否正常:1、r03-r33,每个电阻分压约1/3vcc,2、com和地的压差,用万用表测约1/2vcc,seg和地也是,如果用示波器可以看到梯形波。
如果有不正常的,先排除虚焊,再查程序,再怀疑芯片坏了。 答 6: 引用:
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |