OpenEdv-开源电子网

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

LCD驱动代码的一个问题

[复制链接]

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-5-22
在线时间
0 小时
发表于 2014-8-20 18:22:23 | 显示全部楼层 |阅读模式
5金钱
今天看LCD_Init(void)代码的时候,有点迷惑,代码如下:  
[mw_shl_code=c,true]delay_ms(50); // delay 50 ms LCD_WriteReg(0x0000,0x0001); delay_ms(50); // delay 50 ms lcddev.id = LCD_ReadReg(0x0000); [/mw_shl_code]
问题在这两句:
LCD_WriteReg(0x0000,0x0001);
lcddev.id = LCD_ReadReg(0x0000); 
这个读写寄存器是什么意思?是向LCD驱动芯片写或读 NOP(00h)命令吗?如果是,我看手册上这条命令是没有参数的,后面为什么会有0x0001这个参数?读到的又是什么内容呢?
请原子哥和各位同学指教,谢谢!

最佳答案

查看完整内容[请看2#楼]

LCD_WriteReg(0x0000,0x0001); 这个可以忽略. 去掉也没问题,这是以前供应商给的代码有这句话,我就一直保留了.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-8-20 18:22:24 | 显示全部楼层
LCD_WriteReg(0x0000,0x0001);

这个可以忽略.
去掉也没问题,这是以前供应商给的代码有这句话,我就一直保留了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-8-20 19:18:00 | 显示全部楼层
读取液晶ID号
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-8-20 19:26:33 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
读取液晶ID号不是 00啊,比如,RM68042是Device Code Read (BFh),ILI9341是Read ID4 (D3h)
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-8-20 19:31:00 | 显示全部楼层
不同的芯片不同,具体参考数据手册
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-8-21 09:02:23 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
谢谢原子哥,
lcddev.id = LCD_ReadReg(0x0000); 
那这一句呢? NOP(00h)命令是没有参数的,读到的又是什么内容呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-8-22 00:16:25 | 显示全部楼层
回复【6楼】flyriz:
---------------------------------
这句是读ID。。。。
很多LCD都是通过读寄存器0,读取ID的,自己好好看手册。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-8-22 11:34:49 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
看到了,ILI9331就是这样子的,ID code (R00h),谢谢原子哥。
回复

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2016-5-1
在线时间
25 小时
发表于 2016-8-14 22:49:30 | 显示全部楼层
刚好有这个问题想问。
回复

使用道具 举报

senmg 该用户已被删除
发表于 2016-10-30 10:06:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

4

主题

7

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-3-25
在线时间
4 小时
发表于 2017-3-25 22:18:11 | 显示全部楼层
不是说好在D3H的指令之后跟00H才有效的吗
回复

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-4-8 10:26:54 | 显示全部楼层
我也不懂啊
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-6-11
在线时间
16 小时
发表于 2017-12-21 23:01:59 | 显示全部楼层
flyriz 发表于 2014-8-21 09:02
回复【5楼】正点原子:
---------------------------------
谢谢原子哥,
lcddev.id = LCD_ReadRe ...

我试了下注释掉程序也可以正常跑。
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2018-4-2
在线时间
17 小时
发表于 2018-11-30 21:46:11 | 显示全部楼层
楼主明白了吗? 我看到这也有疑问 ,不明白这到底是怎么回事?
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2018-11-11
在线时间
35 小时
发表于 2018-12-28 14:06:56 | 显示全部楼层
正点原子 发表于 2014-8-22 00:16
回复【6楼】flyriz:
---------------------------------
这句是读ID。。。。
很多LCD都是通过读寄存器0,读 ...

对呀,但读id不是说要跟在指令0xD3的后面吗,开发指南好像都没讲到过这个地址,ic5510的NOP(0000h)好像是个空命令。
觉得这些地方原子哥应该打点注释,不然会让很多stm32新手迷惑,毕竟搞程序的都对这些小处很纠结的
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2018-11-11
在线时间
35 小时
发表于 2019-1-28 15:04:17 | 显示全部楼层
去掉是可以,但是我发现一个现象,就是去掉那几行我的探索者4.3寸屏复位就显示出错,重启单片机也是出错,必须要重新刷写才能正常显示,我试验过,加回那几行显示怎么复位都没问题,所以这几行程序是有存在的必要的,并不是真的可以忽略,但暂时还不知道是什么作用,我还在琢磨,也希望原子哥能帮忙看看
回复

使用道具 举报

6

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-3-10
在线时间
8 小时
发表于 2019-3-10 19:52:56 | 显示全部楼层
正点原子 发表于 2014-8-22 00:16
回复【6楼】flyriz:
---------------------------------
这句是读ID。。。。
很多LCD都是通过读寄存器0,读 ...

原子哥,这个读寄存器0具体在数据手册上哪里啊, 看了半天只找到这个
Column Address Set  2Ah

Page Address Set  2Bh
回复

使用道具 举报

12

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2019-5-27
在线时间
74 小时
发表于 2019-9-26 20:28:26 | 显示全部楼层
正点原子 发表于 2014-8-20 18:22
LCD_WriteReg(0x0000,0x0001);

这个可以忽略.
去掉也没问题,这是以前供应商给的代码有这句话,我就一直保留 ...

从别的资料上有这一句话“往奇数地址写入数据时,地址最低位的值均为1,所以它会控制地址线输出高电平,那么这时通过数据线传输的信号会被理解为数值”供应商的代码会不会是这个意思呢?
回复

使用道具 举报

12

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2019-5-27
在线时间
74 小时
发表于 2019-9-26 20:35:12 | 显示全部楼层
正点原子 发表于 2014-8-20 18:22
LCD_WriteReg(0x0000,0x0001);

这个可以忽略.
去掉也没问题,这是以前供应商给的代码有这句话,我就一直保留 ...

感觉有点像液晶屏初始化,之所以为1,是因为HADDR[25:0]>>1,然后接下来从0000处读取ID?
不知道哪个理解的对?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-4-15
在线时间
0 小时
发表于 2020-6-2 21:28:04 | 显示全部楼层
个人理解,lcddev.id = LCD_ReadReg(0x0000);在9341的R0中读出的是小于<0xff的值,0xffff或者0x9300的一种,毕竟没定义不好说,因而会跑进if语句执行。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-1 13:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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