完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我最近在用STM32驱动240128液晶,搞了几天了,一直没反应,有会的,或者搞过类型的请帮我解决一下。液晶是直接5V供电,我是用四线串行时序,信号线直接和探索者开发板的GPIO口相连。下面是我的程序,望帮小弟解决一下。 /****************************************************************** ²âÊÔLCD240128Òº¾§Çý¶¯Í·Îļþ ******************************************************************/ #ifndef __LCD240128_H__ #define __LCD240128_H__ #include "sys.h" #include "delay.h" /******************************************** LCD¹Ü½Å¶¨Òå ********************************************/ //#define LCD240128_CS PAout(12) //#define LCD240128_RST PAout(13) //#define LCD240128_RS PAout(14) //#define LCD240128_SCL PAout(15) //#define LCD240128_SDA PBout(15) //#define LCD240128_CS PDout(14) //#define LCD240128_RST PDout(11) //#define LCD240128_RS PDout(15) //#define LCD240128_SCL PEout(8) //#define LCD240128_SDA PEout(9) #define LCD240128_CS_L GPIO_ResetBits(GPIOD, GPIO_Pin_14) #define LCD240128_CS_H GPIO_SetBits(GPIOD, GPIO_Pin_14) #define LCD240128_RST_L GPIO_ResetBits(GPIOD, GPIO_Pin_11) #define LCD240128_RST_H GPIO_SetBits(GPIOD, GPIO_Pin_11) #define LCD240128_RS_L GPIO_ResetBits(GPIOD, GPIO_Pin_15) #define LCD240128_RS_H GPIO_SetBits(GPIOD, GPIO_Pin_15) #define LCD240128_SCL_L GPIO_ResetBits(GPIOE, GPIO_Pin_8) #define LCD240128_SCL_H GPIO_SetBits(GPIOE, GPIO_Pin_8) #define LCD240128_SDA_L GPIO_ResetBits(GPIOE, GPIO_Pin_9) #define LCD240128_SDA_H GPIO_SetBits(GPIOE, GPIO_Pin_9) #define DIS_ON 0X3D #define DIS_OFF 0X3C #define REST 0X76 #define LCD240128_ClrAll 128 #define LCD240128_Direction 0 //ĬÈÏÇé¿öÏÂÊǺáÆÁÏÔʾ /********************************************* LCDÏà¹Øº¯Êý¶¨Òå **********************************************/ void LCD240128_WriteCommand(u8 Command); void LCD240128_WriteData(u8 Sdata); void LCD240128_ClearDisplay(u8 page); void LCD240128_Draw(u8 line,u8 list,u8 pw,u8 ph,u8 *Draw,u8 fbit); void DrawPicture(u8 line,u8 list,const u8 *Sk,u8 fbit); void LCD240128_Init(void); void SetXY(u8 x, u8 y); void ShowString(u8 x, u8 y, u8* str); #endif #include "lcd240128.h" /******************************************************************************************* * º¯ÊýÃèÊö£º·¢ËÍÖ¸ÁÊý£¬¸ßλÏÈËÍ * È«¾Ö×ÊÔ´£º * ÊäÈë²ÎÊý£º°ËλָÁîÂë * º¯Êý·µ»Ø£ºÎÞ *******************************************************************************************/ void LCD240128_WriteCommand(u8 Command) { u8 i; LCD240128_CS_L; delay_ms(5); LCD240128_RS_L; delay_ms(5); for(i = 0; i < 8; i++) { LCD240128_SCL_L; if(Command & 0x80) { LCD240128_SDA_H; } else { LCD240128_SDA_L; } delay_ms(5); LCD240128_SCL_H; Command <<= 1; } delay_ms(5); LCD240128_CS_H; delay_ms(5); } /******************************************************************************************* * º¯ÊýÃèÊö£º·¢ËÍÊý¾Ýº¯Êý£¬¸ßλÏÈËÍ * È«¾Ö×ÊÔ´£º * ÊäÈë²ÎÊý£º°ËλÊý¾Ý * º¯Êý·µ»Ø£ºÎÞ *******************************************************************************************/ void LCD240128_WriteData(u8 Sdata) { u8 i; LCD240128_CS_L; delay_ms(5); LCD240128_RS_H; delay_ms(5); for(i = 0; i < 8; i++) { LCD240128_SCL_L; if(Sdata & 0x80) {LCD240128_SDA_H;} else {LCD240128_SDA_L;} delay_ms(5); LCD240128_SCL_H; Sdata <<= 1; } delay_ms(5); LCD240128_CS_H; delay_ms(5); } /***************************************************************************************** ÏÔʾ×Ö·û´® *****************************************************************************************/ void SetXY(u8 x, u8 y) { LCD240128_WriteCommand(0X01); LCD240128_WriteCommand(x); LCD240128_WriteCommand(0xC0); LCD240128_WriteCommand(y); } /******************************************************************************************** ÏÔʾ×Ö·û´® *********************************************************************************************/ void ShowString(u8 x, u8 y, u8* str) { SetXY(x, y); while(*str!=' |