EA Dog LCD screen library
lcd.c
- Committer:
- Thur
- Date:
- 2017-06-01
- Revision:
- 0:23354c86eed6
File content as of revision 0:23354c86eed6:
#include "lcd.h" #include "mbed.h" #include "lcd.h" lcd::lcd(PinName RS_LCD,PinName SCK,PinName MOSI,PinName CS) : spi(D11,D12,D13), CS(D10), RS_LCD(D9){ } 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; } 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::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::write_LCD(char c){ CS = 0; RS_LCD = 1; spi.write(c); // wait_ms(1); RS_LCD = 1; CS = 1; return; }