Librairie nécessaire pour utiliser le Lcd de l'IOGS
Diff: Lcd.cpp
- Revision:
- 0:8487a7d2a20e
- Child:
- 2:bcb0d1541b67
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lcd.cpp Fri Jun 02 09:50:55 2017 +0000 @@ -0,0 +1,80 @@ +#include "Lcd.h" +#include "mbed.h" + +Lcd::Lcd(PinName rs, PinName sck, PinName miso, PinName mosi,PinName cs) : RS_LCD(rs),spi(mosi,miso,sck),CS(cs) {}; + + +void Lcd::write_LCD(char c) +{ + CS = 0; + RS_LCD = 1; + spi.write(c); + // wait_ms(1); + RS_LCD = 1; + CS = 1; + return; +} + +void Lcd::writeStr_LCD(char c[], char ligne, char colonne) +{ + char i=0; + setPosition(ligne,colonne); + while(c[i] != '\0') { + write_LCD(c[i]); + i++; + } + char lig = i/16 + 1; + char col = i%16 + 1; + setPosition(lig,col); +} + +void Lcd::writeCmd_LCD(char c) +{ + CS =0; + RS_LCD =0; + spi.write(c); + RS_LCD = 1; + CS = 1; + return; +} + +void Lcd::setPosition(char ligne, char colonne) +{ + char adress = 0x80 + ((ligne-1)*16) + (colonne -1); + writeCmd_LCD(adress); + wait_ms(1); + return; +} +void Lcd::init_SPI(void) +{ + // Chip must be deselected + CS = 1; + // Setup the spi for 8 bit data, high steady state clock, + // second edge capture, with a 1MHz clock rate + spi.format(8,3); + spi.frequency(10000); + // Select the device by seting chip select low +} + +void Lcd::init_LCD(void) +{ + init_SPI(); + wait_ms(10); + CS = 0; + RS_LCD = 0; + spi.write(0x29); // Function Set - Table 1 + spi.write(0x1D); // Bias Set + spi.write(0x50); // Power Control + spi.write(0x6C); // Follower Control + spi.write(0x7C); // Contrast Set + spi.write(0x03); // Function Set - Table 0 + spi.write(0x0F); + spi.write(0x01); // Clear Display + wait_ms(2); + spi.write(0x06); // Display On + wait_ms(10); + RS_LCD=1; + CS=1; + wait_ms(10); + return; +} \ No newline at end of file