// ------------- READS51 generated header -------------- // module : C:\Rigel\Reads51\Work\LCD\LCD.c // created : 10:46:46, Tuesday, March 05, 2002 // ----------------------------------------------------- #include // Headerdatei Controller einbinden #include #include 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 //-------------------------------------------------------------------------------- void v_Timer_Init(void) //Initialisierung der Timer { TMOD = TCON | 0x21; //0010|0001 -> 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_Timer0_Warten1(void) //Initialisierung der Timer { TR0 = 0; //Timer0 stopen TL0 = 0xFC; //Timer0 Lowbyte 4.1ms TH0 = 0xEF; //Timer0 Hightbyte TR0 = 1; //Timer0 starten while(TF0==0){TF0=0;} //Edlosschleife bis Überlauf TF0 muss wieder auf 0 gesetzt werden } //-------------------------------------------------------------------------------- void v_Timer0_Warten2(void) //Initialisierung der Timer { TR0 = 0; //Timer0 stopen TL0 = 0x68; //Timer0 Lowbyte 15ms TH0 = 0xCE; //Timer0 Hightbyte TR0 = 1; //Timer0 starten while(TF0==0){TF0=0;} //Edlosschleife bis Überlauf TF0 muss wieder auf 0 gesetzt werden } //--------------------------------------------------------------------------------- void v_LCD_Init(void) { v_Timer0_Warten2(); //Initialisierung 15ms warten Komando_schreiben = 0x30; //Set Funktion (8bit interface, 2 line display, 5x10dots) v_Timer0_Warten1(); //warten 4.1 ms BF-Flag abfrage noch nicht möglich Komando_schreiben = 0x30; //Set Funktion (8bit interface, 2 line display, 5x10dots) v_Timer0_Warten1(); //warten 0.1 ms BF-Flag abfrage noch nicht möglich Komando_schreiben = 0x30; //Set Funktion (8bit interface, 2 line display, 5x10dots) while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden Komando_schreiben = 0x3C; //SET FUNKTION (2line display, Right Shift) while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden Komando_schreiben = 0x07; //DISPLAY ON/OFF (Display aus) while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden Komando_schreiben = 0x01; //DISPLAY CLEAR (Display löschen) while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden Komando_schreiben = 0x07; //ENTRY MODE SET (Increase/Display Shiftet) //--Initialierung abgeschlossen while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden Komando_schreiben = 0x0F; // Display an (Display on, Cursor on, Blinking on) while(Komando_lesen == 1); //Abfrage BF nur wenn LOW darf Komando geschrieben werden } //--------------------------------------------------------------------------------- void main(void) { P1_0 = 0; v_Timer_Init(); v_LCD_Init(); while (1); }