打印
[STM8]

请教高手,STM8L152R8驱动LCD初始化问题

[复制链接]
4516|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tieguanyin2008|  楼主 | 2011-1-15 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上电要上几次才正常显示一次。不知道啥原因。
VLCD接VDDA。

void main(void)
{
Init_CLK();   //Init. Clock
Init_GPIO();   //Init. GPIO
LCD_Init();   //Init. LCD Drive

;
;

}



void LCD_Init(void)
{
  /*
    The LCD is configured as follow:
     - clock source = HSI (16MHz) / 16 = 1MHz (RTCCLK = 16MHz / 16 = 1MHz), fIN = RTCCLK/2 = 500kHz
     - Voltage source = Internal
     - Prescaler = 5
     - Divider = 26 (16 + 10)  
     - Mode = 1/8 Duty, 1/4 Bias
     - LCD frequency = (clock source) / (Prescaler * Divider)
                     = (500k) /(2^5 * 26) = 600.96 Hz ==> Frame frequency = 600.96 Hz * duty = 600.96 * 1/8 Hz = 75.12 Hz
                      */
  /* Enable LCD clock */
//  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
//  CLK_RTCClockConfig(CLK_RTCCLKSource_HSI, CLK_RTCCLKDiv_16); //RTCCLK = 16MHz /16 = 1MHz
  /* Initialize the LCD */
  LCD_Init(LCD_Prescaler_32, LCD_Divider_26, LCD_Duty_1_8,
  LCD_Bias_1_4, LCD_VoltageSource_Internal);   //1/8 Duty, 1/4 Bias, Internal VLCD
  /* Mask register*/
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);    //SEG0 ~ SEG7
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x0F);    //SEG8 ~ SEG11, Unused pins as general purpose I/Os
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x00);    //Unused pins as general purpose I/Os
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00);    //Unused pins as general purpose I/Os
  LCD_ContrastConfig(LCD_Contrast_3V3);
//  LCD_DeadTimeConfig(LCD_DeadTime_0);
  LCD_DeadTimeConfig(LCD_DeadTime_1);
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
  LCD_HighDriveCmd(ENABLE);
  LCD_Cmd(ENABLE); /*!< Enable LCD peripheral */     //LCD Controller enable
}
沙发
nvdn| | 2011-11-12 10:36 | 只看该作者
选择外部电源

使用特权

评论回复
板凳
ycsjtzam| | 2013-7-2 09:55 | 只看该作者
我今天也遇到了,不知道楼主怎么解决的?

使用特权

评论回复
地板
sun1238898| | 2013-7-2 10:34 | 只看该作者
官方的代码楼主可否尝试测试一下,然后进行一下对比自己的代码。

使用特权

评论回复
5
_Hanking| | 2014-1-9 15:05 | 只看该作者
我也遇到了,选择外部电源已解决

使用特权

评论回复
6
zxm19820916| | 2016-4-27 16:20 | 只看该作者
下面这75.12Hz怎么得来的?
/*
     The LCD is configured as follow:
      - clock source = HSI (16MHz) / 16 = 1MHz (RTCCLK = 16MHz / 16 = 1MHz), fIN = RTCCLK/2 = 500kHz
      - Voltage source = Internal
      - Prescaler = 5
      - Divider = 26 (16 + 10)  
      - Mode = 1/8 Duty, 1/4 Bias
      - LCD frequency = (clock source) / (Prescaler * Divider)
                      = (500k) /(2^5 * 26) = 600.96 Hz ==> Frame frequency = 600.96 Hz * duty = 600.96 * 1/8 Hz = 75.12 Hz
                       */
   /* Enable LCD clock */
//  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
//  CLK_RTCClockConfig(CLK_RTCCLKSource_HSI, CLK_RTCCLKDiv_16); //RTCCLK = 16MHz /16 = 1MHz
   /* Initialize the LCD */
   LCD_Init(LCD_Prescaler_32, LCD_Divider_26, LCD_Duty_1_8,
   LCD_Bias_1_4, LCD_VoltageSource_Internal);   //1/8 Duty, 1/4 Bias, Internal VLCD

使用特权

评论回复
7
zxm19820916| | 2016-4-27 16:21 | 只看该作者
你把那2行注释掉了也行吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

90

帖子

1

粉丝