void Pulse_E(void){ GPIO_HIGH(CTRL_PORT, CTRL_E); //E=1 //Delay(EXT_LCD_DELAY); GLCD_Delay(300); GPIO_LOW(CTRL_PORT, CTRL_E); //E=0 //Delay(EXT_LCD_DELAY); GLCD_Delay(300); }
void GLCD_Reset(void) { GPIO_WriteHigh(GPIOC, KS0108_RES); GLCD_Delay(); GPIO_WriteLow(GPIOC, KS0108_RES); GLCD_Delay(); GPIO_WriteHigh(GPIOC, KS0108_RES); while(GLCD_ReadStatus(0)&DISPLAY_STATUS_BUSY); }
uint8_t GetByte(void){ GPIO_InitTypeDef GPIO_InitStructure; uint8_t byte_state; uint8_t res_byte; GPIO_HIGH(CTRL_PORT, CTRL_RS); //RS=1 GPIO_HIGH(CTRL_PORT, CTRL_RW); //RW=1 GLCD_Delay(100); GPIO_InitStructure.GPIO_Pin = DATA_PIN0 | DATA_PIN1 | DATA_PIN2 | DATA_PIN3 | DATA_PIN4 | DATA_PIN5 | DATA_PIN6 | DATA_PIN7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init( DATA_PORT, &GPIO_InitStructure); GPIO_HIGH(CTRL_PORT, CTRL_E); //E=1 GLCD_Delay(100); byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN0); res_byte = byte_state; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN1); res_byte += byte_state*0x02; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN2); res_byte += byte_state*0x04; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN3); res_byte += byte_state*0x08; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN4); res_byte += byte_state*0x10; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN5); res_byte += byte_state*0x20; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN6); res_byte += byte_state*0x40; byte_state = GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN7); res_byte += byte_state*0x80; GPIO_LOW(CTRL_PORT, CTRL_E); //E=0 DelayBusy(); return res_byte; }
//------------------------------------------------------------------------------------------------- // Read Status byte from specified controller (0-2) //------------------------------------------------------------------------------------------------- unsigned char GLCD_ReadStatus(unsigned char controller) { unsigned char status; // GPIO_StructInit(&GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = 0xFF ; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_Init(KS0108_PORT, &GPIO_InitStructure); GPIO_Init(KS0108_PORT,GPIO_PIN_ALL,GPIO_MODE_IN_PU_NO_IT); GPIO_WriteHigh(GPIOC, KS0108_RW); GPIO_WriteLow(GPIOC, KS0108_RS); GLCD_EnableController(controller); GLCD_Delay(); GPIO_WriteHigh(GPIOC, KS0108_EN); GLCD_Delay(); status = ((GPIO_ReadInputData(KS0108_PORT) ) & 0xFF); GPIO_WriteLow(GPIOC, KS0108_EN); GLCD_DisableController(controller); return status; }
//------------------------------------------------------------------------------------------------- // Write command to specified controller //------------------------------------------------------------------------------------------------- void GLCD_WriteCommand(unsigned char commandToWrite, unsigned char controller) { while(GLCD_ReadStatus(controller)&DISPLAY_STATUS_BUSY); KS0108_DATA_DIR = 0xFF; KS0108_CTRL_PORT &= ~(KS0108_RW | KS0108_RS); GLCD_EnableController(controller); KS0108_DATA_PORT = commandToWrite; KS0108_CTRL_PORT |= KS0108_EN; GLCD_Delay(); KS0108_CTRL_PORT &= ~KS0108_EN; GLCD_DisableController(controller); }
//------------------------------------------------------------------------------------------------- // Write data to current position //------------------------------------------------------------------------------------------------- void GLCD_WriteData(unsigned char dataToWrite) { while(GLCD_ReadStatus(screen_x / 64)&DISPLAY_STATUS_BUSY); // GPIO_StructInit(&GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = (0xFF ); // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // GPIO_Init(KS0108_PORT, &GPIO_InitStructure); GPIO_Init(KS0108_PORT,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIOC, KS0108_RW); GLCD_Delay(); GPIO_WriteHigh(GPIOC, KS0108_RS); GLCD_Delay(); GPIO_Write(KS0108_PORT, (GPIO_Pin_TypeDef)(dataToWrite )); GLCD_Delay(); GLCD_EnableController(screen_x / 64); GLCD_Delay(); GPIO_WriteHigh(GPIOC, KS0108_EN); GLCD_Delay(); GPIO_WriteLow(GPIOC, KS0108_EN); GLCD_Delay(); GLCD_DisableController(screen_x / 64); screen_x++; }
//------------------------------------------------------------------------------------------------- // Write command to specified controller //------------------------------------------------------------------------------------------------- void GLCD_WriteCommand(unsigned char commandToWrite, unsigned char controller) { while(GLCD_ReadStatus(controller)&DISPLAY_STATUS_BUSY); // GPIO_StructInit(&GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = (0xFF ); // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // GPIO_Init(KS0108_PORT, &GPIO_InitStructure); GPIO_Init(KS0108_PORT,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIOC, (GPIO_Pin_TypeDef)(KS0108_RS | KS0108_RW)); GLCD_Delay(); GLCD_EnableController(controller); GLCD_Delay(); GPIO_Write(KS0108_PORT, (GPIO_Pin_TypeDef)(commandToWrite )); GLCD_Delay(); GPIO_WriteHigh(GPIOC, KS0108_EN); GLCD_Delay(); GPIO_WriteLow(GPIOC, KS0108_EN); GLCD_Delay(); GLCD_DisableController(controller); }
//------------------------------------------------------------------------------------------------- // Read Status from specified controller (0-2) //------------------------------------------------------------------------------------------------- unsigned char GLCD_ReadStatus(unsigned char controller) { unsigned char status; KS0108_DATA_DIR = 0x00; KS0108_CTRL_PORT |= KS0108_RW; KS0108_CTRL_PORT &= ~KS0108_RS; GLCD_EnableController(controller); KS0108_CTRL_PORT |= KS0108_EN; GLCD_Delay(); status = KS0108_DATA_PIN; KS0108_CTRL_PORT &= ~KS0108_EN; GLCD_DisableController(controller); return status; }
//------------------------------------------------------------------------------------------------- // Write data to current position //------------------------------------------------------------------------------------------------- void GLCD_WriteData(unsigned char dataToWrite) { while(GLCD_ReadStatus(screen_x / 64)&DISPLAY_STATUS_BUSY); KS0108_DATA_DIR = 0xFF; KS0108_CTRL_PORT &= ~KS0108_RW; KS0108_CTRL_PORT |= KS0108_RS; KS0108_DATA_PORT = dataToWrite; GLCD_EnableController(screen_x / 64); KS0108_CTRL_PORT |= KS0108_EN; GLCD_Delay(); KS0108_CTRL_PORT &= ~KS0108_EN; GLCD_DisableController(screen_x / 64); screen_x++; }
//------------------------------------------------------------------------------------------------- // Read data from current position //------------------------------------------------------------------------------------------------- unsigned char GLCD_ReadData(void) { unsigned char data; while(GLCD_ReadStatus(screen_x / 64)&DISPLAY_STATUS_BUSY); KS0108_DATA_DIR = 0x00; KS0108_CTRL_PORT |= (KS0108_RW | KS0108_RS); GLCD_EnableController(screen_x / 64); //GLCD_Delay(); KS0108_CTRL_PORT |= KS0108_EN; GLCD_Delay(); data = KS0108_DATA_PIN; KS0108_CTRL_PORT &= ~KS0108_EN; GLCD_DisableController(screen_x / 64); screen_x++; return data; }