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.
Fork of KS0108 by
KS0108.h@5:e4b50f4c13a8, 2011-05-02 (annotated)
- Committer:
- DimiterK
- Date:
- Mon May 02 19:05:30 2011 +0000
- Revision:
- 5:e4b50f4c13a8
- Parent:
- 4:bdc04bb2ffc1
Ver 2.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DimiterK | 0:135b9a0a816e | 1 | #ifndef KS0108_H |
DimiterK | 0:135b9a0a816e | 2 | #define KS0108_H |
DimiterK | 0:135b9a0a816e | 3 | |
DimiterK | 5:e4b50f4c13a8 | 4 | #define VERSION 2.0 |
DimiterK | 0:135b9a0a816e | 5 | |
DimiterK | 5:e4b50f4c13a8 | 6 | #include <mbed.h> |
DimiterK | 1:a368f2688222 | 7 | #include "SystemFont5x7.h" |
DimiterK | 0:135b9a0a816e | 8 | |
DimiterK | 0:135b9a0a816e | 9 | /************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 10 | // Commands |
DimiterK | 2:03d27b3fce6e | 11 | #define LCD_ON 0x3F |
DimiterK | 2:03d27b3fce6e | 12 | #define LCD_OFF 0x3E |
DimiterK | 2:03d27b3fce6e | 13 | #define LCD_SET_ADD 0x40 |
DimiterK | 1:a368f2688222 | 14 | #define LCD_SET_PAGE 0xB8 |
DimiterK | 2:03d27b3fce6e | 15 | #define LCD_DISP_START 0xC0 |
DimiterK | 0:135b9a0a816e | 16 | |
DimiterK | 0:135b9a0a816e | 17 | //Controller directives |
DimiterK | 5:e4b50f4c13a8 | 18 | #define LEFT 0 |
DimiterK | 5:e4b50f4c13a8 | 19 | #define RIGHT 1 |
DimiterK | 1:a368f2688222 | 20 | #define BOTH 3 |
DimiterK | 1:a368f2688222 | 21 | #define NONE 4 |
DimiterK | 0:135b9a0a816e | 22 | |
DimiterK | 0:135b9a0a816e | 23 | // Colors |
DimiterK | 2:03d27b3fce6e | 24 | #define BLACK 0xFF |
DimiterK | 2:03d27b3fce6e | 25 | #define WHITE 0x00 |
DimiterK | 0:135b9a0a816e | 26 | |
DimiterK | 0:135b9a0a816e | 27 | //Screen dimensions |
DimiterK | 1:a368f2688222 | 28 | #define SCREEN_HEIGHT 64 |
DimiterK | 1:a368f2688222 | 29 | #define SCREEN_WIDTH 128 |
DimiterK | 5:e4b50f4c13a8 | 30 | #define CHIP_WIDTH 64 |
DimiterK | 0:135b9a0a816e | 31 | |
DimiterK | 0:135b9a0a816e | 32 | /***********************************************************************************/ |
DimiterK | 5:e4b50f4c13a8 | 33 | //helper functions |
DimiterK | 0:135b9a0a816e | 34 | |
DimiterK | 0:135b9a0a816e | 35 | #define absDiff(x,y) ((x>y) ? (x-y) : (y-x)) |
DimiterK | 0:135b9a0a816e | 36 | #define swap(a,b) \ |
DimiterK | 0:135b9a0a816e | 37 | do\ |
DimiterK | 0:135b9a0a816e | 38 | {\ |
DimiterK | 0:135b9a0a816e | 39 | uint8_t t;\ |
DimiterK | 1:a368f2688222 | 40 | t=a;\ |
DimiterK | 1:a368f2688222 | 41 | a=b;\ |
DimiterK | 1:a368f2688222 | 42 | b=t;\ |
DimiterK | 5:e4b50f4c13a8 | 43 | } while(0) |
DimiterK | 0:135b9a0a816e | 44 | |
DimiterK | 0:135b9a0a816e | 45 | /**************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 46 | |
DimiterK | 0:135b9a0a816e | 47 | // Font Indices |
DimiterK | 2:03d27b3fce6e | 48 | #define FONT_LENGTH 0 |
DimiterK | 1:a368f2688222 | 49 | #define FONT_FIXED_WIDTH 2 |
DimiterK | 2:03d27b3fce6e | 50 | #define FONT_HEIGHT 3 |
DimiterK | 2:03d27b3fce6e | 51 | #define FONT_FIRST_CHAR 4 |
DimiterK | 2:03d27b3fce6e | 52 | #define FONT_CHAR_COUNT 5 |
DimiterK | 1:a368f2688222 | 53 | #define FONT_WIDTH_TABLE 6 |
DimiterK | 0:135b9a0a816e | 54 | |
DimiterK | 5:e4b50f4c13a8 | 55 | |
DimiterK | 5:e4b50f4c13a8 | 56 | /*************************Callback function definietion for fonts *********************/ |
DimiterK | 5:e4b50f4c13a8 | 57 | typedef unsigned int (*FontCallback)(unsigned int*); |
DimiterK | 5:e4b50f4c13a8 | 58 | |
DimiterK | 5:e4b50f4c13a8 | 59 | /*************************Callback function for reading font array*********************/ |
DimiterK | 5:e4b50f4c13a8 | 60 | static unsigned int ReadData(unsigned int* ptr) { |
DimiterK | 5:e4b50f4c13a8 | 61 | return *ptr; |
DimiterK | 5:e4b50f4c13a8 | 62 | } |
DimiterK | 5:e4b50f4c13a8 | 63 | |
DimiterK | 2:03d27b3fce6e | 64 | /*************************************************************************************/ |
DimiterK | 4:bdc04bb2ffc1 | 65 | #define MAX_IMG_SIZE 128*64 |
DimiterK | 2:03d27b3fce6e | 66 | |
DimiterK | 2:03d27b3fce6e | 67 | typedef struct { |
DimiterK | 2:03d27b3fce6e | 68 | unsigned int imgWidth; |
DimiterK | 2:03d27b3fce6e | 69 | unsigned int imgHeight; |
DimiterK | 2:03d27b3fce6e | 70 | unsigned char imgarray[MAX_IMG_SIZE]; |
DimiterK | 2:03d27b3fce6e | 71 | }Image; |
DimiterK | 2:03d27b3fce6e | 72 | |
DimiterK | 5:e4b50f4c13a8 | 73 | |
DimiterK | 5:e4b50f4c13a8 | 74 | typedef struct { |
DimiterK | 5:e4b50f4c13a8 | 75 | unsigned int x; |
DimiterK | 5:e4b50f4c13a8 | 76 | unsigned int y; |
DimiterK | 5:e4b50f4c13a8 | 77 | unsigned int page; |
DimiterK | 5:e4b50f4c13a8 | 78 | } LCDCoord; |
DimiterK | 5:e4b50f4c13a8 | 79 | |
DimiterK | 5:e4b50f4c13a8 | 80 | |
DimiterK | 5:e4b50f4c13a8 | 81 | /****************************************************************************************/ |
DimiterK | 5:e4b50f4c13a8 | 82 | |
DimiterK | 5:e4b50f4c13a8 | 83 | |
DimiterK | 0:135b9a0a816e | 84 | |
DimiterK | 0:135b9a0a816e | 85 | class KS0108 { |
DimiterK | 1:a368f2688222 | 86 | public: |
DimiterK | 2:03d27b3fce6e | 87 | |
DimiterK | 2:03d27b3fce6e | 88 | /** |
DimiterK | 2:03d27b3fce6e | 89 | *@brief Constructor, initializes the lcd on the respective pins. |
DimiterK | 2:03d27b3fce6e | 90 | *@param control pins RST,DI,RW,E,CS2,CS1 |
DimiterK | 2:03d27b3fce6e | 91 | *@param databus DB0-DB7 data pins |
DimiterK | 2:03d27b3fce6e | 92 | *@return none |
DimiterK | 2:03d27b3fce6e | 93 | */ |
DimiterK | 1:a368f2688222 | 94 | |
DimiterK | 1:a368f2688222 | 95 | KS0108 (PinName _RST,PinName _DI, PinName _RW, PinName _E, PinName _CS1, PinName _CS2, PinName DB0, PinName DB1, PinName DB2, PinName DB3, PinName DB4, PinName DB5, PinName DB6, PinName DB7); |
DimiterK | 1:a368f2688222 | 96 | |
DimiterK | 2:03d27b3fce6e | 97 | /** |
DimiterK | 2:03d27b3fce6e | 98 | *@brief Write instruction to the specific controller. |
DimiterK | 2:03d27b3fce6e | 99 | *@param Command command to send to the controller |
DimiterK | 2:03d27b3fce6e | 100 | *@param side controller side can be LEFT or RIGHT |
DimiterK | 1:a368f2688222 | 101 | *@return none |
DimiterK | 1:a368f2688222 | 102 | * |
DimiterK | 1:a368f2688222 | 103 | */ |
DimiterK | 1:a368f2688222 | 104 | void WriteInstruction(unsigned int Command,unsigned int side); |
DimiterK | 1:a368f2688222 | 105 | |
DimiterK | 2:03d27b3fce6e | 106 | /** |
DimiterK | 2:03d27b3fce6e | 107 | *@brief Write data byte to the controller. |
DimiterK | 2:03d27b3fce6e | 108 | *@param data data send to the controller chip |
DimiterK | 2:03d27b3fce6e | 109 | *@param side selected controller can be LEFT or RIGHT |
DimiterK | 2:03d27b3fce6e | 110 | *@return none |
DimiterK | 1:a368f2688222 | 111 | * |
DimiterK | 1:a368f2688222 | 112 | */ |
DimiterK | 1:a368f2688222 | 113 | void WriteData(unsigned int data ,unsigned char side); |
DimiterK | 1:a368f2688222 | 114 | |
DimiterK | 5:e4b50f4c13a8 | 115 | |
DimiterK | 5:e4b50f4c13a8 | 116 | /** |
DimiterK | 5:e4b50f4c13a8 | 117 | *@brief Write data byte to the controller (overloaded function). |
DimiterK | 5:e4b50f4c13a8 | 118 | * |
DimiterK | 5:e4b50f4c13a8 | 119 | *@param data data send to the controller chip |
DimiterK | 5:e4b50f4c13a8 | 120 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 121 | */ |
DimiterK | 5:e4b50f4c13a8 | 122 | void WriteData(unsigned int data); |
DimiterK | 5:e4b50f4c13a8 | 123 | |
DimiterK | 2:03d27b3fce6e | 124 | /** |
DimiterK | 2:03d27b3fce6e | 125 | *@brief Write data byte to the screen on specific page and column |
DimiterK | 2:03d27b3fce6e | 126 | *@param page page varies from 0-7 for each side |
DimiterK | 2:03d27b3fce6e | 127 | *@param col col varies from 0-64 for each side |
DimiterK | 2:03d27b3fce6e | 128 | *@param data info to be written on given coordinates |
DimiterK | 2:03d27b3fce6e | 129 | *@return none |
DimiterK | 2:03d27b3fce6e | 130 | * |
DimiterK | 2:03d27b3fce6e | 131 | */ |
DimiterK | 1:a368f2688222 | 132 | void WriteDataColPag(unsigned int page, unsigned int col, unsigned int data); |
DimiterK | 1:a368f2688222 | 133 | |
DimiterK | 2:03d27b3fce6e | 134 | /** |
DimiterK | 2:03d27b3fce6e | 135 | *@brief Read data from display |
DimiterK | 1:a368f2688222 | 136 | *@param none |
DimiterK | 2:03d27b3fce6e | 137 | *@return none |
DimiterK | 1:a368f2688222 | 138 | * |
DimiterK | 1:a368f2688222 | 139 | */ |
DimiterK | 1:a368f2688222 | 140 | unsigned int ReadData(); |
DimiterK | 1:a368f2688222 | 141 | |
DimiterK | 2:03d27b3fce6e | 142 | /** |
DimiterK | 2:03d27b3fce6e | 143 | *@brief Read status of display , and check if it's busy |
DimiterK | 1:a368f2688222 | 144 | *@param none |
DimiterK | 2:03d27b3fce6e | 145 | *@return status status of display |
DimiterK | 1:a368f2688222 | 146 | * |
DimiterK | 1:a368f2688222 | 147 | */ |
DimiterK | 1:a368f2688222 | 148 | unsigned int ReadStatus(); |
DimiterK | 1:a368f2688222 | 149 | |
DimiterK | 2:03d27b3fce6e | 150 | /** |
DimiterK | 2:03d27b3fce6e | 151 | *@brief Select controller chip |
DimiterK | 1:a368f2688222 | 152 | * |
DimiterK | 2:03d27b3fce6e | 153 | *@param side controller side can be LEFT or RIGHT |
DimiterK | 1:a368f2688222 | 154 | *@return none |
DimiterK | 1:a368f2688222 | 155 | * |
DimiterK | 1:a368f2688222 | 156 | */ |
DimiterK | 1:a368f2688222 | 157 | void SelectSide(unsigned char side); |
DimiterK | 0:135b9a0a816e | 158 | |
DimiterK | 5:e4b50f4c13a8 | 159 | |
DimiterK | 5:e4b50f4c13a8 | 160 | /** |
DimiterK | 5:e4b50f4c13a8 | 161 | *@brief Set cursor to specified coordinates |
DimiterK | 5:e4b50f4c13a8 | 162 | * |
DimiterK | 5:e4b50f4c13a8 | 163 | *@param x row |
DimiterK | 5:e4b50f4c13a8 | 164 | *@param y column |
DimiterK | 5:e4b50f4c13a8 | 165 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 166 | */ |
DimiterK | 5:e4b50f4c13a8 | 167 | void GotoXY(unsigned int x, unsigned int y); |
DimiterK | 5:e4b50f4c13a8 | 168 | |
DimiterK | 5:e4b50f4c13a8 | 169 | |
DimiterK | 2:03d27b3fce6e | 170 | /** |
DimiterK | 2:03d27b3fce6e | 171 | *@brief Clears display |
DimiterK | 1:a368f2688222 | 172 | * |
DimiterK | 1:a368f2688222 | 173 | *@param none |
DimiterK | 1:a368f2688222 | 174 | *@return none |
DimiterK | 1:a368f2688222 | 175 | * |
DimiterK | 1:a368f2688222 | 176 | */ |
DimiterK | 1:a368f2688222 | 177 | void ClearScreen(); |
DimiterK | 4:bdc04bb2ffc1 | 178 | |
DimiterK | 5:e4b50f4c13a8 | 179 | |
DimiterK | 4:bdc04bb2ffc1 | 180 | /** |
DimiterK | 4:bdc04bb2ffc1 | 181 | *@brief Turn on display |
DimiterK | 4:bdc04bb2ffc1 | 182 | * |
DimiterK | 4:bdc04bb2ffc1 | 183 | *@param none |
DimiterK | 4:bdc04bb2ffc1 | 184 | *@return none |
DimiterK | 4:bdc04bb2ffc1 | 185 | * |
DimiterK | 4:bdc04bb2ffc1 | 186 | */ |
DimiterK | 4:bdc04bb2ffc1 | 187 | void TurnOn(); |
DimiterK | 4:bdc04bb2ffc1 | 188 | |
DimiterK | 4:bdc04bb2ffc1 | 189 | |
DimiterK | 4:bdc04bb2ffc1 | 190 | /** |
DimiterK | 4:bdc04bb2ffc1 | 191 | *@brief Turn Off display |
DimiterK | 4:bdc04bb2ffc1 | 192 | * |
DimiterK | 4:bdc04bb2ffc1 | 193 | *@param none |
DimiterK | 4:bdc04bb2ffc1 | 194 | *@return none |
DimiterK | 4:bdc04bb2ffc1 | 195 | * |
DimiterK | 4:bdc04bb2ffc1 | 196 | */ |
DimiterK | 4:bdc04bb2ffc1 | 197 | void TurnOff(); |
DimiterK | 1:a368f2688222 | 198 | |
DimiterK | 1:a368f2688222 | 199 | /*******************************Graphic functions************************************************/ |
DimiterK | 1:a368f2688222 | 200 | |
DimiterK | 2:03d27b3fce6e | 201 | /** |
DimiterK | 2:03d27b3fce6e | 202 | *@brief Set pixel to specific location on the screen. |
DimiterK | 2:03d27b3fce6e | 203 | *@param x coordinate varies from 0-128 |
DimiterK | 2:03d27b3fce6e | 204 | *@param y col varies from 0-64 |
DimiterK | 2:03d27b3fce6e | 205 | *@param color color of pixel, can be BLACK or WHITE |
DimiterK | 2:03d27b3fce6e | 206 | *@return none |
DimiterK | 2:03d27b3fce6e | 207 | * |
DimiterK | 2:03d27b3fce6e | 208 | */ |
DimiterK | 1:a368f2688222 | 209 | void SetPixel( unsigned int x, unsigned int y, unsigned int color); |
DimiterK | 1:a368f2688222 | 210 | |
DimiterK | 1:a368f2688222 | 211 | |
DimiterK | 2:03d27b3fce6e | 212 | /** |
DimiterK | 2:03d27b3fce6e | 213 | *@brief Draws a line from x1,y1 to x2,y1 |
DimiterK | 2:03d27b3fce6e | 214 | *@param Xaxis1 x coordinate of one side |
DimiterK | 2:03d27b3fce6e | 215 | *@param Xaxis2 x coordinate of one side |
DimiterK | 2:03d27b3fce6e | 216 | *@param Yaxis y coordinate both points |
DimiterK | 1:a368f2688222 | 217 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 218 | *@return none |
DimiterK | 1:a368f2688222 | 219 | * |
DimiterK | 1:a368f2688222 | 220 | */ |
DimiterK | 2:03d27b3fce6e | 221 | void HLine(unsigned int Xaxis1, unsigned int Xaxis2 ,unsigned int Yaxis,unsigned int color); |
DimiterK | 0:135b9a0a816e | 222 | |
DimiterK | 2:03d27b3fce6e | 223 | /** |
DimiterK | 2:03d27b3fce6e | 224 | *@brief Draw a horizontal line |
DimiterK | 1:a368f2688222 | 225 | *@param Xaxis1 |
DimiterK | 1:a368f2688222 | 226 | *@param Xaxis2 |
DimiterK | 2:03d27b3fce6e | 227 | *@param width |
DimiterK | 1:a368f2688222 | 228 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 229 | *@return none |
DimiterK | 1:a368f2688222 | 230 | * |
DimiterK | 1:a368f2688222 | 231 | */ |
DimiterK | 1:a368f2688222 | 232 | void HLineShort(unsigned int Xaxis, unsigned int Yaxis,unsigned int width ,unsigned int color); |
DimiterK | 1:a368f2688222 | 233 | |
DimiterK | 2:03d27b3fce6e | 234 | /** |
DimiterK | 2:03d27b3fce6e | 235 | *@brief Draws a vertical line |
DimiterK | 2:03d27b3fce6e | 236 | *@param Xaxis |
DimiterK | 2:03d27b3fce6e | 237 | *@param Yaxis1 |
DimiterK | 2:03d27b3fce6e | 238 | *@param Yaxis2 |
DimiterK | 1:a368f2688222 | 239 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 240 | *@return none |
DimiterK | 1:a368f2688222 | 241 | * |
DimiterK | 1:a368f2688222 | 242 | */ |
DimiterK | 1:a368f2688222 | 243 | void VLine(unsigned int Xaxis, unsigned int Yaxis1 ,unsigned int Yaxis2,unsigned int color); |
DimiterK | 1:a368f2688222 | 244 | |
DimiterK | 2:03d27b3fce6e | 245 | /** |
DimiterK | 2:03d27b3fce6e | 246 | *@brief Draw a vertical line of a given width starting from X, Y |
DimiterK | 2:03d27b3fce6e | 247 | *@param Xaxis |
DimiterK | 1:a368f2688222 | 248 | *@param Yaxis |
DimiterK | 2:03d27b3fce6e | 249 | *@param height Height of line |
DimiterK | 1:a368f2688222 | 250 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 251 | *@return none |
DimiterK | 1:a368f2688222 | 252 | * |
DimiterK | 1:a368f2688222 | 253 | */ |
DimiterK | 1:a368f2688222 | 254 | void VLineShort(unsigned int Xaxis,unsigned int Yaxis, unsigned int height ,unsigned int color); |
DimiterK | 1:a368f2688222 | 255 | |
DimiterK | 1:a368f2688222 | 256 | |
DimiterK | 2:03d27b3fce6e | 257 | /** |
DimiterK | 2:03d27b3fce6e | 258 | *@brief Draws a line from x1,y1 to x2,y2. |
DimiterK | 2:03d27b3fce6e | 259 | *@param x1 x coordinate of one side |
DimiterK | 2:03d27b3fce6e | 260 | *@param y1 y coordinate of one side |
DimiterK | 2:03d27b3fce6e | 261 | *@param x2 x coordinate of other side |
DimiterK | 2:03d27b3fce6e | 262 | *@param y2 y coordinate of other side |
DimiterK | 1:a368f2688222 | 263 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 264 | *@return none |
DimiterK | 1:a368f2688222 | 265 | * |
DimiterK | 1:a368f2688222 | 266 | */ |
DimiterK | 1:a368f2688222 | 267 | void Line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2, unsigned int color); |
DimiterK | 0:135b9a0a816e | 268 | |
DimiterK | 0:135b9a0a816e | 269 | |
DimiterK | 2:03d27b3fce6e | 270 | /** |
DimiterK | 2:03d27b3fce6e | 271 | *@brief Draws a slanty line from x1,y1 to x2,y2 |
DimiterK | 1:a368f2688222 | 272 | *@param lX1 x coordinate of one side |
DimiterK | 1:a368f2688222 | 273 | *@param lY1 y coordinate of one side |
DimiterK | 1:a368f2688222 | 274 | *@param lX2 x coordinate of other side |
DimiterK | 1:a368f2688222 | 275 | *@param lY2 y coordinate of other side |
DimiterK | 1:a368f2688222 | 276 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 277 | *@return none |
DimiterK | 1:a368f2688222 | 278 | * |
DimiterK | 1:a368f2688222 | 279 | */ |
DimiterK | 1:a368f2688222 | 280 | void SlantyLine(unsigned int lX1, unsigned int lY1, unsigned int lX2,unsigned int lY2,unsigned int color); |
DimiterK | 1:a368f2688222 | 281 | |
DimiterK | 2:03d27b3fce6e | 282 | /** |
DimiterK | 2:03d27b3fce6e | 283 | *@brief Draws a line from x,y at given degree from inner_radius to outer_radius. |
DimiterK | 2:03d27b3fce6e | 284 | *@param x |
DimiterK | 2:03d27b3fce6e | 285 | *@param y |
DimiterK | 2:03d27b3fce6e | 286 | *@param inner_radius |
DimiterK | 2:03d27b3fce6e | 287 | *@param outer_radius |
DimiterK | 1:a368f2688222 | 288 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 289 | *@return none |
DimiterK | 1:a368f2688222 | 290 | * |
DimiterK | 1:a368f2688222 | 291 | */ |
DimiterK | 1:a368f2688222 | 292 | void DegreeLine(unsigned int x, int y,unsigned int degree,unsigned int inner_radius,unsigned int outer_radius, unsigned int color); |
DimiterK | 1:a368f2688222 | 293 | |
DimiterK | 2:03d27b3fce6e | 294 | /** |
DimiterK | 2:03d27b3fce6e | 295 | *@brief Draw a filled reactangle |
DimiterK | 1:a368f2688222 | 296 | * |
DimiterK | 1:a368f2688222 | 297 | *@param Xaxis1 |
DimiterK | 1:a368f2688222 | 298 | *@param Yaxis1 |
DimiterK | 1:a368f2688222 | 299 | *@param Xaxis2 |
DimiterK | 1:a368f2688222 | 300 | *@param Yaxis2 |
DimiterK | 1:a368f2688222 | 301 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 302 | *@return none |
DimiterK | 1:a368f2688222 | 303 | * |
DimiterK | 1:a368f2688222 | 304 | */ |
DimiterK | 1:a368f2688222 | 305 | void FullRectangle(unsigned int Xaxis1, unsigned int Yaxis1, unsigned int Xaxis2 ,unsigned int Yaxis2,unsigned int color); |
DimiterK | 1:a368f2688222 | 306 | |
DimiterK | 2:03d27b3fce6e | 307 | /** |
DimiterK | 2:03d27b3fce6e | 308 | *@brief Draw an empty rectangle |
DimiterK | 1:a368f2688222 | 309 | *@param Xaxis1 |
DimiterK | 1:a368f2688222 | 310 | *@param Yaxis1 |
DimiterK | 1:a368f2688222 | 311 | *@param Xaxis2 |
DimiterK | 1:a368f2688222 | 312 | *@param Yaxis2 |
DimiterK | 1:a368f2688222 | 313 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 314 | *@return none |
DimiterK | 1:a368f2688222 | 315 | * |
DimiterK | 1:a368f2688222 | 316 | */ |
DimiterK | 1:a368f2688222 | 317 | void EmptyRectangle(unsigned int Xaxis1,unsigned int Yaxis1, unsigned int Xaxis2,unsigned int Yaxis2,unsigned int color); |
DimiterK | 1:a368f2688222 | 318 | |
DimiterK | 1:a368f2688222 | 319 | |
DimiterK | 2:03d27b3fce6e | 320 | /** |
DimiterK | 2:03d27b3fce6e | 321 | *@brief Draw a rectangle with round corners |
DimiterK | 2:03d27b3fce6e | 322 | *@param Xaxis1 x-coordinate of the top left point |
DimiterK | 2:03d27b3fce6e | 323 | *@param Yaxis1 y-coordinate of the top left point |
DimiterK | 2:03d27b3fce6e | 324 | *@param width rectangle width |
DimiterK | 2:03d27b3fce6e | 325 | *@param height rectangle height |
DimiterK | 2:03d27b3fce6e | 326 | *@param radius radius of the edges |
DimiterK | 1:a368f2688222 | 327 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 328 | *@return none |
DimiterK | 1:a368f2688222 | 329 | * |
DimiterK | 1:a368f2688222 | 330 | */ |
DimiterK | 1:a368f2688222 | 331 | void RoundRectangle(unsigned int x, unsigned int y, unsigned int width, unsigned int height, unsigned int radius, unsigned int color); |
DimiterK | 1:a368f2688222 | 332 | |
DimiterK | 5:e4b50f4c13a8 | 333 | |
DimiterK | 5:e4b50f4c13a8 | 334 | /** |
DimiterK | 5:e4b50f4c13a8 | 335 | *Draws a triangle . |
DimiterK | 5:e4b50f4c13a8 | 336 | *@param |
DimiterK | 5:e4b50f4c13a8 | 337 | *@param |
DimiterK | 5:e4b50f4c13a8 | 338 | *@param |
DimiterK | 5:e4b50f4c13a8 | 339 | *@param |
DimiterK | 5:e4b50f4c13a8 | 340 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 341 | * |
DimiterK | 5:e4b50f4c13a8 | 342 | */ |
DimiterK | 5:e4b50f4c13a8 | 343 | |
DimiterK | 5:e4b50f4c13a8 | 344 | void Triangle ( int topx, int topy, int rightx, int righty); |
DimiterK | 5:e4b50f4c13a8 | 345 | |
DimiterK | 1:a368f2688222 | 346 | |
DimiterK | 5:e4b50f4c13a8 | 347 | /** |
DimiterK | 5:e4b50f4c13a8 | 348 | *Draws a right angle triangle . |
DimiterK | 5:e4b50f4c13a8 | 349 | *@param |
DimiterK | 5:e4b50f4c13a8 | 350 | *@param |
DimiterK | 5:e4b50f4c13a8 | 351 | *@param |
DimiterK | 5:e4b50f4c13a8 | 352 | *@param |
DimiterK | 5:e4b50f4c13a8 | 353 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 354 | * |
DimiterK | 5:e4b50f4c13a8 | 355 | */ |
DimiterK | 5:e4b50f4c13a8 | 356 | void RightTriangle ( int topx, int topy, int rightx, int righty); |
DimiterK | 5:e4b50f4c13a8 | 357 | |
DimiterK | 5:e4b50f4c13a8 | 358 | |
DimiterK | 5:e4b50f4c13a8 | 359 | /** |
DimiterK | 1:a368f2688222 | 360 | *Draws an empty circle centered a x,y with radius R and specific color. |
DimiterK | 2:03d27b3fce6e | 361 | *@param CenterX center x coordinate |
DimiterK | 2:03d27b3fce6e | 362 | *@param CenterY center y coordinate |
DimiterK | 2:03d27b3fce6e | 363 | *@param Radius circle radius |
DimiterK | 2:03d27b3fce6e | 364 | *@param color Color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 365 | *@return none |
DimiterK | 1:a368f2688222 | 366 | * |
DimiterK | 1:a368f2688222 | 367 | */ |
DimiterK | 1:a368f2688222 | 368 | void EmptyCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color); |
DimiterK | 1:a368f2688222 | 369 | |
DimiterK | 5:e4b50f4c13a8 | 370 | /** |
DimiterK | 1:a368f2688222 | 371 | * Circle fill Code is merely a modification of the midpoint |
DimiterK | 1:a368f2688222 | 372 | * circle algorithem which is an adaption of Bresenham's line algorithm |
DimiterK | 1:a368f2688222 | 373 | * http://en.wikipedia.org/wiki/Midpoint_circle_algorithm |
DimiterK | 1:a368f2688222 | 374 | * http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm |
DimiterK | 1:a368f2688222 | 375 | * Adapted from arduino lib |
DimiterK | 1:a368f2688222 | 376 | * |
DimiterK | 2:03d27b3fce6e | 377 | *@param CenterX center x coordinate |
DimiterK | 2:03d27b3fce6e | 378 | *@param CenterY center y coordinate |
DimiterK | 2:03d27b3fce6e | 379 | *@param Radius circle radius |
DimiterK | 2:03d27b3fce6e | 380 | *@param color Color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 381 | */ |
DimiterK | 1:a368f2688222 | 382 | void FullCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color); |
DimiterK | 1:a368f2688222 | 383 | |
DimiterK | 5:e4b50f4c13a8 | 384 | /** |
DimiterK | 1:a368f2688222 | 385 | *Draws an ellipse. |
DimiterK | 2:03d27b3fce6e | 386 | *@param CX x coordinate of one side |
DimiterK | 2:03d27b3fce6e | 387 | *@param CY y coordinate of one side |
DimiterK | 2:03d27b3fce6e | 388 | *@param XRadius x coordinate of other side |
DimiterK | 2:03d27b3fce6e | 389 | *@param YRadius y coordinate of other side |
DimiterK | 1:a368f2688222 | 390 | *@param color can be BLACK or WHITE |
DimiterK | 1:a368f2688222 | 391 | *@return none |
DimiterK | 1:a368f2688222 | 392 | * |
DimiterK | 1:a368f2688222 | 393 | * Ported the algorithm found at http://homepage.smc.edu/kennedy_john/belipse.pdf |
DimiterK | 1:a368f2688222 | 394 | * |
DimiterK | 1:a368f2688222 | 395 | */ |
DimiterK | 1:a368f2688222 | 396 | void PlotEllipse(long CX, long CY, long XRadius,long YRadius, int color); |
DimiterK | 1:a368f2688222 | 397 | void Plot4EllipsePoints(long CX,long CY, long X, long Y, int color); |
DimiterK | 1:a368f2688222 | 398 | |
DimiterK | 5:e4b50f4c13a8 | 399 | |
DimiterK | 2:03d27b3fce6e | 400 | /** |
DimiterK | 2:03d27b3fce6e | 401 | *@brief Round a double |
DimiterK | 1:a368f2688222 | 402 | *@param double |
DimiterK | 1:a368f2688222 | 403 | *@return value |
DimiterK | 1:a368f2688222 | 404 | * |
DimiterK | 1:a368f2688222 | 405 | */ |
DimiterK | 1:a368f2688222 | 406 | double dfloor( double value ); |
DimiterK | 1:a368f2688222 | 407 | |
DimiterK | 1:a368f2688222 | 408 | |
DimiterK | 5:e4b50f4c13a8 | 409 | /*****************************Bitmaps *****************************************************************/ |
DimiterK | 5:e4b50f4c13a8 | 410 | |
DimiterK | 5:e4b50f4c13a8 | 411 | /** |
DimiterK | 5:e4b50f4c13a8 | 412 | *@brief Draws an image on screen. |
DimiterK | 5:e4b50f4c13a8 | 413 | *@param PictureData 128x64 image array |
DimiterK | 5:e4b50f4c13a8 | 414 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 415 | * |
DimiterK | 5:e4b50f4c13a8 | 416 | * |
DimiterK | 5:e4b50f4c13a8 | 417 | */ |
DimiterK | 5:e4b50f4c13a8 | 418 | void FullScreenBMP (unsigned char *ImageData); |
DimiterK | 5:e4b50f4c13a8 | 419 | |
DimiterK | 5:e4b50f4c13a8 | 420 | /** |
DimiterK | 5:e4b50f4c13a8 | 421 | *@brief Draw a 1-bit bitmap |
DimiterK | 5:e4b50f4c13a8 | 422 | * |
DimiterK | 5:e4b50f4c13a8 | 423 | *@param image struct containing img size and array |
DimiterK | 5:e4b50f4c13a8 | 424 | *@param x x-coordinate |
DimiterK | 5:e4b50f4c13a8 | 425 | *@param y y-coordinate |
DimiterK | 5:e4b50f4c13a8 | 426 | *@param color can be BLACK or WHITE |
DimiterK | 5:e4b50f4c13a8 | 427 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 428 | */ |
DimiterK | 5:e4b50f4c13a8 | 429 | void DrawBitmap(const unsigned int * bitmap, unsigned int x, unsigned int y, unsigned int color); |
DimiterK | 5:e4b50f4c13a8 | 430 | |
DimiterK | 5:e4b50f4c13a8 | 431 | /** |
DimiterK | 5:e4b50f4c13a8 | 432 | *@brief Static function , mplemented to read an array |
DimiterK | 5:e4b50f4c13a8 | 433 | *@param ptr data array |
DimiterK | 5:e4b50f4c13a8 | 434 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 435 | */ |
DimiterK | 5:e4b50f4c13a8 | 436 | unsigned int ReadArrayData(const unsigned int* ptr); |
DimiterK | 5:e4b50f4c13a8 | 437 | |
DimiterK | 5:e4b50f4c13a8 | 438 | |
DimiterK | 5:e4b50f4c13a8 | 439 | /*************************************Font functions **************************************/ |
DimiterK | 5:e4b50f4c13a8 | 440 | |
DimiterK | 2:03d27b3fce6e | 441 | /** |
DimiterK | 2:03d27b3fce6e | 442 | *@brief Print a character on specified coordinates |
DimiterK | 2:03d27b3fce6e | 443 | * |
DimiterK | 2:03d27b3fce6e | 444 | *@param page row |
DimiterK | 2:03d27b3fce6e | 445 | *@param col column |
DimiterK | 2:03d27b3fce6e | 446 | *@param c integer value |
DimiterK | 2:03d27b3fce6e | 447 | *@return none |
DimiterK | 2:03d27b3fce6e | 448 | */ |
DimiterK | 5:e4b50f4c13a8 | 449 | void Putchar (int page, int col,unsigned char c); |
DimiterK | 0:135b9a0a816e | 450 | |
DimiterK | 2:03d27b3fce6e | 451 | /** |
DimiterK | 2:03d27b3fce6e | 452 | *@brief Print a string on specified coordinates |
DimiterK | 2:03d27b3fce6e | 453 | * |
DimiterK | 2:03d27b3fce6e | 454 | *@param str char array |
DimiterK | 2:03d27b3fce6e | 455 | *@param x row |
DimiterK | 2:03d27b3fce6e | 456 | *@param y column |
DimiterK | 2:03d27b3fce6e | 457 | *@return none |
DimiterK | 2:03d27b3fce6e | 458 | */ |
DimiterK | 1:a368f2688222 | 459 | void PutString(unsigned int x, unsigned int y,char* str); |
DimiterK | 1:a368f2688222 | 460 | |
DimiterK | 2:03d27b3fce6e | 461 | /** |
DimiterK | 2:03d27b3fce6e | 462 | *@brief Print a float on specified coordinates |
DimiterK | 2:03d27b3fce6e | 463 | * |
DimiterK | 2:03d27b3fce6e | 464 | *@param val float value |
DimiterK | 2:03d27b3fce6e | 465 | *@param x row |
DimiterK | 2:03d27b3fce6e | 466 | *@param y column |
DimiterK | 2:03d27b3fce6e | 467 | *@return none |
DimiterK | 2:03d27b3fce6e | 468 | */ |
DimiterK | 1:a368f2688222 | 469 | void PrintFloat(float val, unsigned int x,unsigned int y); |
DimiterK | 1:a368f2688222 | 470 | |
DimiterK | 2:03d27b3fce6e | 471 | /** |
DimiterK | 2:03d27b3fce6e | 472 | *@brief Print an integer on specified coordinates |
DimiterK | 2:03d27b3fce6e | 473 | * |
DimiterK | 2:03d27b3fce6e | 474 | *@param val integer value |
DimiterK | 2:03d27b3fce6e | 475 | *@param x row |
DimiterK | 2:03d27b3fce6e | 476 | *@param y column |
DimiterK | 2:03d27b3fce6e | 477 | *@return none |
DimiterK | 2:03d27b3fce6e | 478 | */ |
DimiterK | 1:a368f2688222 | 479 | void PrintInteger(int val,unsigned int x,unsigned int y); |
DimiterK | 1:a368f2688222 | 480 | |
DimiterK | 5:e4b50f4c13a8 | 481 | |
DimiterK | 5:e4b50f4c13a8 | 482 | /** |
DimiterK | 5:e4b50f4c13a8 | 483 | *@brief Select a specific font |
DimiterK | 5:e4b50f4c13a8 | 484 | * |
DimiterK | 5:e4b50f4c13a8 | 485 | *@param font font array |
DimiterK | 5:e4b50f4c13a8 | 486 | *@param color font color , can be BLACK or WHITE |
DimiterK | 5:e4b50f4c13a8 | 487 | *@param callback function pointer to load font |
DimiterK | 5:e4b50f4c13a8 | 488 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 489 | */ |
DimiterK | 5:e4b50f4c13a8 | 490 | void SelectFont(unsigned int* font,unsigned int color, FontCallback callback); |
DimiterK | 5:e4b50f4c13a8 | 491 | |
DimiterK | 5:e4b50f4c13a8 | 492 | |
DimiterK | 2:03d27b3fce6e | 493 | /** |
DimiterK | 5:e4b50f4c13a8 | 494 | *@brief Print a character |
DimiterK | 2:03d27b3fce6e | 495 | * |
DimiterK | 5:e4b50f4c13a8 | 496 | *@param c char |
DimiterK | 1:a368f2688222 | 497 | *@return none |
DimiterK | 1:a368f2688222 | 498 | */ |
DimiterK | 5:e4b50f4c13a8 | 499 | int PrintChar(char c); |
DimiterK | 1:a368f2688222 | 500 | |
DimiterK | 5:e4b50f4c13a8 | 501 | |
DimiterK | 5:e4b50f4c13a8 | 502 | /** |
DimiterK | 5:e4b50f4c13a8 | 503 | *@brief Print a character string |
DimiterK | 5:e4b50f4c13a8 | 504 | * |
DimiterK | 5:e4b50f4c13a8 | 505 | *@param str char string |
DimiterK | 5:e4b50f4c13a8 | 506 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 507 | */ |
DimiterK | 5:e4b50f4c13a8 | 508 | void PrintString(char* str); |
DimiterK | 5:e4b50f4c13a8 | 509 | |
DimiterK | 5:e4b50f4c13a8 | 510 | |
DimiterK | 5:e4b50f4c13a8 | 511 | /** |
DimiterK | 5:e4b50f4c13a8 | 512 | *@brief Print a number |
DimiterK | 5:e4b50f4c13a8 | 513 | * |
DimiterK | 5:e4b50f4c13a8 | 514 | *@param n number |
DimiterK | 5:e4b50f4c13a8 | 515 | *@return none |
DimiterK | 5:e4b50f4c13a8 | 516 | */ |
DimiterK | 5:e4b50f4c13a8 | 517 | void PrintNumber(long n); |
DimiterK | 5:e4b50f4c13a8 | 518 | |
DimiterK | 5:e4b50f4c13a8 | 519 | |
DimiterK | 1:a368f2688222 | 520 | private: |
DimiterK | 1:a368f2688222 | 521 | BusInOut DB; |
DimiterK | 1:a368f2688222 | 522 | DigitalOut RST; |
DimiterK | 1:a368f2688222 | 523 | DigitalOut DI; |
DimiterK | 1:a368f2688222 | 524 | DigitalOut RW; |
DimiterK | 1:a368f2688222 | 525 | DigitalOut E; |
DimiterK | 1:a368f2688222 | 526 | DigitalInOut CS2; |
DimiterK | 1:a368f2688222 | 527 | DigitalInOut CS1; |
DimiterK | 5:e4b50f4c13a8 | 528 | bool Inverted; |
DimiterK | 5:e4b50f4c13a8 | 529 | |
DimiterK | 5:e4b50f4c13a8 | 530 | LCDCoord Coord; |
DimiterK | 5:e4b50f4c13a8 | 531 | FontCallback FontRead ; |
DimiterK | 5:e4b50f4c13a8 | 532 | unsigned int FontColor; |
DimiterK | 5:e4b50f4c13a8 | 533 | unsigned int* Font; |
DimiterK | 1:a368f2688222 | 534 | unsigned int color; |
DimiterK | 5:e4b50f4c13a8 | 535 | |
DimiterK | 5:e4b50f4c13a8 | 536 | |
DimiterK | 0:135b9a0a816e | 537 | }; |
DimiterK | 1:a368f2688222 | 538 | |
DimiterK | 0:135b9a0a816e | 539 | |
DimiterK | 0:135b9a0a816e | 540 | #endif |