最近在做额温枪项目,采用的主控为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的储能电容,这样才能合这个屏的心意,老实的工作,擦!服了,你(段码屏)脾气还不小。。。。。。。。。。。。。。
不知道具体是什么原因造成的,时间紧有时间再扒了它研究!
贴上大脾气屏的图