OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6077|回复: 22

液晶彩屏 自适应的问题

[复制链接]

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
发表于 2013-11-4 14:55:57 | 显示全部楼层 |阅读模式
  最近要做一个液晶彩屏的多级菜单,现在是在2.4寸的屏幕做,能显示9行 现在就是想做一个程序 就是说 不管多大的屏幕 都能正常显示,无非是2.8寸的屏能显示10行,3.2寸的显示个12行, 但是不知道这个得怎么做 有高人指点一下? 还有一个 能通过程序 得到屏幕的尺寸大小吗
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-4 17:23:25 | 显示全部楼层
回复【楼主位】manaok12345:
---------------------------------
这还不简单,多重判断即可,前提条件是,你得让程序从屏ID自动识别出屏的分辨率,带控制IC的屏你要搜集的资料可是很多的,初始化程序很庞大,这不像RGB屏,RGB屏可以通过行同步和页同步信号以及clk信号来确定分辨率。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-4 18:36:40 | 显示全部楼层
回复【2楼】Tardis:
---------------------------------
好久没做了   我想问一下 同样是240X320的2.4寸和3.2寸,如果我在2.4寸上面做的是10行字符显示,3.2寸也应该是10行吧  只是他们显示的大小不同而已是吧。。。。。。  分辨率 是从ID来分  我的是用的是9320  9325
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-5 10:46:44 | 显示全部楼层
回复【3楼】manaok12345:
---------------------------------
是的,是从ID来分,我近一年也没碰万能驱动,都是用特定型号屏,学苹果,记得苹果手机用的都是特定型号屏。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-5 14:09:09 | 显示全部楼层
回复【4楼】Tardis:
---------------------------------
好吧  我们老板要求比较高 说要搞个万能的,唉。。。。我刚开始学单片机时还做过9325的液晶屏 好几年没碰了, 问你一下9325的有没有缓存,就是 我想把要显示的数据放在RAM里面 之后用显示命令 一起显示 ,因为 我现在做时有严重的刷屏感
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-5 14:23:47 | 显示全部楼层
回复【5楼】manaok12345:
---------------------------------
没有二级缓存,STM32如果用ram来做二级缓存的话,是不行的,320×240至少需要150kb的ram做显存,我用160*128像素的OLED彩屏,用STM32内部ram做二级显存,64k的ram剩下24k,加一下ucosii,加一下文件系统,加一下动态管理程序,弄到最后,动态管理最多只能管理15k左右的ram了,原子哥的gif解码都运行不了,ram吃不消,M4的话,勉强还行,如果弄两页屏,就还是有压力,现在我弄的二级缓存,虽然没有刷屏感,但毕竟SDIO速度太慢,切换页面的时候我弄了一个漏斗等待,还是让用户操作起来感觉不爽,动不动切换页面就漏斗了,我还带墙纸的说。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-5 14:25:17 | 显示全部楼层
回复【5楼】manaok12345:
---------------------------------
如果想完全没有刷屏感,改行玩A8吧,驱动直接根据行同步和页同步计算分辨率,算法直接支持任意分辨率的屏,代码量也不大,不过你移植起linux来,没一个月敲命令是移植不完的,就搭建开发环境,都得吃掉你一天时间。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-5 14:48:45 | 显示全部楼层
回复【7楼】Tardis:
---------------------------------
我用的是1768  512K的内存
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-5 16:30:54 | 显示全部楼层
回复【7楼】Tardis:
---------------------------------
现在必须做唉, 液晶屏内部有一个刷新率 这个可以改善吗,  用Linux 的话 我就直接装个wifi模块 直接连到手机上了直接做个显示界面。没办法啊
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-5 17:48:59 | 显示全部楼层
回复【8楼】manaok12345:
---------------------------------
内存足够,推荐你调用150k内存做成数组,可以这样做u16 disp_buf[240][320],把要现实的东西,按照坐标送进该数组,等要现实的内容全部弄好了,然后设置屏幕显存起始坐标为0,0;设置为横坐标自增,纵坐标也自增,然后把disp_buf里面的内容依次发送进去即可。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-5 22:04:59 | 显示全部楼层
回复【10楼】Tardis:
---------------------------------
不是很明白啊
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-5 22:10:10 | 显示全部楼层
回复【10楼】Tardis:
---------------------------------
我说错了,我说是是flash有512K 唉。。。。。我没有字库的flash  放在SD卡里面 这样会影响显示吗。。。
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-6 08:31:25 | 显示全部楼层
回复【11楼】manaok12345:
---------------------------------
其实就是把要现实的呢内容放ram里面,然后一次过刷屏显示,这样基本看不出卡屏,例如你要在x=1,y=2像素显示一个白点,那么你就应该这样操作显存:
disp_buf[1][2]=0xffff;
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-6 08:32:09 | 显示全部楼层
回复【12楼】manaok12345:
---------------------------------
不会,只不过读字库会慢一点而已,用了文件系统会比较慢,因为文件系统判断和seek操作,会吃不少时序
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-6 10:38:40 | 显示全部楼层
回复【14楼】Tardis:
---------------------------------
9325  SPI 传输最高能做到多少
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-6 11:03:06 | 显示全部楼层
回复【15楼】manaok12345:
---------------------------------
???
你说的是SPI的flash吗?
那个理论上可以做到全速,但低温环境下,速度会有所下降。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-6 11:04:00 | 显示全部楼层
回复【15楼】manaok12345:
---------------------------------
160*128像素的屏,ucosii系统下测试得到的刷屏数据是极限每秒40野
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-6 19:24:54 | 显示全部楼层
回复【16楼】Tardis:
---------------------------------
我的是240×320的, 对的 我说是SPI最大能达到多少,我用的是LPC1766  最快100M 我估计用不到 90M吧  100M的速度放音频文件会很快
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-6 19:39:25 | 显示全部楼层
回复【17楼】Tardis:
---------------------------------
我看到原子的视频里面 他的显示那个E_BOOK时候 刷屏也还好啊  我那个只要显示单色就行了
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-6 19:41:04 | 显示全部楼层
回复【17楼】Tardis:
---------------------------------
看他的程序也没做缓存啊,做个很大的缓存太麻烦了,显示只是我工作量的1/8,却要用掉我这么RAM 算了吧
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-7 08:30:25 | 显示全部楼层
回复【19楼】manaok12345:
---------------------------------
如果只要单色的话,没必要弄显存,太浪费了,如果你要做比较复杂的UI,例如原子的那种滑动效果或者说更复杂一点的UI,例如像win7那样背景模糊化,就得弄显存,而且显存越大,对程序设计越有利,最好显存大到可以数个页面和自定义缓存区,这样LCD驱动只需要做一个全屏刷新函数就得了,话说STM32那蛋痛的速度,浮点运算太慢,弄WIN7那个背景模糊化特效,那个卡啊,就背景颜色处理,160*128像素,居然吃了4秒,可能是我用的算法太占时序了,我是这样弄的,把一个像素点和周围上下左右4个像素点的颜色按50%比例互相混合,后作为该点颜色,模糊化效果不是很好,也吃时序。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-9-21
在线时间
0 小时
 楼主| 发表于 2013-11-12 21:27:05 | 显示全部楼层
回复【21楼】Tardis:
---------------------------------
有没有尝试过在中断中做SPI  或者用DMA 做SPI ,我现在这个是SSP 做SPI方式  能达到50M的波特率 我就写20X20的汉字刷一屏在150几毫秒,太占我的CPU时间了 ,我其他主要还得做几个控制模快 和通讯模块  通讯模块的通讯周期一般都在20ms以为  如果突然来哪一屏来个150几毫秒 那肯定完蛋了  如果用DMA的 话 我觉得只要整屏刷会比较方便, 如果用覆盖法 DMA传数据就不太好搞了 又是传命令又传数据的的
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-14 11:33:29 | 显示全部楼层
回复【22楼】manaok12345:
---------------------------------
没有做过
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 00:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表