#include //Headerdatei Controller einbinden #include #include unsigned char Wandlung_Einer = 0x00; unsigned char xdata Komando_schreiben _at_ 0x8000; // Anweisung an das Display unsigned char xdata Komando_lesen _at_ 0x8001; // Busyflak abfragen ob bereit unsigned char xdata Daten_schreiben _at_ 0x8002; // Ausgabe an das Display weitergeben unsigned char xdata Daten_lesen _at_ 0x8003; // Display einlesen enum BAUDRATE { _300,_600,_1200,_2400,_4800,_9600,_19200,_57600}; //------------------------------------------------------------------------------------------ void warten (unsigned short zeit) { while (zeit > 0) zeit--; } //------------------------------------------------------------------------------------------ void LCD_ini() // Funktion zur initialisierung eines LCD-Displays { warten(800); // 15ms warten Komando_schreiben = 0x3C; // Set Funktion (8bit interface, 2 line display, 5x10dots) warten(800);// 4.1ms Komando_schreiben = 0x3C; // Set Funktion (8bit interface, 2 line display, 5x10dots) warten(800);// 4.1ms Komando_schreiben = 0x3C; // Set Funktion (8bit interface, 2 line display, 5x10dots) warten(800);// 4.1ms Komando_schreiben = 0x08; // Display OFF (Display off, Cursor off, Blinking off) warten(800);// 4.1ms Komando_schreiben = 0x01; // Display Clear (Display clear) warten(800); // 4.1ms Komando_schreiben = 0x06; // Display Entry Mode Set (Increase, Display is not shifted) warten(800); // 4.1ms Komando_schreiben = 0x0F; // Display an (Display on, Cursor on, Blinking on) warten(800); // 4.1ms } //------------------------------------------------------------------------------------------- LCD_kursor(unsigned char line) // Funktion zum Löschen des Diplays { warten(800); // 2.0ms if(line == 1){Komando_schreiben = 0x0F;} // Display: on , Cursor: on Blinking: on if(line == 2){Komando_schreiben = 0x0C;} // Display: on , Cursor: off Blinking: off if(line == 3){Komando_schreiben = 0x0E;} // Display: on , Cursor: on Blinking: off if(line == 4){Komando_schreiben = 0x0D;} // Display: on , Cursor: off Blinking: on if(line == 5){Komando_schreiben = 0x08;} // Display: off } //------------------------------------------------------------------------------------------- LCD_loeschen() // Funktion zum Löschen des Diplays { warten(800); // 2.0ms Komando_schreiben = 0x01; // Display an (Display on, Cursor on, Blinking on) } //------------------------------------------------------------------------------------------- void LCD_text(char *s,unsigned char line) // Funktion um einen Text auf dem LCD anzuzeigen { unsigned int i; if(line == 1){Komando_schreiben = 0x80;} // schreibt in Zeile 1 if(line == 2){Komando_schreiben = 0xC0;} // schreibt in Zeile 2 if(line == 3){Komando_schreiben = 0x90;} // schreibt in Zeile 3 if(line == 4){Komando_schreiben = 0xD0;} // schreibt in Zeile 4 warten(500); // 4.1ms for(i=0;i 8-bit-Zeitgeber/Zähler, automatisch nachladen TR0 = 0; //Timer0 stoppen TCON TR1 = 0; //Timer1 stoppen TCON TF0 = 0; //Timer0 Überlauf Falg TCON Beispiel:65536-61436=4100 61436->EFFC HEX TL0=0xFC TH0=0xEF ->4.1ms TF1 = 0; //Timer1 Überlauf Falg TCON } //-------------------------------------------------------------------------------- void v_Timer1_RS232(enum BAUDRATE enBaudrate) { SCON = SCON | 0x50; //0101|0000 -> 8-Bit-UART,Baudrate über Timer1 PCON = PCON & 0x7F; //0111|1111 -> SMOD = 0 hoheBaudrate switch (enBaudrate) { case _300: TH1 = 256 - 28800/300; break; case _600: TH1 = 256 - 28800/600; break; case _1200: TH1 = 256 - 28800/1200; break; case _2400: TH1 = 256 - 28800/2400; break; case _4800: TH1 = 256 - 28800/4800; break; case _9600: TH1 = 256 - 28800/9600; break; //TH1 = 253 -> 0xFD case _19200: TH1 = 256 - 57600u/19299; PCON = PCON | 0x80; //SMOD=1 break; case _57600: TH1 = 256 - 57600u/57600; PCON = PCON | 0x80; //SMOD=1 break; } TL1 = TH1; TR1 = 1; //Timer1 starten } //--------------------------------------------------------------------------------------- void wait(unsigned char Multiplikator) // Funktion Warteschleife mit Faktor mal 10ms { unsigned char a; unsigned int lauf1; for (a=0;a