Robert Musulin / LCDSEMINAR
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LCDSEMINAR.cpp Source File

LCDSEMINAR.cpp

00001 #include "LCDSEMINAR.h"
00002 
00003 
00004 
00005 LCD::LCD(PinName SDA, PinName SCL ):
00006 i2c(SDA,SCL)
00007 
00008 { inicijalizacija(); // opoziv funkcije za inicijaliziranje
00009 }
00010  
00011  
00012 void LCD::inicijalizacija()       // konstruktor za inicijalizaciju
00013 {    i2c.frequency(100000);  // frekvencija rada 100khz
00014     wait_ms(30);
00015     naredba(0x01);// ciscenje ekrana
00016     wait_ms(20);
00017     naredba(0x3); //inicijalizacijski podaci
00018     wait_ms(6);
00019     naredba(0x3);
00020     wait_ms(6);
00021     naredba(0x3);
00022     wait_ms(6);
00023     naredba(0x2);
00024     wait_ms(6);
00025     naredba(0b00101000); //Funtionset 13 str. datasheeta 4bitno sucelje
00026     naredba(0b00001110); //Display on/off display upaljen pokazivac upaljen blinkanje izgaseno
00027     }
00028 
00029 
00030 void LCD::naredba(int byte )
00031 {
00032     
00033     char prvidio[2];
00034     char drugidio[2];
00035     
00036     prvidio[0] =  (byte & 0xF0) | 0b1100; // sa stranice https://www.joom.com/en/products/5d78933e8b45130101c739ff podatkovni paket PCF85741 sucelja koje se nalazi na nasem lcdu
00037     prvidio[1] = (byte & 0xF0) | 0b1000;   // D7, D6, D5, D4, BACKLIGHT , E, R/W , RS 
00038     i2c.write(0x27<<1,prvidio,2);
00039     wait_us(200);
00040     
00041     drugidio[0] = (byte << 4) | 0b1100;
00042     drugidio[1] = (byte << 4) | 0b1000;
00043     i2c.write(0x27<<1,drugidio,2);
00044     wait_us(200);
00045     
00046 }
00047 
00048 
00049 void LCD::print(char podatak)
00050 {
00051    
00052     char prvidio[2];
00053     char drugidio[2];
00054     
00055      prvidio[0] =  (podatak & 0xF0) | 0b1101;
00056      prvidio[1] = (podatak & 0xF0) | 0b1001;
00057      i2c.write(0x27<<1,prvidio,2);
00058      wait_us(200);
00059 
00060     
00061 
00062     
00063     drugidio[0] = (podatak << 4) | 0b1101;
00064     drugidio[1] = (podatak << 4) | 0b1001;
00065     i2c.write(0x27<<1,drugidio,2);
00066     wait_us(200);
00067    
00068 }
00069 void LCD::ispis (string podatak)
00070 {
00071     int i=0;
00072     while(podatak[i]!='\0')
00073     {
00074         print(podatak[i++]);
00075     }
00076 }
00077 
00078 void LCD::ocisti()
00079 {
00080     naredba(0b01); //naredba za ciscenje ekrana
00081     wait_ms(50);
00082     pokazivac(0,0);
00083 }
00084  
00085 
00086 void LCD::pokazivac (int stupac, int red)
00087 {
00088     int adr;
00089     
00090     if(red==0) {
00091     adr= 0x80 + stupac;
00092        }
00093     else {
00094     adr = 0xC0 + stupac;
00095         }
00096     naredba(adr);
00097     
00098 }
00099