Added custom fonts. Added triangle drawing function
Dependents: sc100016x4lcd REVO_Updated_Steering Driving_game Arkanoid_v1 ... more
KS0108.h@0:135b9a0a816e, 2011-01-04 (annotated)
- Committer:
- DimiterK
- Date:
- Tue Jan 04 18:35:28 2011 +0000
- Revision:
- 0:135b9a0a816e
- Child:
- 1:a368f2688222
First release.
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 | 0:135b9a0a816e | 4 | #define VERSION 1 |
DimiterK | 0:135b9a0a816e | 5 | |
DimiterK | 0:135b9a0a816e | 6 | #include "mbed.h" |
DimiterK | 0:135b9a0a816e | 7 | #include "SystemFont5x7.h" |
DimiterK | 0:135b9a0a816e | 8 | |
DimiterK | 0:135b9a0a816e | 9 | /************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 10 | // Commands |
DimiterK | 0:135b9a0a816e | 11 | #define LCD_ON 0x3F |
DimiterK | 0:135b9a0a816e | 12 | #define LCD_OFF 0x3E |
DimiterK | 0:135b9a0a816e | 13 | #define LCD_SET_ADD 0x40 |
DimiterK | 0:135b9a0a816e | 14 | #define LCD_SET_PAGE 0xB8 |
DimiterK | 0:135b9a0a816e | 15 | #define LCD_DISP_START 0xC0 |
DimiterK | 0:135b9a0a816e | 16 | |
DimiterK | 0:135b9a0a816e | 17 | //Controller directives |
DimiterK | 0:135b9a0a816e | 18 | #define LEFT 1 |
DimiterK | 0:135b9a0a816e | 19 | #define RIGHT 2 |
DimiterK | 0:135b9a0a816e | 20 | #define BOTH 3 |
DimiterK | 0:135b9a0a816e | 21 | #define NONE 4 |
DimiterK | 0:135b9a0a816e | 22 | |
DimiterK | 0:135b9a0a816e | 23 | // Colors |
DimiterK | 0:135b9a0a816e | 24 | #define BLACK 0xFF |
DimiterK | 0:135b9a0a816e | 25 | #define WHITE 0x00 |
DimiterK | 0:135b9a0a816e | 26 | |
DimiterK | 0:135b9a0a816e | 27 | //Screen dimensions |
DimiterK | 0:135b9a0a816e | 28 | #define SCREEN_HEIGHT 64 |
DimiterK | 0:135b9a0a816e | 29 | #define SCREEN_WIDTH 128 |
DimiterK | 0:135b9a0a816e | 30 | |
DimiterK | 0:135b9a0a816e | 31 | /***********************************************************************************/ |
DimiterK | 0:135b9a0a816e | 32 | |
DimiterK | 0:135b9a0a816e | 33 | #define absDiff(x,y) ((x>y) ? (x-y) : (y-x)) |
DimiterK | 0:135b9a0a816e | 34 | #define swap(a,b) \ |
DimiterK | 0:135b9a0a816e | 35 | do\ |
DimiterK | 0:135b9a0a816e | 36 | {\ |
DimiterK | 0:135b9a0a816e | 37 | uint8_t t;\ |
DimiterK | 0:135b9a0a816e | 38 | t=a;\ |
DimiterK | 0:135b9a0a816e | 39 | a=b;\ |
DimiterK | 0:135b9a0a816e | 40 | b=t;\ |
DimiterK | 0:135b9a0a816e | 41 | } while(0) |
DimiterK | 0:135b9a0a816e | 42 | |
DimiterK | 0:135b9a0a816e | 43 | /**************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 44 | |
DimiterK | 0:135b9a0a816e | 45 | #define MAX_IMG_SIZE 128*64 |
DimiterK | 0:135b9a0a816e | 46 | |
DimiterK | 0:135b9a0a816e | 47 | typedef struct { |
DimiterK | 0:135b9a0a816e | 48 | unsigned char imgarray[MAX_IMG_SIZE]; |
DimiterK | 0:135b9a0a816e | 49 | unsigned int imgWidth; |
DimiterK | 0:135b9a0a816e | 50 | unsigned int imgHeight; |
DimiterK | 0:135b9a0a816e | 51 | }Image; |
DimiterK | 0:135b9a0a816e | 52 | |
DimiterK | 0:135b9a0a816e | 53 | /**************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 54 | |
DimiterK | 0:135b9a0a816e | 55 | // Font Indices |
DimiterK | 0:135b9a0a816e | 56 | #define FONT_LENGTH 0 |
DimiterK | 0:135b9a0a816e | 57 | #define FONT_FIXED_WIDTH 2 |
DimiterK | 0:135b9a0a816e | 58 | #define FONT_HEIGHT 3 |
DimiterK | 0:135b9a0a816e | 59 | #define FONT_FIRST_CHAR 4 |
DimiterK | 0:135b9a0a816e | 60 | #define FONT_CHAR_COUNT 5 |
DimiterK | 0:135b9a0a816e | 61 | #define FONT_WIDTH_TABLE 6 |
DimiterK | 0:135b9a0a816e | 62 | |
DimiterK | 0:135b9a0a816e | 63 | |
DimiterK | 0:135b9a0a816e | 64 | typedef struct { |
DimiterK | 0:135b9a0a816e | 65 | unsigned int x; |
DimiterK | 0:135b9a0a816e | 66 | unsigned int y; |
DimiterK | 0:135b9a0a816e | 67 | unsigned int page; |
DimiterK | 0:135b9a0a816e | 68 | } LCDCoord; |
DimiterK | 0:135b9a0a816e | 69 | |
DimiterK | 0:135b9a0a816e | 70 | |
DimiterK | 0:135b9a0a816e | 71 | /****************************************************************************************/ |
DimiterK | 0:135b9a0a816e | 72 | |
DimiterK | 0:135b9a0a816e | 73 | |
DimiterK | 0:135b9a0a816e | 74 | class KS0108 { |
DimiterK | 0:135b9a0a816e | 75 | public: |
DimiterK | 0:135b9a0a816e | 76 | // Constructor: |
DimiterK | 0:135b9a0a816e | 77 | 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 | 0:135b9a0a816e | 78 | |
DimiterK | 0:135b9a0a816e | 79 | void WriteInstruction(unsigned int Command,unsigned int side); |
DimiterK | 0:135b9a0a816e | 80 | void WriteData(unsigned int data ,unsigned char side); |
DimiterK | 0:135b9a0a816e | 81 | void WriteDataColPag(unsigned int page, unsigned int col, unsigned int data); |
DimiterK | 0:135b9a0a816e | 82 | unsigned int ReadData(); |
DimiterK | 0:135b9a0a816e | 83 | unsigned int ReadStatus(); |
DimiterK | 0:135b9a0a816e | 84 | void SelectSide(unsigned char side); |
DimiterK | 0:135b9a0a816e | 85 | void ClearScreen(); |
DimiterK | 0:135b9a0a816e | 86 | |
DimiterK | 0:135b9a0a816e | 87 | //Graphic functions |
DimiterK | 0:135b9a0a816e | 88 | void SetPixel( unsigned int x, unsigned int y, unsigned int color); |
DimiterK | 0:135b9a0a816e | 89 | |
DimiterK | 0:135b9a0a816e | 90 | void HLine(unsigned int Xaxis1, unsigned int Xaxis2 ,unsigned int Yaxis,unsigned int color); |
DimiterK | 0:135b9a0a816e | 91 | void HLineShort(unsigned int Xaxis, unsigned int Yaxis,unsigned int width ,unsigned int color); |
DimiterK | 0:135b9a0a816e | 92 | void VLine(unsigned int Xaxis, unsigned int Yaxis1 ,unsigned int Yaxis2,unsigned int color); |
DimiterK | 0:135b9a0a816e | 93 | void VLineShort(unsigned int Xaxis,unsigned int Yaxis, unsigned int height ,unsigned int color); |
DimiterK | 0:135b9a0a816e | 94 | void Line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2, unsigned int color); |
DimiterK | 0:135b9a0a816e | 95 | void SlantyLine(unsigned int lX1, unsigned int lY1, unsigned int lX2,unsigned int lY2,unsigned int color); |
DimiterK | 0:135b9a0a816e | 96 | void DegreeLine(unsigned int x, int y,unsigned int degree,unsigned int inner_radius,unsigned int outer_radius, unsigned int color); |
DimiterK | 0:135b9a0a816e | 97 | |
DimiterK | 0:135b9a0a816e | 98 | |
DimiterK | 0:135b9a0a816e | 99 | void FullRectangle(unsigned int Xaxis1, unsigned int Yaxis1, unsigned int Xaxis2 ,unsigned int Yaxis2,unsigned int color); |
DimiterK | 0:135b9a0a816e | 100 | void EmptyRectangle(unsigned int Xaxis1,unsigned int Yaxis1, unsigned int Xaxis2,unsigned int Yaxis2,unsigned int color); |
DimiterK | 0:135b9a0a816e | 101 | void RoundRectangle(unsigned int x, unsigned int y, unsigned int width, unsigned int height, unsigned int radius, unsigned int color); |
DimiterK | 0:135b9a0a816e | 102 | |
DimiterK | 0:135b9a0a816e | 103 | |
DimiterK | 0:135b9a0a816e | 104 | void EmptyCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color); |
DimiterK | 0:135b9a0a816e | 105 | void FullCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color); |
DimiterK | 0:135b9a0a816e | 106 | void PlotEllipse(long CX, long CY, long XRadius,long YRadius, int color); |
DimiterK | 0:135b9a0a816e | 107 | void Plot4EllipsePoints(long CX,long CY, long X, long Y, int color); |
DimiterK | 0:135b9a0a816e | 108 | |
DimiterK | 0:135b9a0a816e | 109 | void FullScreenBMP (unsigned char *PictureData); |
DimiterK | 0:135b9a0a816e | 110 | |
DimiterK | 0:135b9a0a816e | 111 | double dfloor( double value ); |
DimiterK | 0:135b9a0a816e | 112 | |
DimiterK | 0:135b9a0a816e | 113 | |
DimiterK | 0:135b9a0a816e | 114 | // Font Functions |
DimiterK | 0:135b9a0a816e | 115 | void Putc (int page, int col,unsigned char c); |
DimiterK | 0:135b9a0a816e | 116 | void PutString(unsigned int x, unsigned int y,char* str); |
DimiterK | 0:135b9a0a816e | 117 | void PrintFloat(float val, unsigned int x,unsigned int y); |
DimiterK | 0:135b9a0a816e | 118 | void PrintInteger(int val,unsigned int x,unsigned int y); |
DimiterK | 0:135b9a0a816e | 119 | |
DimiterK | 0:135b9a0a816e | 120 | void CursorXY( unsigned int x, unsigned int y); |
DimiterK | 0:135b9a0a816e | 121 | |
DimiterK | 0:135b9a0a816e | 122 | |
DimiterK | 0:135b9a0a816e | 123 | |
DimiterK | 0:135b9a0a816e | 124 | private: |
DimiterK | 0:135b9a0a816e | 125 | BusInOut DB; |
DimiterK | 0:135b9a0a816e | 126 | DigitalOut RST; |
DimiterK | 0:135b9a0a816e | 127 | DigitalOut DI; |
DimiterK | 0:135b9a0a816e | 128 | DigitalOut RW; |
DimiterK | 0:135b9a0a816e | 129 | DigitalOut E; |
DimiterK | 0:135b9a0a816e | 130 | DigitalInOut CS2; |
DimiterK | 0:135b9a0a816e | 131 | DigitalInOut CS1; |
DimiterK | 0:135b9a0a816e | 132 | |
DimiterK | 0:135b9a0a816e | 133 | unsigned int color; |
DimiterK | 0:135b9a0a816e | 134 | |
DimiterK | 0:135b9a0a816e | 135 | unsigned int FontColor; |
DimiterK | 0:135b9a0a816e | 136 | unsigned int* Font; |
DimiterK | 0:135b9a0a816e | 137 | LCDCoord Coord; |
DimiterK | 0:135b9a0a816e | 138 | }; |
DimiterK | 0:135b9a0a816e | 139 | |
DimiterK | 0:135b9a0a816e | 140 | |
DimiterK | 0:135b9a0a816e | 141 | #endif |