你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
p13418492976 提问时间:2017-12-13 23:37 /
大神们,为什么我初始化过后液晶屏不能显示段点啊,是哪里有问题啊!时钟选择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[3:0]
  LCD_FRQ_PS1=0;              
  LCD_FRQ_PS2=1;
  LCD_FRQ_PS3=0;
  LCD_FRQ_DIV0=1;          //DIV[3:0]+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;
}
收藏 1 评论3 发布时间:2017-12-13 23:37

举报

3个回答
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禁能
}

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

wenyangzeng 回答时间:2018-4-9 09:53:52
官方有现成例程可以参考:
LCD_SegmentsDrive.rar (8.52 KB, 下载次数: 30)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-4-10 01:03:25
检查硬件,电路,看看是不是时钟线的干扰问题

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版