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