k og / HD66766
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HD66766.h Source File

HD66766.h

00001 /*
00002 16bbit 80mode
00003 
00004 reference
00005 
00006 
00007 */
00008 #ifndef MBED_HD6676_H
00009 #define MBED_HD66766_H
00010 // register names from Peter Barrett's Microtouch code
00011 #include "mbed.h"
00012 
00013 #define swap(a, b) { int16_t t = a; a = b; b = t; }
00014 
00015 class HD66766
00016 {
00017 public:
00018     HD66766(
00019     PinName rd, PinName wr, PinName rs, PinName cs, PinName rst,
00020     PinName d0, PinName d1, PinName d2, PinName d3,
00021     PinName d4, PinName d5, PinName d6, PinName d7,
00022     PinName d8, PinName d9, PinName d10, PinName d11,
00023     PinName d12, PinName d13, PinName d14, PinName d15
00024     );
00025     ~HD66766(){};
00026 
00027     size_t println(char *c); 
00028 
00029     uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
00030 
00031     // drawing primitives!
00032     void drawPixel(uint16_t x, uint16_t y, uint16_t color);
00033     void fillScreen(uint16_t color);
00034     void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
00035     void drawVerticalLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);
00036     void drawHorizontalLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);
00037     void drawTriangle(uint16_t x0, uint16_t y0,
00038               uint16_t x1, uint16_t y1,
00039               uint16_t x2, uint16_t y2, uint16_t color);
00040     void fillTriangle(int32_t x0, int32_t y0,
00041               int32_t x1, int32_t y1,
00042             int32_t x2, int32_t y2, 
00043             uint16_t color);
00044     void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
00045     void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
00046     void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
00047     void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
00048     void drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
00049     void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
00050 
00051     void setCursor(uint16_t x, uint16_t y);
00052     void setTextColor(uint16_t c);
00053     void setTextSize(uint8_t s);
00054     virtual size_t write(uint8_t);
00055 
00056     void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint8_t s = 1);
00057     void drawString(uint16_t x, uint16_t y, char *c, uint16_t color, uint8_t s = 1);
00058     
00059     // commands
00060     void reset(void);
00061     void initDisplay(void);
00062     void goHome(void);
00063     void goTo(uint16_t x, uint16_t y);
00064 
00065     // low level
00066     void writeData(uint16_t data) {
00067         _write(1, data);
00068     };
00069     void writeCommand(uint16_t data) {
00070         _write(0, data);
00071     };
00072     uint16_t readData(void);
00073     uint16_t readRegister(uint16_t addr);
00074     void writeRegister(uint16_t addr, uint16_t data);
00075 
00076     uint16_t width();
00077     uint16_t height();
00078     static const uint16_t LCDWIDTH = 128;
00079     static const uint16_t LCDHEIGHT = 176;
00080 
00081     void writeData_unsafe(uint16_t d);
00082 
00083     void setWriteDir(void);
00084     void setReadDir(void);
00085 
00086     void mirror(uint16_t d);
00087     uint16_t rb_swap(uint16_t c);
00088 private:
00089 
00090     DigitalOut _rd, _wr, _rs, _cs, _rst;
00091     BusInOut  _d;
00092     void _write(uint16_t rs, uint16_t d);
00093     uint16_t _width, _height;
00094     uint16_t _gramstart;
00095     uint16_t _rb_swap;
00096     uint16_t cursor_x, cursor_y;
00097     uint8_t textsize;
00098     uint16_t textcolor;
00099     void drawCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t color);
00100     void fillCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t delta, uint16_t color);
00101     void _delay(uint16_t t);
00102 };
00103 #endif