LS020.h is a MobileLCD library for the LS020 display (used in GSM Siemens S65 family). Resolution 176x132
Diff: LS020LCD.h
- Revision:
- 0:d550841cd6eb
- Child:
- 1:2269e07af50b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LS020LCD.h Mon Dec 06 20:25:44 2010 +0000 @@ -0,0 +1,127 @@ +/* mbed LS020 Library, for driving the I2C I/O Expander + * Copyright (c) 2010, Wim De Roeve, port from Christian Kranz research to mbed + + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +#ifndef MBED_LS020LCD_H +#define MBED_LS020LCD_H + +#include "mbed.h" + +namespace mbed { +/* Class: LS020LCD + * An abstraction of the LS020 Mobile phone screen, used in Siemens S65 GSM + * + * Example: + * > + * > #include "mbed.h" + * > #include "LS020LCD.h" + * > + * >LSO20LCD S65lcd(p5,p6,p7,p8,p9); + * > + * > int main() { + * > S65lcd.printf("Hello World!"); + * > } +*/ + +class LS020LCD { +public: + /* Constructor: LSO20LCD + * Create and object for the LS020 LCD, using SPI and three DigitalOuts + * + * Variables: + * mosi - SPI data out + * miso - SPI data in, not used + * clk - SPI clock + * cs - Chip Select + * rst - reset + * rs - register select + * rotation - orientation of the screen 0 = landscape, 1 = + */ + LS020LCD(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName rst, PinName rs); + + virtual void orientation(bool rotate, bool mirror); + virtual void reset(); + virtual void set_8bit_mode(char BGR); + virtual void set_16bit_mode(void); + virtual void set_8_color_mode(void); + virtual void set_65k_color_mode(void); + + void fillrectangle(unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1, unsigned int color); + void drawpixel(unsigned int x, unsigned int y, unsigned int color); + void drawline(unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1, unsigned int color); + void drawrectangle(unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1, unsigned int color); + void fillcircle(unsigned int x0, unsigned int y0, unsigned int radius, unsigned int color); + void drawcircle(unsigned int x0, unsigned int y0, unsigned int radius, unsigned int color); + unsigned int putc(unsigned int x, unsigned int y, unsigned int c, unsigned int size, unsigned int font, unsigned int color, unsigned int bgcolor); + void drawtext(unsigned int x, unsigned int y, char* text, unsigned int size,unsigned int font, unsigned int color, unsigned int bgcolor); + void scroll(char offset); + void cls(); + + /** Read the IO pin level + * + * @return The byte read + */ + //int read(); + + /** Write to the IO pins + * + * @param data The 8 bits to write to the IO port + */ + //void write(int data); + +private: + SPI _spi; + DigitalOut _rst; + DigitalOut _cs; + DigitalOut _rs; + + int _row,_column,_rows,_columns,_width, _height; + bool _rotate,_mirror ; + int _font,_foreground, _background; + + void write_cmdRG(uint8_t reg, uint8_t param); + void write_cmd8(uint8_t cmd8); + void write_cmd16(uint16_t cmd16); + void write_data8(char data); + void write_data16(uint16_t cmd16); + void draw(uint16_t cmd16) ; + void drawstop(void); + void drawstart(void); + + void foreground(unsigned int color); + void background(unsigned int color); + + void locate(int column, int row); + void newline(); + int columns(); + int rows(); + void set_cursor(unsigned int x, unsigned int y); + void set_window(char x0, char y0, char x1,char y1); + //void rectangle8(char x1, char y1, char x2, char y2, char color); + //void putpixel(unsigned char r,unsigned char g,unsigned char b, unsigned char x, unsigned char y); + + + +}; +} + +#endif