解决9341系列LCD,使用杜邦线等连接线,造成白屏问题
现象1:普通单芯铜线焊接的屏幕,能够正常读到ID,但是无法显示内容。
最近在做导师的项目,打板子前想先把一块2.4寸的TFT调好。之前屏幕已经试过能用,奈何今天用连接线外接时,能读到ID,但无法显示。
查了一下8080的时序,看了一下程序代码,基本确定是由于串扰造成的信号完整性问题,屏幕的并数据口电平转换比较快,很容易出现串扰问题,甚至用手指去触碰,都可能产生干扰。
因为项目问题,临时换方案不大可能,所以想着从时序上入手去降低刷新率。由于主控是STM32F103RCT6,所以没有FSMC,软件去模拟的,用的原子哥的LCD程序去修改显示驱动。
我的思路是,由于串扰的存在,只要预先改好DATAOUT并行口的电平,然后延时稳定后,再让屏幕来读取,这样就能把信息无误的传递过去。先看下发送的程序:
//写寄存器函数
//data:寄存器值
void LCD_WR_REG(u16 data)
{ LCD_RS_CLR;//写地址 LCD_CS_CLR; DATAOUT(data); LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET;
// delay_us(100);
}
//写数据函数
//可以替代LCD_WR_DATAX宏,拿时间换空间.
//data:寄存器值
void LCD_WR_DATAX(u16 data)
{LCD_RS_SET;LCD_CS_CLR;DATAOUT(data);LCD_WR_CLR;LCD_WR_SET;LCD_CS_SET;
}
我们看到,想要让数据稳定,那么可以在DATAOUT(data)后加入延时来处理,修改后是这样
//写寄存器函数
//data:寄存器值
void LCD_WR_REG(u16 data)
{ LCD_RS_CLR;//写地址 LCD_CS_CLR; DATAOUT(data); delay_us(1);LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET;
// delay_us(100);
}
//写数据函数
//可以替代LCD_WR_DATAX宏,拿时间换空间.
//data:寄存器值
void LCD_WR_DATAX(u16 data)
{LCD_RS_SET;LCD_CS_CLR;DATAOUT(data);delay_us(1);LCD_WR_CLR;LCD_WR_SET;LCD_CS_SET;
}
实测,延时1us就ok,如果不够,你可以先把显示加长点,再降到合适的时长。
刷新屏幕能显示了,把屏幕刷成蓝屏。
现象2:问题还没解决,能够刷新整块屏幕,但没法显示字体,而且,只要显示字体,刷新就会失效。
主函数大概是这样:
如果不注释LCD_ShowString,那么刷新屏幕也会失效。
造成这样的原因和上面一样,我们要减慢WR和CS的速度,不然会由于串扰,使数据接收和发送的使能失效,无法完成对应的功能,因此需等待并口电平转换完成。由于显示数字和刷屏用的函数不一样,这是通过画点来实现刷屏的,因此我们改对应函数的时延即可:
```c
//快速画点
//x,y:坐标
//color:颜色
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
{ if(lcddev.id==0X9341||lcddev.id==0X5310){LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF); //这里也要跳转过去加时延 LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF); }else if(lcddev.id==0X5510){LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(x>>8); LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(x&0XFF); LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(y>>8); LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(y&0XFF); }else if(lcddev.id==0X1963){if(lcddev.dir==0)x=lcddev.width-1-x;LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF); LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF); LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF); }else if(lcddev.id==0X6804){ if(lcddev.dir==1)x=lcddev.width-1-x;//横屏时处理LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF); }else{if(lcddev.dir==1)x=lcddev.width-1-x;//横屏其实就是调转x,y坐标LCD_WriteReg(lcddev.setxcmd,x);LCD_WriteReg(lcddev.setycmd,y);} LCD_RS_CLR;LCD_CS_CLR; DATAOUT(lcddev.wramcmd);//写指令 delay_us(1);//这里加时延LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET; LCD_WR_DATA(color); //写数据
}
这样就能正常显示了,但是有一定的不稳定性,毕竟串扰极有可能由于长期运行,温度、空气等原因加剧,所以还是画板子吧,或者使用屏蔽线,做好防护。
解决9341系列LCD,使用杜邦线等连接线,造成白屏问题相关推荐
- 【解决】关于 new Date 函数在苹果手机不兼容导致白屏的解决方案
背景:因为公司机场项目需要涉及到格式化时间功能,原本选用moment这个第三方库,但是用了一段时间发现这个太重了,每次打包预览老是会提示超2M,无法正常预览,后面改用date-fns这款轻量级的库,两 ...
- 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
一.通过STMcube创建项目 1.配置引脚 2.配置exit 3.配置sys 4.配置gpio 5.创建项目生成代码 点击右上角GENERAT CODE 二.通过keil5编辑并修改部分代码 在打开 ...
- 解决mac系统向日葵远控无法被远程控制问题(白屏)
向日葵远控软件除了在mac电脑中使用安全隐私内的录屏功能添入权限,还需添加另外一个步骤 1.正常配置中,在设置 - 安全性与隐私 内,将屏幕录制.文件和文件夹.完全的磁盘访问权限 全部添入向日葵客户端 ...
- 【我的OpenGL学习进阶之旅】解决使用VAO的时候误用glDisableVertexAttribArray导致无法渲染出现白屏或者黑屏的问题
一.问题描述 今天将OpenGL项目运行到android真机的时候,发现一个简单的矩形居然白屏.然而在模拟器上是可以正常渲染的,如下所示: 模拟器正常渲染 真机白屏 二.分析问题 通过对比日志来分析: ...
- 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...
苹果游戏中心白屏怎么办?苹果game center无法链接服务器解决方法.近期有部分用户反映,苹果游戏中心出现了白屏情况,那么苹果游戏中心白屏怎么办?让小编给大家讲解一下苹果game center白屏 ...
- 美通企业日报 | 陶氏杜邦完成对新陶氏的分拆;英特尔1.17亿美元投资14家创新公司...
要闻 费列罗将收购家乐氏饼干和水果小吃业务 2018年度亚太区最佳机场贵宾室公布 百乐达斯城全新梦幻主题乐园幻乐堡在韩国开业 陶氏杜邦完成对新陶氏的分拆 英特尔1.17亿美元投资14家创新公司,包括2 ...
- 杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业
杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业 (文 | 长江农业)新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:"杜邦先锋是 ...
- 杜邦家居五金建博会震撼上市
2021年7月21日,铂荣五金(广州)有限公司在广州香格里拉大酒店举办主题为"杜具匠心·邦尔不凡"的杜邦™五金新品发布会.广东省家居建材行业.家具五金行业领军人物与行业专家齐聚一堂 ...
- 利用Python进行简单杜邦分析
利用Python进行简单杜邦分析 "巧妇难为无米之炊",找不到数据,量化分析.财务报表分析也就无从谈起.对于分析者来说,获取数据是量化分析的第一步.Python的一个强大功能之一就 ...
- 华润杜邦物流信息化案例
华润物流有限公司(英文简写为 CRC Logistics)是华润(集团)有限公司全资附属专业化的第三方物流供应商,其前身华夏企业有限公司, 于一九四九年在香港建基立业, 从事海运业务, 逐渐扩展至物流 ...
最新文章
- Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】
- 【python进阶】_装饰器
- python数据储存_五种使用python储存数据的方式
- 右键快捷VsCode
- 这六个问题,让物理学家寝食难安
- 【C++】 67_经典问题分析 五
- 二月十大病毒排行 加花加密最危险
- Linux---信号及其使用简单讲解
- android自定义滚轴选择器_Android自定义控件实战—滚动选择器PickerView
- 动图在线压缩怎么操作?教你快速压缩动图
- django jwt token 令牌
- PAT 1160 Forever
- System.DateUtils Simple trimming functions部分
- linux grep命令要查找的内容有双引号
- 基于小程序制作一个猜拳小游戏
- VI 之快速查找定位
- js 对象中,可枚举性(enumerable)是什么?
- 2022最新网络安全行业前景分析,附学习路线图
- linux配置环境变量,及PATH=$PATH中的PATH是什么意思和有些地方说的$PATH可以跟前或者跟后的原因
- 二维数组求周长的问题