5235|1

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[复旦微FM33LG0系列开发板测评]LCD使用及真值表工具使用说明 [复制链接]

  本帖最后由 AE007 于 2021-11-29 02:04 编辑

本次测试的是FM33LG0LCD模块,并且使用LCD真值表工具可以快速的定义COMSEG对应的显示数据寄存器数据。使用一块4COM-9SEGLCD段码液晶屏并改写官方例程。

LCD概述

         LCD 显示驱动模块用于驱动段码式液晶屏,能够支持 468COM,最大显示段数分别为 128 段(4COM)、180 段(6COM)和 224 段(8COM)。

主要特点:

       ⚫ 最大支持 8×406×424×44 的显示段数

       ⚫ 1/3bias1/4bias

       ⚫ 16 级灰度可调

       ⚫ LCD 驱动支持片内电阻型、片外电容型 2 种模式

       ⚫ 支持闪烁功能,且闪烁频率可调

       ⚫ 支持间歇式点亮功能,点亮、熄灭时间可配置

       ⚫ 支持全亮、全灭功能

       ⚫ 低功耗,LCD 驱动可以在 Active 模式、Sleep 模式和 DeepSleep 模式下工作

       ⚫ 支持 Type A Type B 两种 LCD 驱动波形(可配置)

       ⚫ 典型帧刷新频率 64Hz

使用流程

  1. 接线说明:

                COM脚:4COM必须顺序连接到COM0-3

                SEG脚:不必连续使用,可以用SEG0-SEG2-SEG3···等。注意SEG29-31COM复用,没使用的引脚不要初始化为SEG功能。

  2. 配置LCD真值表:

                以下内容根据液晶屏真值表和连接的引脚填入


 

         生成的文件在LCD真值表.exe同目录上

                .xml文件为界面的配置文件信息,是为了方便客户在下一次用的时候直接进行导入,无需再进行配置。

                  .h文件为复旦微芯片COMSEG对应的显示寄存器的数据。

  3. 把.h文件拷贝进LCD例程

 

  4. GPIO根据实际连接初始化

  5. LCD初始化

  6. 用COMSEG对应的显示寄存器的数据

         SET_VALUE_XXX将点亮液晶指定段,RESET_VALUE_XXX将熄灭液晶指定段。控制液晶值调用相应字段后,将DISPDATA[]中的数据更新值LCD显示数据寄存器即可实现液晶显示控制。比如要显示LCD的数字1

 

http://www.elecfans.com/uploads/allimg/171206/095Z362L-0.jpg

                SET_VALUE_1B//显示第一位的段码B

                SET_VALUE_1C//显示第一位的段码C

                FL_LCD_WriteData(LCD, FL_LCD_DATA_REG0, DISPDATA[0]); //刷新缓冲区

                FL_LCD_WriteData(LCD, FL_LCD_DATA_REG1, DISPDATA[1]); //刷新缓冲区

                FL_LCD_WriteData(LCD, FL_LCD_DATA_REG2, DISPDATA[2]); //刷新缓冲区

                FL_LCD_WriteData(LCD, FL_LCD_DATA_REG3, DISPDATA[3]); //刷新缓冲区

  7. 代码中还有一个快速显示数字的函数

先定义数码管显示数组0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,0x6f,//0~9 //数码管显示数组

                  //------------ 1"8"字符 ----------

                  if( (Result&0x01) == 0x01 ) {  SET_VALUE_1A;}     //1A

                  if( (Result&0x02) == 0x02 ) {  SET_VALUE_1B;}     //1B

                  if( (Result&0x04) == 0x04 ) {  SET_VALUE_1C;}     //1C

                  if( (Result&0x08) == 0x08 ) {  SET_VALUE_1D;}    //1D

                  if( (Result&0x10) == 0x10 ) {  SET_VALUE_1E;}     //1E

                  if( (Result&0x20) == 0x20 ) {  SET_VALUE_1F;}     //1F

                  if( (Result&0x40) == 0x40 ) {  SET_VALUE_1G;}    //1G

 

 

