注册 登录
查看: 451|回复: 21

山外哥的k60液晶LCD程序能不能用到其他的液晶屏上啊?

[复制链接]
发表于 2014-7-30 18:51:55 | 显示全部楼层 |阅读模式
2.8寸的 TFT LCD 分辨率 320*240 带触屏  能用的话 是不是要改什么参数?求山外哥指导~~~谢谢~
回复

使用道具 举报

发表于 2014-7-30 18:54:05 | 显示全部楼层
可以的,我们的LCD程序,你只要按照我们的例程套进去,写相应的底层接口,就好了。
我们的LCD例程,支持3.2寸大液晶和1.4寸小液晶。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 19:31:54 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 18:54
可以的,我们的LCD程序,你只要按照我们的例程套进去,写相应的底层接口,就好了。
我们的LCD例程,支持3. ...

那我现在2.8寸的 要怎么改一下屏幕大小吗?还是直接用这种接口就可以用?谢谢山外哥
回复 支持 反对

使用道具 举报

发表于 2014-7-30 19:34:32 | 显示全部楼层
chk 发表于 2014-7-30 19:31
那我现在2.8寸的 要怎么改一下屏幕大小吗?还是直接用这种接口就可以用?谢谢山外哥

其实就是分辨率而已,你看我们的大液晶的代码吧,有底层接口需要实现的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 19:40:23 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 19:34
其实就是分辨率而已,你看我们的大液晶的代码吧,有底层接口需要实现的。

他的分辨率跟你们一样 要是320*240
回复 支持 反对

使用道具 举报

发表于 2014-7-30 19:45:39 | 显示全部楼层
chk 发表于 2014-7-30 19:40
他的分辨率跟你们一样 要是320*240

那就直接修改底层的初始化配置就好了,不需要修改分辨率
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 19:55:42 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 19:45
那就直接修改底层的初始化配置就好了,不需要修改分辨率

我的接口都是直接用你们的然后杜邦线连连 除了接口 还有那些参数要改一下啊?
回复 支持 反对

使用道具 举报

发表于 2014-7-30 20:04:55 | 显示全部楼层
chk 发表于 2014-7-30 19:55
我的接口都是直接用你们的然后杜邦线连连 除了接口 还有那些参数要改一下啊?

底层的接口,例如 LCD初始化需要配置 cmd,LCD的开窗函数等
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 20:17:36 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 20:04
底层的接口,例如 LCD初始化需要配置 cmd,LCD的开窗函数等

你们的控制芯片是ILI9341他们的是IC9325或9328 是不是这方面需要改一下啊?
好像很麻烦改的样子。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-7-30 20:19:53 | 显示全部楼层
chk 发表于 2014-7-30 20:17
你们的控制芯片是ILI9341他们的是IC9325或9328 是不是这方面需要改一下啊?
好像很麻烦改的样子。。。。 ...

一点都不方面,你对比一下我们的大液晶和小液晶代码,就知道要改什么了,那两款都不同相同的主控,所以只需要改初始化和开窗等函数就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 20:30:38 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 20:19
一点都不方面,你对比一下我们的大液晶和小液晶代码,就知道要改什么了,那两款都不同相同的主控,所以只 ...

是一点都不方便?还是一点都不麻烦啊?嘿嘿~山外哥 打的好像有点模糊~~~那LCD_ST7735R那个函数就是小液晶的咯?不麻烦的话 我就试试~强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-7-30 21:19:49 | 显示全部楼层
chk 发表于 2014-7-30 20:30
是一点都不方便?还是一点都不麻烦啊?嘿嘿~山外哥 打的好像有点模糊~~~那LCD_ST7735R那个函数就是小液晶的 ...

一点都不麻烦,打错字了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 21:23:54 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 21:19
一点都不麻烦,打错字了

真的啊~~~那我尝试一下吧~~~但感觉现在还是云里雾里的~
回复 支持 反对

使用道具 举报

发表于 2014-7-30 21:29:00 | 显示全部楼层
chk 发表于 2014-7-30 21:23
真的啊~~~那我尝试一下吧~~~但感觉现在还是云里雾里的~

大液晶和小液晶,都是不同主控的,一样可以用我们的LCD程序,我们的LCD程序做好了底层接口的。

你看看那些  API接口 这部分的声明,例如 LCD_INIT()

//需要底层实现的几个宏定义:
//LCD_H                         //高
//LCD_W                         //宽

//LCD_INIT()                    //初始化
//LCD_PTLON(site,size)          //开窗
//LCD_RAMWR()                   //写模式
//LCD_WR_DATA(data)             //写数据
//LCD_WR_DATA_B(data)           //写数据(大端),16位液晶与LCD_WR_DATA一致即可,8位液晶交换顺序

//如下为可选
//LCD_RAMRD()                   //读模式
//LCD_SET_DIR(opt)              //设置显示方向(0~3)
//LCD_DIR                       //获取显示方向(0~3)


//如下为内部调用,或者上面的宏定义调用
//LCD_WR_CMD(cmd)               //命令
//LCD_RD_DATA()                 //读数据

//8位液晶可能需要(上面默认是16位)
//LCD_WR_8CMD(cmd)               //命令
//LCD_WR_8DATA(data)            //写数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 21:36:49 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 21:19
一点都不麻烦,打错字了

哦!我好像有点明白了!是不是就是把那个cmd改了 就好了改成它那个芯片用的cmd 但是他们给的例程里面的cmd是那个是四位16进制 山外哥的是两位 16进制诶~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 22:08:28 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 21:29
大液晶和小液晶,都是不同主控的,一样可以用我们的LCD程序,我们的LCD程序做好了底层接口的。

你看看 ...

