现象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,使用杜邦线等连接线,造成白屏问题相关推荐

  1. 【解决】关于 new Date 函数在苹果手机不兼容导致白屏的解决方案

    背景:因为公司机场项目需要涉及到格式化时间功能,原本选用moment这个第三方库,但是用了一段时间发现这个太重了,每次打包预览老是会提示超2M,无法正常预览,后面改用date-fns这款轻量级的库,两 ...

  2. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。

    一.通过STMcube创建项目 1.配置引脚 2.配置exit 3.配置sys 4.配置gpio 5.创建项目生成代码 点击右上角GENERAT CODE 二.通过keil5编辑并修改部分代码 在打开 ...

  3. 解决mac系统向日葵远控无法被远程控制问题(白屏)

    向日葵远控软件除了在mac电脑中使用安全隐私内的录屏功能添入权限,还需添加另外一个步骤 1.正常配置中,在设置 - 安全性与隐私 内,将屏幕录制.文件和文件夹.完全的磁盘访问权限 全部添入向日葵客户端 ...

  4. 【我的OpenGL学习进阶之旅】解决使用VAO的时候误用glDisableVertexAttribArray导致无法渲染出现白屏或者黑屏的问题

    一.问题描述 今天将OpenGL项目运行到android真机的时候,发现一个简单的矩形居然白屏.然而在模拟器上是可以正常渲染的,如下所示: 模拟器正常渲染 真机白屏 二.分析问题 通过对比日志来分析: ...

  5. 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...

    苹果游戏中心白屏怎么办?苹果game center无法链接服务器解决方法.近期有部分用户反映,苹果游戏中心出现了白屏情况,那么苹果游戏中心白屏怎么办?让小编给大家讲解一下苹果game center白屏 ...

  6. 美通企业日报 | 陶氏杜邦完成对新陶氏的分拆;英特尔1.17亿美元投资14家创新公司...

    要闻 费列罗将收购家乐氏饼干和水果小吃业务 2018年度亚太区最佳机场贵宾室公布 百乐达斯城全新梦幻主题乐园幻乐堡在韩国开业 陶氏杜邦完成对新陶氏的分拆 英特尔1.17亿美元投资14家创新公司,包括2 ...

  7. 杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业

    杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业 (文 | 长江农业)新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:"杜邦先锋是 ...

  8. 杜邦家居五金建博会震撼上市

    2021年7月21日,铂荣五金(广州)有限公司在广州香格里拉大酒店举办主题为"杜具匠心·邦尔不凡"的杜邦™五金新品发布会.广东省家居建材行业.家具五金行业领军人物与行业专家齐聚一堂 ...

  9. 利用Python进行简单杜邦分析

    利用Python进行简单杜邦分析 "巧妇难为无米之炊",找不到数据,量化分析.财务报表分析也就无从谈起.对于分析者来说,获取数据是量化分析的第一步.Python的一个强大功能之一就 ...

  10. 华润杜邦物流信息化案例

    华润物流有限公司(英文简写为 CRC Logistics)是华润(集团)有限公司全资附属专业化的第三方物流供应商,其前身华夏企业有限公司, 于一九四九年在香港建基立业, 从事海运业务, 逐渐扩展至物流 ...

最新文章

  1. Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】
  2. 【python进阶】_装饰器
  3. python数据储存_五种使用python储存数据的方式
  4. 右键快捷VsCode
  5. 这六个问题,让物理学家寝食难安
  6. 【C++】 67_经典问题分析 五
  7. 二月十大病毒排行 加花加密最危险
  8. Linux---信号及其使用简单讲解
  9. android自定义滚轴选择器_Android自定义控件实战—滚动选择器PickerView
  10. 动图在线压缩怎么操作?教你快速压缩动图
  11. django jwt token 令牌
  12. PAT 1160 Forever
  13. System.DateUtils Simple trimming functions部分
  14. linux grep命令要查找的内容有双引号
  15. 基于小程序制作一个猜拳小游戏
  16. VI 之快速查找定位
  17. js 对象中,可枚举性(enumerable)是什么?
  18. 2022最新网络安全行业前景分析,附学习路线图
  19. linux配置环境变量,及PATH=$PATH中的PATH是什么意思和有些地方说的$PATH可以跟前或者跟后的原因
  20. 二维数组求周长的问题

热门文章

  1. (模拟)HDU - 5857 Median
  2. 在Android上使用TensorFlow Lite结果和AI危害检测
  3. Tensorflow加载SavedModel模型过程源码阅读
  4. 如何在word中批量编辑所有图片的大小?
  5. Switch使用方法
  6. 设计模式(一) 简单工厂模式
  7. Java中Base64的解析
  8. 给领导干部讲计算机课的开场,学习计算机课程的心得(1)讲课讲稿.pdf
  9. java 执行bat文件
  10. Linux下禁用笔记本触摸板