再次用到了STM8L15X的液晶功能,有几点要注意的。
1. LCD可以配置成内部的,也可以配置成外部的。内部的可以调整,开起来会更灵活一点。但是要注意:
1)低功耗模式,无法使用内部电压,因为内部电压的电路会增加CPU电流,所以如果启用了低功耗模式,采用内部电压供电给LCD,那么是点不亮的。
2)如果采用外部电压供电,VLCD引脚不能接外部电压,只能接1uF或其它参数电容,否则也点不亮。
2. 注意以上内容,基本可以点亮LCD。至于怎么让LCD显示得正确或者更清晰则要根据LCD参数设定相关参数了。
void LCD_GLASS_Init(void)
{
// unsigned char i;
/* Enable LCD/RTC clock */
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //使能RTC和LCD时钟
CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
#ifdef USE_LSE
CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); //配置LCD时钟
#else
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);
#endif
/* Initialize the LCD */
LCD_Init(LCD_Prescaler_2, LCD_Divider_16, LCD_Duty_1_4, //初始化LCD,这是使用外部电压供电
LCD_Bias_1_3, LCD_VoltageSource_External);
/* Mask register
For declare the segements used.
in the Discovery we use 0 to 31 segments. */
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF); //7-0 //选择使用到的引脚
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF); //15-8
LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x0f); //23-16 //打开16-19
// LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00); //30-24
// LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0x00); //39-32//
// LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0x01); //47-40
/* To set contrast to mean value */
LCD_ContrastConfig(LCD_Contrast_Level_7); //对比度设置,外部电压设置无效 ,内部电压才有用
LCD_DeadTimeConfig(LCD_DeadTime_0);
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
/* Enable LCD peripheral */
LCD_Cmd(ENABLE); //启动LCD
LCD_GLASS_Clear(); //清屏
}