OpenEdv-开源电子网

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

ILI9806驱动代码分享

[复制链接]

21

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2015-5-31
在线时间
115 小时
发表于 2017-4-21 17:36:45 | 显示全部楼层 |阅读模式
分享ILI9806驱动代码一份


补充内容 (2017-9-12 11:37):

ILI9806驱动代码.rar

91 Bytes, 下载次数: 1159

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2017-5-6 23:14:25 | 显示全部楼层
lwj199302 发表于 2017-5-6 21:11
没注意,怎么补发

是这样的,不知为何我读取的ID居然为0,背光有亮,这会是什么原因呢?请楼主教教我行吗?
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-4-21 18:14:11 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2017-5-6 02:50:42 | 显示全部楼层
楼主,我已下载,解压后我就笑了,只是空文件夹,看看就笑了
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-1-25
在线时间
33 小时
发表于 2017-5-6 12:17:41 | 显示全部楼层
无语~~~~~~~~~~~~~

ILI9806驱动代码
//************* 启动初始序列 **********//
//extC命令集使登记
WriteComm(0xFF);  
WriteData(0xFF);
WriteData(0x98);
WriteData(0x06);
//SPI接口设置
WriteComm(0xBA);  
WriteData(0xE0);
//GIP 1
WriteComm(0xBC);
WriteData(0x03);
WriteData(0x0F);
WriteData(0x63);
WriteData(0x69);
WriteData(0x01);
WriteData(0x01);
WriteData(0x1B);
WriteData(0x11);
WriteData(0x70);
WriteData(0x73);
WriteData(0xFF);
WriteData(0xFF);
WriteData(0x08);
WriteData(0x09);
WriteData(0x05);
WriteData(0x00);
WriteData(0xEE);
WriteData(0xE2);
WriteData(0x01);
WriteData(0x00);
WriteData(0xC1);
//GIP 2
WriteComm(0xBD);
WriteData(0x01);
WriteData(0x23);
WriteData(0x45);
WriteData(0x67);
WriteData(0x01);
WriteData(0x23);
WriteData(0x45);
WriteData(0x67);
//GIP 3
WriteComm(0xBE);
WriteData(0x00);
WriteData(0x22);
WriteData(0x27);
WriteData(0x6A);
WriteData(0xBC);
WriteData(0xD8);
WriteData(0x92);
WriteData(0x22);
WriteData(0x22);
//Vcom
WriteComm(0xC7);
WriteData(0x1E);
//EN_volt_reg
WriteComm(0xED);
WriteData(0x7F);
WriteData(0x0F);
WriteData(0x00);
//功率控制1
WriteComm(0xC0);
WriteData(0xE3);
WriteData(0x0B);
WriteData(0x00);

WriteComm(0xFC);
WriteData(0x08);
//工程设置
WriteComm(0xDF);  
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
WriteData(0x02);
//DVDD电压设定
WriteComm(0xF3);
WriteData(0x74);
//显示反转控制
WriteComm(0xB4);
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
//480x854
WriteComm(0xF7);
WriteData(0x81);
//帧速率
WriteComm(0xB1);
WriteData(0x00);
WriteData(0x10);
WriteData(0x14);
//面板时序控制
WriteComm(0xF1);
WriteData(0x29);
WriteData(0x8A);
WriteData(0x07);
//面板时序控制
WriteComm(0xF2);
WriteData(0x40);
WriteData(0xD2);
WriteData(0x50);
WriteData(0x28);
//功率控制2
WriteComm(0xC1);
WriteData(0x17);
WriteData(0X85);
WriteData(0x85);
WriteData(0x20);

WriteComm(0xE0);
WriteData(0x00); //P1
WriteData(0x0C); //P2
WriteData(0x15); //P3
WriteData(0x0D); //P4
WriteData(0x0F); //P5
WriteData(0x0C); //P6
WriteData(0x07); //P7
WriteData(0x05); //P8
WriteData(0x07); //P9
WriteData(0x0B); //P10
WriteData(0x10); //P11
WriteData(0x10); //P12
WriteData(0x0D); //P13
WriteData(0x17); //P14
WriteData(0x0F); //P15
WriteData(0x00); //P16

