OpenEdv-开源电子网

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

stm32 驱动 LGDP4531

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-3-4
在线时间
0 小时
发表于 2013-3-5 22:42:41 | 显示全部楼层 |阅读模式
自己焊了一块儿板子,第一次学习单片机就焊板子现在看来有点儿二了。呵呵。。我用的STM32F103RCT6,屏幕用的是LGDP4531的。但是现在的问题是GUI无法显示。
请大家看看我的输出方式对不对
  /*------------------------------------------
 STM32         TFT4531
   PA8  <---> DB10 (8)   
   PA9  <---> DB8  (7)
   PA10 <---> DB7  (6)
   PA11 <---> DB6  (5)
   PA12 <---> DB5  (4)
----------------------------------------------*/
 
    GPIOA->CRH &= 0XFFF00000;  //PA8~12 推挽输出模式
    GPIOA->CRH |= 0X00033333;   
    GPIO_Write(GPIOA, ((GPIOA->ODR&0xE0FF)| (data&0x0100)<<0 | \
                                  (data&0x0080)<<2     | (data&0x0040)<<4 | \
                                  (data&0x0020)<<6     | (data&0x0010)<<8));

嗯,我的引脚安排的确实是非常的不妥,不知道用以上的方式写入数据对不对,我其他的数据引脚也是采用如上的方式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-5 23:09:14 | 显示全部楼层
你的液晶是几位数据的啊?
5位????
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-3-4
在线时间
0 小时
 楼主| 发表于 2013-3-5 23:13:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是16位的。
/*---------------------TFT硬件连接说明-------------------------
*
*     stm32      4531           #      stm32      4531         
*                                     #
*     C6  <---> DB14         #      A8  <---> DB10     
*     C7  <---> DB13         #      A9  <---> DB8
*     C8  <---> DB12         #      A10 <---> DB7 
*     C9  <---> DB11         #      A11 <---> DB6 
*     C10 <---> DB4          #      A12 <---> DB5 
*     PC11 <---> DB3          #
*     PC12 <---> DB2          #      PD2  <---> DB1
*                                     #
*     PB3  <---> RD             #      PB15 <---> DB15 
*     PB4  <---> WR            #      PB14 <---> DB16 
*     PB5  <---> RS             #      PB13 <---> DB17
*     PB6  <---> CS             #
*     PB7  <---> LEDKA
*
*-------------------------------------------------------------*/
不知道是哪里出问题了,那个lcd寄存器初始化我是按照您的代码弄的,不知道和液晶屏的引脚的连接顺序有关系么?

回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-3-4
在线时间
0 小时
 楼主| 发表于 2013-3-5 23:19:45 | 显示全部楼层
回复【3楼】guo__qiu:
---------------------------------
我是第一次弄这个,网上说就是模拟io口,弄好时序就行了,可我是第一次弄,可以说全都是抄来的。算了,还是贴代码吧。请版主看看了。

/******************************************/
/*       数据输出   */
/******************************************/
void LCD_DATAOUT(u16 data)
{

GPIOA->CRH &= 0XFFF00000;  //PA8~12 推挽输出模式
GPIOA->CRH |= 0X00033333;

GPIOB->CRH &= 0X000FFFFF;   //PB13~15 推挽输出模式
GPIOB->CRH |= 0X33300000;


GPIOD->CRL &= 0XFFFFF0FF;  //PD2  推挽输出模式
GPIOD->CRL |= 0X00000300;    

GPIOC->CRL &= 0X00FFFFFF;  //PC6~7 推挽输出模式
GPIOC->CRL |= 0X33000000;

GPIOC->CRH &= 0XFFF00000;  //PC8~12 推挽输出模式
GPIOC->CRH |= 0X00033333;

//GPIOB->CRL=0X33333333; //PB0-7  推挽输出
//GPIOB->CRH=0X33333333; //PB8-15 推挽输出 

    //放入端口输出数据寄存器中
    //PD2 <--> DB1
    GPIO_Write(GPIOD, ((GPIOD->ODR&0XFFFB)|(data&0X0001)<<2));
    // PC6  <---> DB14(12)       
    // PC7  <---> DB13(11)        
    // PC8  <---> DB12(10)        
    // PC9  <---> DB11(9)        
    // PC10 <---> DB4 (3)       
    // PC11 <---> DB3 (2)        
    // PC12 <---> DB2 (1)
    GPIO_Write(GPIOC, ((GPIOC->ODR&0xE03F)| (data&0x0002)<<10 | \
                                 (data&0x0004)<<8   | (data&0x0008)<<6  | \
                                 (data&0x0200)>>0   | (data&0x0400)>>2  | \
                                 (data&0x0800)>>4   | (data&0x1000)>>6 ));
    //PB15 <---> DB15 (13)
    //PB14 <---> DB16 (14)
    //PB13 <---> DB17 (15)
    GPIO_Write(GPIOB, ((GPIOB->ODR&0x1FFF)| (data&0x2000)<<2 | \
                                 (data&0x4000)<<0   | (data&0x8000)>>2));
 
     //PA8  <---> DB10 (8)    
    //PA9  <---> DB8  (7)
    //PA10 <---> DB7  (6)
    //PA11 <---> DB6  (5)
    //PA12 <---> DB5  (4)
    GPIO_Write(GPIOA, ((GPIOA->ODR&0xE0FF)| (data&0x0100)<<0 | \
                                 (data&0x0080)<<2   | (data&0x0040)<<4 | \
                                 (data&0x0020)<<6   | (data&0x0010)<<8));
}
/******************************************/
/*       数据输入   */
/******************************************/
u16 LCD_DATAIN()

u16 data;
GPIOA->CRH &= 0XFFF00000;  //PA8~12 上拉输入
GPIOA->CRH |= 0X00088888;

GPIOB->CRH &= 0X000FFFFF;   //PB13~15 上拉输入
GPIOB->CRH |= 0X88800000;


GPIOD->CRL &= 0XFFFFF0FF;  //PD2  上拉输入
GPIOD->CRL |= 0X00000800;    

GPIOC->CRL &= 0X00FFFFFF;  //PC6~7 上拉输入
GPIOC->CRL |= 0X88000000;

GPIOC->CRH &= 0XFFF00000;  //PC8~12 上拉输入
GPIOC->CRH |= 0X00088888;

data = (GPIO_ReadInputData(GPIOA)&0x1F00) | \
 (GPIO_ReadInputData(GPIOB)&0xE000) | \
 (GPIO_ReadInputData(GPIOC)&0x1FB0) | \
 (GPIO_ReadInputData(GPIOD)&0x0004) ;

return data;
}
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-3-4
在线时间
0 小时
 楼主| 发表于 2013-3-5 23:30:26 | 显示全部楼层
版主,我不是故意贴代码的,是我说不明白哪里有问题。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-6 10:24:19 | 显示全部楼层
回复【5楼】guo__qiu:
---------------------------------
建议你测试下你的DATAOUT,能否按你的要求输出数据。
用刚万用表测一下各个相关IO。

不过,你怎么把IO设计成这样啊...
就算能用,你这速度也慢的可以....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-3-4
在线时间
0 小时
 楼主| 发表于 2013-3-7 09:58:34 | 显示全部楼层
呵呵,当时也没想,老师看我的电路图的时候也没给啥意见,所以就这样让人家制版了。结果就弄成现在这样,网上也找了不少液晶屏的驱动,但是我鼓捣了好久,还是不行啊,看来只能一个一个脚的测试了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-23 04:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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