// Analog SPI void AspiCmd(u8 Command_Byte) { int i=8; LCD_A0_LOW(); LCD_CLK_HIGH(); LCD_CLK_HIGH(); LCD_NCS_LOW(); while (i--) { LCD_CLK_LOW(); if (Command_Byte&0x80) LCD_MOSI_HIGH(); else LCD_MOSI_LOW(); Command_Byte <<= 1; LCD_CLK_LOW(); \ LCD_CLK_LOW(); \ LCD_CLK_HIGH(); LCD_CLK_HIGH(); } LCD_NCS_HIGH(); LCD_A0_HIGH(); }
void lcdRefresh() { for (uint32_t y=0; y<LCD_H; y++) { uint8_t *p = &displayBuf[(y>>3)*LCD_W]; uint8_t mask = (1 << (y%8)); Set_Address(0, y); AspiCmd(0xAF); LCD_CLK_HIGH(); LCD_A0_HIGH(); LCD_NCS_LOW(); for (uint32_t x=0; x<LCD_W; x++) { LCD_WRITE_BIT(p[3*DISPLAY_PLAN_SIZE+x] & mask); LCD_WRITE_BIT(p[2*DISPLAY_PLAN_SIZE+x] & mask); LCD_WRITE_BIT(p[DISPLAY_PLAN_SIZE+x] & mask); LCD_WRITE_BIT(p[x] & mask); } LCD_NCS_HIGH(); LCD_A0_HIGH(); WriteData(0); } }
//Anolog spi void AspiData(u8 Para_data) { int i=8; LCD_CLK_HIGH(); LCD_A0_HIGH(); LCD_NCS_LOW(); while (i--) { LCD_CLK_LOW(); if (Para_data&0x80) LCD_MOSI_HIGH(); else LCD_MOSI_LOW(); Para_data <<= 1; __no_operation(); LCD_CLK_HIGH(); __no_operation(); } LCD_NCS_HIGH(); LCD_A0_HIGH(); }
void AspiCmd(uint8_t Command_Byte) { int i=8; LCD_A0_LOW(); LCD_CLK_HIGH(); LCD_NCS_LOW(); while (i--) { LCD_CLK_LOW(); if(Command_Byte&0x80) { LCD_MOSI_HIGH(); } else LCD_MOSI_LOW(); Command_Byte=Command_Byte<<1; LCD_CLK_HIGH(); } LCD_NCS_HIGH(); LCD_A0_HIGH(); }
/******************************************************************************* * Function Name : LCD_Write * Description : write data or command to lcd sdram * Input : command * Output : None * Return : None *******************************************************************************/ void LCD_WriteCmd(unsigned char command) { #ifdef SW_SPI unsigned char i; #endif LCD_CD_LOW(); #ifdef SW_SPI for(i=0; i<8; i++) { if(command & (0x80 >> i)) LCD_DATA_HIGH(); else LCD_DATA_LOW(); LCD_CLK_LOW(); Delay(); LCD_CLK_HIGH(); Delay(); }