Added custom fonts. Added triangle drawing function

Dependents:   sc100016x4lcd REVO_Updated_Steering Driving_game Arkanoid_v1 ... more

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?

UserRevisionLine numberNew 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