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中:
- LCD_Prescaler_2时钟预分频,对输入源分频,保证屈辱频率;
- LCD_Divider_18,分频器,最小倍数16;
- LCD_Duty_4,四个控制位(com);
- LCD_Bias_3,偏置电压3V
- 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使用问题的更多相关文章
- multiwii 2.4配置页面中文注释
...
- LCD底层驱动分析
根据分析的框架,自己写一个LCD驱动程序 1分析LCD硬件原理图 Von和Voff接的是一个电源电路,通过LCD_POWER接的是GPG4来控制LCD电源,高电平表示开启LCD电源 VM接的是CPU的 ...
- S3C2440 LCD驱动(FrameBuffer)实例开发<一>(转)
1. 背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此学习LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示 ...
- LCD驱动(FrameBuffer)实例开发讲解
一.开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 ...
- LCD驱动移植在在mini2440(linux2.6.29)和FS4412(linux3.14.78)上实现对比(deep dive)
1.Linux帧缓冲子系统 帧缓冲(FrameBuffer)是Linux为显示设备提供的一个接口,用户可以将帧缓冲看成是显示内存的一种映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作 ...
- linux qcom LCD framwork
点击打开链接 0.关键字 MDSS : Multimedia Display sub system DSI: Display Serial Interface 1.涉及文件 (1) drivers\v ...
- LCD调试1.0
所谓调lcd timing就是去调lcd时序,一般是6个部分:HFPD(在一行扫描以前需要多少个像素时钟),HBPD(一行扫描结束到下一行扫描开始需要多少个像素时钟),VFPD(一帧开始之前需要多少个 ...
- linux 驱动之LCD驱动(有framebuffer)
<简介> LCD驱动里有个很重要的概念叫帧缓冲(framebuffer),它是Linux系统为显示设备提供的一个接口,应用程序在图形模式允许对显示缓冲区进行读写操作.用户根本不用关心物理显 ...
- 【驱动】LCD驱动(FrameBuffer)分析
背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示文字或图像 ...
随机推荐
- erlang并发编程
1.erlang中创建进程(非操作系统线程,比其要轻量很多)非常方便,运用spawn函数即可 spawn(Fun) -> pid() spawn(Node, Fun) -> pid() s ...
- vivado封装IP
reference: https://www.cnblogs.com/mouou/p/5851736.html 1.新建一个测试工程 工程化的设计方法是离不开工程的,第一步往往都是新建工程,后面我 ...
- Git 转载
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 初读"Thinking in Java"读书笔记之第三章 --- 操作符
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...
- find命令配合sed命令使用
1.查找当前目录下所有以txt文件中包含123的数字都替换成5678 find ./ -name "*.txt" -exec grep "123" {} \; ...
- RabbitMQ集群出现过机器故障,网络异常等故障后,重启无法重新建立集群的终极解决方案
由于机器掉电,网络故障等原因,RabbitMQ整个集群出现问题.重启RabbitMQ时,发现某些机器始终无法重新加入到集群中,而且还可能出现网络分区. 针对不同情况,可能选择 rabbitmqctl ...
- HTML表格布局
1 浏览器:接受浏览者的操作,然后帮浏览者去web服务器请求网页内容,然后展现成人人眼能够看得懂的可视化页面的软件. 2 IE是浏览器的一种.<ietest工具& ...
- Sharepoint 2016 配置FBA(二) 编辑Web,config文件
使FBA生效,下一步在Sharepoint中设置Membership Provider,一个Membership Provider是一个从程序到任证库(credential store)的接口.这样允 ...
- Win32线程——等待另一个线程结束
转载: https://blog.csdn.net/yss28/article/details/53646627 <Win32多线程程序设计>–Jim Beveridge & Ro ...
- 实际操作中遇到的问题--Django中查看已安装的包的相关命令
pip freeze --------查看已经安装的包 pip uninstall 安装包名 ---------卸载已安装的包 pip install 安装包名--------安装包