EA Dog LCD screen library
lcd.cpp@1:a1d2c9644b5b, 2020-03-06 (annotated)
- Committer:
- villemejane
- Date:
- Fri Mar 06 17:09:14 2020 +0000
- Revision:
- 1:a1d2c9644b5b
EA Dog LCD 3 lines library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
villemejane | 1:a1d2c9644b5b | 1 | #include "lcd.h" |
villemejane | 1:a1d2c9644b5b | 2 | |
villemejane | 1:a1d2c9644b5b | 3 | EADogLcd::EADogLcd(PinName RS_LCD,PinName SCK,PinName MOSI,PinName CS) : spi(D11,D12,D13), CS(D10), RS_LCD(D9){ |
villemejane | 1:a1d2c9644b5b | 4 | init_SPI(); |
villemejane | 1:a1d2c9644b5b | 5 | } |
villemejane | 1:a1d2c9644b5b | 6 | |
villemejane | 1:a1d2c9644b5b | 7 | void EADogLcd::init_SPI(void){ |
villemejane | 1:a1d2c9644b5b | 8 | // Chip must be deselected |
villemejane | 1:a1d2c9644b5b | 9 | CS = 1; |
villemejane | 1:a1d2c9644b5b | 10 | // Setup the spi for 8 bit data, high steady state clock, |
villemejane | 1:a1d2c9644b5b | 11 | // second edge capture, with a 1MHz clock rate |
villemejane | 1:a1d2c9644b5b | 12 | spi.format(8,3); |
villemejane | 1:a1d2c9644b5b | 13 | spi.frequency(10000); |
villemejane | 1:a1d2c9644b5b | 14 | // Select the device by seting chip select low |
villemejane | 1:a1d2c9644b5b | 15 | } |
villemejane | 1:a1d2c9644b5b | 16 | |
villemejane | 1:a1d2c9644b5b | 17 | void EADogLcd::init_LCD(void){ |
villemejane | 1:a1d2c9644b5b | 18 | init_SPI(); |
villemejane | 1:a1d2c9644b5b | 19 | wait_ms(10); |
villemejane | 1:a1d2c9644b5b | 20 | CS = 0; |
villemejane | 1:a1d2c9644b5b | 21 | RS_LCD = 0; |
villemejane | 1:a1d2c9644b5b | 22 | spi.write(0x29); // Function Set - Table 1 |
villemejane | 1:a1d2c9644b5b | 23 | spi.write(0x1D); // Bias Set |
villemejane | 1:a1d2c9644b5b | 24 | spi.write(0x50); // Power Control |
villemejane | 1:a1d2c9644b5b | 25 | spi.write(0x6C); // Follower Control |
villemejane | 1:a1d2c9644b5b | 26 | spi.write(0x7C); // Contrast Set |
villemejane | 1:a1d2c9644b5b | 27 | spi.write(0x03); // Function Set - Table 0 |
villemejane | 1:a1d2c9644b5b | 28 | spi.write(0x0F); |
villemejane | 1:a1d2c9644b5b | 29 | spi.write(0x01); // Clear Display |
villemejane | 1:a1d2c9644b5b | 30 | wait_ms(2); |
villemejane | 1:a1d2c9644b5b | 31 | spi.write(0x06); // Display On |
villemejane | 1:a1d2c9644b5b | 32 | wait_ms(10); |
villemejane | 1:a1d2c9644b5b | 33 | RS_LCD=1; |
villemejane | 1:a1d2c9644b5b | 34 | CS=1; |
villemejane | 1:a1d2c9644b5b | 35 | wait_ms(10); |
villemejane | 1:a1d2c9644b5b | 36 | return; |
villemejane | 1:a1d2c9644b5b | 37 | } |
villemejane | 1:a1d2c9644b5b | 38 | |
villemejane | 1:a1d2c9644b5b | 39 | void EADogLcd::writeCmd_LCD(char c){ |
villemejane | 1:a1d2c9644b5b | 40 | CS =0; |
villemejane | 1:a1d2c9644b5b | 41 | RS_LCD =0; |
villemejane | 1:a1d2c9644b5b | 42 | spi.write(c); |
villemejane | 1:a1d2c9644b5b | 43 | RS_LCD = 1; |
villemejane | 1:a1d2c9644b5b | 44 | CS = 1; |
villemejane | 1:a1d2c9644b5b | 45 | return; |
villemejane | 1:a1d2c9644b5b | 46 | } |
villemejane | 1:a1d2c9644b5b | 47 | void EADogLcd::setPosition(char ligne, char colonne){ |
villemejane | 1:a1d2c9644b5b | 48 | char adress = 0x80 + ((ligne-1)*16) + (colonne -1); |
villemejane | 1:a1d2c9644b5b | 49 | writeCmd_LCD(adress); |
villemejane | 1:a1d2c9644b5b | 50 | wait_ms(1); |
villemejane | 1:a1d2c9644b5b | 51 | return; |
villemejane | 1:a1d2c9644b5b | 52 | } |
villemejane | 1:a1d2c9644b5b | 53 | void EADogLcd::writeStr_LCD(char c[], char ligne, char colonne){ |
villemejane | 1:a1d2c9644b5b | 54 | char i=0; |
villemejane | 1:a1d2c9644b5b | 55 | setPosition(ligne,colonne); |
villemejane | 1:a1d2c9644b5b | 56 | while(c[i] != '\0'){ |
villemejane | 1:a1d2c9644b5b | 57 | write_LCD(c[i]); |
villemejane | 1:a1d2c9644b5b | 58 | i++; |
villemejane | 1:a1d2c9644b5b | 59 | } |
villemejane | 1:a1d2c9644b5b | 60 | char lig = i/16 + 1; |
villemejane | 1:a1d2c9644b5b | 61 | char col = i%16 + 1; |
villemejane | 1:a1d2c9644b5b | 62 | setPosition(lig,col); |
villemejane | 1:a1d2c9644b5b | 63 | } |
villemejane | 1:a1d2c9644b5b | 64 | void EADogLcd::write_LCD(char c){ |
villemejane | 1:a1d2c9644b5b | 65 | CS = 0; |
villemejane | 1:a1d2c9644b5b | 66 | RS_LCD = 1; |
villemejane | 1:a1d2c9644b5b | 67 | spi.write(c); |
villemejane | 1:a1d2c9644b5b | 68 | // wait_ms(1); |
villemejane | 1:a1d2c9644b5b | 69 | RS_LCD = 1; |
villemejane | 1:a1d2c9644b5b | 70 | CS = 1; |
villemejane | 1:a1d2c9644b5b | 71 | return; |
villemejane | 1:a1d2c9644b5b | 72 | } |
villemejane | 1:a1d2c9644b5b | 73 |