这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » F449,LCD,32768Hz F449的LCD显示必须要用到32768Hz的

共2条 1/1 1 跳转至

F449,LCD,32768Hz F449的LCD显示必须要用到32768Hz的晶振吗?

院士
2006-09-17 18:14:16     打赏
F449,LCD,32768Hz F449的LCD显示必须要用到32768Hz的晶振吗?



关键词: 32768Hz     显示     须要     用到     晶振    

院士
2006-12-22 22:43:00     打赏
2楼
问 我的1/4duty的lcd在F449上面无法显示出来(LCDMEM中的值有改变)——无任何显示。

我只使用的是8M的晶振。低速振荡我没有连接。

LCD频率控制使用基本定时器(使用BTCTL的默认设置,程序中未做设置),
我看到基本定时器的时钟来源是ACLK,而ACLK又来源于LFXT1CLK。

但是我现在并没有连接XIN和XOUT,这样会不会造成基本定时器根本就没有启动?

或者是基本定时器已经启动了,而我在程序中没有打开?

如果是因为没有ACLK而没启动基本定时器的话,我想在XIN和XOUT上连接一个32768Hz的晶振,需要连接电容到地吗?如果要的话,要选用多大的电容啊?
我的PCB是已经设计好的,如果需要连接电容的话会非常的不好接。

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
} 1: 希望高手指点一下,万分感激! 2: 32768不一定是必须的,但是你的程序里设置的是使用这个晶体的,所以就成了必须的了。 3: bt可以用smclk与aclk。不过,所能达到低功耗的要求就不一样了
推荐用32768

共2条 1/1 1 跳转至

回复

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