最近在做額溫槍項目,采用的主控為STM8L152C6T6,由於趕進度先使用了一個帶有管腳的段碼屏進行調試,硬件電路圖和段碼屏如下



注意VLCD外接了3.3V電源,配置如下
void LCD_GLASS_Init(void)
{
/* Enable LCD/RTC clock */
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);
/* Initialize the LCD */
LCD_Init(LCD_Prescaler_1, LCD_Divider_31, LCD_Duty_1_4,
LCD_Bias_1_3, LCD_VoltageSource_External);
/* 只使用了SEG0~SEG9,其他作為普通IO口使用*/
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x07);
LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x00);
LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00);
/* To set contrast to mean value 設置對比度*/
LCD_ContrastConfig(LCD_Contrast_Level_4); //LCD_Contrast_3V0
LCD_DeadTimeConfig(LCD_DeadTime_0);
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);
/* Enable LCD peripheral */
LCD_Cmd(ENABLE);
}
一切順利,顯示屏顯示的也溜溜的,正式的屏到了之后,接上出問題了,不顯示,一頓折騰終於找到原因,配置必須為如下方式:
void LCD_GLASS_Init(void)
{
/* Enable LCD/RTC clock */
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);
/* Initialize the LCD */
LCD_Init(LCD_Prescaler_1, LCD_Divider_31, LCD_Duty_1_4,
LCD_Bias_1_3, LCD_VoltageSource_Internal);
/* 只使用了SEG0~SEG9,其他作為普通IO口使用*/
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x07);
LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x00);
LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00);
/* To set contrast to mean value 設置對比度*/
LCD_ContrastConfig(LCD_Contrast_Level_4); //LCD_Contrast_3V0
LCD_DeadTimeConfig(LCD_DeadTime_0);
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);
/* Enable LCD peripheral */
LCD_Cmd(ENABLE);
}
並且需要把硬件電路的VLCD的3.3V供電斷掉,在VLCD的外面加一個2.2uF的儲能電容,這樣才能合這個屏的心意,老實的工作,擦!服了,你(段碼屏)脾氣還不小。。。。。。。。。。。。。。
不知道具體是什么原因造成的,時間緊有時間再扒了它研究!
貼上大脾氣屏的圖

