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的使能。

STM8L LCD配置与com使用问题的更多相关文章

  1. multiwii 2.4配置页面中文注释

                                                                                                         ...

  2. LCD底层驱动分析

    根据分析的框架,自己写一个LCD驱动程序 1分析LCD硬件原理图 Von和Voff接的是一个电源电路,通过LCD_POWER接的是GPG4来控制LCD电源,高电平表示开启LCD电源 VM接的是CPU的 ...

  3. S3C2440 LCD驱动(FrameBuffer)实例开发<一>(转)

    1. 背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此学习LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示 ...

  4. LCD驱动(FrameBuffer)实例开发讲解

    一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 ...

  5. LCD驱动移植在在mini2440(linux2.6.29)和FS4412(linux3.14.78)上实现对比(deep dive)

    1.Linux帧缓冲子系统 帧缓冲(FrameBuffer)是Linux为显示设备提供的一个接口,用户可以将帧缓冲看成是显示内存的一种映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作 ...

  6. linux qcom LCD framwork

    点击打开链接 0.关键字 MDSS : Multimedia Display sub system DSI: Display Serial Interface 1.涉及文件 (1) drivers\v ...

  7. LCD调试1.0

    所谓调lcd timing就是去调lcd时序,一般是6个部分:HFPD(在一行扫描以前需要多少个像素时钟),HBPD(一行扫描结束到下一行扫描开始需要多少个像素时钟),VFPD(一帧开始之前需要多少个 ...

  8. linux 驱动之LCD驱动(有framebuffer)

    <简介> LCD驱动里有个很重要的概念叫帧缓冲(framebuffer),它是Linux系统为显示设备提供的一个接口,应用程序在图形模式允许对显示缓冲区进行读写操作.用户根本不用关心物理显 ...

  9. 【驱动】LCD驱动(FrameBuffer)分析

    背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示文字或图像 ...

随机推荐

  1. 使用Maps与Sets处理集合的交差运算

    import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import java.u ...

  2. PLC之六部十层电梯整体框架

    1.基本框架 此图基于西门子杯逻辑控制赛项中电梯题目的变量表以及功能设计 1.I/O输入是指变量表中的input数字量,包括电梯所有的内呼按钮.外呼按钮.电梯平层开关等 2.逻辑处理是指根据相对应的输 ...

  3. java基础 易忘易混点复习1

    原码 反码 补码 原码 正数的原码最高位是0 负数的原码最高位是1 例如:+7 0 0000111 -7 1 0000111 反码 正数的反码与原码相同 负数的反码相比原码 符号位不变,数值位取反 例 ...

  4. Python PIL

    Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...

  5. JavaScript 获得客户端IP

    Below are all the free active IP lookup services I could find and the information they return. If yo ...

  6. hive lock命令的使用

    1.hive锁表命令 hive> lock table t1 exclusive;锁表后不能对表进行操作 2.hive表解锁: hive> unlock table t1; 3.查看被锁的 ...

  7. 移动端调试神器 whistle

    移动端h5页面嵌入的方式多种多样,普通的chrome真机调试功能有时就不能满足要求了. whistle通过设置wifi服务器代理的方式,可以抓包调试所有移动端请求的页面. whistle的github ...

  8. windows 下安装MySQL 服务无法启动类问题

    解决方案: 1 执行 mysqld.exe -nt remove 2 执行 mysqld --initialize(中间是两个中划线) 3 执行 mysqld.exe -nt install 4 执行 ...

  9. 团队-student_blog-最终程序

    托管平台地址:https://github.com/gengwenhao/student_blog 小组名称:逛逛踹电脑 程序运行方法: 其他附加内容:demo版本:http://blog.gengw ...

  10. 运维seq语法2

    2017-03-02 09:47:42   # seq 1 10结果是1 2 3 4 5 6 7 8 9 10例二:#!/bin/bashfor i in `seq 1 10`;doecho $i;d ...