p13418492976 发表于 2017-12-13 23:37:10

求大神解决关于STM8L052R8段式液晶不能显示问题

大神们,为什么我初始化过后液晶屏不能显示段点啊,是哪里有问题啊!时钟选择LSI有问题吗?求大神帮忙解决下,项目急,谢谢了!
如果方便可以加我qq1358843903,红包都不是问题。


/*************************************************************************
*开发环境:IAR for stm8 v6.5.3
*硬件平台:STM8L-DISCOVERY
*功能说明:
*作    者:
*************************************************************************/
#include <LCD.h>
/*****************************************************************************
*名    称:void LCD_Config(void)
*功    能:
*入口参数:无
*出口参数:无
*说    明:
******************************************************************************/
void lcd_init(void)
{
/*******打开LCD/RTC时钟*************/
CLK_PCKENR2_PCKEN22=1;    //打开RTC时钟,LCD刷新频率与此时钟有关外围时钟使能
CLK_PCKENR2_PCKEN23=1;    //打开LCD时钟,读写LCD寄存器用到此时钟外围时钟使能
/****库 CLK->CRTCR = (uint8_t)((uint8_t)CLK_RTCCLKSource | (uint8_t)CLK_RTCCLKDiv);******/
CLK_CRTCR_RTCSEL0=0;      // LSI (这个时钟源必须在16.384 kHz到500 kHz)
CLK_CRTCR_RTCSEL1=1;
CLK_CRTCR_RTCSEL2=0;
CLK_CRTCR_RTCSEL3=0;

CLK_CRTCR_RTCDIV0=0;
CLK_CRTCR_RTCDIV1=0;
CLK_CRTCR_RTCDIV2=0;
LCD_FRQ_PS0=0;         // 2^PS
LCD_FRQ_PS1=0;            
LCD_FRQ_PS2=1;
LCD_FRQ_PS3=0;
LCD_FRQ_DIV0=1;          //DIV+16
LCD_FRQ_DIV1=1;          //分频值为15+16=31
LCD_FRQ_DIV2=1;
LCD_FRQ_DIV3=1;
LCD_CR1_DUTY0=1;         //选择比例1/4 duty
LCD_CR1_DUTY1=1;      
LCD_CR1_B2=0;            //1/3 偏率

/**********打开引脚的SEG功能********/
LCD_PM0=0xFF;                  
LCD_PM1=0x3F;
/**********打开引脚的SEG功能4个COM口,13个SEG口********/
LCD_CR2_CC0=0;//对比度
LCD_CR2_CC1=0;
LCD_CR2_CC2=1;   
/*
000: VLCD0??2.6V
001: VLCD1 2.7V         
010: VLCD2 2.8V         
011: VLCD3 2.9V      
100: VLCD4 3.0V         
101: VLCD5 3.1V         
110: VLCD6 3.2V
111: VLCD7
*/
LCD_CR3_DEAD0=0;//no dead time
LCD_CR3_DEAD1=0;
LCD_CR3_DEAD2=0;
/******脉冲持续时间****************/
LCD_CR2_PON0=1;   //1个时钟PS pulses
LCD_CR2_PON1=0;
LCD_CR2_PON2=0;
LCD_CR2_VSEL=0;          //确定LCD电压源(neibu部电压)
LCD_CR3_LCDEN=1; //使能LCD
}
/*点亮LCD所有区域*/
void ShowLcdAll(void)
{
LCD_RAM0 = 0xff;
LCD_RAM1 = 0xff;
LCD_RAM2 = 0xff;
LCD_RAM3 = 0xff;
LCD_RAM4 = 0xff;
LCD_RAM5 = 0xff;
LCD_RAM7 = 0xff;
LCD_RAM8 = 0xff;
LCD_RAM10 = 0xff;
LCD_RAM11 = 0xff;
LCD_RAM12 = 0xff;
}

wudianjun2001 发表于 2018-4-9 09:47:07

STM8有LCD驱动相关的库函数的,直接用库来做比较省事点,看看我的初始化函数
//使用RTC的32768HZ时钟源
void LCD_Setup (void)
{
        //函数配置OK
        LCD_DeInit();
        //使用RTC的32768HZ时钟源,32768/4/16=512 512/8=64HZ刷新率,阳光照射时还是能看出闪烁
        //LCD_Init(LCD_Prescaler_4, LCD_Divider_16, LCD_Duty_1_8, LCD_Bias_1_4, LCD_VoltageSource_Internal);
        //使用RTC的32768HZ时钟源,32768/2/16=1024 1024/8=128HZ刷新率
        LCD_Init(LCD_Prescaler_2, LCD_Divider_16, LCD_Duty_1_8, LCD_Bias_1_4, LCD_VoltageSource_Internal);
        LCD_PM0 = 0xFF;                                                                                //引脚配置为LCD用SEG0-SEG10
        LCD_PM1 = 0x07;
        LCD_HighDriveCmd(DISABLE);
        LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);        //延时时间
        LCD_DeadTimeConfig(LCD_DeadTime_0);                                        //死区时间
        LCD_BlinkConfig(LCD_BlinkMode_Off, LCD_BlinkFrequency_Div8);//闪烁模式       
        LCD_ContrastConfig(LCD_Contrast_3V0);                        //内部升压器调节的电压
        LCD_Cmd(ENABLE);
        //LCD_Cmd(DISABLE);                                                                        //LCD禁能
}

wenyangzeng 发表于 2018-4-9 09:53:52

官方有现成例程可以参考:

feixiang20 发表于 2018-4-10 01:03:25

检查硬件,电路,看看是不是时钟线的干扰问题
页: [1]
查看完整版本: 求大神解决关于STM8L052R8段式液晶不能显示问题