Librairie nécessaire pour utiliser le Lcd de l'IOGS

Committer:
Thur
Date:
Fri Jun 02 09:50:55 2017 +0000
Revision:
0:8487a7d2a20e
Child:
2:bcb0d1541b67
Librairie LCD pour IOGS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Thur 0:8487a7d2a20e 1 #include "Lcd.h"
Thur 0:8487a7d2a20e 2 #include "mbed.h"
Thur 0:8487a7d2a20e 3
Thur 0:8487a7d2a20e 4 Lcd::Lcd(PinName rs, PinName sck, PinName miso, PinName mosi,PinName cs) : RS_LCD(rs),spi(mosi,miso,sck),CS(cs) {};
Thur 0:8487a7d2a20e 5
Thur 0:8487a7d2a20e 6
Thur 0:8487a7d2a20e 7 void Lcd::write_LCD(char c)
Thur 0:8487a7d2a20e 8 {
Thur 0:8487a7d2a20e 9 CS = 0;
Thur 0:8487a7d2a20e 10 RS_LCD = 1;
Thur 0:8487a7d2a20e 11 spi.write(c);
Thur 0:8487a7d2a20e 12 // wait_ms(1);
Thur 0:8487a7d2a20e 13 RS_LCD = 1;
Thur 0:8487a7d2a20e 14 CS = 1;
Thur 0:8487a7d2a20e 15 return;
Thur 0:8487a7d2a20e 16 }
Thur 0:8487a7d2a20e 17
Thur 0:8487a7d2a20e 18 void Lcd::writeStr_LCD(char c[], char ligne, char colonne)
Thur 0:8487a7d2a20e 19 {
Thur 0:8487a7d2a20e 20 char i=0;
Thur 0:8487a7d2a20e 21 setPosition(ligne,colonne);
Thur 0:8487a7d2a20e 22 while(c[i] != '\0') {
Thur 0:8487a7d2a20e 23 write_LCD(c[i]);
Thur 0:8487a7d2a20e 24 i++;
Thur 0:8487a7d2a20e 25 }
Thur 0:8487a7d2a20e 26 char lig = i/16 + 1;
Thur 0:8487a7d2a20e 27 char col = i%16 + 1;
Thur 0:8487a7d2a20e 28 setPosition(lig,col);
Thur 0:8487a7d2a20e 29 }
Thur 0:8487a7d2a20e 30
Thur 0:8487a7d2a20e 31 void Lcd::writeCmd_LCD(char c)
Thur 0:8487a7d2a20e 32 {
Thur 0:8487a7d2a20e 33 CS =0;
Thur 0:8487a7d2a20e 34 RS_LCD =0;
Thur 0:8487a7d2a20e 35 spi.write(c);
Thur 0:8487a7d2a20e 36 RS_LCD = 1;
Thur 0:8487a7d2a20e 37 CS = 1;
Thur 0:8487a7d2a20e 38 return;
Thur 0:8487a7d2a20e 39 }
Thur 0:8487a7d2a20e 40
Thur 0:8487a7d2a20e 41 void Lcd::setPosition(char ligne, char colonne)
Thur 0:8487a7d2a20e 42 {
Thur 0:8487a7d2a20e 43 char adress = 0x80 + ((ligne-1)*16) + (colonne -1);
Thur 0:8487a7d2a20e 44 writeCmd_LCD(adress);
Thur 0:8487a7d2a20e 45 wait_ms(1);
Thur 0:8487a7d2a20e 46 return;
Thur 0:8487a7d2a20e 47 }
Thur 0:8487a7d2a20e 48 void Lcd::init_SPI(void)
Thur 0:8487a7d2a20e 49 {
Thur 0:8487a7d2a20e 50 // Chip must be deselected
Thur 0:8487a7d2a20e 51 CS = 1;
Thur 0:8487a7d2a20e 52 // Setup the spi for 8 bit data, high steady state clock,
Thur 0:8487a7d2a20e 53 // second edge capture, with a 1MHz clock rate
Thur 0:8487a7d2a20e 54 spi.format(8,3);
Thur 0:8487a7d2a20e 55 spi.frequency(10000);
Thur 0:8487a7d2a20e 56 // Select the device by seting chip select low
Thur 0:8487a7d2a20e 57 }
Thur 0:8487a7d2a20e 58
Thur 0:8487a7d2a20e 59 void Lcd::init_LCD(void)
Thur 0:8487a7d2a20e 60 {
Thur 0:8487a7d2a20e 61 init_SPI();
Thur 0:8487a7d2a20e 62 wait_ms(10);
Thur 0:8487a7d2a20e 63 CS = 0;
Thur 0:8487a7d2a20e 64 RS_LCD = 0;
Thur 0:8487a7d2a20e 65 spi.write(0x29); // Function Set - Table 1
Thur 0:8487a7d2a20e 66 spi.write(0x1D); // Bias Set
Thur 0:8487a7d2a20e 67 spi.write(0x50); // Power Control
Thur 0:8487a7d2a20e 68 spi.write(0x6C); // Follower Control
Thur 0:8487a7d2a20e 69 spi.write(0x7C); // Contrast Set
Thur 0:8487a7d2a20e 70 spi.write(0x03); // Function Set - Table 0
Thur 0:8487a7d2a20e 71 spi.write(0x0F);
Thur 0:8487a7d2a20e 72 spi.write(0x01); // Clear Display
Thur 0:8487a7d2a20e 73 wait_ms(2);
Thur 0:8487a7d2a20e 74 spi.write(0x06); // Display On
Thur 0:8487a7d2a20e 75 wait_ms(10);
Thur 0:8487a7d2a20e 76 RS_LCD=1;
Thur 0:8487a7d2a20e 77 CS=1;
Thur 0:8487a7d2a20e 78 wait_ms(10);
Thur 0:8487a7d2a20e 79 return;
Thur 0:8487a7d2a20e 80 }