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.
Revision 0:6a73dfa821a8, committed 2016-09-24
- Comitter:
- og
- Date:
- Sat Sep 24 12:50:32 2016 +0000
- Commit message:
- first commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HD66766.lib Sat Sep 24 12:50:32 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/og/code/HD66766/#56ce29613827
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat Sep 24 12:50:32 2016 +0000
@@ -0,0 +1,317 @@
+/**
+http://suz-avr.sblo.jp/article/37364983.html
+http://elegadget.blog.fc2.com/blog-entry-5.html
+http://stm32f4.web.fc2.com/STM32F1/momiji_LCD018.html
+
+ARCH PRO: D14, D15 Open Drain port, need pull up R.
+NUCLEO: D0, D1 assigned UART port.
+
+not support rotation.
+**/
+
+#include "mbed.h"
+#include "HD66766.h"
+
+#define DEBUG 0
+
+#define BLACK 0x0000
+#define BLUE 0x001F
+#define RED 0xF800
+#define GREEN 0x07E0
+#define CYAN 0x07FF
+#define MAGENTA 0xF81F
+#define YELLOW 0xFFE0
+#define WHITE 0xFFFF
+
+
+#if defined(TARGET_ARCH_PRO)
+HD66766 lcd(A0, A1, A2, A3, A4,
+ D0, D1, D2, D3, D4, D5, D6, D7,
+ D8, D9, D10, D11, D12, D13, D14, D15);
+Serial pc(USBTX, USBRX);
+//#elif defined TARGET_NUCLEO_F103RB
+//HD66766 lcd(A0, A1, A2, A3, A4,
+// D0, D1, D2, D3, D4, D5, D6, D7,
+// D8, D9, D10, D11, D12, D13, D14, D15);
+//Serial pc(SERIAL_TX, SERIAL_RX);
+//#elif defined TARGET_NUCLEO_F446RE
+//HD66766 lcd(A0, A1, A2, A3, A4,
+// D0, D1, D2, D3, D4, D5, D6, D7,
+// D8, D9, D10, D11, D12, D13, D14, D15);
+//Serial pc(SERIAL_TX, SERIAL_RX);
+
+#endif
+void testText() {
+ lcd.fillScreen(BLACK);
+ lcd.setCursor(0, 30);
+ lcd.setTextColor(RED);
+ lcd.setTextSize(1);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(YELLOW);
+ lcd.setTextSize(2);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(GREEN);
+ lcd.setTextSize(3);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(CYAN);
+ lcd.setTextSize(3);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(MAGENTA);
+ lcd.setTextSize(2);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(WHITE);
+ lcd.setTextSize(1);
+ lcd.println("Hello World!\n");
+ wait_ms(500);
+ lcd.setTextColor(BLUE);
+ lcd.setTextSize(1);
+ lcd.println("1234.567\n");
+ wait_ms(500);
+
+ }
+
+void testfillcircles(uint8_t radius, uint16_t color) {
+ for (uint16_t x=radius; x < lcd.width(); x+=radius*2) {
+ for (uint16_t y=radius; y < lcd.height(); y+=radius*2) {
+ lcd.fillCircle(x, y, radius, color);
+ }
+ }
+}
+
+void testdrawcircles(uint8_t radius, uint16_t color) {
+ for (uint16_t x=0; x < lcd.width()+radius; x+=radius*2) {
+ for (uint16_t y=0; y < lcd.height()+radius; y+=radius*2) {
+ lcd.drawCircle(x, y, radius, color);
+ }
+ }
+}
+
+void testfillrects(uint16_t color1, uint16_t color2) {
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=lcd.width()-1; x > 6; x-=6) {
+ //Serial.println(x, DEC);
+ lcd.fillRect(lcd.width()/2 -x/2, lcd.height()/2 -x/2 , x, x, color1);
+ lcd.drawRect(lcd.width()/2 -x/2, lcd.height()/2 -x/2 , x, x, color2);
+ }
+}
+
+void testdrawrects(uint16_t color) {
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=0; x < lcd.width(); x+=6) {
+ //pc.printf("%d\r\n", x);
+ lcd.drawRect(lcd.width()/2 -x/2, lcd.height()/2 -x/2 , x, x, color);
+ }
+}
+
+void testFillRoundRect() {
+ lcd.fillScreen(RED);
+
+ for (uint16_t x=lcd.width(); x > 20 ; x-=6) {
+ lcd.fillRoundRect(lcd.width()/2 -x/2, lcd.height()/2 -x/2 , x, x, x/8, lcd.Color565(0, x<<1, 0));
+ }
+}
+
+void testfilltriangles() {
+ lcd.fillScreen(BLACK);
+
+ for (uint16_t i=lcd.width()/2; i>10; i-=5) {
+ lcd.fillTriangle(lcd.width()/2, lcd.height()/2-i,
+ lcd.width()/2-i, lcd.height()/2+i,
+ lcd.width()/2+i, lcd.height()/2+i,
+ BLUE);
+ lcd.drawTriangle(lcd.width()/2, lcd.height()/2-i,
+ lcd.width()/2-i, lcd.height()/2+i,
+ lcd.width()/2+i, lcd.height()/2+i, GREEN);
+ }
+}
+
+void testtriangles() {
+ lcd.fillScreen(BLACK);
+ for (uint16_t i=0; i<lcd.width()/2; i+=5) {
+ lcd.drawTriangle(lcd.width()/2, lcd.height()/2-i,
+ lcd.width()/2-i, lcd.height()/2+i,
+ lcd.width()/2+i, lcd.height()/2+i, YELLOW);
+ }
+/*
+ lcd.fillScreen(BLACK);
+ for (uint16_t i=0; i<lcd.width()/2; i+=5) {
+ lcd.drawTriangle(lcd.width()/2, lcd.height()/2-i,
+ lcd.width()/2-i, lcd.height()/2+i,
+ lcd.width()/2+i, lcd.height()/2+i, lcd.Color565(0, i, 0));
+ }
+ lcd.fillScreen(BLACK);
+ for (uint16_t i=0; i<lcd.width()/2; i+=5) {
+ lcd.drawTriangle(lcd.width()/2, lcd.height()/2-i,
+ lcd.width()/2-i, lcd.height()/2+i,
+ lcd.width()/2+i, lcd.height()/2+i, lcd.Color565(i, 0, 0));
+ }
+*/
+}
+
+void testfastlines(uint16_t color1, uint16_t color2) {
+ lcd.fillScreen(BLACK);
+ for (uint16_t y=0; y < lcd.height(); y+=4) {
+ // pc.printf("%d\r\n", y);
+ lcd.drawHorizontalLine(0, y, lcd.width(), color1);
+ }
+ for (uint16_t x=0; x < lcd.width(); x+=4) {
+ // pc.printf("%d\r\n", x);
+ lcd.drawVerticalLine(x, 0, lcd.height(), color2);
+ }
+
+}
+
+void testlines(uint16_t color) {
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=0; x < lcd.width(); x+=6) {
+ lcd.drawLine(0, 0, x, lcd.height()-1, color);
+ }
+ for (uint16_t y=0; y < lcd.height(); y+=6) {
+ lcd.drawLine(0, 0, lcd.width()-1, y, color);
+ }
+
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=0; x < lcd.width(); x+=6) {
+ lcd.drawLine(lcd.width()-1, 0, x, lcd.height()-1, color);
+ }
+ for (uint16_t y=0; y < lcd.height(); y+=6) {
+ lcd.drawLine(lcd.width()-1, 0, 0, y, color);
+ }
+
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=0; x < lcd.width(); x+=6) {
+ lcd.drawLine(0, lcd.height()-1, x, 0, color);
+ }
+ for (uint16_t y=0; y < lcd.height(); y+=6) {
+ lcd.drawLine(0, lcd.height()-1, lcd.width()-1, y, color);
+ }
+
+ lcd.fillScreen(BLACK);
+ for (uint16_t x=0; x < lcd.width(); x+=6) {
+ lcd.drawLine(lcd.width()-1, lcd.height()-1, x, 0, color);
+ }
+ for (uint16_t y=0; y < lcd.height(); y+=6) {
+ lcd.drawLine(lcd.width()-1, lcd.height()-1, 0, y, color);
+ }
+}
+
+void testBars() {
+ //for (int id = 0x0000; id <= 0x0007; id++) {
+ //lcd.writeRegister(0x0005, id<<3); // Entry Mode
+ lcd.goHome();
+
+ uint16_t i,j;
+ lcd.writeCommand(0x0022);
+ for(i=0; i < lcd.height(); i++)
+ {
+ for(j=0; j < 64; j++)
+ {
+ if (i>79) lcd.writeData(BLACK);
+ //else if(i>239) lcd.writeData(YELLOW);
+ //else if(i>199) lcd.writeData(MAGENTA);
+ //else if(i>159) lcd.writeData(RED);
+ //else if(i>119) lcd.writeData(CYAN);
+ //else if(i>79) lcd.writeData(GREEN);
+ //else if(i>39) lcd.writeData(BLUE);
+ else lcd.writeData(WHITE);
+ //wait_ms(1);
+ }
+ for(j=0; j < 64; j++)
+ {
+ if (i>139) lcd.writeData(WHITE);
+ else if(i>119) lcd.writeData(BLUE);
+ else if(i>99) lcd.writeData(GREEN);
+ else if(i>79) lcd.writeData(CYAN);
+ else if(i>59) lcd.writeData(RED);
+ else if(i>39) lcd.writeData(MAGENTA);
+ else if(i>19) lcd.writeData(YELLOW);
+ else lcd.writeData(BLACK);
+ //wait_ms(1);
+ }
+ }
+ //wait(5);
+ //}
+}
+char BUF[16];
+main()
+{
+ wait(1);
+ uint16_t identifier = lcd.readRegister(0x0);
+ uint16_t c, y;
+ uint16_t mode;
+ if (identifier == 0x0766) {
+ pc.printf("Found HD66766\n");
+ } else {
+ pc.printf("Unknown driver chip %X\n",identifier);
+ while (1);
+ }
+ lcd.initDisplay();
+ mode = 0;
+ while(1){
+ //lcd.mirror(1);
+ switch(mode) {
+ case 0: {
+ testText();
+ testBars();
+ wait(1);
+ break;
+ }
+ case 1: {
+ testfastlines(CYAN, MAGENTA);
+ break;
+ }
+ case 2: {
+ testtriangles();
+ testfilltriangles();
+ break;
+ }
+ case 3: {
+ testfillcircles(50, RED);
+ lcd.fillScreen(BLACK);
+ testdrawcircles(10, YELLOW);
+ break;
+ }
+ case 4: {
+ testdrawrects(GREEN);
+ testlines(BLUE);
+ testfillrects(RED, WHITE);
+ testFillRoundRect();
+ testdrawrects(GREEN);
+ break;
+ }
+ case 5: {
+ lcd.fillScreen(BLACK);
+ lcd.setTextColor(WHITE);
+ lcd.setTextSize(1);
+ lcd.drawPixel(0,0,WHITE);
+ lcd.setCursor(5, 0);
+ for (y = 0; y < 176; y ++) {
+ if (y > 140) {
+ sprintf(BUF, "%d\n", y);
+ lcd.println(BUF);
+ }
+ if (y % 10 == 0 ) c = CYAN;
+ else c = YELLOW;
+ lcd.drawPixel(0, y, c);
+ wait_ms(100);
+ }
+ lcd.fillScreen(RED);
+ wait(1);
+ lcd.fillScreen(GREEN);
+ wait(1);
+ lcd.fillScreen(BLUE);
+ wait(1);
+ lcd.fillScreen(WHITE);
+ wait(1);
+ break;
+ }
+
+ }
+ mode++;
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Sep 24 12:50:32 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/abea610beb85 \ No newline at end of file