A TextDisplay driver that supports graphical displays using on of the SED133x conrtrolers. Allows stdout and stderr output to be redirected to the display.

Committer:
llagendijk
Date:
Sat Jan 29 21:04:53 2011 +0000
Revision:
7:d79600310cfe
Parent:
6:2f8aed3d2be4
Child:
8:66be6a696e4e
and again more documentation fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
llagendijk 6:2f8aed3d2be4 1 // mbed Sed133xLCD Library Base Class
llagendijk 6:2f8aed3d2be4 2 // Based on TextLCD (Copyright (c) 2007-2009 sford)
llagendijk 6:2f8aed3d2be4 3 // Released under the MIT License: http://mbed.org/license/mit
llagendijk 6:2f8aed3d2be4 4 // Author: louis Lagendijk
llagendijk 6:2f8aed3d2be4 5 //
llagendijk 6:2f8aed3d2be4 6 //
llagendijk 6:2f8aed3d2be4 7 #include "TextDisplays.h"
llagendijk 6:2f8aed3d2be4 8
llagendijk 6:2f8aed3d2be4 9 #ifndef MBED_Sed133xLCD_H
llagendijk 6:2f8aed3d2be4 10 #define MBED_Sed133xLCD_H
llagendijk 6:2f8aed3d2be4 11
llagendijk 6:2f8aed3d2be4 12 enum dataType_t {
llagendijk 6:2f8aed3d2be4 13 t_data = 0,
llagendijk 6:2f8aed3d2be4 14 t_command = 1
llagendijk 6:2f8aed3d2be4 15 };
llagendijk 6:2f8aed3d2be4 16
llagendijk 6:2f8aed3d2be4 17 enum command_t {
llagendijk 6:2f8aed3d2be4 18 NO_COMMAND = 0,
llagendijk 6:2f8aed3d2be4 19 SYSTEM_SET = 0x40,
llagendijk 6:2f8aed3d2be4 20 SET_MEM = 0x42,
llagendijk 6:2f8aed3d2be4 21 GET_MEM = 0x43,
llagendijk 6:2f8aed3d2be4 22 SCROLL_SET = 0x44,
llagendijk 6:2f8aed3d2be4 23 SET_CURSOR = 0x46,
llagendijk 6:2f8aed3d2be4 24 GET_CURSOR = 0x47,
llagendijk 6:2f8aed3d2be4 25 CURSOR_DIR_RIGHT = 0x4c,
llagendijk 6:2f8aed3d2be4 26 CURSOR_DIR_LEFT = 0x4d,
llagendijk 6:2f8aed3d2be4 27 CURSOR_DIR_UP = 0x4e,
llagendijk 6:2f8aed3d2be4 28 CURSOR_DIR_DOWN = 0x4f,
llagendijk 6:2f8aed3d2be4 29 SLEEP_IN = 0x53,
llagendijk 6:2f8aed3d2be4 30 DISPLAY_OFF = 0x58,
llagendijk 6:2f8aed3d2be4 31 DISPLAY_ON = 0x59,
llagendijk 6:2f8aed3d2be4 32 HORIZONTAL_SCROLL_POSITION = 0x5a,
llagendijk 6:2f8aed3d2be4 33 OVERLAY_FORMAT = 0x5b,
llagendijk 6:2f8aed3d2be4 34 CHAR_GEN_RAM_ADDR = 0x5c,
llagendijk 6:2f8aed3d2be4 35 CURSOR_FORM = 0x5d
llagendijk 6:2f8aed3d2be4 36 };
llagendijk 6:2f8aed3d2be4 37
llagendijk 6:2f8aed3d2be4 38 struct commandName_t {
llagendijk 6:2f8aed3d2be4 39 command_t value;
llagendijk 6:2f8aed3d2be4 40 char *text;
llagendijk 6:2f8aed3d2be4 41 };
llagendijk 6:2f8aed3d2be4 42
llagendijk 6:2f8aed3d2be4 43 /** Sed133xLCD Textdisplay
llagendijk 6:2f8aed3d2be4 44 *
llagendijk 6:2f8aed3d2be4 45 * Supports SED1330 (and probably the SED1335 and SED1336).
llagendijk 6:2f8aed3d2be4 46 * Based on datasheet 268-0.4
llagendijk 6:2f8aed3d2be4 47
llagendijk 7:d79600310cfe 48 *This code drives the display using the 8080 interface (SEL1 = 0, SEL2 = 0).
llagendijk 7:d79600310cfe 49 * Required pins:
llagendijk 7:d79600310cfe 50 * @code
llagendijk 6:2f8aed3d2be4 51 * 8 bits for the databus +
llagendijk 6:2f8aed3d2be4 52 * *Reset
llagendijk 6:2f8aed3d2be4 53 * *Read
llagendijk 6:2f8aed3d2be4 54 * *Write
llagendijk 6:2f8aed3d2be4 55 * *ChipSelect
llagendijk 6:2f8aed3d2be4 56 * A0
llagendijk 7:d79600310cfe 57 * @endcode
llagendijk 6:2f8aed3d2be4 58 *
llagendijk 6:2f8aed3d2be4 59 * @code
llagendijk 6:2f8aed3d2be4 60 * Note1: Reset is a Schmitt trigger input that can normally not be driven from
llagendijk 6:2f8aed3d2be4 61 * an output pin. The other pins can be directly connected to the MBED
llagendijk 6:2f8aed3d2be4 62 * +5V
llagendijk 6:2f8aed3d2be4 63 * _
llagendijk 6:2f8aed3d2be4 64 * | | 10k
llagendijk 6:2f8aed3d2be4 65 * |_|
llagendijk 6:2f8aed3d2be4 66 * |
llagendijk 6:2f8aed3d2be4 67 * MBED__ |/
llagendijk 6:2f8aed3d2be4 68 * -|___|---| BC547
llagendijk 6:2f8aed3d2be4 69 * 22k |\>
llagendijk 6:2f8aed3d2be4 70 * |
llagendijk 6:2f8aed3d2be4 71 * ___
llagendijk 6:2f8aed3d2be4 72 * @endcode
llagendijk 6:2f8aed3d2be4 73 Character sizes can be set as desired (default 6*8). The SED seems to use a
llagendijk 6:2f8aed3d2be4 74 5*7 font internally other font sizes use additional white space around the
llagendijk 6:2f8aed3d2be4 75 characters.
llagendijk 6:2f8aed3d2be4 76 Font widths of more than 8 pixels are not supported.
llagendijk 6:2f8aed3d2be4 77 The actual size of the display in characters is caluclated from the horizontal/
llagendijk 6:2f8aed3d2be4 78 vertical resolution and the specified font size.
llagendijk 6:2f8aed3d2be4 79
llagendijk 6:2f8aed3d2be4 80 * Example:
llagendijk 6:2f8aed3d2be4 81 * @code
llagendijk 6:2f8aed3d2be4 82 / simple test for TextDisplay class
llagendijk 6:2f8aed3d2be4 83 #include "mbed.h"
llagendijk 6:2f8aed3d2be4 84 #include "Sed133xLCD.h"
llagendijk 6:2f8aed3d2be4 85
llagendijk 6:2f8aed3d2be4 86 Sed133xLCD lcd(p5, p6, p7, p8, p9, p28, p27, p26, p25, p24, p23, p22, p21,256,128, 6,9, "lcd");
llagendijk 6:2f8aed3d2be4 87
llagendijk 6:2f8aed3d2be4 88
llagendijk 6:2f8aed3d2be4 89 int main() {
llagendijk 6:2f8aed3d2be4 90 lcd.printf("Hello TextDisplay world!\r\n");
llagendijk 6:2f8aed3d2be4 91 lcd.claim(stdout);
llagendijk 6:2f8aed3d2be4 92 printf("hello stream world\r\n");
llagendijk 6:2f8aed3d2be4 93 }
llagendijk 6:2f8aed3d2be4 94
llagendijk 6:2f8aed3d2be4 95 * @endcode
llagendijk 6:2f8aed3d2be4 96 */
llagendijk 6:2f8aed3d2be4 97 class Sed133xLCD : public TextDisplay {
llagendijk 6:2f8aed3d2be4 98 public:
llagendijk 6:2f8aed3d2be4 99 /** Create the TextDisplay interface
llagendijk 6:2f8aed3d2be4 100 *
llagendijk 6:2f8aed3d2be4 101 * @param reset PinName for reset
llagendijk 6:2f8aed3d2be4 102 * @param nRead PinName for /read
llagendijk 6:2f8aed3d2be4 103 * @param nWrite PinName for /write
llagendijk 6:2f8aed3d2be4 104 * @param nSelect PinName for /select
llagendijk 6:2f8aed3d2be4 105 * @param addr0 PinName for addr0
llagendijk 6:2f8aed3d2be4 106 * @param d0-d7 PinName for D0 -D7
llagendijk 6:2f8aed3d2be4 107 * @param hor_dots horizontal resolution of display (in pixels), default: 256
llagendijk 6:2f8aed3d2be4 108 * @param vert_dots vertical resolution of display (in pixels), default: 128
llagendijk 7:d79600310cfe 109 * @param char_width disply width of character (in pixels), default: 6
llagendijk 6:2f8aed3d2be4 110 * @param char_height display height of character (in pixels), default: 8
llagendijk 6:2f8aed3d2be4 111 * @param name name to be used in pathname of the stream (defaults to "sed133x")
llagendijk 6:2f8aed3d2be4 112 */
llagendijk 6:2f8aed3d2be4 113
llagendijk 6:2f8aed3d2be4 114 Sed133xLCD(PinName reset, PinName nRead, PinName nWrite, PinName nSelect,PinName addr0,
llagendijk 6:2f8aed3d2be4 115 PinName d0, PinName d1, PinName d2, PinName d3,
llagendijk 6:2f8aed3d2be4 116 PinName d4, PinName d5, PinName d6, PinName d7,
llagendijk 6:2f8aed3d2be4 117 uint16_t hor_dots = 256, uint16_t vert_dots = 128,
llagendijk 6:2f8aed3d2be4 118 uint8_t char_width = 6, uint8_t char_height = 8, const char *name = "sed133x");
llagendijk 6:2f8aed3d2be4 119 virtual void character(uint16_t column, uint16_t row, int c);
llagendijk 6:2f8aed3d2be4 120 virtual uint16_t rows() {
llagendijk 6:2f8aed3d2be4 121 return _rows;
llagendijk 6:2f8aed3d2be4 122 }
llagendijk 6:2f8aed3d2be4 123 virtual uint16_t columns() {
llagendijk 6:2f8aed3d2be4 124 return _columns;
llagendijk 6:2f8aed3d2be4 125 }
llagendijk 6:2f8aed3d2be4 126 virtual void initializeSed();
llagendijk 6:2f8aed3d2be4 127 virtual void cls();
llagendijk 6:2f8aed3d2be4 128
llagendijk 6:2f8aed3d2be4 129 // locate, putc, printf come from parent class
llagendijk 6:2f8aed3d2be4 130
llagendijk 6:2f8aed3d2be4 131 protected:
llagendijk 6:2f8aed3d2be4 132 commandName_t commandNameTab[];
llagendijk 6:2f8aed3d2be4 133 char *commandName(command_t command_val);
llagendijk 6:2f8aed3d2be4 134 void busWait(void);
llagendijk 6:2f8aed3d2be4 135 void resetSed(void);
llagendijk 6:2f8aed3d2be4 136 void sendByte(dataType_t type, uint8_t data);
llagendijk 6:2f8aed3d2be4 137 uint8_t getByte(dataType_t type);
llagendijk 6:2f8aed3d2be4 138 void sendCommand(uint8_t data);
llagendijk 6:2f8aed3d2be4 139 void sendData(uint8_t data);
llagendijk 6:2f8aed3d2be4 140 void systemSet(void);
llagendijk 6:2f8aed3d2be4 141 void scrollSet(void);
llagendijk 6:2f8aed3d2be4 142 void horizontalScrollPosition(void);
llagendijk 6:2f8aed3d2be4 143 void overlayFormat(void);
llagendijk 6:2f8aed3d2be4 144 void cursorDirection(void);
llagendijk 6:2f8aed3d2be4 145 void cursorForm(void);
llagendijk 6:2f8aed3d2be4 146 void displayOn(void);
llagendijk 6:2f8aed3d2be4 147 void displayOff(void);
llagendijk 6:2f8aed3d2be4 148 void charGenRamAddr(void);
llagendijk 6:2f8aed3d2be4 149 void init(void);
llagendijk 6:2f8aed3d2be4 150 void setCursor(uint8_t column, uint8_t row);
llagendijk 6:2f8aed3d2be4 151 void setCursor(int offset);
llagendijk 6:2f8aed3d2be4 152 void printText(uint8_t *text);
llagendijk 6:2f8aed3d2be4 153 void printData(int len, uint8_t *data);
llagendijk 6:2f8aed3d2be4 154 void clsText(void);
llagendijk 6:2f8aed3d2be4 155 void clsGraphics(void);
llagendijk 6:2f8aed3d2be4 156 void clearCharacterGeneratorRam(void);
llagendijk 6:2f8aed3d2be4 157
llagendijk 6:2f8aed3d2be4 158 DigitalOut _reset, _nRead, _nWrite, _nSelect, _addr0;
llagendijk 6:2f8aed3d2be4 159 BusInOut _dataBus;
llagendijk 6:2f8aed3d2be4 160 uint16_t _hor_dots, _vert_dots, _rows, _columns, _char_width, _char_height;
llagendijk 6:2f8aed3d2be4 161 };
llagendijk 6:2f8aed3d2be4 162 #endif
llagendijk 6:2f8aed3d2be4 163
llagendijk 6:2f8aed3d2be4 164
llagendijk 6:2f8aed3d2be4 165