山外哥 那我怎么知道那个cmd 和date 命令和写数据对于的应该改成什么啊?他们给我的例程是stm32的然后他的cmd是对应的都是四位的 而且一个cmd 写进去一个数据 山外哥的是一个cmd写进去了几个数据 而且 好像有点不能对应 就不知道怎么改了~~~求山外哥指导啊~~~感谢感谢~
回复 支持 反对

使用道具 举报

发表于 2014-7-30 22:10:09 | 显示全部楼层
chk 发表于 2014-7-30 22:08
山外哥 那我怎么知道那个cmd 和date 命令和写数据对于的应该改成什么啊?他们给我的例程是stm32的然后他的c ...

你把具体的代码发上来看看,还有他们的函数声明
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 22:14:08 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 22:10
你把具体的代码发上来看看,还有他们的函数声明

void LCD_WriteReg(unsigned int LCD_Reg, unsigned int LCD_RegValue)
{       
        //LCD_nCS;
        *(volatile uint16_t *) (LCD_Reg_Addr) = LCD_Reg;
        *(volatile uint16_t *) (LCD_Data_Addr) = LCD_RegValue;
        //LCD_CS;
}
{
                  LCD_WriteReg(0x00e7,0x0010);      
        LCD_WriteReg(0x0000,0x0001);                          //start internal osc
        LCD_WriteReg(0x0001,0x0100);     
        LCD_WriteReg(0x0002,0x0700);                                 //power on sequence                     
        LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) );         //65K
        LCD_WriteReg(0x0004,0x0000);                                   
        LCD_WriteReg(0x0008,0x0207);                   
        LCD_WriteReg(0x0009,0x0000);         
        LCD_WriteReg(0x000a,0x0000);                                 //display setting         
        LCD_WriteReg(0x000c,0x0001);                                //display setting         
        LCD_WriteReg(0x000d,0x0000);                                 //0f3c         
        LCD_WriteReg(0x000f,0x0000);
//Power On sequence //
        LCD_WriteReg(0x0010,0x0000);   
        LCD_WriteReg(0x0011,0x0007);
        LCD_WriteReg(0x0012,0x0000);                                                                 
        LCD_WriteReg(0x0013,0x0000);                 
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0010,0x1590);   
        LCD_WriteReg(0x0011,0x0227);
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0012,0x009c);                  
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0013,0x1900);   
        LCD_WriteReg(0x0029,0x0023);
        LCD_WriteReg(0x002b,0x000e);
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0020,0x0000);                                                            
        LCD_WriteReg(0x0021,0x0000);           
///////////////////////////////////////////////////////      
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0030,0x0007);
        LCD_WriteReg(0x0031,0x0707);   
        LCD_WriteReg(0x0032,0x0006);
        LCD_WriteReg(0x0035,0x0704);
        LCD_WriteReg(0x0036,0x1f04);
        LCD_WriteReg(0x0037,0x0004);
        LCD_WriteReg(0x0038,0x0000);        
        LCD_WriteReg(0x0039,0x0706);     
        LCD_WriteReg(0x003c,0x0701);
        LCD_WriteReg(0x003d,0x000f);
        for(i=50000;i>0;i--);
                for(i=50000;i>0;i--);
        LCD_WriteReg(0x0050,0x0000);        
        LCD_WriteReg(0x0051,0x00ef);   
        LCD_WriteReg(0x0052,0x0000);     
        LCD_WriteReg(0x0053,0x013f);
        LCD_WriteReg(0x0060,0xa700);        
        LCD_WriteReg(0x0061,0x0001);
        LCD_WriteReg(0x006a,0x0000);
        LCD_WriteReg(0x0080,0x0000);
        LCD_WriteReg(0x0081,0x0000);
        LCD_WriteReg(0x0082,0x0000);
        LCD_WriteReg(0x0083,0x0000);
        LCD_WriteReg(0x0084,0x0000);
        LCD_WriteReg(0x0085,0x0000);
      
        LCD_WriteReg(0x0090,0x0010);     
        LCD_WriteReg(0x0092,0x0000);  
        LCD_WriteReg(0x0093,0x0003);
        LCD_WriteReg(0x0095,0x0110);
        LCD_WriteReg(0x0097,0x0000);        
        LCD_WriteReg(0x0098,0x0000);  
         //display on sequence     
        LCD_WriteReg(0x0007,0x0133);
   
        LCD_WriteReg(0x0020,0x0000);                                                            
        LCD_WriteReg(0x0021,0x0000);
        }
应该就是这段~山外哥真是认真负责啊~~~比我们老师好多了!!!良师益友啊~哈哈
回复 支持 反对

使用道具 举报

发表于 2014-7-30 22:28:36 | 显示全部楼层
chk 发表于 2014-7-30 22:14
void LCD_WriteReg(unsigned int LCD_Reg, unsigned int LCD_RegValue)
{       
        //LCD_nCS;

你把他的函数拆开两个语句,就可以了。就是先发命令,再发数据
回复 支持 反对

使用道具 举报

发表于 2014-7-30 22:34:23 | 显示全部楼层
chk 发表于 2014-7-30 22:14
void LCD_WriteReg(unsigned int LCD_Reg, unsigned int LCD_RegValue)
{       
        //LCD_nCS;

因为不同的命令,他的数据长度不定的,所以我们的函数是没有像你给的代码那样组成写寄存器函数。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-30 22:34:50 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-30 22:28
你把他的函数拆开两个语句,就可以了。就是先发命令,再发数据

那他们的是四位命令啊前面两位省略?
回复 支持 反对

使用道具 举报

发表于 2014-7-30 23:04:40 | 显示全部楼层
chk 发表于 2014-7-30 22:34
那他们的是四位命令啊前面两位省略?

你看他的函数,都是转化为uint16的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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