zoukankan      html  css  js  c++  java
  • STM8L LCD配置与com使用问题


    void
    LCD_GPIO_Config(void) { //SEG GPIO Init GPIO_Init(GPIOE, GPIO_Pin_0|GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);//SEG1,2 GPIO_Init(GPIOE, GPIO_Pin_2|GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Fast);//SEG3,4 GPIO_Init(GPIOE, GPIO_Pin_4|GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Fast);//SEG5,6 GPIO_Init(GPIOD, GPIO_Pin_0|GPIO_Pin_2,GPIO_Mode_Out_PP_Low_Fast);//SEG7,8 GPIO_Init(GPIOD, GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Fast);//SEG9 GPIO_Init(GPIOB, GPIO_Pin_0|GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);//SEG10,11 //COM GPIO Init // GPIO_Init(GPIOF, GPIO_Pin_4|GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Fast);//COM4,5 // GPIO_Init(GPIOF, GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Fast);//COM6,7 GPIO_Init(GPIOA, GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6,GPIO_Mode_Out_PP_Low_Fast);//COM1,2 GPIO_Init(GPIOD, GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);//COM3,4 } void lib_LCD_Config(void) { /* The LCD is configured as follow: - clock source = LSE (32.768 KHz) - Voltage source = Internal - Prescaler = 2 - Divider = 18 (16 + 2) - Mode = 1/4 Duty, 1/3 Bias - LCD frequency = (clock source * Duty) / (Prescaler * Divider) = 228 Hz ==> Frame frequency = 57 Hz */ /* Enable LCD clock */ CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE); /* Initialize the LCD */ LCD_Init(LCD_Prescaler_2, LCD_Divider_18, LCD_Duty_1_4, LCD_Bias_1_3, LCD_VoltageSource_Internal); /* Mask register*/ LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFE); LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x0F); LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x00); LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00); // LCD_ContrastConfig(LCD_Contrast_3V0); LCD_ContrastConfig(LCD_Contrast_Level_7); LCD_DeadTimeConfig(LCD_DeadTime_0); LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1); LCD_Cmd(ENABLE); /*!< Enable LCD peripheral */ }

    LCD的使用需要打开RTC,相关设置都在CLK中。

    一些简单的初始化,没什么太大的疑点通过手册就能看个大概明白;

    LCD_Init中:

    1. LCD_Prescaler_2时钟预分频,对输入源分频,保证屈辱频率;
    2. LCD_Divider_18,分频器,最小倍数16;
    3. LCD_Duty_4,四个控制位(com);
    4. LCD_Bias_3,偏置电压3V
    5. LCD_VoltageSource_Internal,LCD电源的输入源

     LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFE);选择打开的SEG位

    使用com使用的问题:

     PAGE_COM :

      0:地址0x0C至0x021可访问LCD RAM的第一页,对应于COM0,1,2和3

      1:地址0x0C至0x021可访问LCD RAM的第一页,对应COM4,5,6和7

    Bit 1 DUTY8:1/8 dty使能(8个com)
       0:通过LCD_CR1寄存器中的DUTY [1:0]位选择duty;
      1:启用1/8;

    这里指出在状态1下是油COM4567访问第一页LCD RAM的,但是

    当设置LCD_CR4中的DUTY8位(激活8个COM)时,LCD RAM通过两个页面访问,每个页面由LCD_CR4寄存器中的PAGE_COM位激活:

    当PAGE_COM = 0时,地址0x0C至0x21可访问第一页,对应COM0,1,2和3.请参阅PAGE_COM位说明。
    当PAGE_COM = 1时,地址0x0C至0x21可访问第二页,对应COM4,5,6和7.请参阅PAGE_COM位说明。

     综上所述和测试:

      使用com0-3控制LCD_RAM第一页(可能包括第二页),DUTY8置0,PAGE_COM置0;

      使用com4-7控制LCD_RAM第一页(可能包括第二页),DUTY8置1后启用8个com时且PAGE_COM置1;

    测试时,只有在开通8个控制脚时,才可以使用com4-7,但是com0-3会同步输出信号会影响其他正在使用com0-3占用的io;所以PAGE_COM只能用来控制第二页LCD_RAM的使能。

  • 相关阅读:
    IIS部署Asp.Net Core 项目运行时报错,处理程序“aspNetCore”在其模块列表中有一个错误模块“AspNetCoreModuleV2"
    Linux Mysql5.7.22安装
    Nginx初体验
    asp.net core Csc任务不支持SharedCompilationId参数,请确认改参数存在于此任务中,并且是可设置的公共实例属性
    【Node.js 】Express框架
    【Node.js】 初体验
    Mongodb 配置
    【C#】Windows服务守护并发送邮件通知
    新建【Git】仓库后给使用者授权
    Git提交修改的代码出现提交不上去
  • 原文地址:https://www.cnblogs.com/ScarecrowMark/p/10722134.html
Copyright © 2011-2022 走看看