Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: CarPakingSystem_V10
Diff: SSH1106.cpp
- Revision:
- 3:ccd49dd0621d
- Parent:
- 2:b55dd362afb9
--- a/SSH1106.cpp Thu Dec 22 23:15:46 2016 +0000 +++ b/SSH1106.cpp Mon Mar 08 02:33:45 2021 +0000 @@ -9,7 +9,12 @@ */ #include "SSH1106.h" +SPI lcd(D4, NC, D3); // mosi, miso (nc), sclk +DigitalOut cs(D15); // chip select (active low) +DigitalOut cd(D14); // command/data (0=command, 1=data) +DigitalOut rst(D10); // Reset (active low) +SSH1106 ssh1106(lcd, cs, cd, rst); SSH1106::SSH1106(SPI &lcd, DigitalOut &lcd_cs, DigitalOut &lcd_cd, DigitalOut &lcd_rst) { _lcd = &lcd; @@ -27,10 +32,10 @@ _lcd_cd->write(0); // COMMAND mode _lcd_rst->write(0); - wait_ms(100); + //wait_ms(100); _lcd_rst->write(1); - wait_ms(50); + //wait_ms(50); _lcd->write(0xAE); // Display off _lcd->write(0x02); // Set lower column address @@ -86,6 +91,56 @@ _lcd_cd->write(1); } + +void SSH1106::clear_page(int column,int page) +{ + _lcd_cs->write(0); + _lcd_cd->write(1); + + for(unsigned short j = page; j < LCDPAGES; j++) { + SSH1106::setCursor(column, j); + for(unsigned short i = column; i < LCDWIDTH ; i++) { + _lcd->write(0x00); + } + } + SSH1106::setCursor(0, 0); + + _lcd_cs->write(1); +} + +//void SSH1106::clear_line(int column, int line) +//{ +// _lcd_cs->write(0); +// _lcd_cd->write(1); +// +// for(unsigned short j = line; j < LCDPAGES; j++) { +// SSH1106::setCursor(column, j); +// for(unsigned short i = column; i < LCDWIDTH ; i++) { +// _lcd->write(0x00); +// } +// } +// SSH1106::setCursor(0, 0); +// +// _lcd_cs->write(1); +// +//} + +void SSH1106::fillScreen() +{ + _lcd_cs->write(0); + _lcd_cd->write(1); + + for(unsigned short j = 0; j < LCDPAGES; j++) { + SSH1106::setCursor(0, j); + for(unsigned short i = 0; i < LCDWIDTH ; i++) { + _lcd->write(0xff); + } + } + SSH1106::setCursor(0, 0); + + _lcd_cs->write(1); +} + void SSH1106::clear() { _lcd_cs->write(0); @@ -97,7 +152,6 @@ _lcd->write(0x00); } } - SSH1106::setCursor(0, 0); _lcd_cs->write(1); @@ -115,6 +169,32 @@ _lcd_cs->write(1); } +//write decimal without size +void SSH1106::writeDec_format(char column, char page, const char *font_address, const int num) +{ + char str[40]; + int n; + if((num+1)%10 != 0) //if there is a two bit decimal + { + n = sprintf(str,"%d",num); + SSH1106::writeText(column, page, font_address, str, n); + } + else + { + n = sprintf(str," %d",num); + SSH1106::writeText(column, page, font_address, str, n); + } +} + +//write without size +void SSH1106::writeText_format(char column, char page, const char *font_address, const char *text) +{ + char str[40]; + int n; + n = sprintf(str,text); + SSH1106::writeText(column, page, font_address, str, n); +} + void SSH1106::writeText(char column, char page, const char *font_address, const char *text, const uint8_t size) { // Position of character data in memory array @@ -131,7 +211,7 @@ start_code = font_address[2]; // get first defined character last_code = font_address[3]; // get last defined character - width = font_address[4]; // width in pixel of one char + width = font_address[4]; // width in pixel of one char 6 page_height = font_address[6]; // page count per char bytes_p_char = font_address[7]; // bytes per char @@ -230,7 +310,7 @@ void SSH1106::drawLineVert(char posx, char posy, char height, char width) { char page, pagecount, offset, offset2; - + _lcd_cs->write(0); _lcd_cd->write(1);