WriteComm(0xE1);
WriteData(0x00); //P1
WriteData(0x0D); //P2
WriteData(0x15); //P3
WriteData(0x0E); //P4
WriteData(0x10); //P5
WriteData(0x0D); //P6
WriteData(0x08); //P7
WriteData(0x06); //P8
WriteData(0x07); //P9
WriteData(0x0C); //P10
WriteData(0x11); //P11
WriteData(0x11); //P12
WriteData(0x0E); //P13
WriteData(0x17); //P14
WriteData(0x0F); //P15
WriteData(0x00); //P16
//撕裂效果
WriteComm(0x35);
WriteData(0x00);

WriteComm(0x36);
WriteData(0x60);

WriteComm(0x3A);
WriteData(0x55);
//退出睡眠
WriteComm(0x11);
LCD_delay(120);
//显示
WriteComm(0x29);
回复 支持 反对

使用道具 举报

21

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2015-5-31
在线时间
115 小时
 楼主| 发表于 2017-5-6 21:11:51 | 显示全部楼层
MrXiong 发表于 2017-5-6 02:50
楼主,我已下载,解压后我就笑了,只是空文件夹,看看就笑了

没注意,怎么补发
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-1-25
在线时间
33 小时
发表于 2017-5-8 10:00:14 | 显示全部楼层
        //读取LCD ID
  if(lcddev.id<0xFF||lcddev.id==0xFFFF)//读到ID不正确
        {       
                WriteComm(0xD3);                                  
                lcddev.id=ReadData();       
                lcddev.id=ReadData();                //读到0x00
                lcddev.id=ReadData();                //读到0x98                                                          
                lcddev.id<<=8;
                lcddev.id|=ReadData();         //读到0x06                             
                if(lcddev.id!=0x9806)
                {       
                        WriteComm(0xDA00);       
                        lcddev.id=ReadData();        //读回0x00         
                        WriteComm(0xDB00);       
                        lcddev.id=ReadData();        //读回0x80
                        lcddev.id<<=8;       
                        WriteComm(0xDC00);       
                        lcddev.id|=ReadData();        //读回0x00               
                        if(lcddev.id==0x8000)lcddev.id=0x5510;
                        else lcddev.id=LCDID;
                }
        }
