/**************************************************************************** * 名 称:void LCD_Init(void) * 功 能:初始化LCD * 入口参数:无 * 出口参数: * 说 明:无 ****************************************************************************/ void LCD_Init(void) { //LCD管脚初始化 LCD_PortInit(); GPIO_RESET(RST); SysTimeDly(2); GPIO_SET(RST); SysTimeDly(1); //使能片选 GPIO_RESET(CE); //初始化设置 send_1hex_data_and_1cmd_to_lcm(TEXT_HOME_ADDRESS, LCD_TXT_STP); //文本显示区首地址 send_2data_and_1cmd_to_lcm(LCD_BYTES_X, 0x00, LCD_TXT_WID); //文本显示区宽度 send_1hex_data_and_1cmd_to_lcm(GRAPHIC_HOME_ADDRESS, LCD_GRH_STP); //图形显示区首地址 send_2data_and_1cmd_to_lcm(LCD_BYTES_X, 0x00, LCD_GRH_WID); //图形显示区宽度 send_2data_and_1cmd_to_lcm(0x02,0x00,LCD_CGR_POS); //CGRAM偏置地址设置 LCD_WriteCommand(LCD_MOD_OR); //逻辑"或" //先清屏,再开显示 ClearScreen(); //开显示 LCD_WriteCommand(LCD_DIS_GON); //启用图形显示 }
//------------------------------------- // Display initialization //------------------------------------- void LCD_Initialize(void) { unsigned char i; LCD_DB4_DIR |= LCD_DB4; LCD_DB5_DIR |= LCD_DB5; LCD_DB6_DIR |= LCD_DB6; LCD_DB7_DIR |= LCD_DB7; LCD_E_DIR |= LCD_E; LCD_RS_DIR |= LCD_RS; _delay_ms(15); LCD_RS_PORT &= ~LCD_RS; LCD_E_PORT &= ~LCD_E; for(i = 0; i < 3; i++) { LCD_E_PORT |= LCD_E; _LCD_OutNibble(0x03); LCD_E_PORT &= ~LCD_E; _delay_ms(5); } LCD_E_PORT |= LCD_E; _LCD_OutNibble(0x02); LCD_E_PORT &= ~LCD_E; _delay_ms(1); LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); LCD_WriteCommand(HD44780_CLEAR); _delay_ms(2); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); }
void LCD_PutPixel(unsigned char X,unsigned char Y, unsigned char color) { unsigned char data; unsigned char adress=X_OFFSET; if( (X>=XMAX) || (Y>=YMAX) )return; adress += X; LCD_WriteCommand(0xB0 + (Y/8)); LCD_WriteCommand((unsigned char)adress & 0x0F); LCD_WriteCommand((unsigned char)((adress & 0xF0) >> 4) + 0x10); LCD_WriteCommand(0xE0); // вход в режим записи data = LCD_read_data(1); //dummy read data = LCD_read_data(0); //realy read LCD_WriteCommand(0xEE); // выход из режимазаписи if(color == 1) data |= 0x01 << (Y%8); else data &= ~(0x01 << (Y%8)); LCD_WriteData(data); }
/********************************************************************* * Function: LCD_SetArea(start_x,start_y,end_x,end_y) * * PreCondition: SetActivePage(page) * * Input: start_x, end_x - start column and end column * start_y,end_y - start row and end row position (i.e. page address) * * Output: none * * Side Effects: none * * Overview: defines start/end columns and start/end rows for memory access * from host to SSD1963 * Note: none ********************************************************************/ void LCD_SetArea(u16 start_x, u16 start_y, u16 end_x, u16 end_y) { long offset; offset = (u16)_activePage*(GetMaxY()+1); start_y = offset + start_y; end_y = offset + end_y; LCD_WriteCommand(CMD_SET_COLUMN); Clr_Cs; LCD_WriteData(start_x>>8); LCD_WriteData(start_x); LCD_WriteData(end_x>>8); LCD_WriteData(end_x); Set_Cs; LCD_WriteCommand(CMD_SET_PAGE); Clr_Cs; LCD_WriteData(start_y>>8); LCD_WriteData(start_y); LCD_WriteData(end_y>>8); LCD_WriteData(end_y); Set_Cs; }
//------------------------------------------------------------------------------------------------- // // Procedura inicjalizacji kontrolera HD44780. // //------------------------------------------------------------------------------------------------- void LCD_Initalize(void) { unsigned char i; LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku pracy wyprowadze� LCD_DB5_DIR |= LCD_DB5; // LCD_DB6_DIR |= LCD_DB6; // LCD_DB7_DIR |= LCD_DB7; // LCD_E_DIR |= LCD_E; // LCD_RS_DIR |= LCD_RS; // _delay_ms(15); // oczekiwanie na ustalibizowanie si� napiecia zasilajacego LCD_RS_PORT &= ~LCD_RS; // wyzerowanie linii RS LCD_E_PORT &= ~LCD_E; // wyzerowanie linii E for(i = 0; i < 3; i++) // trzykrotne powt�rzenie bloku instrukcji { LCD_E_PORT |= LCD_E; // E = 1 _LCD_OutNibble(0x03); // tryb 8-bitowy LCD_E_PORT &= ~LCD_E; // E = 0 _delay_ms(5); // czekaj 5ms } LCD_E_PORT |= LCD_E; // E = 1 _LCD_OutNibble(0x02); // tryb 4-bitowy LCD_E_PORT &= ~LCD_E; // E = 0 _delay_ms(1); // czekaj 1ms LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); // interfejs 4-bity, 2-linie, znak 5x7 LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); // wy��czenie wyswietlacza LCD_WriteCommand(HD44780_CLEAR); // czyszczenie zawartos�i pamieci DDRAM _delay_ms(2); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT);// inkrementaja adresu i przesuwanie kursora LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); // w��cz LCD, bez kursora i mrugania }
void LCD_Clear( void ) { LCD_WriteCommand( LCD_CLR ); LCD_WriteCommand( LCD_HOME ); gX = 0; gY = 0; } // LCD_Clear
void LCD_Cursor(unsigned char column) { if ( column < 17 ) { // 16x1 LCD: column < 9 // 16x2 LCD: column < 17 LCD_WriteCommand(0x80 + column - 1); } else { LCD_WriteCommand(0xB8 + column - 9); // 16x1 LCD: column - 1 // 16x2 LCD: column - 9 } }
/** * * @return 0 on success */ int LCD_InitiaizeLCD(void) { LCD_WriteCommand(LCD_CMD_CLEAR_DISPLAY); LCD_WriteCommand(LCD_CMD_FUNCTION_8B_2L_FSML); LCD_WriteCommand(LCD_CMD_DISPLAY_DON_COFF_BOFF); LCD_WriteCommand(LCD_CMD_ENTRY_MODE_INC_NO_S); LCD_WriteCommand(LCD_CMD_RETURN_HOME); return 0; }
void LCD_init(void) { //wait for 100 ms. delay_ms(100); LCD_WriteCommand(0x38); LCD_WriteCommand(0x06); LCD_WriteCommand(0x0f); LCD_WriteCommand(0x01); delay_ms(10); }
void LCD_BlinkCursor( int onOff ) { if ( onOff ) { LCD_WriteCommand( LCD_ON_CTRL | LCD_ON_DISPLAY | LCD_ON_CURSOR | LCD_ON_BLINK ); } else { LCD_WriteCommand( LCD_ON_CTRL | LCD_ON_DISPLAY | LCD_ON_CURSOR ); } } // LCD_BlinkCursor
//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- void LCD_DefineCharacter(char index, char * pattern) { char i ; LCD_WriteCommand(HD44780_CGRAM_SET + (8 * index)); for(i = 0; i < 8; i++) LCD_WriteData(*(pattern + i)); }
void LCD_Init( uint8_t numLines, uint8_t numCols ) { if ( numLines > 4 ) { numLines = 4; } gNumLines = numLines; if ( numCols > 40 ) { numCols = 40; } gNumCols = numCols; // Let the low level HAL do most of the initialization LCD_HAL_Init(); LCD_DisplayOff(); LCD_Clear(); LCD_WriteCommand( LCD_ENTRY_MODE | LCD_ENTRY_INC ); LCD_HideCursor(); // also turns on display } // LCD_Init
/********************************************************************* * Function: void SetScrollStart(SHORT line) * * Overview: First, we need to define the scrolling area by SetScrollArea() * before using this function. * * PreCondition: SetScrollArea(SHORT top, SHORT scroll, SHORT bottom) * * Input: line - Vertical scrolling pointer (in number of lines) as * the first display line from the Top Fixed Area defined in SetScrollArea() * * Output: none * * Note: Example - * * SHORT line=0; * SetScrollArea(0,272,0); * for(line=0;line<272;line++) {SetScrollStart(line);LCD_Delay(100);} * * Code above scrolls the whole page upwards in 100ms interval * with page 2 replacing the first page in scrolling ********************************************************************/ void LCD_SetScrollStart(u16 line) { LCD_WriteCommand(CMD_SET_SCROLL_START); Clr_Cs; LCD_WriteData(line>>8); LCD_WriteData(line); Set_Cs; }
//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- void LCD_Initialize(void) { vu8 i = 0; vu32 delayCnt = 0; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = LCD_D4|LCD_D5|LCD_D6|LCD_D7|LCD_RS|LCD_RW|LCD_EN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LCD_GPIO, &GPIO_InitStructure); GPIO_ResetBits(LCD_GPIO, LCD_RS | LCD_EN | LCD_RW); for(delayCnt = 0; delayCnt < 300000; delayCnt++); for(i = 0; i < 3; i++) { LCD_WriteNibble(0x03); for(delayCnt = 0;delayCnt < 30000; delayCnt++); } LCD_WriteNibble(0x02); for(delayCnt = 0;delayCnt < 6000; delayCnt++); LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); LCD_WriteCommand(HD44780_CLEAR); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); }
//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- void lcd_init(void) { vu8 i = 0; vu32 delayCnt = 0; GPIO_InitStructure.GPIO_Pin=LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7 | LCD_RS | LCD_EN; GPIO_InitStructure.GPIO_OType= GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init (LCD_GPIO, & GPIO_InitStructure); GPIO_Write (LCD_GPIO,0); GPIO_ResetBits(LCD_GPIO, LCD_RS | LCD_EN ); for(delayCnt = 0; delayCnt < 300000; delayCnt++); for(i = 0; i < 3; i++) { LCD_WriteNibble(0x03); for(delayCnt = 0;delayCnt < 30000; delayCnt++); } LCD_WriteNibble(0x02); for(delayCnt = 0;delayCnt < 6000; delayCnt++); LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); LCD_WriteCommand(HD44780_CLEAR); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); }
void LCD_clear_str(char page_start,char page_end,char x_start,char x_end,char color) { unsigned char i,pages; unsigned char adress=x_start; for (pages=page_start; pages < page_end; pages++) { LCD_WriteCommand(0xB0 + pages); LCD_WriteCommand((unsigned char)adress & 0x0F); LCD_WriteCommand((unsigned char)((adress & 0xF0) >> 4) + 0x10); for (i=x_start; i < x_end; i++) { LCD_WriteData(color); } } }
/********************************************************************* * Function: void SetTearingCfg(BOOL state, BOOL mode) * * Overview: This function enable/disable tearing effect * * PreCondition: none * * Input: BOOL state - 1 to enable * 0 to disable * BOOL mode - 0: the tearing effect output line consists * of V-blanking information only * 1: the tearing effect output line consists * of both V-blanking and H-blanking info. * Output: none * * Note: ********************************************************************/ void LCD_SetTearingCfg(bool state, bool mode) { if(state == 1) { LCD_WriteCommand(0x35); Clr_Cs; LCD_WriteData(mode&0x01); Set_Cs; } else { LCD_WriteCommand(0x34); } }
void ClearScreen(void) { uint8 i,j; send_1hex_data_and_1cmd_to_lcm(TEXT_HOME_ADDRESS, LCD_ADR_POS); LCD_WriteCommand(LCD_AUT_WR); for(j=0; j<144; j++) //参数为144同时清除图形区部分 { for(i=0; i<30; i++) { LCD_WriteDataAuto(0x00); } } LCD_WriteCommand(LCD_AUT_OVR); }
void LCD_clear(unsigned char color) { unsigned char i,pages; unsigned char adress=X_OFFSET; for (pages=0; pages < PAGEMAX; pages++) { LCD_WriteCommand(0xB0 + pages); LCD_WriteCommand((unsigned char)adress & 0x0F); LCD_WriteCommand((unsigned char)((adress & 0xF0) >> 4) + 0x10); for (i=0; i < XMAX; i++) { LCD_WriteData(color); } } }
void CalibrationScreen(unsigned char channel)//экран калибровки канала { // sprintf(&string_buf,"Chn. val.:% 8lu",channels[channel].channel_data); // LCD_WriteAC(LCD_1_STR_ADDR); // LCD_WriteString(&string_buf); if(input_field_ptr==&input_field_lo) { LCD_WriteAC(LCD_1_STR_ADDR); sprintf(&string_buf,"Low val [%6s]",input_field_lo.input_char_buf); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_2_STR_ADDR); sprintf(&string_buf,"High val %6s ",input_field_hi.input_char_buf); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_4_STR_ADDR); sprintf(&string_buf,"'='-Enter,'/'-Del"); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_1_STR_ADDR+9+input_field_lo.char_count); LCD_WriteCommand(LCD_CMD_CURSOR); } if(input_field_ptr==&input_field_hi) { LCD_WriteAC(LCD_1_STR_ADDR); sprintf(&string_buf,"Low val %6s ",input_field_lo.input_char_buf); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_2_STR_ADDR); sprintf(&string_buf,"High val[%6s]",input_field_hi.input_char_buf); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_4_STR_ADDR); sprintf(&string_buf,"'='-Enter,'/'-Del"); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_2_STR_ADDR+9+input_field_hi.char_count); LCD_WriteCommand(LCD_CMD_CURSOR); } }
unsigned char dispMenu(void) { xdata menuItem code * tempMenu, *tempMenu2; // первая строка - заголовок. Или пункт меню верхнего уровня tempMenu = selectedMenuItem;//->Parent; LCD_WriteCommand(LCD_CMD_ON); LCD_WriteCommand(LCD_CMD_CLEAR); if ((tempMenu == &m_s0i1)||(tempMenu == &m_s0i2)||(tempMenu == &m_s0i3)||(tempMenu == &m_s0i4)) { // мы на верхнем уровне dynamic_disp= DYN_DISPALY_ON; } else { dynamic_disp=DYN_NOT_DISPLAY; LCD_WriteCommand(LCD_SET_ADDR|0x1); LCD_WriteCommand(LCD_SET_ADDR|0x1); tempMenu2=tempMenu->Previous; if(tempMenu2!=&NULL_ENTRY) { LCD_WriteString(tempMenu2->Text); } LCD_WriteCommand(LCD_SET_ADDR|0x40); LCD_WriteData(0xC9); LCD_WriteCommand(LCD_SET_ADDR|0x41); LCD_WriteString(tempMenu->Text); LCD_WriteCommand(LCD_SET_ADDR|0x15); tempMenu2=tempMenu->Next; if(tempMenu2!=&NULL_ENTRY) { LCD_WriteString(tempMenu2->Text); LCD_WriteCommand(LCD_SET_ADDR|0x55); tempMenu2=tempMenu2->Next; if(tempMenu2!=&NULL_ENTRY) LCD_WriteString(tempMenu2->Text); } } return (1); }
/********************************************************************* * Function: SetScrollArea(SHORT top, SHORT scroll, SHORT bottom) * * PreCondition: none * * Input: top - Top Fixed Area in number of lines from the top * of the frame buffer * scroll - Vertical scrolling area in number of lines * bottom - Bottom Fixed Area in number of lines * * Output: none * * Side Effects: none * * Overview: * * Note: Reference: section 9.22 Set Scroll Area, SSD1963 datasheet Rev0.20 ********************************************************************/ void LCD_SetScrollArea(u16 top, u16 scroll, u16 bottom) { LCD_WriteCommand(CMD_SET_SCROLL_AREA); Clr_Cs; LCD_WriteData(top>>8); LCD_WriteData(top); LCD_WriteData(scroll>>8); LCD_WriteData(scroll); LCD_WriteData(bottom>>8); LCD_WriteData(bottom); Set_Cs; }
void LCD_Init(void){ _delay_ms(50); // 50ms dla ustabilizowania siê napiêcia zasilania // start initialization LCD_WriteCommand((uint8_t)LCD_INIT); _delay_ms(1); // 1ms, minimum 39us LCD_WriteCommand((uint8_t)LCD_FSET); _delay_ms(1); // 1ms, minimum 39us LCD_WriteCommand((uint8_t)LCD_FSET); _delay_ms(1); // 1ms, minimum 37us LCD_WriteCommand((uint8_t)LCD_OFFON); _delay_ms(1); // 1ms, minimum 37us LCD_WriteCommand((uint8_t)LCD_CLR); _delay_ms(2); // 2ms, minimum 1.54ms LCD_WriteCommand((uint8_t)LCD_EMODE); _delay_ms(1); // 1ms (O tym dokumentacja nie wspomina³a....) // stop initialization }
void ILI9341_LCD_SetAddress(uint32_t x1,uint32_t x2,uint32_t y1,uint32_t y2) { if(x1 >= 240) x1 = 239; if(x2 >= 240) x2 = 239; if(y1 >= 320) y1 = 319; if(y2 >= 320) y2 = 319; LCD_WriteCommand(0x2a); LCD_WriteData(x1>>8); LCD_WriteData(x1); LCD_WriteData(x2>>8); LCD_WriteData(x2); LCD_WriteCommand(0x2b); LCD_WriteData(y1>>8); LCD_WriteData(y1); LCD_WriteData(y2>>8); LCD_WriteData(y2); }
void wczytaj_haslo(int indeks) { unsigned char Tekst[2]; int i=0; char tab[5]={0,0,0,0,0}; Tekst[0]=0; Tekst[1]=0; while (i<4) { Tekst[0]=KBD_ReadKey(); if (Tekst[0] !=0 ) { tab[i]=Tekst[0]; i++; wyswietl_gwiazdki(i); Tekst[0]=0; } delay_10us(); } tab[4]=0; i=0; int dobrze=0; char dane=0; uint16_t adres_hasla=(adres(indeks)+4); for(;i<4;i++) { dane=(Read_24Cxx(adres_hasla,M2404)); if(tab[i]==dane) { dobrze++; } adres_hasla++; } LCD_WriteCommand(HD44780_CLEAR); LCD_GoTo(0,0); if(dobrze==4) { LCD_WriteText((unsigned char *)"Otwieram drzwi"); Zamek1_On(); } else { LCD_WriteText((unsigned char *)"Bledne haslo"); } }
/********************************************************************* * Function: void SetBacklight(BYTE intensity) * * Overview: This function makes use of PWM feature of ssd1963 to adjust * the backlight intensity. * * PreCondition: Backlight circuit with shutdown pin connected to PWM output of ssd1963. * * Input: (BYTE) intensity from * 0x00 (total backlight shutdown, PWM pin pull-down to VSS) * 0xff (99% pull-up, 255/256 pull-up to VDD) * * Output: none * * Note: The base frequency of PWM set to around 300Hz with PLL set to 120MHz. * This parameter is hardware dependent ********************************************************************/ void LCD_SetBacklight(u8 intensity) { LCD_WriteCommand(0xBE); // Set PWM configuration for backlight control Clr_Cs; LCD_WriteData(0x0E); // PWMF[7:0] = 2, PWM base freq = PLL/(256*(1+5))/256 = // 300Hz for a PLL freq = 120MHz LCD_WriteData(intensity); // Set duty cycle, from 0x00 (total pull-down) to 0xFF // (99% pull-up , 255/256) LCD_WriteData(0x01); // PWM enabled and controlled by host (mcu) LCD_WriteData(0x00); LCD_WriteData(0x00); LCD_WriteData(0x00); Set_Cs; }
void SettingsScreen(void) { if(input_field_ptr==&input_field_lo) { LCD_WriteAC(LCD_1_STR_ADDR); sprintf(&string_buf,"Address [%2s]",input_field_lo.input_char_buf); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_4_STR_ADDR); sprintf(&string_buf,"'='-Enter,'/'-Del"); LCD_WriteString(&string_buf); LCD_WriteAC(LCD_1_STR_ADDR+9+input_field_lo.char_count); LCD_WriteCommand(LCD_CMD_CURSOR); } }
/** * Sets the DDRAM address to the specified row and column. This is where text * will be written to. * @param row 0 indexed row * @param column 0 indexed column * @return 0 on success */ int LCD_SetPosition(char row, char column) { char DDRAM_address; //for a 2x16 display: //row 0 is DDRAM 0x00 to 0x0F //row 1 is DDRAM 0x40 to 0x4F row = (row)?0x40:0x00; DDRAM_address = row+column; //only perform the LCD operation if the address is valid if(DDRAM_address <= 0x4F) LCD_WriteCommand(LCD_CMD_SET_DDRAM_ADDRESS|DDRAM_address); else return LCD_ERROR_INVALID_DDRAM_ADDRESS; return 0; }
void LCD_MoveTo( unsigned x, unsigned y ) { uint8_t addr = x & 0x3f; if ( y & 1 ) { addr += 0x40; // Lines 1 & 3 add 0x40 } if ( y & 2 ) { addr += 0x14; // Lines 2 & 3 add 0x14 } LCD_WriteCommand( LCD_DDRAM | addr ); gX = x; gY = y; } // LCD_MoveTo
/********************************************************************* * Function: void PutPixel(SHORT x, SHORT y) * * PreCondition: none * * Input: x,y - pixel coordinates * * Output: none * * Side Effects: none * * Overview: puts pixel * * Note: ********************************************************************/ void LCD_PutPixel(u16 x, u16 y, u16 color) { if(_clipRgn){ if(x<_clipLeft) return; if(x>_clipRight) return; if(y<_clipTop) return; if(y>_clipBottom) return; } LCD_SetArea(x,y,GetMaxX(),GetMaxY()); LCD_WriteCommand(CMD_WR_MEMSTART); Clr_Cs; LCD_WriteData(color); Set_Cs; }