总结

         在本次试验中发现复旦微的芯片有以下几个优点:1. 例程库很全; 2. LCD模块的SEG脚可以灵活配置方便布线;3. 芯片可以在低功耗下运行LCD模块;4. LCD真值表工具可以快速的定义COMSEG对应的显示数据寄存器数据,节约大量的时间。

         例程和LCD工具发在文章后面,有不清楚的可以留言。

LCD真值表.zip (23.26 KB, 下载次数: 63)

  

LCD 4COM示例 - 傅工开源.rar (10.18 MB, 下载次数: 153)

 

点赞 关注(1)
 
 

回复
举报

5

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

数字显示的函数有个BUG 需要修改以下函数

void LCD_Num_Data( uint8_t Num, uint8_t Show)
{
	unsigned char Result;

	Result = LCD_Table( Show & 0x0f );
    Num = 4 - Num;
	switch( Num )
	{
		case 0x01:
		//------------ 第1个"8"字符 ----------
		if( (Result&0x01) == 0x01 ) {	SET_VALUE_1A;}	else {RESET_VALUE_1A;}  //1A
		if( (Result&0x02) == 0x02 ) {	SET_VALUE_1B;}	else {RESET_VALUE_1B;}	//1B
		if( (Result&0x04) == 0x04 ) {	SET_VALUE_1C;}	else {RESET_VALUE_1C;}	//1C
		if( (Result&0x08) == 0x08 ) {	SET_VALUE_1D;}	else {RESET_VALUE_1D;}	//1D
		if( (Result&0x10) == 0x10 ) {	SET_VALUE_1E;}	else {RESET_VALUE_1E;}	//1E
		if( (Result&0x20) == 0x20 ) {	SET_VALUE_1F;}	else {RESET_VALUE_1F;}	//1F
		if( (Result&0x40) == 0x40 ) {	SET_VALUE_1G;}	else {RESET_VALUE_1G;}	//1G
		break;

		case 0x02:
		//------------ 第2个"8"字符 ----------
		if( (Result&0x01) == 0x01 ) {	SET_VALUE_2A;}	else {RESET_VALUE_2A;}	//2A
		if( (Result&0x02) == 0x02 ) {	SET_VALUE_2B;}	else {RESET_VALUE_2B;}	//2B
		if( (Result&0x04) == 0x04 ) {	SET_VALUE_2C;}	else {RESET_VALUE_2C;}	//2C
		if( (Result&0x08) == 0x08 ) {	SET_VALUE_2D;}	else {RESET_VALUE_2D;}	//2D
		if( (Result&0x10) == 0x10 ) {	SET_VALUE_2E;}	else {RESET_VALUE_2E;}	//2E
		if( (Result&0x20) == 0x20 ) {	SET_VALUE_2F;}	else {RESET_VALUE_2F;}	//2F
		if( (Result&0x40) == 0x40 ) {	SET_VALUE_2G;}	else {RESET_VALUE_2G;}	//2G
		break;

		case 0x03:
		//------------ 第3个"8"字符 ----------
		if( (Result&0x01) == 0x01 ) {	SET_VALUE_3A;}	else {RESET_VALUE_3A;}	//3A
		if( (Result&0x02) == 0x02 ) {	SET_VALUE_3B;}	else {RESET_VALUE_3B;}	//3B
		if( (Result&0x04) == 0x04 ) {	SET_VALUE_3C;}	else {RESET_VALUE_3C;}	//3C
		if( (Result&0x08) == 0x08 ) {	SET_VALUE_3D;}	else {RESET_VALUE_3D;}	//3D
		if( (Result&0x10) == 0x10 ) {	SET_VALUE_3E;}	else {RESET_VALUE_3E;}	//3E
		if( (Result&0x20) == 0x20 ) {	SET_VALUE_3F;}	else {RESET_VALUE_3F;}	//3F
		if( (Result&0x40) == 0x40 ) {	SET_VALUE_3G;}	else {RESET_VALUE_3G;}	//3G
		break;
		
	default:
		break;
	}
	
}

 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表