回复 支持 反对

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2017-5-12 23:50:58 | 显示全部楼层
muecn 发表于 2017-5-8 10:00
//读取LCD ID
  if(lcddev.id

很感谢的大神的帮助,在加入判断代码代码后,现在可以正常显示,代码已经调通。
现在是有点疑问?那就是DA DB DC的指令问题,因为经测试代码如下
if(lcddev.id!=0x9806)
                {        
                        WriteComm(0xDA00);        
                        lcddev.id=ReadData();        //读回0x00         
                        WriteComm(0xDB00);        
                        lcddev.id=ReadData();        //读回0x80
                        lcddev.id<<=8;        
                        WriteComm(0xDC00);        
                        lcddev.id|=ReadData();        //读回0x00      

               printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD ID

                        if(lcddev.id==0x8000)lcddev.id=0x5510;
                        else lcddev.id=LCDID;
                }
串口输出的结果是
LCD ID:0
LCD ID:9806

疑问就是既然读取的值为0,为何还要直接用DA DB DC指令来读???
而像DA这些指令的作用是:用于跟踪/液晶模块驱动程序的版本。这是定义的供应商(与用户协议)和显示每次修改的变化显示,材料或施工规范。
这里面有隐藏了哪些信息??

回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-1-25
在线时间
33 小时
发表于 2017-5-13 18:42:24 | 显示全部楼层
WriteComm(0xDA00);        
lcddev.id=ReadData();        //读回0x00         
WriteComm(0xDB00);        
lcddev.id=ReadData();        //读回0x80
lcddev.id<<=8;        
WriteComm(0xDC00);        
lcddev.id|=ReadData();        //读回0x00               
if(lcddev.id==0x8000)lcddev.id=0x5510;
else lcddev.id=LCDID;

这段代码是用来适配我别一块35510的屏  其实你不用管它


如果只是9806代码就是
WriteComm(0xD3);                                   
lcddev.id=ReadData();        
lcddev.id=ReadData();                //读到0x00
lcddev.id=ReadData();                //读到0x98                                                           
lcddev.id<<=8;
lcddev.id|=ReadData();         //读到0x06     
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-5-25
在线时间
11 小时
发表于 2017-6-9 23:15:49 | 显示全部楼层
muecn 发表于 2017-5-8 10:00
//读取LCD ID
  if(lcddev.id

谢了,高手多的论坛学的快
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-9-10 11:16:20 | 显示全部楼层
能不能帮忙重新长传下呢,或者发给我邮箱1562575165@qq.com,Thanks&#9834;(&#65381;ω&#65381;)&#65417;
回复 支持 反对

使用道具 举报

21

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2015-5-31
在线时间
115 小时
 楼主| 发表于 2017-9-12 11:49:36 | 显示全部楼层
补发文件。。。。

ILI9806.rar

6.94 KB, 下载次数: 931

回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-9-13 21:41:43 | 显示全部楼层
muecn 发表于 2017-5-6 12:17
无语~~~~~~~~~~~~~

ILI9806驱动代码

大神,求一份全部的代码,折腾好几天了,手都抖了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-6-29
在线时间
12 小时
发表于 2018-8-17 09:35:26 | 显示全部楼层
我有个很奇怪问题,手册上有这么一句话在使用D3H命令时,先要配置FF寄存器。不知楼主是怎么读到Id的。我是死活都读不到。
图片2.png
回复 支持 反对

使用道具 举报

18

主题

190

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1068
金钱
1068
注册时间
2012-6-18
在线时间
158 小时
发表于 2018-8-30 17:20:21 | 显示全部楼层
本五心 发表于 2018-8-17 09:35
我有个很奇怪问题,手册上有这么一句话在使用D3H命令时,先要配置FF寄存器。不知楼主是怎么读到Id的。我是 ...

因为手册里面说了啊,这个是扩展命令集 必须先发ff 指令。才能出来。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-8-1
在线时间
4 小时
发表于 2019-5-17 16:12:34 | 显示全部楼层
太感谢了,函数非常丰富!
回复 支持 反对

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2019-4-28
在线时间
5 小时
发表于 2019-5-18 12:59:21 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-5-8
在线时间
6 小时
发表于 2019-8-20 12:59:17 | 显示全部楼层
里面用的是FSMC,有没有FMC的。
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-12
在线时间
16 小时
发表于 2021-1-15 15:52:34 | 显示全部楼层
为什么是空的?
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2019-3-6
在线时间
62 小时
发表于 2021-1-31 21:22:28 | 显示全部楼层
//GIP 1
WriteComm(0xBC);
//GIP 2
WriteComm(0xBD);
//GIP 3
WriteComm(0xBE);

这三个在手册都找不到,有大神知道是什么内容吗
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2020-10-31
在线时间
6 小时
发表于 2021-4-14 13:35:46 | 显示全部楼层
喇及玩意
回复 支持 反对

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2021-7-19 14:06:19 | 显示全部楼层
lwj199302 发表于 2017-9-12 11:49
补发文件。。。。

大佬,你代码里的
#define Bank1_LCD_C    ((u32)0x60000000)                 //命令地址
#define Bank1_LCD_D    ((u32)0x60020000)                //数据地址

这两个地址为什么是0x60000000和0x60020000   ?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-7-17
在线时间
2 小时
发表于 2022-8-1 16:13:03 | 显示全部楼层
MrXiong 发表于 2017-5-6 23:14
是这样的,不知为何我读取的ID居然为0,背光有亮,这会是什么原因呢?请楼主教教我行吗?

我的读取ID正确,但是我得不亮是什么原因,求教
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-7-17
在线时间
2 小时
发表于 2022-8-1 16:16:12 | 显示全部楼层
求一份完整代码,顺便问一下楼主,读取ID没问题,但是没有背光,什么都没有(接线没问题),这是什么原因,求教求教
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-8 00:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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