打印
[技术求助]

关于2.8寸TFT彩屏的驱动

[复制链接]
1420|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
assange|  楼主 | 2014-8-27 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 assange 于 2014-8-29 13:09 编辑

小弟新手上路,对单片机有些了解,出于好奇最近收购一块2.8寸TFT彩屏,内部含有ILI9325,XPT2046,现在我真是捉急了,没有驱动历程,想到论坛上大神较多,特来请教 ,还望多多指点,谢谢啦。初步决定由K60来做mcu,希望有经验的人士给我点资料,谢谢~


程序写完啦,但是 DeviceCode读的数据一直是6783,还请大神们指点 谢谢
int main(void)
{
DelayInit();
        LCD_Init();
        while(1)
        {
        }
}
uint16_t DeviceCode;         

//PTB0~8 DB0~8 **** PTA8~15 DB8~15
void DataToIO(uint16_t val)
{
uint16_t dat=0;
dat = GPIO_ReadPort(HW_GPIOB);  // DBL 读取端口的32位数据
dat = (dat&0xFF00) | (val&0xFF);
GPIO_WritePort(HW_GPIOB, dat);
dat = GPIO_ReadPort(HW_GPIOA);  // DBH  
dat = (dat&0xFF00) | ((val>>8)&0xFF);
GPIO_WritePort(HW_GPIOA, dat);
}
#define LCD_WR_DATA(data)\
        {  \
        LCD_RS_SET;\
        LCD_CS_CLR;\
        DataToIO(data);\
        LCD_WR_CLR;\
        LCD_WR_SET;\
        LCD_CS_SET;\
        }  
void LCD_WR_REG(uint16_t data) //  些命令
{
        LCD_RS_CLR;//写地址
        LCD_CS_CLR;
        DataToIO(data);
        LCD_WR_CLR;
        LCD_WR_SET;
        LCD_CS_SET;   
}

//写某些寄存期地址
void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
{       
        LCD_WR_REG(LCD_Reg);  
        LCD_WR_DATA(LCD_RegValue);                             
}
//都寄存器
uint16_t LCD_ReadReg(uint8_t LCD_Reg)
{                                                                                  
        uint16_t t,i,datH,datL;
       
        LCD_WR_REG(LCD_Reg);  
        {
                GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_IPU);
                GPIO_WriteBit(HW_GPIOB,i,1);
        }
        for(i=8;i<16;i++)
        {
                GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_IPU);
                GPIO_WriteBit(HW_GPIOA,i,1);
        }
        LCD_RS_SET;
        LCD_CS_CLR;
        LCD_RD_CLR;
        DelayUs(5);                          
        LCD_RD_SET;
       
        datH = PTA->PDIR;  /**< Port Data Input Register, offset: 0x10 */
        datL = PTB->PDIR;  /**< Port Data Input Register, offset: 0x10 */
       
       
        LCD_CS_SET;
        for(i=0;i<7;i++)
        {
                GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_OPP);
                GPIO_WriteBit(HW_GPIOB,i,1);
        }
        for(i=8;i<16;i++)
        {
                GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_OPP);
                GPIO_WriteBit(HW_GPIOA,i,1);
        }
       
        t = ((datH<<8)&0xFF00) | (datL&0x00FF);
        return t;  
}  
void LCD_Init(void)
{  
  uint8_t i;                                                                                   
        for(i=5;i<10;i++)
        {
                GPIO_QuickInit(HW_GPIOD,i,kGPIO_Mode_OPP);
        }
        LCD_CS_SET;
        LCD_RD_SET;
        LCD_WR_SET;
        DelayMs(50); // delay 50 ms
        LCD_WriteReg(0x0000,0x0001);
        DelayMs(50); // delay 50 ms
        LCD_RD_SET;
        LCD_WR_SET;
        DeviceCode = LCD_ReadReg(0x0000);   
}





相关帖子

沙发
ou513| | 2014-8-27 19:33 | 只看该作者
ILI9325网上有很多现成很好的驱动,稍稍移植一下就可以了

使用特权

评论回复
板凳
mmuuss586| | 2014-8-27 20:24 | 只看该作者

买之前就要考虑的;
比如买开发板,就要开发板有哪些资料;

使用特权

评论回复
地板
airwill| | 2014-8-28 07:03 | 只看该作者
这个屏, STM32 的驱动, 网上有大把的资料, 很多公开的驱动光盘都包含, 可以参考移植一下.
屏的店家也会提供.

使用特权

评论回复
5
assange|  楼主 | 2014-8-29 13:10 | 只看该作者
airwill 发表于 2014-8-28 07:03
这个屏, STM32 的驱动, 网上有大把的资料, 很多公开的驱动光盘都包含, 可以参考移植一下.
屏的店家也会提供 ...

程序改好了,但是貌似有点小问题,能麻烦您帮忙看一下吗?

使用特权

评论回复
6
assange|  楼主 | 2014-8-29 13:11 | 只看该作者
ou513 发表于 2014-8-27 19:33
ILI9325网上有很多现成很好的驱动,稍稍移植一下就可以了

改好程序啦,能帮忙看看程序吗?

使用特权

评论回复
7
airwill| | 2014-8-29 19:31 | 只看该作者
有问题, 慢慢调试吧, 我手头没有 K60 的板子, 没有用过 K60. 抱歉

使用特权

评论回复
8
assange|  楼主 | 2014-8-29 21:34 | 只看该作者
airwill 发表于 2014-8-29 19:31
有问题, 慢慢调试吧, 我手头没有 K60 的板子, 没有用过 K60. 抱歉

:( 好的吧 谢谢

使用特权

评论回复
9
Imakey| | 2014-8-30 01:09 | 只看该作者
我有调好的,K60平台,9325,320*240大小,需要的话明早传上来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

38

帖子

0

粉丝