s_Lcd.cpp

Committer:
akira
Date:
2011-10-08
Revision:
3:f5576943e216
Parent:
2:5d8d5291b4cd
Child:
4:1f72df1a88e0

File content as of revision 3:f5576943e216:

#include "mbed.h"

Serial device(p9, p10);  // tx, rx
//Serial pc(USBTX, USBRX); // tx, rx
DigitalOut rst(p20);     //P20  --> LCD  RST  (Reset)

void lcdspeed()
    {
    device.putc(0x55);// UART Speed 115200bps
    device.putc(0x05);
    device.putc(0x8B);
    device.putc(0x00);
    device.putc(0x01);
    device.putc(0xC2);
    device.putc(0x00);
    device.putc(0x4E);
    device.putc(0xAA);
    }

void cls()
    {
    device.putc(0x55);// Clear
    device.putc(0x02);
    device.putc(0x80);
    device.putc(0x55);
    device.putc(0xD5);
    device.putc(0xAA);
    wait(0.1);
    }

void s_Lcdinit()
    {
        device.baud(9600);
        rst = 0;            //Reset
        wait(0.1);
        rst = 1;
    wait(0.1); 
    device.putc(0x55);//Back light On
    device.putc(0x03);
    device.putc(0x89);
    device.putc(0x01);
    device.putc(0x2C);
    device.putc(0xB6);
    device.putc(0xAA);
    wait(0.1); 
    device.putc(0x55);// Clear
    device.putc(0x02);
    device.putc(0x80);
    device.putc(0x55);
    device.putc(0xD5);
    device.putc(0xAA);
    wait(0.1);
    lcdspeed();
    wait(0.1);
    device.baud(115200);
    }


void color(int rgb)
    {
    int c1;
    int c2;
    int sum;
    
    c1=(rgb >> 8) & 0xff;
    c2=(rgb & 0xff);
    sum=c1+c2+0x84;
    device.putc(0x55);
    device.putc(0x03);
    device.putc(0x84);
    device.putc(c1);
    device.putc(c2);
    device.putc(sum);
    device.putc(0xAA);
    //pc.printf("color %x %x %x ",c1,c2,sum);
    }

void pixel(int x0,int y0)
    {
    unsigned char x0H;
    unsigned char x0L;
    unsigned char y0H;
    unsigned char y0L;
    unsigned char sum;

    x0H = x0 >> 8;
    x0L = x0 & 0xFF;
    y0H = y0 >> 8;
    y0L = y0 & 0xff;

    sum = x0H+x0L+y0H+y0L+0x01;
    device.putc(0x55);
    device.putc(0x05);
    device.putc(0x01);//command
    device.putc(x0H);
    device.putc(x0L);
    device.putc(y0H);
    device.putc(y0L);
    device.putc(sum);
    device.putc(0xAA);
    } 

void box(int x0,int y0,int x1,int y1,int paint)
    {
    unsigned char x0H;
    unsigned char x0L;
    unsigned char x1H;
    unsigned char x1L;
    unsigned char y0H;
    unsigned char y0L;
    unsigned char y1H;
    unsigned char y1L;
    unsigned char sum;
    unsigned char cmd;
    switch (paint)
    {
    case 1:
        cmd = 0x04;
        break;
    default:
        cmd =0x03;
        break;
    }
    x0H = x0 >> 8;
    x0L = x0 & 0xFF;
    y0H = y0 >> 8;
    y0L = y0 & 0xff;
    x1H = x1 >> 8;
    x1L = x1 & 0xFF;
    y1H = y1 >> 8;
    y1L = y1 & 0xff;
    sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+cmd;
    device.putc(0x55);//Box
    device.putc(0x09);
    device.putc(cmd);//command
    device.putc(x0H);
    device.putc(x0L);
    device.putc(y0H);
    device.putc(y0L);
    device.putc(x1H);
    device.putc(x1L);
    device.putc(y1H);
    device.putc(y1L);
    device.putc(sum);
    device.putc(0xAA);
    }

void circle(int x0,int y0,int r,int paint)
    {
    unsigned char x0H;
    unsigned char x0L;
    unsigned char y0H;
    unsigned char y0L;
    unsigned char rH;
    unsigned char rL;
    unsigned char sum;
    unsigned char cmd;
    switch (paint)
    {
    case 0:
        cmd = 0x05;
        break;
    case 1:
        cmd = 0x06;
        break;
    default:
        cmd =0x05;
        break;
    }
    x0H = x0 >> 8;
    x0L = x0 & 0xFF;
    y0H = y0 >> 8;
    y0L = y0 & 0xff;
    rH = r >> 8;
    rL = r & 0xFF;
    sum = x0H+x0L+y0H+y0L+rH+rL+cmd;
    device.putc(0x55);
    device.putc(0x07);
    device.putc(cmd);//command
    device.putc(x0H);
    device.putc(x0L);
    device.putc(y0H);
    device.putc(y0L);
    device.putc(rH);
    device.putc(rL);
    device.putc(sum);
    device.putc(0xAA);
    }

void line(int x0,int y0,int x1,int y1)
    {
    unsigned char x0H;
    unsigned char x0L;
    unsigned char x1H;
    unsigned char x1L;
    unsigned char y0H;
    unsigned char y0L;
    unsigned char y1H;
    unsigned char y1L;
    unsigned char sum;

    x0H = x0 >> 8;
    x0L = x0 & 0xFF;
    y0H = y0 >> 8;
    y0L = y0 & 0xff;
    x1H = x1 >> 8;
    x1L = x1 & 0xFF;
    y1H = y1 >> 8;
    y1L = y1 & 0xff;
    sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+02;
    device.putc(0x55);
    device.putc(0x09);
    device.putc(0x02);//command
    device.putc(x0H);
    device.putc(x0L);
    device.putc(y0H);
    device.putc(y0L);
    device.putc(x1H);
    device.putc(x1L);
    device.putc(y1H);
    device.putc(y1L);
    device.putc(sum);
    device.putc(0xAA);
    }
    
void lcdprint(char data[98],int x,int y)
    {
    unsigned char s;
    unsigned char x0H;
    unsigned char x0L;
    unsigned char y0H;
    unsigned char y0L;
    unsigned char datalen;
    x0H = x >> 8;
    x0L = x & 0xFF;
    y0H = y >> 8;
    y0L = y & 0xFF;
    datalen = strlen(data)+5;
    device.putc(0x55);
    device.putc(datalen);
    device.putc(0x0B);  // command ASCII Print
    device.putc(x0H);   //x upper 8bit
    device.putc(x0L);   //x low 8bit
    device.putc(y0H);   //y upper 8bit
    device.putc(y0L);   //y low 8bit
    for(int a=0;a<strlen(data);a++)
        {
            device.putc(data[a]);
            s = s+data[a];
//            pc.printf("%x:",data[a]);
        }
    s = s+x0H+x0L+y0H+y0L+0x0B;
    device.putc(s);//sumcheck
    device.putc(0xAA);
//    pc.printf("print %x %x %x %x %x %d   ",x0H,x0L,y0H,y0L,s,datalen);
    }