//------------------------------------------------------------------------------------------------- //schreibt Texte oder mittels ITOA auch Zahlen in die Zeilen 0..3 des Displays. Alphabet+Ziffern, kein Chinesisch //------------------------------------------------------------------------------------------------- void GLCD_WriteString(uint8_t x, uint8_t y,char * s) { GLCD_SetBasicMode(); GLCD_Write(RS_CMD,CMD_SET_DDRAM_ADR|(y*16+(x&0x1E))); //schreibt ein Kommando, setze Adresse, also wohin anschließend die Daten gelangen sollen //0x1E = 1 1110 if (x&1) GLCD_Write(RS_DATA,' '); //schreibt Daten while(*s) { GLCD_Write(RS_DATA,*s); //schreibt Daten s++; } } //------------------------------------------------------------------------------------------------- // hinzu gefügt, um mal die Chinesischen Zeichen lesen zu können. geändert: CMD_SET_DDRAM_ADR--> CMD_SET_CGRAM_ADR //bringt einen 16 x 16 Font. 0xA140..0xD75F und 0xA1A0..0xF7FF //------------------------------------------------------------------------------------------------- void GLCD_Write_CGROM_String(uint8_t x, uint8_t y,char * s) { //zuvor muß SR=0 "enable CGRAM-adress" gesetzt sein -> basic instruction (siehe Seite 17 oben zweite Zeile) GLCD_SetExtendedMode(); // hier danach dann 0b00000010 senden //GLCD_Write(RS_CMD,CMDE_SCROLL_SEL|BIT_SR); setzt das Bit_SR auf 1, ich brauche aber Bit_SR = 0 GLCD_Write(RS_CMD,CMDE_SCROLL_SEL); //ohne Bit_SR, müßte dann 0b00000010 senden GLCD_SetBasicMode(); GLCD_Write(RS_CMD,CMD_SET_CGRAM_ADR|(y*16+(x&0x1E))); if (x&1) GLCD_Write(RS_DATA,' '); while(*s) { GLCD_Write(RS_DATA,*s); s++; } } void GLCD_Write(uint8_t regsel, uint8_t val) { SetDataOutput(); RS(regsel); RW(0); #ifdef INTERFACE_8_BIT DataOut(val); Delay(1); E(1); Delay(1); E(0); #else DataOut(val>>4); Delay(1); E(1); Delay(1); E(0); DataOut(val&0xF); Delay(1); E(1); Delay(1); E(0); #endif RW(1); RS(1); SetDataInput(); GLCD_WaitBusy(); }