Test application based on the AVR examples provided by ThaiEasyElec for their ELT240320ATP breakout board -- library works rather slow on the mbed platform.
Revision 0:4395705c8647, committed 2010-03-10
- Comitter:
- robodude666
- Date:
- Wed Mar 10 21:17:41 2010 +0000
- Commit message:
Changed in this revision
diff -r 000000000000 -r 4395705c8647 ClockControl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ClockControl.cpp Wed Mar 10 21:17:41 2010 +0000 @@ -0,0 +1,37 @@ +#include "ClockControl.h" + +void setPLL0Frequency(unsigned char clkSrc, unsigned short M, unsigned char N) +{ + LPC_SC->CLKSRCSEL = clkSrc; + LPC_SC->PLL0CFG = (((unsigned int)N-1) << 16) | M-1; + LPC_SC->PLL0CON = 0x01; + LPC_SC->PLL0FEED = 0xAA; + LPC_SC->PLL0FEED = 0x55; + while (!(LPC_SC->PLL0STAT & (1<<26))); + + LPC_SC->PLL0CON = 0x03; + LPC_SC->PLL0FEED = 0xAA; + LPC_SC->PLL0FEED = 0x55; +} + +void setPLL1Frequency(unsigned char clkSrc, unsigned short M, unsigned char N) +{ + LPC_SC->CLKSRCSEL = clkSrc; + LPC_SC->PLL1CFG = (((unsigned int)N-1) << 16) | M-1; + LPC_SC->PLL1CON = 0x01; + LPC_SC->PLL1FEED = 0xAA; + LPC_SC->PLL1FEED = 0x55; + while (!(LPC_SC->PLL1STAT & (1<<26))); + + LPC_SC->PLL1CON = 0x03; + LPC_SC->PLL1FEED = 0xAA; + LPC_SC->PLL1FEED = 0x55; +} + +unsigned int setSystemFrequency(unsigned char clkDivider, unsigned char clkSrc, unsigned short M, unsigned char N) +{ + setPLL0Frequency(clkSrc, M, N); + LPC_SC->CCLKCFG = clkDivider - 1; + SystemCoreClockUpdate(); + return SystemCoreClock; +} \ No newline at end of file
diff -r 000000000000 -r 4395705c8647 ClockControl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ClockControl.h Wed Mar 10 21:17:41 2010 +0000 @@ -0,0 +1,14 @@ +/* mbed PowerControl Library + * Copyright (c) 2010 Michael Wei + */ + +//shouldn't have to include, but fixes weird problems with defines +#include "LPC1768/LPC17xx.h" + +#ifndef MBED_CLOCKCONTROL_H +#define MBED_CLOCKCONTROL_H + +unsigned int setSystemFrequency(unsigned char clkDivider, unsigned char clkSrc, unsigned short M, unsigned char N); +void setPLL0Frequency(unsigned char clkSrc, unsigned short M, unsigned char N); +void setPLL1Frequency(unsigned char clkSrc, unsigned short M, unsigned char N); +#endif \ No newline at end of file
diff -r 000000000000 -r 4395705c8647 font_courier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/font_courier.h Wed Mar 10 21:17:41 2010 +0000 @@ -0,0 +1,367 @@ +//############################################ +// bmp to header file convertor version 3.0 +// Author : www.ThaiEasyElec.com +//############################################ +// source bmp file : C:\Documents and Settings\Pe\Desktop\font_courier.bmp +// source pixel dept : 32 +// target name : C:\Documents and Settings\Pe\Desktop\font_courier.h +// target pixel dept : 1 +// target width : 128 +// target height : 176 +// ############################################ + +static unsigned char font[] = +{ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xD0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x28,0x03,0xF0,0x05,0x28, + 0x03,0xF0,0x05,0x20,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x20,0x02,0xB8, + 0x06,0xA0,0x02,0x40,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80, + 0x05,0xA0,0x02,0xD0,0x00,0xA0,0x00,0x00, + 0x00,0x00,0x00,0x60,0x01,0x90,0x02,0x50, + 0x02,0x70,0x00,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0xE0,0x06,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x06,0x18,0x01,0xE0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x80, + 0x07,0x00,0x02,0x80,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x00,0x80,0x07,0xF0, + 0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x18, + 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80, + 0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x30, + 0x00,0xC0,0x03,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0xE0,0x04,0x10, + 0x04,0x10,0x04,0x10,0x03,0xE0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x10, + 0x07,0xF0,0x00,0x10,0x00,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x30,0x04,0x50, + 0x04,0x90,0x05,0x10,0x02,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x20,0x04,0x10, + 0x04,0x90,0x04,0x90,0x03,0x60,0x00,0x00, + 0x00,0x00,0x00,0xC0,0x01,0x40,0x02,0x50, + 0x07,0xF0,0x00,0x50,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x20,0x07,0x90, + 0x04,0x90,0x04,0x90,0x04,0x60,0x00,0x00, + 0x00,0x00,0x01,0xE0,0x02,0x90,0x04,0x90, + 0x04,0x90,0x04,0x60,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00, + 0x04,0x30,0x04,0xC0,0x07,0x00,0x00,0x00, + 0x00,0x00,0x03,0x60,0x04,0x90,0x04,0x90, + 0x04,0x90,0x03,0x60,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x10,0x04,0x90,0x04,0x90, + 0x04,0xA0,0x03,0xC0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x10,0x01,0x10, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x01,0x30, + 0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80, + 0x01,0x40,0x01,0x40,0x02,0x20,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x40,0x01,0x40, + 0x01,0x40,0x01,0x40,0x01,0x40,0x00,0x00, + 0x00,0x00,0x02,0x20,0x01,0x40,0x01,0x40, + 0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x10, + 0x04,0xD0,0x03,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0xF0,0x04,0x08, + 0x04,0xC8,0x05,0x28,0x03,0xE8,0x00,0x00, + 0x00,0x10,0x00,0x30,0x05,0xD0,0x06,0x40, + 0x01,0xD0,0x00,0x30,0x00,0x10,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x04,0x90, + 0x04,0x90,0x04,0x90,0x03,0x60,0x00,0x00, + 0x00,0x00,0x03,0xE0,0x04,0x10,0x04,0x10, + 0x04,0x10,0x06,0x20,0x00,0x00,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x04,0x10, + 0x04,0x10,0x02,0x20,0x01,0xC0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x10,0x07,0xF0, + 0x04,0x90,0x05,0xD0,0x06,0x30,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x04,0x90, + 0x05,0xC0,0x06,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0xE0,0x04,0x10,0x04,0x10, + 0x04,0x50,0x06,0x60,0x00,0x40,0x00,0x00, + 0x04,0x10,0x07,0xF0,0x04,0x90,0x00,0x80, + 0x04,0x90,0x07,0xF0,0x04,0x10,0x00,0x00, + 0x00,0x00,0x04,0x10,0x04,0x10,0x07,0xF0, + 0x04,0x10,0x04,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x60,0x04,0x10,0x04,0x10, + 0x07,0xE0,0x04,0x00,0x00,0x00,0x00,0x00, + 0x04,0x10,0x07,0xF0,0x04,0x90,0x00,0x80, + 0x05,0x40,0x06,0x30,0x04,0x10,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x04,0x10, + 0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x07,0x10, + 0x00,0x80,0x07,0x10,0x07,0xF0,0x04,0x10, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x07,0x10, + 0x00,0xC0,0x04,0x30,0x07,0xF0,0x04,0x00, + 0x00,0x00,0x03,0xE0,0x04,0x10,0x04,0x10, + 0x04,0x10,0x03,0xE0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x10,0x07,0xF0, + 0x04,0x50,0x04,0x40,0x03,0x80,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0xE0,0x04,0x10, + 0x04,0x18,0x04,0x18,0x03,0xE8,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x04,0x50, + 0x04,0x40,0x03,0xA0,0x00,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x30,0x04,0x90, + 0x04,0x90,0x02,0x90,0x06,0x60,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x10, + 0x07,0xF0,0x04,0x10,0x06,0x00,0x00,0x00, + 0x00,0x00,0x04,0x00,0x07,0xE0,0x04,0x10, + 0x00,0x10,0x04,0x10,0x07,0xE0,0x04,0x00, + 0x04,0x00,0x07,0x80,0x04,0x70,0x00,0x10, + 0x04,0xE0,0x07,0x00,0x04,0x00,0x00,0x00, + 0x04,0x00,0x07,0xE0,0x04,0x10,0x01,0xE0, + 0x04,0x10,0x07,0xE0,0x04,0x00,0x00,0x00, + 0x00,0x00,0x04,0x10,0x06,0x30,0x01,0x40, + 0x00,0x80,0x01,0x40,0x06,0x30,0x04,0x10, + 0x04,0x00,0x06,0x00,0x05,0x10,0x00,0xF0, + 0x05,0x10,0x06,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x06,0x30,0x04,0x50,0x04,0x90, + 0x05,0x10,0x06,0x30,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8, + 0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x03,0x00, + 0x00,0xE0,0x00,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08, + 0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00, + 0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04, + 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, + 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, + 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xB0,0x01,0x50,0x01,0x50, + 0x01,0x50,0x00,0xF0,0x00,0x10,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x00,0x90, + 0x01,0x10,0x01,0x10,0x00,0xE0,0x00,0x00, + 0x00,0x00,0x00,0xE0,0x01,0x10,0x01,0x10, + 0x01,0x10,0x01,0x90,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xE0,0x01,0x10,0x01,0x10, + 0x04,0x90,0x07,0xF0,0x00,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x50, + 0x01,0x50,0x01,0x50,0x00,0xD0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x10,0x03,0xF0, + 0x05,0x10,0x05,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xE0,0x01,0x14,0x01,0x14, + 0x00,0x94,0x01,0xF8,0x01,0x00,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x00,0x90, + 0x01,0x00,0x01,0x10,0x00,0xF0,0x00,0x10, + 0x00,0x00,0x01,0x10,0x01,0x10,0x05,0xF0, + 0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x04,0x01,0x04,0x05,0x04, + 0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x04,0x10,0x07,0xF0,0x00,0x40, + 0x01,0x50,0x01,0xB0,0x01,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x10, + 0x07,0xF0,0x00,0x10,0x00,0x10,0x00,0x00, + 0x01,0x10,0x01,0xF0,0x01,0x10,0x00,0xF0, + 0x01,0x10,0x00,0xF0,0x00,0x10,0x00,0x00, + 0x00,0x00,0x01,0x10,0x01,0xF0,0x00,0x90, + 0x01,0x00,0x01,0x10,0x00,0xF0,0x00,0x10, + 0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x10, + 0x01,0x10,0x01,0x10,0x00,0xE0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x04,0x01,0xFC, + 0x00,0x94,0x01,0x10,0x01,0x10,0x00,0xE0, + 0x00,0x00,0x00,0xE0,0x01,0x10,0x01,0x10, + 0x00,0x94,0x01,0xFC,0x01,0x04,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x10,0x01,0xF0, + 0x00,0x90,0x01,0x10,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x90,0x01,0x50,0x01,0x50, + 0x01,0x50,0x01,0x20,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x03,0xE0,0x01,0x10, + 0x01,0x10,0x01,0x10,0x00,0x20,0x00,0x00, + 0x00,0x00,0x01,0x00,0x01,0xE0,0x00,0x10, + 0x00,0x10,0x01,0x20,0x01,0xF0,0x00,0x10, + 0x00,0x00,0x01,0x00,0x01,0xC0,0x01,0x30, + 0x00,0x10,0x01,0x60,0x01,0x80,0x01,0x00, + 0x00,0x00,0x01,0x00,0x01,0xE0,0x01,0x10, + 0x00,0x60,0x01,0x10,0x01,0xE0,0x01,0x00, + 0x00,0x00,0x00,0x00,0x01,0x10,0x01,0xB0, + 0x00,0x40,0x01,0xB0,0x01,0x10,0x00,0x00, + 0x00,0x00,0x01,0x00,0x01,0x84,0x01,0x64, + 0x00,0x1C,0x01,0x60,0x01,0x80,0x01,0x00, + 0x00,0x00,0x00,0x00,0x01,0x90,0x01,0x30, + 0x01,0x50,0x01,0x90,0x01,0x30,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xF0, + 0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08, + 0x07,0xF0,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x40,0x00,0x80,0x00,0xC0, + 0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xE0,0x01,0x10,0x01,0x10, + 0x01,0x10,0x00,0xE0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xE0,0x01,0x10,0x01,0x70, + 0x01,0x10,0x00,0xE0,0x00,0x00,0x00,0x00, + 0x07,0xF0,0x00,0x10,0x01,0xD0,0x01,0x10, + 0x00,0xD0,0x01,0x10,0x01,0xE0,0x00,0x00, + 0x00,0xE0,0x01,0x10,0x01,0x30,0x01,0x00, + 0x00,0xF0,0x01,0x00,0x00,0xF0,0x00,0x00, + 0x00,0x60,0x00,0x90,0x00,0x90,0x01,0x10, + 0x01,0x70,0x01,0x50,0x06,0x10,0x00,0x00, + 0x00,0xE0,0x00,0x90,0x07,0x10,0x06,0x10, + 0x02,0xD0,0x02,0xE0,0x04,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x03,0x60, + 0x01,0x70,0x01,0x10,0x00,0xE0,0x00,0x00, + 0x00,0xE0,0x01,0x10,0x01,0x30,0x00,0x80, + 0x01,0x10,0x05,0xF0,0x02,0x30,0x01,0xC0, + 0x00,0xE0,0x01,0x10,0x01,0x20,0x01,0x20, + 0x00,0x90,0x00,0xB0,0x00,0xB0,0x07,0x00, + 0x00,0x60,0x03,0x90,0x02,0x90,0x02,0xB0, + 0x02,0xB0,0x06,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x00,0x05,0xF0,0x05,0x00, + 0x04,0x00,0x03,0xF0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x80,0x05,0x80,0x04,0x00, + 0x07,0xF0,0x00,0x10,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x03,0x80,0x04,0xF0,0x05,0x80, + 0x02,0x00,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x03,0x80,0x04,0x70,0x04,0xC0, + 0x04,0x00,0x03,0xF0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x80,0x04,0xF0,0x05,0x80, + 0x02,0x00,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x03,0x80,0x02,0x80,0x05,0xB0,0x03,0xF0, + 0x00,0x20,0x00,0x20,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x60, + 0x06,0x30,0x07,0xF0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0xC0,0x04,0xF0, + 0x04,0x10,0x03,0xF0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x80,0x05,0xF0,0x04,0x20, + 0x04,0x20,0x03,0xF0,0x00,0x30,0x00,0x00, + 0x00,0x00,0x07,0x00,0x05,0x00,0x07,0xF0, + 0x02,0x10,0x03,0xE0,0x04,0x00,0x00,0x00, + 0x00,0x00,0x03,0x80,0x05,0x80,0x02,0x00, + 0x07,0xF0,0x02,0x10,0x05,0xF0,0x00,0x00, + 0x03,0x30,0x05,0xF0,0x05,0x00,0x04,0x30, + 0x03,0xF0,0x00,0x20,0x07,0xF0,0x00,0x00, + 0x03,0x00,0x05,0xF0,0x05,0x30,0x04,0x00, + 0x03,0xE6,0x00,0x16,0x00,0x12,0x07,0xE6, + 0x00,0x00,0x00,0x00,0x03,0x30,0x05,0xF6, + 0x05,0x0E,0x04,0x0C,0x03,0xFE,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x30,0x05,0xF6, + 0x05,0x0E,0x04,0x0A,0x03,0xFE,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x63, + 0x06,0x75,0x06,0x17,0x05,0xF7,0x00,0x00, + 0x07,0x80,0x03,0x80,0x04,0x00,0x07,0xF0, + 0x03,0x00,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x03,0xC0,0x06,0x30,0x06,0xC0,0x03,0x00, + 0x04,0x30,0x03,0xF0,0x00,0x20,0x07,0xF0, + 0x03,0x00,0x05,0xF0,0x05,0x30,0x04,0x00, + 0x03,0xF0,0x00,0x20,0x07,0xF0,0x00,0x30, + 0x00,0x00,0x03,0x80,0x06,0x70,0x05,0x40, + 0x05,0x80,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x03,0x80,0x04,0x70,0x06,0x20, + 0x03,0xC0,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x05,0xF0, + 0x05,0x30,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x06,0x00,0x07,0xF0,0x01,0x80, + 0x06,0x00,0x04,0x00,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x10, + 0x05,0xF0,0x02,0x90,0x06,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x07,0xF0, + 0x00,0x20,0x00,0x70,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x10,0x07,0xF0, + 0x00,0x10,0x00,0x10,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x07,0xF0, + 0x00,0x10,0x00,0x10,0x7F,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0xF0,0x06,0x40, + 0x00,0x80,0x00,0x40,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0xF0,0x06,0x40, + 0x00,0x80,0x00,0x40,0x3F,0xF0,0x00,0x00, + 0x00,0x00,0x06,0x00,0x07,0xF0,0x01,0xC0, + 0x07,0x00,0x00,0xC0,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x06,0x00,0x07,0xF0,0x01,0xC0, + 0x07,0x00,0x00,0xC0,0x3F,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x30,0x05,0xF0, + 0x05,0x00,0x04,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x30,0x07,0xF0, + 0x00,0x20,0x00,0x10,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0xF0,0x06,0x90, + 0x00,0x10,0x00,0x10,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, + 0x05,0x00,0x05,0x30,0x05,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xF0, + 0x05,0x30,0x05,0x00,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00, + 0x04,0x00,0x04,0x30,0x03,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x05,0xF0, + 0x05,0x80,0x05,0x00,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x10,0x07,0xF0, + 0x00,0xD0,0x00,0x50,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x04,0x00,0x05,0xF0,0x05,0x30, + 0x05,0x00,0x03,0xF0,0x06,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x07,0xF0, + 0x00,0x80,0x07,0x00,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x06,0x00,0x03,0xF0,0x00,0x60, + 0x03,0x80,0x04,0xE0,0x07,0xF0,0x04,0x00, + 0x00,0x00,0x00,0x00,0x04,0xF0,0x04,0xD0, + 0x04,0x10,0x03,0xE0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x05,0xE0,0x05,0x90, + 0x04,0x10,0x07,0xE0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x30,0x03,0x30,0x01,0x10, + 0x01,0x10,0x02,0x20,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00, + 0x04,0x00,0x03,0xF0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x30,0x00,0x50,0x00,0x50,0x00, + 0x50,0x00,0x30,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x30,0x00,0x50,0x00, + 0x50,0x00,0x50,0x00,0xF0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x07,0x00,0x01,0x00,0x07,0x00,0x00, + 0x00,0x00,0x20,0x00,0x50,0x00,0x2F,0xF0, + 0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0, + 0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x30, + 0x00,0x00,0x07,0xF0,0x00,0x30,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0, + 0x05,0x30,0x04,0x00,0x03,0xFE,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x80, + 0x03,0x80,0x04,0x00,0x07,0xF0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x06,0x80,0x07,0x80,0x01,0x00,0x06,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80, + 0x02,0x00,0x03,0x80,0x00,0x80,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x02,0x80,0x02,0x80,0x06,0x80, + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xC0,0x03,0x40,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + };
diff -r 000000000000 -r 4395705c8647 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Mar 10 21:17:41 2010 +0000 @@ -0,0 +1,935 @@ +// General Drivers +#include "mbed.h" + +#include "ClockControl.h" + +// QVGA LCD Drivers + +//////// +#include "font_courier.h" + +// LCD Control +DigitalOut lcd_rst(p13); +DigitalOut lcd_bl(p14); +DigitalOut lcd_rs(p15); +DigitalOut lcd_cs(p16); +DigitalOut lcd_rd(p17); +DigitalOut lcd_wr(p18); + +BusInOut lcd_db(p5, p6, p7, p8, p9, p10, p11, p12); + +// Touch Screen Control +/* +#define TC_CS_PORT &PORTB +#define TC_CS_PIN 4 + +#define TC_PEN_PORT &PORTB +#define TC_PEN_PINP PINB +#define TC_PEN_PIN 2 + +#define MOSI_PORT &PORTB +#define MOSI_PIN 5 + +#define SCK_PORT &PORTB +#define SCK_PIN 7 +*/ + +//touch screen LCD configuration +//#define TS_ORN_PORTRAIT + +#ifdef TS_ORN_PORTRAIT +#define TS_SIZE_X 240 +#define TS_SIZE_Y 320 +#define TS_VAL_ENTRY_MOD 0x0030 +#define TS_INS_GRAM_ADX TS_INS_GRAM_HOR_AD +#define TS_INS_GRAM_ADY TS_INS_GRAM_VER_AD +#define TS_INS_START_ADX TS_INS_HOR_START_AD +#define TS_INS_END_ADX TS_INS_HOR_END_AD +#define TS_INS_START_ADY TS_INS_VER_START_AD +#define TS_INS_END_ADY TS_INS_VER_END_AD +#else +#define TS_SIZE_X 320 +#define TS_SIZE_Y 240 +#define TS_VAL_ENTRY_MOD 0x0028 +#define TS_INS_GRAM_ADX TS_INS_GRAM_VER_AD +#define TS_INS_GRAM_ADY TS_INS_GRAM_HOR_AD +#define TS_INS_START_ADX TS_INS_VER_START_AD +#define TS_INS_END_ADX TS_INS_VER_END_AD +#define TS_INS_START_ADY TS_INS_HOR_START_AD +#define TS_INS_END_ADY TS_INS_HOR_END_AD +#endif + +//pen status type definition +typedef enum +{ + PST_NOTFOUND, + PST_DOWN, + PST_HOLD, + PST_UP +} pstatus_t; + +//#define so_pos_t short + +#ifndef so_pos_t +typedef short so_pos_t; +#endif + +////// + +#define TS_INS_START_OSC 0x00 //data read at this instruction should be 0x0789 --> use for test connection +#define TS_INS_DRIV_OUT_CTRL 0x01 +#define TS_INS_DRIV_WAV_CTRL 0x02 +#define TS_INS_ENTRY_MOD 0x03 +#define TS_INS_RESIZE_CTRL 0x04 +#define TS_INS_DISP_CTRL1 0x07 +#define TS_INS_DISP_CTRL2 0x08 +#define TS_INS_DISP_CTRL3 0x09 +#define TS_INS_DISP_CTRL4 0x0A +#define TS_INS_RGB_DISP_IF_CTRL1 0x0C +#define TS_INS_FRM_MARKER_POS 0x0D +#define TS_INS_RGB_DISP_IF_CTRL2 0x0F +#define TS_INS_POW_CTRL1 0x10 +#define TS_INS_POW_CTRL2 0x11 +#define TS_INS_POW_CTRL3 0x12 +#define TS_INS_POW_CTRL4 0x13 +#define TS_INS_GRAM_HOR_AD 0x20 +#define TS_INS_GRAM_VER_AD 0x21 +#define TS_INS_RW_GRAM 0x22 +#define TS_INS_POW_CTRL7 0x29 +#define TS_INS_FRM_RATE_COL_CTRL 0x2B +#define TS_INS_GAMMA_CTRL1 0x30 +#define TS_INS_GAMMA_CTRL2 0x31 +#define TS_INS_GAMMA_CTRL3 0x32 +#define TS_INS_GAMMA_CTRL4 0x35 +#define TS_INS_GAMMA_CTRL5 0x36 +#define TS_INS_GAMMA_CTRL6 0x37 +#define TS_INS_GAMMA_CTRL7 0x38 +#define TS_INS_GAMMA_CTRL8 0x39 +#define TS_INS_GAMMA_CTRL9 0x3C +#define TS_INS_GAMMA_CTRL10 0x3D +#define TS_INS_HOR_START_AD 0x50 +#define TS_INS_HOR_END_AD 0x51 +#define TS_INS_VER_START_AD 0x52 +#define TS_INS_VER_END_AD 0x53 +#define TS_INS_GATE_SCAN_CTRL1 0x60 +#define TS_INS_GATE_SCAN_CTRL2 0x61 +#define TS_INS_GATE_SCAN_CTRL3 0x6A +#define TS_INS_PART_IMG1_DISP_POS 0x80 +#define TS_INS_PART_IMG1_START_AD 0x81 +#define TS_INS_PART_IMG1_END_AD 0x82 +#define TS_INS_PART_IMG2_DISP_POS 0x83 +#define TS_INS_PART_IMG2_START_AD 0x84 +#define TS_INS_PART_IMG2_END_AD 0x85 +#define TS_INS_PANEL_IF_CTRL1 0x90 +#define TS_INS_PANEL_IF_CTRL2 0x92 +#define TS_INS_PANEL_IF_CTRL3 0x93 +#define TS_INS_PANEL_IF_CTRL4 0x95 +#define TS_INS_PANEL_IF_CTRL5 0x97 +#define TS_INS_PANEL_IF_CTRL6 0x98 + +#define TS_COL_RED 0x001F +#define TS_COL_GREEN 0x07E0 +#define TS_COL_BLUE 0xF800 +#define TS_COL_YELLOW 0x07FF +#define TS_COL_PURPLE 0xF81F +#define TS_COL_BLACK 0x0000 +#define TS_COL_WHITE 0xFFFF + +#define ts_pos_t int + +typedef enum +{ + TS_MODE_NORMAL, + TS_MODE_INVERSE, + TS_MODE_FULL, +} ts_mode_t; + +void TSLCDOutIns(unsigned short ins); //write instruction to LCD +void TSLCDOutDat(unsigned short dat); //write data to LCD +void TSLCDOutDat2(unsigned char dath,unsigned char datl); //write data to LCD +unsigned short TSLCDInIns(void); //read data from LCD +unsigned short TSLCDInDat(void); //read data from LCD + +void TSLCDRst(void); //pulse reset signal to LCD +void TSLCDInit(void); //initial LCD +void TSLCDShowPic2(ts_pos_t sx,ts_pos_t ex,ts_pos_t sy,ts_pos_t ey,const unsigned short *pic,ts_mode_t mode); +//show picture from code memory with specific size +void TSLCDFillRect(ts_pos_t sx,ts_pos_t ex,ts_pos_t sy,ts_pos_t ey,unsigned short color,ts_mode_t mode); //draw a rectangular +void TSLCDFillCirc(ts_pos_t cx,ts_pos_t cy,ts_pos_t rad,unsigned short color, ts_mode_t mode); //draw a circle +void TSLCDSetMargins(ts_pos_t xl,ts_pos_t xr,ts_pos_t yu,ts_pos_t yl); //set margins for FillRect,FillCirc +void TSLCDSetMarginsDefault(void); //reset margins to default value + +void TSLCDSetFontColor(unsigned short color); //set text's color +void TSLCDSetBackColor(unsigned short color); //set back color for TS_MODE_FULL +void TSLCDSetOffset(ts_pos_t x,ts_pos_t y); //set LCD offset for character display +void TSLCDPrintStr(unsigned char line,unsigned char column,char *str,ts_mode_t mode); //print string on LCD +void TSLCDPrintTxt(unsigned char line,unsigned char column,const char *txt,ts_mode_t mode); //print text from code memory +void TSLCDPrintCh(unsigned char line,unsigned char column,char c,ts_mode_t mode); //print a character on LCD + + + +#define FONT_BIT_WIDTH 8 +#define FONT_BYTE_HIGHT 2 +#define FONT_SIZE FONT_BIT_WIDTH*FONT_BYTE_HIGHT + +#define FONT_WIDTH FONT_BIT_WIDTH +#define FONT_HEIGHT FONT_BYTE_HIGHT*8 + +void TSLCDCharDisp(char charactor,ts_pos_t sx,ts_pos_t sy,ts_mode_t mode); //low level function to print a character on LCD + +unsigned char char_buf[FONT_BIT_WIDTH][FONT_BYTE_HIGHT]; + +void buf_store(unsigned char charactor); + +unsigned short font_color; +unsigned short back_color; +ts_pos_t offsetx, offsety; +ts_pos_t ts_margin_xl = 0; +ts_pos_t ts_margin_xr = TS_SIZE_X - 1; +ts_pos_t ts_margin_yu = 0; +ts_pos_t ts_margin_yl = TS_SIZE_Y - 1; + +#define TSLCDGetMarginXl() ts_margin_xl +#define TSLCDGetMarginXr() ts_margin_xr +#define TSLCDGetMarginYu() ts_margin_yu +#define TSLCDGetMarginYl() ts_margin_yl + +void TSLCDSetFontColor(unsigned short color) //set text's color +{ + font_color = color; +} + +void TSLCDSetBackColor(unsigned short color) //set back color for TS_MODE_FULL +{ + back_color = color; +} + +void TSLCDOutDat(unsigned short dat) //write data to LCD +{ + lcd_rs.write(1); + + lcd_rd.write(1); + lcd_wr.write(0); + + lcd_db.output(); + + lcd_db = dat >> 8; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_db = dat; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_wr.write(1); + + lcd_db.input(); +} + +void TSLCDOutDat2(unsigned char dath,unsigned char datl) //write data to LCD +{ + lcd_rs.write(1); + + lcd_rd.write(1); + lcd_wr.write(0); + + lcd_db.output(); + + lcd_db = dath; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_db = datl; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_wr.write(1); + + lcd_db.input(); +} + +void TSLCDOutIns(unsigned short ins) //write instruction to LCD +{ + lcd_rs.write(0); + + lcd_rd.write(1); + lcd_wr.write(0); + + lcd_db.output(); + + lcd_db = ins >> 8; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_db = ins; + + lcd_cs.write(0); + lcd_cs.write(1); + + lcd_wr.write(1); + + lcd_db.input(); +} + +unsigned short TSLCDInDat(void) //read data from LCD +{ + unsigned short dat = 0; + + lcd_db.input(); + + lcd_rs.write(1); + + lcd_wr.write(1); + lcd_rd.write(0); + + lcd_cs.write(0); + lcd_cs.write(0); + dat = lcd_db; + lcd_cs.write(1); + + dat <<= 8; + + lcd_cs.write(0); + lcd_cs.write(0); + dat |= lcd_db; + lcd_cs.write(1); + + lcd_rd.write(1); + + return (dat); +} + +unsigned short TSLCDInIns(void) //read data from LCD +{ + unsigned short ins = 0; + + lcd_db.input(); + + lcd_rs.write(0); + + lcd_wr.write(1); + lcd_rd.write(0); + + lcd_cs.write(0); + lcd_cs.write(0); + ins = lcd_db; + lcd_cs.write(1); + + ins <<= 8; + + lcd_cs.write(0); + lcd_cs.write(0); + ins |= lcd_db; + lcd_cs.write(1); + + lcd_rd.write(1); + + return (ins); +} + +void TSLCDRst(void) //pulse reset signal to LCD +{ + lcd_rst.write(0); + wait_ms(50); + lcd_rst.write(1); +} + +void TSLCDInit(void) //initial LCD +{ + wait_ms(100); + + TSLCDOutIns(0x00E5); + TSLCDOutDat(0x8000); //set the internal vcore voltage + TSLCDOutIns(TS_INS_START_OSC); + TSLCDOutDat(0x0001); //start oscillator + wait_ms(50); + + TSLCDOutIns(TS_INS_DRIV_OUT_CTRL); + TSLCDOutDat(0x0100); //set SS, SM + TSLCDOutIns(TS_INS_DRIV_WAV_CTRL); + TSLCDOutDat(0x0700); //set 1 line inversion + + TSLCDOutIns(TS_INS_ENTRY_MOD); + TSLCDOutDat(TS_VAL_ENTRY_MOD); //set GRAM write direction, BGR=0 + + TSLCDOutIns(TS_INS_RESIZE_CTRL); + TSLCDOutDat(0x0000); //no resizing + + TSLCDOutIns(TS_INS_DISP_CTRL2); + TSLCDOutDat(0x0202); //front & back porch periods = 2 + TSLCDOutIns(TS_INS_DISP_CTRL3); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_DISP_CTRL4); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_RGB_DISP_IF_CTRL1); + TSLCDOutDat(0x0000); //select system interface + TSLCDOutIns(TS_INS_FRM_MARKER_POS); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_RGB_DISP_IF_CTRL2); + TSLCDOutDat(0x0000); + + TSLCDOutIns(TS_INS_POW_CTRL1); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_POW_CTRL2); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_POW_CTRL3); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_POW_CTRL4); + TSLCDOutDat(0x0000); + wait_ms(200); + + TSLCDOutIns(TS_INS_POW_CTRL1); + TSLCDOutDat(0x17B0); + TSLCDOutIns(TS_INS_POW_CTRL2); + TSLCDOutDat(0x0137); + wait_ms(50); + + TSLCDOutIns(TS_INS_POW_CTRL3); + TSLCDOutDat(0x013C); + wait_ms(50); + + TSLCDOutIns(TS_INS_POW_CTRL4); + TSLCDOutDat(0x1400); + TSLCDOutIns(TS_INS_POW_CTRL7); + TSLCDOutDat(0x0007); + wait_ms(50); + + TSLCDOutIns(TS_INS_GRAM_HOR_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_GRAM_VER_AD); + TSLCDOutDat(0x0000); + + TSLCDOutIns(TS_INS_GAMMA_CTRL1); + TSLCDOutDat(0x0007); + TSLCDOutIns(TS_INS_GAMMA_CTRL2); + TSLCDOutDat(0x0504); + TSLCDOutIns(TS_INS_GAMMA_CTRL3); + TSLCDOutDat(0x0703); + TSLCDOutIns(TS_INS_GAMMA_CTRL4); + TSLCDOutDat(0x0002); + TSLCDOutIns(TS_INS_GAMMA_CTRL5); + TSLCDOutDat(0x0707); + TSLCDOutIns(TS_INS_GAMMA_CTRL6); + TSLCDOutDat(0x0406); + TSLCDOutIns(TS_INS_GAMMA_CTRL7); + TSLCDOutDat(0x0006); + TSLCDOutIns(TS_INS_GAMMA_CTRL8); + TSLCDOutDat(0x0404); + TSLCDOutIns(TS_INS_GAMMA_CTRL9); + TSLCDOutDat(0x0700); + TSLCDOutIns(TS_INS_GAMMA_CTRL10); + TSLCDOutDat(0x0A08); + + TSLCDOutIns(TS_INS_HOR_START_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_HOR_END_AD); + TSLCDOutDat(0x00EF); + TSLCDOutIns(TS_INS_VER_START_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_VER_END_AD); + TSLCDOutDat(0x013F); + TSLCDOutIns(TS_INS_GATE_SCAN_CTRL1); + TSLCDOutDat(0x2700); + TSLCDOutIns(TS_INS_GATE_SCAN_CTRL2); + TSLCDOutDat(0x0001); + TSLCDOutIns(TS_INS_GATE_SCAN_CTRL3); + TSLCDOutDat(0x0000); + + TSLCDOutIns(TS_INS_PART_IMG1_DISP_POS); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PART_IMG1_START_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PART_IMG1_END_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PART_IMG2_DISP_POS); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PART_IMG2_START_AD); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PART_IMG2_END_AD); + TSLCDOutDat(0x0000); + + TSLCDOutIns(TS_INS_PANEL_IF_CTRL1); + TSLCDOutDat(0x0010); + TSLCDOutIns(TS_INS_PANEL_IF_CTRL2); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PANEL_IF_CTRL3); + TSLCDOutDat(0x0003); + TSLCDOutIns(TS_INS_PANEL_IF_CTRL4); + TSLCDOutDat(0x0110); + TSLCDOutIns(TS_INS_PANEL_IF_CTRL5); + TSLCDOutDat(0x0000); + TSLCDOutIns(TS_INS_PANEL_IF_CTRL6); + TSLCDOutDat(0x0000); + + TSLCDOutIns(TS_INS_DISP_CTRL1); + TSLCDOutDat(0x0173); +} + +void TSLCDShowPic2(ts_pos_t sx,ts_pos_t ex,ts_pos_t sy,ts_pos_t ey,const unsigned short *pic,ts_mode_t mode) +//show picture from code memory with specific size +{ + unsigned long k = 0; + unsigned short color; + unsigned int x,y; + unsigned int i,j; + if (sx < ts_margin_xl) + sx = ts_margin_xl; + if (ex > ts_margin_xr) + ex = ts_margin_xr; + if (sy < ts_margin_yu) + sy = ts_margin_yu; + if (ey > ts_margin_yl) + ey = ts_margin_yl; + + TSLCDOutIns(TS_INS_START_ADX); + TSLCDOutDat(sx); + TSLCDOutIns(TS_INS_END_ADX); + TSLCDOutDat(ex); + TSLCDOutIns(TS_INS_GRAM_ADX); + TSLCDOutDat(sx); + x = ex - sx + 1; + +#ifndef TS_ORN_PORTRAIT + sy = TS_SIZE_Y - 1 - sy; // mirror start y address + ey = TS_SIZE_Y - 1 - ey; // mirror end y address + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy);//fix from bug of v1_00 + y = sy - ey + 1; +#else + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy); + y = ey - sy + 1; +#endif + + TSLCDOutIns(TS_INS_RW_GRAM); + + if (mode == TS_MODE_FULL) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + TSLCDOutDat(*(&pic[k])); + k++; + } + } + else + if (mode == TS_MODE_NORMAL) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + if (*(&pic[k]) == TS_COL_WHITE) + { + color = TSLCDInDat(); // ignore invalid data + color = TSLCDInDat(); + TSLCDOutDat(color); + } + else + { + TSLCDOutDat(*(&pic[k])); + } + k++; + } + } +} + +void TSLCDFillRect(ts_pos_t sx,ts_pos_t ex,ts_pos_t sy,ts_pos_t ey,unsigned short color,ts_mode_t mode) //draw a rectangular +{ + unsigned int x,y; + unsigned int i,j; + if (sx < ts_margin_xl) + sx = ts_margin_xl; + if (ex > ts_margin_xr) + ex = ts_margin_xr; + if (sy < ts_margin_yu) + sy = ts_margin_yu; + if (ey > ts_margin_yl) + ey = ts_margin_yl; + + TSLCDOutIns(TS_INS_START_ADX); + TSLCDOutDat(sx); + TSLCDOutIns(TS_INS_END_ADX); + TSLCDOutDat(ex); + TSLCDOutIns(TS_INS_GRAM_ADX); + TSLCDOutDat(sx); + x = ex - sx + 1; + +#ifndef TS_ORN_PORTRAIT + sy = TS_SIZE_Y - 1 - sy; // mirror start y address + ey = TS_SIZE_Y - 1 - ey; // mirror end y address + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy);//fix from bug of v1_00 + y = sy - ey + 1; +#else + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy); + y = ey - sy + 1; +#endif + + TSLCDOutIns(TS_INS_RW_GRAM); + + if ((mode == TS_MODE_NORMAL) || (mode == TS_MODE_FULL)) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + TSLCDOutDat(color); + } + } + else + if (mode == TS_MODE_INVERSE) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + color = TSLCDInDat(); // ignore invalid data + color = TSLCDInDat(); + TSLCDOutDat(~color); + } + } +} + +void TSLCDFillCirc(ts_pos_t cx,ts_pos_t cy,ts_pos_t rad,unsigned short color, ts_mode_t mode) //draw a circle +{ +#ifndef TS_ORN_PORTRAIT + int sy_buf,ey_buf; +#endif + int sx,sy,ex,ey; + int i,j; + unsigned short color_buf; + unsigned short rad2 = rad*rad; + sx = cx - rad; + ex = cx + rad; + sy = cy - rad; + ey = cy + rad; + + if (sx < ts_margin_xl) + sx = ts_margin_xl; + if (ex > ts_margin_xr) + ex = ts_margin_xr; + if (sy < ts_margin_yu) + sy = ts_margin_yu; + if (ey > ts_margin_yl) + ey = ts_margin_yl; + + TSLCDOutIns(TS_INS_START_ADX); + TSLCDOutDat(sx); + TSLCDOutIns(TS_INS_END_ADX); + TSLCDOutDat(ex); + TSLCDOutIns(TS_INS_GRAM_ADX); + TSLCDOutDat(sx); +// x = ex - sx + 1; + +#ifndef TS_ORN_PORTRAIT + sy_buf = TS_SIZE_Y - 1 - sy; // mirror start y address + ey_buf = TS_SIZE_Y - 1 - ey; // mirror end y address + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(ey_buf); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(sy_buf); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy_buf);//fix from bug of v1_00 +// y = sy_buf - ey_buf + 1; +#else + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy); +// y = ey - sy + 1; +#endif + + TSLCDOutIns(TS_INS_RW_GRAM); + + if (mode == TS_MODE_NORMAL) + { + for (j=sy-cy; j<=ey-cy; j++) + for (i=sx-cx; i<=ex-cx; i++) + { + if ((i)*(i) + (j)*(j) < rad2) + { + TSLCDOutDat(color); + } + else + { + color_buf = TSLCDInDat(); // ignore invalid data + color_buf = TSLCDInDat(); + TSLCDOutDat(color_buf); + } + } + } + else + if (mode == TS_MODE_INVERSE) + { + for (j=sy-cy; j<=ey-cy; j++) + for (i=sx-cx; i<=ex-cx; i++) + { + if ((i)*(i) + (j)*(j) < rad2) + { + color_buf = TSLCDInDat(); // ignore invalid data + color_buf = TSLCDInDat(); + TSLCDOutDat(~color_buf); + } + else + { + color_buf = TSLCDInDat(); // ignore invalid data + color_buf = TSLCDInDat(); + TSLCDOutDat(color_buf); + } + } + } + else + if (mode == TS_MODE_FULL) + { + for (j=sy-cy; j<=ey-cy; j++) + for (i=sx-cx; i<=ex-cx; i++) + { + if ((i)*(i) + (j)*(j) < rad2) + { + TSLCDOutDat(color); + } + else + { + TSLCDOutDat(back_color); + } + } + } +} + +void TSLCDSetMargins(ts_pos_t xl,ts_pos_t xr,ts_pos_t yu,ts_pos_t yl) //set margins for FillRect,FillCirc +{ + ts_margin_xl = xl; + ts_margin_xr = xr; + ts_margin_yu = yu; + ts_margin_yl = yl; +} + +void TSLCDSetMarginsDefault(void) //Reset margins to default value +{ + ts_margin_xl = 0; + ts_margin_xr = TS_SIZE_X - 1; + ts_margin_yu = 0; + ts_margin_yl = TS_SIZE_Y - 1; +} + +void buf_store(unsigned char charactor) +{ + unsigned char i,j; + int char_p = charactor*FONT_SIZE; + + for (i=0; i<FONT_BIT_WIDTH; i++) + for (j=0; j<FONT_BYTE_HIGHT; j++) + { + char_buf[i][j] = *(&font[char_p]); + char_p++; + } +} + +unsigned char buf_read(unsigned char column,unsigned char row) +{ + unsigned char read_pixel; + + if (row < 8) + { + read_pixel = (char_buf[column][0] >> (7-row)) & 0x01; + } + else + { + row = row - 8; + read_pixel = (char_buf[column][1] >> (7-row)) & 0x01; + } + return (read_pixel); +} + +void TSLCDCharDisp(char charactor,ts_pos_t sx,ts_pos_t sy,ts_mode_t mode) //low level function to print a character on LCD +{ + unsigned int x,y; + unsigned char i,j; + ts_pos_t ex,ey; + unsigned short c; + + ex = sx + FONT_WIDTH - 1; + ey = sy + FONT_HEIGHT - 1; + + buf_store(charactor - 0x20); + + TSLCDOutIns(TS_INS_START_ADX); + TSLCDOutDat(sx); + TSLCDOutIns(TS_INS_END_ADX); + TSLCDOutDat(ex); + TSLCDOutIns(TS_INS_GRAM_ADX); + TSLCDOutDat(sx); + x = ex - sx + 1; + +#ifndef TS_ORN_PORTRAIT + sy = TS_SIZE_Y - 1 - sy; // mirror start y address + ey = TS_SIZE_Y - 1 - ey; // mirror end y address + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy);//fix from bug of v1_00 + y = sy - ey + 1; +#else + TSLCDOutIns(TS_INS_START_ADY); + TSLCDOutDat(sy); + TSLCDOutIns(TS_INS_END_ADY); + TSLCDOutDat(ey); + TSLCDOutIns(TS_INS_GRAM_ADY); + TSLCDOutDat(sy); + y = ey - sy + 1; +#endif + + TSLCDOutIns(TS_INS_RW_GRAM); + + if (mode == TS_MODE_NORMAL) + { + for (j=y; j>0; j--) + for (i=0; i<x; i++) + { + if (buf_read(i,j)) + { + TSLCDOutDat(font_color); + } + else + { + c = TSLCDInDat(); // ignore invalid data + c = TSLCDInDat(); + TSLCDOutDat(c); + } + } + } + else + if (mode == TS_MODE_INVERSE) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + c = TSLCDInDat(); // ignore invalid data + c = TSLCDInDat(); + if (buf_read(i,j)) + { + TSLCDOutDat(~c); + } + else + { + TSLCDOutDat(c); + } + } + } + else + if (mode == TS_MODE_FULL) + { + for (j=0; j<y; j++) + for (i=0; i<x; i++) + { + if (buf_read(i,j)) + { + TSLCDOutDat(font_color); + } + else + { + TSLCDOutDat(back_color); + } + } + } +} + +void TSLCDSetOffset(ts_pos_t x,ts_pos_t y) //set LCD offset for character display +{ + offsetx = x; + offsety = y; +} + +void TSLCDPrintStr(unsigned char line,unsigned char column,char *str,ts_mode_t mode) //print string on LCD +{ + int i = 0; + ts_pos_t posx,posy; + posx = offsetx + column*FONT_WIDTH; + posy = offsety + line*FONT_HEIGHT; + + while(str[i]) + { + TSLCDCharDisp(str[i],posx,posy,mode); + posx += FONT_WIDTH; + i++; + } +} + +void TSLCDPrintTxt(unsigned char line,unsigned char column,const char *txt,ts_mode_t mode) //print text from code memory +{ + int i = 0; + ts_pos_t posx,posy; + posx = offsetx + column*FONT_WIDTH; + posy = offsety + line*FONT_HEIGHT; + + while((&txt[i])) + { + TSLCDCharDisp(*(&txt[i]),posx,posy,mode); + posx += FONT_WIDTH; + i++; + } +} + +void TSLCDPrintCh(unsigned char line,unsigned char column,char c,ts_mode_t mode) //print a character on LCD +{ + ts_pos_t posx,posy; + posx = offsetx + column*FONT_WIDTH; + posy = offsety + line*FONT_HEIGHT; + + TSLCDCharDisp(c,posx,posy,mode); +} +///// + +int main() { + + //setSystemFrequency(3, 1, 16, 1); + + // Do QVGA Setup Stuff + TSLCDRst(); + TSLCDInit(); + + wait_ms(100); + lcd_bl.write(1); + + TSLCDFillRect(0,TS_SIZE_X-1,0,TS_SIZE_Y-1,TS_COL_BLUE,TS_MODE_NORMAL); + TSLCDFillRect(0,TS_SIZE_X-1,0,70,TS_COL_WHITE,TS_MODE_NORMAL); + TSLCDSetFontColor(TS_COL_BLUE); + TSLCDPrintStr(2,6,"Testing ELT240320TP with AVR",TS_MODE_NORMAL); + TSLCDFillRect(20,80,90,130,TS_COL_BLACK,TS_MODE_NORMAL); + TSLCDFillRect(30,90,100,140,TS_COL_YELLOW,TS_MODE_NORMAL); + TSLCDFillRect(20,80,160,200,TS_COL_BLACK,TS_MODE_NORMAL); + TSLCDFillRect(30,90,170,210,TS_COL_RED,TS_MODE_NORMAL); + TSLCDFillRect(195,205,71,TS_SIZE_Y-1,TS_COL_WHITE,TS_MODE_NORMAL); + TSLCDFillCirc(200,155,60,TS_COL_WHITE,TS_MODE_NORMAL); + TSLCDFillCirc(200,155,50,TS_COL_BLUE,TS_MODE_NORMAL); + TSLCDFillCirc(200,155,40,TS_COL_BLACK,TS_MODE_NORMAL); + TSLCDFillCirc(200,155,30,TS_COL_RED,TS_MODE_NORMAL); + + TSLCDFillRect(5, 15, 5, 15, TS_COL_GREEN,TS_MODE_NORMAL); + + while(1){} +} \ No newline at end of file
diff -r 000000000000 -r 4395705c8647 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Mar 10 21:17:41 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0