Test application based on the AVR examples provided by ThaiEasyElec for their ELT240320ATP breakout board -- library works rather slow on the mbed platform.

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
robodude666
Date:
Wed Mar 10 21:17:41 2010 +0000
Commit message:

Changed in this revision

ClockControl.cpp Show annotated file Show diff for this revision Revisions of this file
ClockControl.h Show annotated file Show diff for this revision Revisions of this file
font_courier.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /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
--- /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,
+    };
--- /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
--- /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