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:28:42 2011 +0000
Revision:
9:68ad299df12b
Parent:
8:66be6a696e4e
First release of my version of TextDisPlay

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 8:66be6a696e4e 52 * *Reset (note 1)
llagendijk 6:2f8aed3d2be4 53 * *Read
llagendijk 6:2f8aed3d2be4 54 * *Write
llagendijk 6:2f8aed3d2be4 55 * *ChipSelect
llagendijk 6:2f8aed3d2be4 56 * A0
llagendijk 6:2f8aed3d2be4 57 *
llagendijk 6:2f8aed3d2be4 58 * Note1: Reset is a Schmitt trigger input that can normally not be driven from
llagendijk 6:2f8aed3d2be4 59 * an output pin. The other pins can be directly connected to the MBED
llagendijk 6:2f8aed3d2be4 60 * +5V
llagendijk 6:2f8aed3d2be4 61 * _
llagendijk 6:2f8aed3d2be4 62 * | | 10k
llagendijk 6:2f8aed3d2be4 63 * |_|
llagendijk 6:2f8aed3d2be4 64 * |
llagendijk 6:2f8aed3d2be4 65 * MBED__ |/
llagendijk 6:2f8aed3d2be4 66 * -|___|---| BC547
llagendijk 6:2f8aed3d2be4 67 * 22k |\>
llagendijk 6:2f8aed3d2be4 68 * |
llagendijk 6:2f8aed3d2be4 69 * ___
llagendijk 6:2f8aed3d2be4 70 * @endcode
llagendijk 8:66be6a696e4e 71 *
llagendijk 8:66be6a696e4e 72 * Character sizes can be set as desired (defaults to 6*8). The SED seems to use a
llagendijk 8:66be6a696e4e 73 * 5*7 font internally other font sizes use additional white space around the
llagendijk 8:66be6a696e4e 74 * characters.
llagendijk 8:66be6a696e4e 75 * Font widths of more than 8 pixels are not supported.
llagendijk 8:66be6a696e4e 76 * The actual size of the display in characters is caluclated from the horizontal/
llagendijk 8:66be6a696e4e 77 * vertical resolution and the specified font size.
llagendijk 6:2f8aed3d2be4 78
llagendijk 6:2f8aed3d2be4 79 * Example:
llagendijk 6:2f8aed3d2be4 80 * @code
llagendijk 6:2f8aed3d2be4 81 / simple test for TextDisplay class
llagendijk 6:2f8aed3d2be4 82 #include "mbed.h"
llagendijk 6:2f8aed3d2be4 83 #include "Sed133xLCD.h"
llagendijk 6:2f8aed3d2be4 84
llagendijk 6:2f8aed3d2be4 85 Sed133xLCD lcd(p5, p6, p7, p8, p9, p28, p27, p26, p25, p24, p23, p22, p21,256,128, 6,9, "lcd");
llagendijk 6:2f8aed3d2be4 86
llagendijk 6:2f8aed3d2be4 87
llagendijk 6:2f8aed3d2be4 88 int main() {
llagendijk 6:2f8aed3d2be4 89 lcd.printf("Hello TextDisplay world!\r\n");
llagendijk 6:2f8aed3d2be4 90 lcd.claim(stdout);
llagendijk 6:2f8aed3d2be4 91 printf("hello stream world\r\n");
llagendijk 6:2f8aed3d2be4 92 }
llagendijk 6:2f8aed3d2be4 93
llagendijk 6:2f8aed3d2be4 94 * @endcode
llagendijk 6:2f8aed3d2be4 95 */
llagendijk 6:2f8aed3d2be4 96 class Sed133xLCD : public TextDisplay {
llagendijk 6:2f8aed3d2be4 97 public:
llagendijk 6:2f8aed3d2be4 98 /** Create the TextDisplay interface
llagendijk 6:2f8aed3d2be4 99 *
llagendijk 6:2f8aed3d2be4 100 * @param reset PinName for reset
llagendijk 6:2f8aed3d2be4 101 * @param nRead PinName for /read
llagendijk 6:2f8aed3d2be4 102 * @param nWrite PinName for /write
llagendijk 6:2f8aed3d2be4 103 * @param nSelect PinName for /select
llagendijk 6:2f8aed3d2be4 104 * @param addr0 PinName for addr0
llagendijk 6:2f8aed3d2be4 105 * @param d0-d7 PinName for D0 -D7
llagendijk 8:66be6a696e4e 106 * @param hor_dots horizontal resolution of display (in pixels)
llagendijk 8:66be6a696e4e 107 * @param vert_dots vertical resolution of display (in pixels)
llagendijk 8:66be6a696e4e 108 * @param char_width disply width of character (in pixels)
llagendijk 8:66be6a696e4e 109 * @param char_height display height of character (in pixels)8
llagendijk 8:66be6a696e4e 110 * @param name name to be used in pathname of the stream
llagendijk 6:2f8aed3d2be4 111 */
llagendijk 6:2f8aed3d2be4 112
llagendijk 6:2f8aed3d2be4 113 Sed133xLCD(PinName reset, PinName nRead, PinName nWrite, PinName nSelect,PinName addr0,
llagendijk 6:2f8aed3d2be4 114 PinName d0, PinName d1, PinName d2, PinName d3,
llagendijk 6:2f8aed3d2be4 115 PinName d4, PinName d5, PinName d6, PinName d7,
llagendijk 6:2f8aed3d2be4 116 uint16_t hor_dots = 256, uint16_t vert_dots = 128,
llagendijk 6:2f8aed3d2be4 117 uint8_t char_width = 6, uint8_t char_height = 8, const char *name = "sed133x");
llagendijk 6:2f8aed3d2be4 118 virtual void character(uint16_t column, uint16_t row, int c);
llagendijk 6:2f8aed3d2be4 119 virtual uint16_t rows() {
llagendijk 6:2f8aed3d2be4 120 return _rows;
llagendijk 6:2f8aed3d2be4 121 }
llagendijk 6:2f8aed3d2be4 122 virtual uint16_t columns() {
llagendijk 6:2f8aed3d2be4 123 return _columns;
llagendijk 6:2f8aed3d2be4 124 }
llagendijk 6:2f8aed3d2be4 125 virtual void initializeSed();
llagendijk 6:2f8aed3d2be4 126 virtual void cls();
llagendijk 6:2f8aed3d2be4 127
llagendijk 6:2f8aed3d2be4 128 // locate, putc, printf come from parent class
llagendijk 6:2f8aed3d2be4 129
llagendijk 6:2f8aed3d2be4 130 protected:
llagendijk 6:2f8aed3d2be4 131 commandName_t commandNameTab[];
llagendijk 6:2f8aed3d2be4 132 char *commandName(command_t command_val);
llagendijk 6:2f8aed3d2be4 133 void busWait(void);
llagendijk 6:2f8aed3d2be4 134 void resetSed(void);
llagendijk 6:2f8aed3d2be4 135 void sendByte(dataType_t type, uint8_t data);
llagendijk 6:2f8aed3d2be4 136 uint8_t getByte(dataType_t type);
llagendijk 6:2f8aed3d2be4 137 void sendCommand(uint8_t data);
llagendijk 6:2f8aed3d2be4 138 void sendData(uint8_t data);
llagendijk 6:2f8aed3d2be4 139 void systemSet(void);
llagendijk 6:2f8aed3d2be4 140 void scrollSet(void);
llagendijk 6:2f8aed3d2be4 141 void horizontalScrollPosition(void);
llagendijk 6:2f8aed3d2be4 142 void overlayFormat(void);
llagendijk 6:2f8aed3d2be4 143 void cursorDirection(void);
llagendijk 6:2f8aed3d2be4 144 void cursorForm(void);
llagendijk 6:2f8aed3d2be4 145 void displayOn(void);
llagendijk 6:2f8aed3d2be4 146 void displayOff(void);
llagendijk 6:2f8aed3d2be4 147 void charGenRamAddr(void);
llagendijk 6:2f8aed3d2be4 148 void init(void);
llagendijk 6:2f8aed3d2be4 149 void setCursor(uint8_t column, uint8_t row);
llagendijk 6:2f8aed3d2be4 150 void setCursor(int offset);
llagendijk 6:2f8aed3d2be4 151 void printText(uint8_t *text);
llagendijk 6:2f8aed3d2be4 152 void printData(int len, uint8_t *data);
llagendijk 6:2f8aed3d2be4 153 void clsText(void);
llagendijk 6:2f8aed3d2be4 154 void clsGraphics(void);
llagendijk 6:2f8aed3d2be4 155 void clearCharacterGeneratorRam(void);
llagendijk 6:2f8aed3d2be4 156
llagendijk 6:2f8aed3d2be4 157 DigitalOut _reset, _nRead, _nWrite, _nSelect, _addr0;
llagendijk 6:2f8aed3d2be4 158 BusInOut _dataBus;
llagendijk 6:2f8aed3d2be4 159 uint16_t _hor_dots, _vert_dots, _rows, _columns, _char_width, _char_height;
llagendijk 6:2f8aed3d2be4 160 };
llagendijk 6:2f8aed3d2be4 161 #endif
llagendijk 6:2f8aed3d2be4 162
llagendijk 6:2f8aed3d2be4 163
llagendijk 6:2f8aed3d2be4 164