Librairie nécessaire pour utiliser le Lcd de l'IOGS
Lcd.cpp@0:8487a7d2a20e, 2017-06-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |