Simple demo for the Raio RA8875 Based Display with a 4-wire SPI interface.

Dependencies:   mbed RA8875

RA8875 Based Display Controller

This page shows a simple demo program for a graphics library supporting a low cost display from buydisplay.com. While the module can be configured for support via I2C, 3-Wire SPI, 4-Wire SPI, 8-bit Parallel or 16-bit Parallel, the companion library only supports the 4-Wire SPI.

You can also find this display on the Components | RA8875 page.

Library

RA8875 Library

Display Pictures

While this image is sharp, the camera/lighting washed out the colors somewhat. /media/uploads/WiredHome/ra8875display.640x380.png

With careful study of the image below, you can see a number of solder-blob jumpers. These jumpers are described quite well in the manual, and configure the many different options. The specific unit shown here is the "entry point" model, it does not have touchscreen, SD card, extra Font memory, or the key pad interface. As you see in the top left, it is wired with an 8-signal ribbon cable (but note in the schematic that it only needs 6 as the two power and two ground are internally connected together in the module).

/media/uploads/WiredHome/ra8875displaymodulerr.jpg

Also note, that some configuration changes go beyond the jumpers. I decided to switch my configuration to 4-Wire SPI and had to remove R1, R2, and R3 (which were zero-ohm that shorted the SPI input pins to +v!). I also changed some of the solder-blob jumpers, but that was easy. Had I ordered the display with the support for 4-Wire SPI, that would not have been necessary.

Schematic

The library should be able to work with any SPI port, and the Chip Select pin is a simple DigitalOut pin, chosen from the unused pins on my baseboard.

/media/uploads/WiredHome/ra8875_display_schematic.png

Sample Program

#include "mbed.h"
#include "RA8875.h"

Serial pc(USBTX, USBRX);

int main()
{
    pc.baud(460800);    // I like a snappy terminal, so crank it up!
    pc.printf("\r\nRA8875 Test - Build " __DATE__ " " __TIME__ "\r\n");

    RA8875 lcd(p5, p6, p7, p12, NC, "tft");    // MOSI, MISO, SCK, /ChipSelect, /reset, name

    lcd.puts(0,0,
        "RA8875 lcd(p5, p6, p7, p12, NC, \"tft\");\r\n\r\n"
        "lcd.circle(       400,25,  25,  BrightRed);\r\n"
        "lcd.fillcircle(   400,25,  15,  RGB(128,255,128));\r\n"
        "lcd.ellipse(      440,75,  35,20, BrightBlue);\r\n"
        "lcd.fillellipse(  440,75,  25,10, Blue);\r\n"
        "lcd.triangle(     440,100, 475,110, 450,125, Magenta);\r\n"
        "lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);\r\n"
        "lcd.rect(         400,130, 475,155,    Brown);\r\n"
        "lcd.fillrect(     405,135, 470,150,    Pink);\r\n"
        "lcd.roundrect(    410,160, 475,190, 10,8, Yellow);\r\n"
        "lcd.fillroundrect(415,165, 470,185,  5,3, Orange);\r\n"
        "lcd.line(         430,200, 460,230, RGB(0,255,0));\r\n"
        "for (i=0; i<=30; i+=5)\r\n"
        "    lcd.pixel(435+i,200+i, White);");

    lcd.circle(       400,25,  25,               BrightRed);
    lcd.fillcircle(   400,25,  15,               RGB(128,255,128));
    lcd.ellipse(      440,75,  35,20,            BrightBlue);
    lcd.fillellipse(  440,75,  25,10,            Blue);
    lcd.triangle(     440,100, 475,110, 450,125, Magenta);
    lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);
    lcd.rect(         400,130, 475,155,          Brown);
    lcd.fillrect(     405,135, 470,150,          Pink);
    lcd.roundrect(    410,160, 475,190, 10,8,    Yellow);
    lcd.fillroundrect(415,165, 470,185,  5,3,    Orange);
    lcd.line(         430,200, 460,230,          RGB(0,255,0));
    for (i=0; i<=30; i+=5) 
        lcd.pixel(435+i,200+i, White);
    while (1)
        ;
}
Committer:
WiredHome
Date:
Fri Jan 17 03:19:55 2014 +0000
Revision:
0:037b95a5cc85
Child:
2:2076d9cc6db9
Demo Program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:037b95a5cc85 1 #include "mbed.h"
WiredHome 0:037b95a5cc85 2
WiredHome 0:037b95a5cc85 3 #include "RA8875.h"
WiredHome 0:037b95a5cc85 4
WiredHome 0:037b95a5cc85 5 RA8875 lcd(p5, p6, p7, p12, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
WiredHome 0:037b95a5cc85 6
WiredHome 0:037b95a5cc85 7 Serial pc(USBTX, USBRX);
WiredHome 0:037b95a5cc85 8
WiredHome 0:037b95a5cc85 9 int main()
WiredHome 0:037b95a5cc85 10 {
WiredHome 0:037b95a5cc85 11 pc.baud(460800); // I like a snappy terminal, so crank it up!
WiredHome 0:037b95a5cc85 12 pc.printf("\r\nRA8875 Test - Build " __DATE__ " " __TIME__ "\r\n");
WiredHome 0:037b95a5cc85 13
WiredHome 0:037b95a5cc85 14 pc.printf("Turning on display\r\n");
WiredHome 0:037b95a5cc85 15 lcd.Reset();
WiredHome 0:037b95a5cc85 16 lcd.Power(true); // display power is on, but the backlight is independent
WiredHome 0:037b95a5cc85 17 lcd.background(Black);
WiredHome 0:037b95a5cc85 18 lcd.foreground(Blue);
WiredHome 0:037b95a5cc85 19 lcd.cls();
WiredHome 0:037b95a5cc85 20 lcd.Backlight(1.0);
WiredHome 0:037b95a5cc85 21
WiredHome 0:037b95a5cc85 22 lcd.puts(0,0, "Raio RA8875 Display Controller Library\r\n");
WiredHome 0:037b95a5cc85 23 lcd.puts("This library uses a 4-wire SPI interface.\r\n\r\n"
WiredHome 0:037b95a5cc85 24 "lcd.circle( 400,15, 15, BrightRed);\r\n"
WiredHome 0:037b95a5cc85 25 "lcd.fillcircle( 440,15, 15, RGB(128,255,128));\r\n"
WiredHome 0:037b95a5cc85 26 "lcd.ellipse( 400,50, 25,10, BrightBlue);\r\n"
WiredHome 0:037b95a5cc85 27 "lcd.fillellipse( 440,50, 25,10, Blue);\r\n"
WiredHome 0:037b95a5cc85 28 "lcd.triangle( 400,75, 430,90, 410,100, Magenta);\r\n"
WiredHome 0:037b95a5cc85 29 "lcd.filltriangle( 440,100, 480,120, 450,130, Cyan);\r\n"
WiredHome 0:037b95a5cc85 30 "lcd.rect( 400,150, 479,200, Brown);\r\n"
WiredHome 0:037b95a5cc85 31 "lcd.fillrect( 410,160, 470,190, Pink);\r\n"
WiredHome 0:037b95a5cc85 32 "lcd.roundrect( 405,200, 450,255, 10,16, Yellow);\r\n"
WiredHome 0:037b95a5cc85 33 "lcd.fillroundrect(420,220, 435,250, 5,8, RGB(10,30,50));");
WiredHome 0:037b95a5cc85 34
WiredHome 0:037b95a5cc85 35 lcd.circle( 400,15, 15, BrightRed);
WiredHome 0:037b95a5cc85 36 lcd.fillcircle( 440,15, 15, RGB(128,255,128));
WiredHome 0:037b95a5cc85 37 lcd.ellipse( 400,50, 25,10, BrightBlue);
WiredHome 0:037b95a5cc85 38 lcd.fillellipse( 440,50, 25,10, Blue);
WiredHome 0:037b95a5cc85 39 lcd.triangle( 400,75, 430,90, 410,100, Magenta);
WiredHome 0:037b95a5cc85 40 lcd.filltriangle( 440,100, 480,120, 450,130, Cyan);
WiredHome 0:037b95a5cc85 41 lcd.rect( 400,150, 479,200, Brown);
WiredHome 0:037b95a5cc85 42 lcd.fillrect( 410,160, 470,190, Pink);
WiredHome 0:037b95a5cc85 43 lcd.roundrect( 405,200, 450,255, 10,16, Yellow);
WiredHome 0:037b95a5cc85 44 lcd.fillroundrect(420,220, 435,250, 5,8, RGB(10,30,50));
WiredHome 0:037b95a5cc85 45 while (1)
WiredHome 0:037b95a5cc85 46 ;
WiredHome 0:037b95a5cc85 47 }