LCD Baseshield GSOE GSOF

Dependents:   WebserverGSOE_Schnaiter HC05__TI4_RP5_Schnaiter

Revision:
0:0eebf803661c
Child:
1:d6c8b9840a53
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD.cpp	Wed Mar 04 17:42:16 2020 +0000
@@ -0,0 +1,115 @@
+#include "LCD.h"
+
+lcd::lcd(void)
+    {
+        i2c=new SoftwareI2C(PA_12,PA_11);
+        //po=new PortOut(PortC,0xFF);
+        //t=new DigitalIn(PA_1,PullDown);
+        init();
+        
+    };
+    
+void lcd::clear(void)
+{
+    sendeByte(0x01,0,0);
+    cursorpos(0);
+    //sleep_for(20);
+};
+
+void lcd::warte(void)
+{/*
+    *po=wert;
+    while(*t==0);
+    wait_ms(20);
+    while(*t==1);
+    wait_ms(20);*/
+};
+void lcd::sendeByte(char b,uint8_t rw, uint8_t rs )
+{
+    
+    wert=(b&0xF0)+0x08+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=(b&0xF0)+0xC+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=(b&0xF0)+0x8+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=((b&0xF)<<4)+0x8+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=((b&0xF)<<4)+0xC+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=((b&0xF)<<4)+0x8+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+}
+
+void lcd::sendeNippel(char b,uint8_t rw, uint8_t rs )
+{
+    wert=((b&0xF)<<4)+0x0+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=((b&0xF)<<4)+0x4+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+    wert=((b&0xF)<<4)+0x0+((rw&0x01)<<1)+(rs&0x01);
+    i2c->write(Adresse,wert);
+    warte();
+}
+void lcd::cursorpos(uint8_t pos)
+{
+    sendeByte(0x80+pos,0,0);
+}
+void lcd::init(void)
+{
+    //Adresse=pAdresse<<1;
+    uint8_t data[1];
+    for (Adresse=0;Adresse<256&&data[0]!=0x55;Adresse++)
+    {
+        i2c->write(Adresse,0x55);
+        i2c->read(Adresse,data,1);
+    }
+    
+    thread_sleep_for(20);
+    sendeNippel(0b0011,0,0);
+    thread_sleep_for(5);
+    sendeNippel(0b0011,0,0);
+    thread_sleep_for(1);
+    sendeNippel(0b0011,0,0);
+
+    sendeNippel(0b0010,0,0);
+
+    sendeByte(0b00101000,0,0);  //4Bit 2 Zeilen
+
+
+    sendeByte(0b00000001,0,0);  //display clear
+
+    sendeByte(0b00000110,0,0);  //Increment Cursor*/
+
+    sendeByte(0b10000000,0,0);  //Home
+
+    sendeByte(0b00001110,0,0);  //Display On    
+
+
+    cursorpos(0x0);
+    
+    printf("GSOE V%0.1f",1.1);
+
+    
+    
+}
+int lcd::printf(const char *format, ...)
+    {
+    char buf[16];
+    va_list args;
+    va_start(args, format);
+    vsprintf(buf,format,args);
+    va_end(args);
+    //LCD_i2c_textaus(buf);
+    for (int i=0;i<16 && buf[i]!=0;i++)
+            sendeByte(buf[i],0,1);
+    return 0;
+    }
\ No newline at end of file