Hi I am looking for STM32 driver for KS0108 GLCD controller. Any body used ever?? I have downloaded one from en.radzio.dxp.pl/.../ It is puzzling for me that D/I pin is not defined?? I change the code like below in main low level library file: I see some signals on scope but nothing on the LCD!
//lcd_pin_function.h //LCD data port #define DP_0 GPIO_Pin_0 //PC0 #define DP_1 GPIO_Pin_1 //PC1 #define DP_2 GPIO_Pin_2 //PC2 #define DP_3 GPIO_Pin_3 //PC3 #define DP_4 GPIO_Pin_6 //PC6 #define DP_5 GPIO_Pin_7 //PC7 #define DP_6 GPIO_Pin_8 //PC8 #define DP_7 GPIO_Pin_9 //PC9 //lcd control port #define CS1 GPIO_Pin_10 //PB10 #define CS2 GPIO_Pin_11 //PB11 #define CS3 GPIO_Pin_12 //PB12 #define RS GPIO_Pin_13 //PB13 #define RW GPIO_Pin_14 //PB14 #define EN GPIO_Pin_15 //PB15 #define SET_DP0 GPIO_SetBits(GPIOC, DP_0); #define SET_DP1 GPIO_SetBits(GPIOC, DP_1); #define SET_DP2 GPIO_SetBits(GPIOC, DP_2); #define SET_DP3 GPIO_SetBits(GPIOC, DP_3); #define SET_DP4 GPIO_SetBits(GPIOC, DP_4); #define SET_DP5 GPIO_SetBits(GPIOC, DP_5); #define SET_DP6 GPIO_SetBits(GPIOC, DP_6); #define SET_DP7 GPIO_SetBits(GPIOB, DP_7); #define RESET_DP0 GPIO_ResetBits(GPIOC, DP_0); #define RESET_DP1 GPIO_ResetBits(GPIOC, DP_1); #define RESET_DP2 GPIO_ResetBits(GPIOC, DP_2); #define RESET_DP3 GPIO_ResetBits(GPIOC, DP_3); #define RESET_DP4 GPIO_ResetBits(GPIOC, DP_4); #define RESET_DP5 GPIO_ResetBits(GPIOC, DP_5); #define RESET_DP6 GPIO_ResetBits(GPIOC, DP_6); #define RESET_DP7 GPIO_ResetBits(GPIOB, DP_7); #define SET_CS1 GPIO_SetBits(GPIOB, CS1); #define SET_CS2 GPIO_SetBits(GPIOB, CS2); #define SET_CS3 GPIO_SetBits(GPIOB, CS3); #define SET_RS GPIO_SetBits(GPIOB, RS); #define SET_RW GPIO_SetBits(GPIOB, RW); #define SET_EN GPIO_SetBits(GPIOB, EN); #define RESET_CS1 GPIO_ResetBits(GPIOB, CS1); #define RESET_CS2 GPIO_ResetBits(GPIOB, CS2); #define RESET_CS3 GPIO_ResetBits(GPIOB, CS3); #define RESET_RS GPIO_ResetBits(GPIOB, RS); #define RESET_RW GPIO_ResetBits(GPIOB, RW); #define RESET_EN GPIO_ResetBits(GPIOB, EN); #define Read_DP_0 GPIO_ReadOutputDataBit(GPIOC,DP_0) #define Read_DP_1 GPIO_ReadOutputDataBit(GPIOC,DP_1) #define Read_DP_2 GPIO_ReadOutputDataBit(GPIOC,DP_2) #define Read_DP_3 GPIO_ReadOutputDataBit(GPIOC,DP_3) #define Read_DP_4 GPIO_ReadOutputDataBit(GPIOC,DP_4) #define Read_DP_5 GPIO_ReadOutputDataBit(GPIOC,DP_5) #define Read_DP_6 GPIO_ReadOutputDataBit(GPIOC,DP_6) #define Read_DP_7 GPIO_ReadOutputDataBit(GPIOB,DP_7) #define Read_Dataport (Read_DP_0<<0 |Read_DP_1<<1 |Read_DP_2<<2 |Read_DP_3<<3 |Read_DP_4<<4 |Read_DP_5<<5 |Read_DP_6<<6 |Read_DP_7<<7) void Set_Dataport(unsigned char Data); void GLCD_InitializePorts(void);
//------------------------------------------------------------------------------------------------- // Universal KS0108 driver library // STM32 MCU low-level driver // (c) Rados³aw Kwiecieñ, radek@dxp.pl //------------------------------------------------------------------------------------------------- //#include "stm32f10x_lib.h" #include "stm32l1xx.h" #include "lcd_pin_function.h" #define DISPLAY_STATUS_BUSY 0x80 extern unsigned char screen_x; extern unsigned char screen_y; GPIO_InitTypeDef GPIO_InitStructure; void Set_Dataport(unsigned char Data) { GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = DP_0|DP_1|DP_2|DP_3|DP_4|DP_5|DP_6|DP_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL ; GPIO_Init(GPIOC, &GPIO_InitStructure); if (Data & 1<<0) GPIO_SetBits(GPIOC, DP_0); else GPIO_ResetBits(GPIOC, DP_0); if (Data & 1<<1) GPIO_SetBits(GPIOC, DP_1); else GPIO_ResetBits(GPIOC, DP_1); if (Data & 1<<2) GPIO_SetBits(GPIOC, DP_2); else GPIO_ResetBits(GPIOC, DP_2); if (Data & 1<<3) GPIO_SetBits(GPIOC, DP_3); else GPIO_ResetBits(GPIOC, DP_3); if (Data & 1<<4) GPIO_SetBits(GPIOC, DP_4); else GPIO_ResetBits(GPIOC, DP_4); if (Data & 1<<5) GPIO_SetBits(GPIOC, DP_5); else GPIO_ResetBits(GPIOC, DP_5); if (Data & 1<<6) GPIO_SetBits(GPIOC, DP_6); else GPIO_ResetBits(GPIOC, DP_6); if (Data & 1<<7) GPIO_SetBits(GPIOC, DP_7); else GPIO_ResetBits(GPIOB, DP_7); } void Reset_Dataport(unsigned char Data) { GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = DP_0|DP_1|DP_2|DP_3|DP_4|DP_5|DP_6|DP_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL ; GPIO_Init(GPIOC, &GPIO_InitStructure); if (Data & 1<<0) GPIO_ResetBits(GPIOC, DP_0); //else GPIO_ResetBits(GPIOC, DP_0); if (Data & 1<<1) GPIO_ResetBits(GPIOC, DP_1); //else GPIO_ResetBits(GPIOC, DP_1); if (Data & 1<<2) GPIO_ResetBits(GPIOC, DP_2); //else GPIO_ResetBits(GPIOC, DP_2); if (Data & 1<<3) GPIO_ResetBits(GPIOC, DP_3); //else GPIO_ResetBits(GPIOC, DP_3); if (Data & 1<<4) GPIO_ResetBits(GPIOC, DP_4); //else GPIO_ResetBits(GPIOC, DP_4); if (Data & 1<<5) GPIO_ResetBits(GPIOC, DP_5); //else GPIO_ResetBits(GPIOC, DP_5); if (Data & 1<<6) GPIO_ResetBits(GPIOC, DP_6); //else GPIO_ResetBits(GPIOC, DP_6); if (Data & 1<<7) GPIO_ResetBits(GPIOC, DP_7); //else GPIO_ResetBits(GPIOB, DP_7); } //------------------------------------------------------------------------------------------------- // Delay function /for 8MHz/ //------------------------------------------------------------------------------------------------- void GLCD_Delay(void) { // asm("nop");asm("nop");asm("nop");asm("nop"); __nop();__nop();__nop();__nop(); } //------------------------------------------------------------------------------------------------- // Enalbe Controller (0-2) //------------------------------------------------------------------------------------------------- void GLCD_EnableController(unsigned char controller) { switch(controller){ case 0 : RESET_CS1; break; case 1 : RESET_CS2; break; case 2 : RESET_CS3; break; } } ...
Did you solve this problem ? Please, tell how to fix it, if you know how to solve it, cause i got the same problem.