OpenEdv-开源电子网

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

ILI液晶问题,新手

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
发表于 2011-9-2 16:11:31 | 显示全部楼层 |阅读模式
第一个问题:
在LCD_Init函数中,有下面这些代码,  
               //PORTB 推挽输出  
                GPIOB->CRH=0X33333333;
                GPIOB->CRL=0X33333333;   
                GPIOB->ODR=0XFFFF;
        
               delay_ms(50); // delay 50 ms 
                LCD_WriteReg(0x0000, 0x0001);
              delay_ms(50); // delay 50 ms
              DeviceCode = LCD_ReadReg(0x0000);//读操作能返回控制器编号  
我想问下  LCD_WriteReg(0x0000, 0x0001); 这句代码的作用。第一个参数是写命令,第二个参数是写数据,我想问第一个参数是0x0000,代表的是哪个命令,IR命令还是00h命令。
第二个问题:
就是我在ILI9320DS_V0.44.pdf的数据手册中的第50页中的(a)Write to register时序图中看到的是nCS拉低一次的过程中DB[17:0]是发生了Write register "index"和Write register "data",请问在void LCD_WR_REG(u8 data);这个函数中怎么没体现这个呐,还有nWR应该是拉低,再拉高,延时,再拉低,再拉高才对啊,怎么在void LCD_WR_REG(u8 data);函数中不是这么写的呐。谢谢原子哥
    
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-2 19:06:11 | 显示全部楼层
0X0000就是读LCD的ID。
写0X0001貌似没用,去掉也是可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-3 09:11:23 | 显示全部楼层
回复【2楼】正点原子:

---------------------------------
原子哥,怎么没回答我的第二个问题呐
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-3 10:15:55 | 显示全部楼层
//写8位数据函数
//用宏定义,提高速度.
#define LCD_WR_DATA(data){\
LCD_RS=1;\
LCD_CS=0;\
DATAOUT(data);\
LCD_WR=0;\
LCD_WR=1;\
LCD_CS=1;\

这是我的代码.
ILI在WR的上升沿读取总线上的数据.
其他都好理解的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-3 10:34:53 | 显示全部楼层
回复【4楼】正点原子:

---------------------------------
嗯 你讲的这些我都能理解,就是时序图中DB[17:0]中第一次先写的是“index”第二次才写的是“data”。我就是不明白这个“index”是什么,程序中也没有写“index”啊。谢谢,原子哥
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-3 11:44:22 | 显示全部楼层
回复【5楼】1323613343:
---------------------------------
index就是寄存器的编号.对饮我们的WRITE REG.
data就是数据,对应WRITE DATA
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-3 12:42:42 | 显示全部楼层
回复【6楼】正点原子:

---------------------------------
如果是你说的这样子的话 那
void LCD_WR_REG(u8 data)

LCD_RS=0;//写地址,当RS为0时,读写命令  
  LCD_CS=0; 
DATAOUT(data); 
LCD_WR=0; 
LCD_WR=1; 
  LCD_CS=1;   
}
应该改成
void LCD_WR_REG(u8 data)

LCD_RS=0;//写地址,当RS为0时,读写命令  
  LCD_CS=0; 
DATAOUT(data); 
LCD_WR=0; 
LCD_WR=1; 
  LCD_CS=0;   //改动的地方
}
因为CS拉低一次,就要写两次,一次是写index,一次是写data才对,如果像你在这个函数的最后LCD_CS=1;的话,那不就只写了一次而已 。谢谢原子哥
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-5 10:37:06 | 显示全部楼层
回复【6楼】正点原子:

---------------------------------
原子哥 怎么不回答了呐。本人是新手,可能问的问题比较低级,希望你不要见谅
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-5 11:55:00 | 显示全部楼层
回复【7楼】1323613343:
---------------------------------
你这样写不好的.
除非你两个函数放在一个里面.
否则如果单独调用这个函数,就会导致CS一直是低.很严重的有问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-5 11:55:35 | 显示全部楼层
比如有些指令,是只需要写CMD,而并没有跟DATA的.碰到这种,你怎么办?后面加个CS=1?不觉得蛋疼么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-5 12:58:12 | 显示全部楼层
回复【10楼】正点原子:

---------------------------------
嗯 你说得对,但是这样不就跟数据手册的时序不一样了,我就这个特别变扭。原子哥
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-5 14:05:58 | 显示全部楼层
回复【11楼】1323613343:
---------------------------------
数据手册是一次实现两个写入.所以CS没有变化.
CS是个片选信号,在需要液晶读取的时候拉低即可,其他时间可以拉高的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-9-2
在线时间
0 小时
 楼主| 发表于 2011-9-5 14:30:30 | 显示全部楼层
回复【12楼】正点原子:

---------------------------------
原来是这样子的啊 呵呵 谢谢原子哥,是不是其他器件的片选信号也是同一个道理还是就这个特殊。
回复 支持 反对

使用道具 举报

20

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2011-11-6
在线时间
0 小时
发表于 2012-1-8 16:05:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
写的时候是打开振荡器,读的时候可以知道控制器型号,
LCD_WriteReg(0x0000, 0x0001);这个不是寄存器命令和数据的写吗? 
原子哥,求交往~(*^__^*) 
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 19:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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