Nokia LCD Controller for Philips PCF8833 controller marked "X3"

Dependencies:   mbed

Committer:
PhilG1300
Date:
Tue Dec 01 08:41:43 2009 +0000
Revision:
0:d1a5b2ebfc8a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PhilG1300 0:d1a5b2ebfc8a 1 /* mbed Library - Nokia LCD Labelled "X3"
PhilG1300 0:d1a5b2ebfc8a 2 * This is using the Philips PCF8833 controller
PhilG1300 0:d1a5b2ebfc8a 3 * Copyright (c) 2009 P.R.Green
PhilG1300 0:d1a5b2ebfc8a 4 */
PhilG1300 0:d1a5b2ebfc8a 5
PhilG1300 0:d1a5b2ebfc8a 6 #ifndef MBED_MOBILELCD_H
PhilG1300 0:d1a5b2ebfc8a 7 #define MBED_MOBILELCD_H
PhilG1300 0:d1a5b2ebfc8a 8
PhilG1300 0:d1a5b2ebfc8a 9 //Colours in RGB 5:6:5 16bit mode
PhilG1300 0:d1a5b2ebfc8a 10 #define BLACK 0x0000
PhilG1300 0:d1a5b2ebfc8a 11 #define RED 0xF800
PhilG1300 0:d1a5b2ebfc8a 12 #define GREEN 0x07E0
PhilG1300 0:d1a5b2ebfc8a 13 #define BLUE 0x001F
PhilG1300 0:d1a5b2ebfc8a 14 #define WHITE 0xFFFF
PhilG1300 0:d1a5b2ebfc8a 15 #include "mbed.h"
PhilG1300 0:d1a5b2ebfc8a 16
PhilG1300 0:d1a5b2ebfc8a 17
PhilG1300 0:d1a5b2ebfc8a 18 namespace mbed {
PhilG1300 0:d1a5b2ebfc8a 19
PhilG1300 0:d1a5b2ebfc8a 20 /* Class: MobileLCD
PhilG1300 0:d1a5b2ebfc8a 21 * An abstraction of the 130x130 Nokia Mobile labelled "X3" phone screen
PhilG1300 0:d1a5b2ebfc8a 22 *
PhilG1300 0:d1a5b2ebfc8a 23 * Example:
PhilG1300 0:d1a5b2ebfc8a 24 * >
PhilG1300 0:d1a5b2ebfc8a 25 * > #include "mbed.h"
PhilG1300 0:d1a5b2ebfc8a 26 * > #include "MobileLCD.h"
PhilG1300 0:d1a5b2ebfc8a 27 * >
PhilG1300 0:d1a5b2ebfc8a 28 * > MobileLCD lcd(p5,p6,p7,p8,p9);
PhilG1300 0:d1a5b2ebfc8a 29 * >
PhilG1300 0:d1a5b2ebfc8a 30 * > int main() {
PhilG1300 0:d1a5b2ebfc8a 31 * > lcd.printf("Hello World!");
PhilG1300 0:d1a5b2ebfc8a 32 * > }
PhilG1300 0:d1a5b2ebfc8a 33 */
PhilG1300 0:d1a5b2ebfc8a 34
PhilG1300 0:d1a5b2ebfc8a 35 class MobileLCD : public Stream {
PhilG1300 0:d1a5b2ebfc8a 36
PhilG1300 0:d1a5b2ebfc8a 37 public:
PhilG1300 0:d1a5b2ebfc8a 38 /* Constructor: MobileLCD
PhilG1300 0:d1a5b2ebfc8a 39 * Create and object for the Mobile LCD, using SPI and two DigitalOuts
PhilG1300 0:d1a5b2ebfc8a 40 *
PhilG1300 0:d1a5b2ebfc8a 41 * Variables:
PhilG1300 0:d1a5b2ebfc8a 42 * mosi - SPI data out
PhilG1300 0:d1a5b2ebfc8a 43 * miso - SPI data in, not used
PhilG1300 0:d1a5b2ebfc8a 44 * clk - SPI clock
PhilG1300 0:d1a5b2ebfc8a 45 * cs - Chip Select
PhilG1300 0:d1a5b2ebfc8a 46 * rst - reset
PhilG1300 0:d1a5b2ebfc8a 47 */
PhilG1300 0:d1a5b2ebfc8a 48
PhilG1300 0:d1a5b2ebfc8a 49 MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst);
PhilG1300 0:d1a5b2ebfc8a 50
PhilG1300 0:d1a5b2ebfc8a 51 virtual void reset();
PhilG1300 0:d1a5b2ebfc8a 52 virtual void _select();
PhilG1300 0:d1a5b2ebfc8a 53 virtual void _deselect();
PhilG1300 0:d1a5b2ebfc8a 54 virtual void _window(int x, int y, int width, int height);
PhilG1300 0:d1a5b2ebfc8a 55 virtual void _putp(int colour);
PhilG1300 0:d1a5b2ebfc8a 56 //virtual void orientation();
PhilG1300 0:d1a5b2ebfc8a 57
PhilG1300 0:d1a5b2ebfc8a 58 void command(int value);
PhilG1300 0:d1a5b2ebfc8a 59 void data(int value);
PhilG1300 0:d1a5b2ebfc8a 60 void foreground(int v);
PhilG1300 0:d1a5b2ebfc8a 61 void background(int v);
PhilG1300 0:d1a5b2ebfc8a 62 /* Function: locate
PhilG1300 0:d1a5b2ebfc8a 63 * Set the text cursor to location x,y
PhilG1300 0:d1a5b2ebfc8a 64 *
PhilG1300 0:d1a5b2ebfc8a 65 * Variables:
PhilG1300 0:d1a5b2ebfc8a 66 * x - An integer setting the column position
PhilG1300 0:d1a5b2ebfc8a 67 * y - An integer setting the row position
PhilG1300 0:d1a5b2ebfc8a 68 */
PhilG1300 0:d1a5b2ebfc8a 69 void locate(int column, int row);
PhilG1300 0:d1a5b2ebfc8a 70 /* Function: newline
PhilG1300 0:d1a5b2ebfc8a 71 * Set the text cursor to the start of the next line
PhilG1300 0:d1a5b2ebfc8a 72 */
PhilG1300 0:d1a5b2ebfc8a 73 void newline();
PhilG1300 0:d1a5b2ebfc8a 74 virtual int _putc(int c);
PhilG1300 0:d1a5b2ebfc8a 75 virtual int _getc() { return 0; }
PhilG1300 0:d1a5b2ebfc8a 76 SPI _spi;
PhilG1300 0:d1a5b2ebfc8a 77 DigitalOut _rst;
PhilG1300 0:d1a5b2ebfc8a 78 DigitalOut _cs;
PhilG1300 0:d1a5b2ebfc8a 79 void bitblit(int x, int y, int width, int height, const char* bitstream);
PhilG1300 0:d1a5b2ebfc8a 80 void fill(int x, int y, int width, int height, int colour);
PhilG1300 0:d1a5b2ebfc8a 81 void blit(int x, int y, int width, int height, const int* colour);
PhilG1300 0:d1a5b2ebfc8a 82 /* Function: cls
PhilG1300 0:d1a5b2ebfc8a 83 * Clear the screen
PhilG1300 0:d1a5b2ebfc8a 84 */
PhilG1300 0:d1a5b2ebfc8a 85 void cls();
PhilG1300 0:d1a5b2ebfc8a 86 int width();
PhilG1300 0:d1a5b2ebfc8a 87 int height();
PhilG1300 0:d1a5b2ebfc8a 88 int columns();
PhilG1300 0:d1a5b2ebfc8a 89 int rows();
PhilG1300 0:d1a5b2ebfc8a 90 void putp(int v);
PhilG1300 0:d1a5b2ebfc8a 91 void window(int x, int y, int width, int height);
PhilG1300 0:d1a5b2ebfc8a 92 void pixel(int x, int y, int colour);
PhilG1300 0:d1a5b2ebfc8a 93 int _row, _column, _rows, _columns, _foreground, _background, _width, _height;
PhilG1300 0:d1a5b2ebfc8a 94 };
PhilG1300 0:d1a5b2ebfc8a 95
PhilG1300 0:d1a5b2ebfc8a 96 }
PhilG1300 0:d1a5b2ebfc8a 97
PhilG1300 0:d1a5b2ebfc8a 98 #endif
PhilG1300 0:d1a5b2ebfc8a 99
PhilG1300 0:d1a5b2ebfc8a 100