搞了几天!最后总结一句!看文档不仔细,就是坑爹!是严重坑爹!
刚开始,这块液晶,我拿stc12c5a60s2来驱动,能点亮!
然后把51上的驱动,移植到F4里。到F4下测,死活都是白屏,刚开始以为是接错线了。。反复来核对接线!(接线是痛苦的,5555555说多了都是泪!)
反正这两天,都在跟这些线和lcd驱动较真。。死活找不到问题出在哪!(想摔了这屏啊,很冲动的啊!有木有啊!)
国内国外的论坛啊,各种找资料啊!倒是看到一篇f103驱动s6d1121的驱动文章,拿着f103的驱动移植到f4里。。还是木有成功!(更想摔了,有木有!)
无奈了,重新看卖家给的资料。无意中看到了一句话〉〉〉
模块用户通过PCB背面的j3焊盘设置8/16位接口, 短接j3焊盘模块工作在16位模式,不短接工作在8位模式!
拿着液晶看j3,居然不短接!瞬间明白了!于是拿焊锡把焊盘点上。再烧程序!O了!
==========================================================================================================================
在回头看看51的环境。拿51测的时候,我都是把16个I/O口全接上。因为看程序,以为默认就是16位的!也就没注意。
#ifdef Bus_16 //条件编译-16位数据模式
void LCD_Writ_Bus(char VH,char VL) //并行数据写入函数
{
LCD_DataPortH=VH;
LCD_DataPortL=VL;
LCD_WR=0;
LCD_WR=1;
}
#else //条件编译-8位数据模式
void LCD_Writ_Bus(char VH,char VL) //并行数据写入函数
{
LCD_DataPortH=VH;
LCD_WR=0;
LCD_WR=1;
LCD_DataPortH=VL;
LCD_WR=0;
LCD_WR=1;
}
#endif
现在回头看,我擦。没#define Bus_16..这不是坑爹坑到家了吗?
说多了都是泪啊!泪啊!啊!啊!啊!,总之以后看文档看数据手册要仔细啊!
-------------------------------------------------------------------------------------
硬件接线:
PD4 -----FSMC_NOE ----RD
PD5 -----FSMC_NWE ----WR
PD7 -----FSMC_NE1 ----CS
PD11 -----FSMC_A16 ----RS
PB5(或3V的引脚)-------------LCD_A
以下为LCD的驱动程序:
#include "lcd.h"
#define LCD_RAM *(vu16*)((u32)0x60020000) //disp Data ADDR
#define LCD_REG *(vu16*)((u32)0x60000000) //disp Reg ADDR
static sFONT *LCD_Currentfonts;
sFONT Font16x24;
static __IO uint16_t TextColor = 0x0000, BackColor = 0xFFFF;
/**************************************************************************************************************
* 函数名:GPIO_AF_FSMC_Config()
* 输入 :void
* 输出 :void
* 描述 :配置LCD连接的GPIO复用连接到FSMC
* 调用 :内部调用
*****************************************************************************************************************/
static void GPIO_AF_FSMC_Config(void)
{
/*配置GPIOD相应的管脚复用连接到FSMC*/
GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC); //配置GPIOD的Pin0复用连接到FSMC
GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC); //配置GPIOD的Pin1复用连接到FSMC
GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC); //配置GPIOD的Pin4复用连接到FSMC
GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC); //配置GPIOD的Pin5复用连接到FSMC
GPIO_PinAFConfig(GPIOD,GPIO_PinSource7,GPIO_AF_FSMC); //配置GPIOD的Pin7复用连接到FSMC
GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC); //配置GPIOD的Pin8