Using touch screen features of LCD screen.

Dependencies:   DmTouch_UniGraphic UniGraphic mbed

Fork of DisplayModule24_demo by John Larkin

Committer:
JLarkin
Date:
Thu Jan 14 19:32:42 2016 +0000
Revision:
8:9484e01decd9
Parent:
7:1dbfaba27e99
Child:
9:8917e707fe8e
Removed lingering references to the timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Geremia 0:2ccd65a72ab8 1 #include "stdio.h"
Geremia 0:2ccd65a72ab8 2 #include "mbed.h"
Geremia 0:2ccd65a72ab8 3 #include "string"
JLarkin 7:1dbfaba27e99 4 #include "ILI932x.h"
JLarkin 6:6b6e93790b4c 5
Geremia 0:2ccd65a72ab8 6 #include "Arial12x12.h"
Geremia 0:2ccd65a72ab8 7 #include "Arial24x23.h"
Geremia 4:818956c30cae 8 #include "pavement_48x34.h"
Geremia 0:2ccd65a72ab8 9
Geremia 0:2ccd65a72ab8 10 Serial pc(USBTX, USBRX);
Geremia 0:2ccd65a72ab8 11
JLarkin 7:1dbfaba27e99 12 /* Configure the DisplayModule ILI9325 2.4" display for 8-bit bus communication
JLarkin 6:6b6e93790b4c 13
JLarkin 6:6b6e93790b4c 14 mbed pin display pin
JLarkin 6:6b6e93790b4c 15 -------- -----------
JLarkin 7:1dbfaba27e99 16 p15 CS (L15)
JLarkin 7:1dbfaba27e99 17 p17 RST (L17)
JLarkin 7:1dbfaba27e99 18 p16 RS (L4)
JLarkin 7:1dbfaba27e99 19 p14 WR (L5)
JLarkin 7:1dbfaba27e99 20 p20 RD (L6)
JLarkin 6:6b6e93790b4c 21
JLarkin 7:1dbfaba27e99 22 p30 DB8 (L7)
JLarkin 7:1dbfaba27e99 23 p29 DB9 (L8)
JLarkin 7:1dbfaba27e99 24 p28 DB10 (L9)
JLarkin 7:1dbfaba27e99 25 p27 DB11 (L10)
JLarkin 7:1dbfaba27e99 26 p26 DB12 (L11)
JLarkin 7:1dbfaba27e99 27 p25 DB13 (L12)
JLarkin 7:1dbfaba27e99 28 p24 DB14 (L13)
JLarkin 7:1dbfaba27e99 29 p23 DB15 (L14)
JLarkin 6:6b6e93790b4c 30
JLarkin 7:1dbfaba27e99 31 p1 GND (L1)
JLarkin 7:1dbfaba27e99 32 p40 Vin (L2)
JLarkin 6:6b6e93790b4c 33 */
JLarkin 7:1dbfaba27e99 34 PinName dataBus[]= {p30, p29, p28, p27, p26, p25, p24, p23};
JLarkin 7:1dbfaba27e99 35 ILI932x myLCD(BUS_8, dataBus, p15, p17, p16, p14, p20, "myLCD", 240, 320); // Bus 8 bit, bus pin array, CS, RST, DC, WR, RD, name, xpixels, ypixels
Geremia 0:2ccd65a72ab8 36
JLarkin 6:6b6e93790b4c 37 char orient=3;
JLarkin 7:1dbfaba27e99 38 int x,y;
JLarkin 7:1dbfaba27e99 39
Geremia 0:2ccd65a72ab8 40 int main()
Geremia 0:2ccd65a72ab8 41 {
Geremia 4:818956c30cae 42 myLCD.set_orientation(orient);
JLarkin 6:6b6e93790b4c 43 myLCD.set_font((unsigned char*) Arial24x23);
JLarkin 6:6b6e93790b4c 44 myLCD.background(Blue); // set background to red
JLarkin 6:6b6e93790b4c 45 myLCD.foreground(White); // set chars to black
Geremia 4:818956c30cae 46 myLCD.cls(); // clear the screen
JLarkin 6:6b6e93790b4c 47 myLCD.locate(10,30);
JLarkin 6:6b6e93790b4c 48 myLCD.printf("UniGraphics Demo\r\n");
Geremia 1:083257298075 49 wait(2);
Geremia 0:2ccd65a72ab8 50
JLarkin 6:6b6e93790b4c 51 while(1)
JLarkin 6:6b6e93790b4c 52 {
JLarkin 6:6b6e93790b4c 53 myLCD.cls(); // clear the screen
JLarkin 6:6b6e93790b4c 54 myLCD.set_font((unsigned char*) Arial24x23);
JLarkin 6:6b6e93790b4c 55 myLCD.locate(0,30);
JLarkin 6:6b6e93790b4c 56 myLCD.printf("Orientation mode: %x\r\n", orient%4);
JLarkin 6:6b6e93790b4c 57 wait(2);
JLarkin 6:6b6e93790b4c 58 myLCD.printf("Font is\r\n");
JLarkin 6:6b6e93790b4c 59 myLCD.printf("Arial24x23\r\n");
JLarkin 6:6b6e93790b4c 60 wait(2);
JLarkin 6:6b6e93790b4c 61
JLarkin 6:6b6e93790b4c 62 myLCD.background(Black);
JLarkin 6:6b6e93790b4c 63 myLCD.foreground(White);
JLarkin 6:6b6e93790b4c 64 myLCD.cls(); // clear the screen
JLarkin 6:6b6e93790b4c 65 myLCD.set_font((unsigned char*) Arial12x12);
JLarkin 6:6b6e93790b4c 66 myLCD.locate(0,10);
JLarkin 6:6b6e93790b4c 67 myLCD.printf("Font changed to Arial12x12\r\n");
JLarkin 6:6b6e93790b4c 68 myLCD.printf("Background and foreground color also changed.\n\r\n\r");
JLarkin 6:6b6e93790b4c 69 wait(2);
JLarkin 6:6b6e93790b4c 70 myLCD.printf("Notice that if some text is too long to fit the width of the screen that it is automatically wrapped to the next line.\r\n\r\n");
JLarkin 6:6b6e93790b4c 71 wait(2);
JLarkin 6:6b6e93790b4c 72 myLCD.set_font((unsigned char*) Terminal6x8);
JLarkin 6:6b6e93790b4c 73 myLCD.printf("Font changed to Terminal6x8\r\n");
JLarkin 6:6b6e93790b4c 74 myLCD.printf("This is pretty small!\r\n");
JLarkin 6:6b6e93790b4c 75 wait(2);
JLarkin 6:6b6e93790b4c 76
JLarkin 6:6b6e93790b4c 77 myLCD.cls();
JLarkin 6:6b6e93790b4c 78 myLCD.set_font((unsigned char*) Arial24x23);
JLarkin 6:6b6e93790b4c 79 myLCD.locate(10,10);
JLarkin 6:6b6e93790b4c 80 myLCD.printf("Draw lines\n\r");
JLarkin 6:6b6e93790b4c 81 myLCD.line(0,50,myLCD.width()-1,50,Yellow);
JLarkin 6:6b6e93790b4c 82 myLCD.line(myLCD.width()-50,51,myLCD.width()-50,myLCD.height()-1,Green);
JLarkin 6:6b6e93790b4c 83 wait(2);
JLarkin 6:6b6e93790b4c 84
JLarkin 6:6b6e93790b4c 85 myLCD.cls();
JLarkin 6:6b6e93790b4c 86 myLCD.locate(10,10);
JLarkin 6:6b6e93790b4c 87 myLCD.printf("Draw rectangles");
JLarkin 6:6b6e93790b4c 88 myLCD.rect(10,50,50,80,Red);
JLarkin 6:6b6e93790b4c 89 myLCD.rect(15,55,45,75,Red);
JLarkin 6:6b6e93790b4c 90 myLCD.rect(20,60,40,70,Red);
JLarkin 6:6b6e93790b4c 91 myLCD.fillrect(160,130,200,240,Blue);
JLarkin 6:6b6e93790b4c 92 wait(2);
JLarkin 6:6b6e93790b4c 93
JLarkin 6:6b6e93790b4c 94 myLCD.cls();
JLarkin 6:6b6e93790b4c 95 myLCD.locate(10,10);
JLarkin 6:6b6e93790b4c 96 myLCD.printf("Draw circles");
JLarkin 6:6b6e93790b4c 97 myLCD.circle(150,132,30,Yellow);
JLarkin 6:6b6e93790b4c 98 myLCD.fillcircle(140,70,25,Cyan);
JLarkin 6:6b6e93790b4c 99 wait(2);
JLarkin 6:6b6e93790b4c 100
JLarkin 6:6b6e93790b4c 101 myLCD.cls();
JLarkin 6:6b6e93790b4c 102 myLCD.set_font((unsigned char*) Arial12x12);
JLarkin 6:6b6e93790b4c 103 myLCD.locate(10,10);
JLarkin 6:6b6e93790b4c 104 myLCD.printf("Draw function with pixels");
JLarkin 6:6b6e93790b4c 105 double s;
JLarkin 6:6b6e93790b4c 106 for (unsigned short i=0; i<myLCD.width(); i++)
Geremia 0:2ccd65a72ab8 107 {
Geremia 0:2ccd65a72ab8 108 s =10 * sin((long double) i / 10 );
JLarkin 6:6b6e93790b4c 109 myLCD.pixel(i,80 + (int)s ,White);
Geremia 0:2ccd65a72ab8 110 }
JLarkin 6:6b6e93790b4c 111 wait(3);
JLarkin 6:6b6e93790b4c 112
Geremia 2:2b781c215ac0 113 // scroll test, only for TFT
Geremia 4:818956c30cae 114 myLCD.cls();
Geremia 4:818956c30cae 115 myLCD.set_font((unsigned char*) Arial24x23);
Geremia 5:c69049e461b7 116 myLCD.locate(2,10);
Geremia 4:818956c30cae 117 myLCD.printf("Scrolling");
Geremia 4:818956c30cae 118 myLCD.rect(0,0,myLCD.width()-1,myLCD.height()-1,White);
Geremia 4:818956c30cae 119 myLCD.rect(1,1,myLCD.width()-2,myLCD.height()-2,Blue);
Geremia 4:818956c30cae 120 myLCD.setscrollarea(0,myLCD.sizeY());
Geremia 2:2b781c215ac0 121 wait(1);
Geremia 4:818956c30cae 122 myLCD.scroll(1); //up 1
Geremia 2:2b781c215ac0 123 wait(1);
Geremia 4:818956c30cae 124 myLCD.scroll(0); //center
Geremia 2:2b781c215ac0 125 wait(1);
Geremia 4:818956c30cae 126 myLCD.scroll(myLCD.sizeY()-1); //down 1
Geremia 2:2b781c215ac0 127 wait(1);
Geremia 4:818956c30cae 128 myLCD.scroll(myLCD.sizeY()); // same as 0, center
Geremia 2:2b781c215ac0 129 wait(1);
Geremia 4:818956c30cae 130 myLCD.scroll(myLCD.sizeY()>>1); // half screen
Geremia 2:2b781c215ac0 131 wait(1);
Geremia 4:818956c30cae 132 myLCD.scrollreset(); // center
Geremia 2:2b781c215ac0 133 wait(1);
Geremia 4:818956c30cae 134 for(unsigned short i=1; i<=myLCD.sizeY(); i++)
Geremia 2:2b781c215ac0 135 {
Geremia 4:818956c30cae 136 myLCD.scroll(i);
Geremia 2:2b781c215ac0 137 wait_ms(2);
Geremia 2:2b781c215ac0 138 }
Geremia 2:2b781c215ac0 139 wait(2);
Geremia 2:2b781c215ac0 140 // color inversion
Geremia 2:2b781c215ac0 141 for(unsigned short i=0; i<=8; i++)
Geremia 2:2b781c215ac0 142 {
Geremia 4:818956c30cae 143 myLCD.invert(i&1);
Geremia 2:2b781c215ac0 144 wait_ms(200);
Geremia 2:2b781c215ac0 145 }
Geremia 2:2b781c215ac0 146 wait(2);
Geremia 4:818956c30cae 147 // bmp 16bit test
Geremia 4:818956c30cae 148 myLCD.cls();
Geremia 4:818956c30cae 149 for(int y=0; y<myLCD.height(); y+=34)
Geremia 4:818956c30cae 150 {
Geremia 4:818956c30cae 151 for(int x=0; x<myLCD.width(); x+=48) myLCD.Bitmap(x,y,48,34,(unsigned char *)pavement_48x34);
Geremia 4:818956c30cae 152 }
Geremia 4:818956c30cae 153 wait(2);
JLarkin 6:6b6e93790b4c 154 myLCD.set_orientation((++orient)%4);
Geremia 0:2ccd65a72ab8 155 }
Geremia 0:2ccd65a72ab8 156 }