¡¡¡¡Nokia 3310ÊÖ»úµÄµãÕóLCDÄ£¿é²»½öСÇÉ¡¢Ê¡µç¡¢Çý¶¯ÈÝÒ×£¬¶øÇÒ¼ÛǮҲ±ãÒË£¬Òò´Ë£¬¿ÉÒÔÓõ¥Æ¬»úÀ´Çý¶¯¸ÃÄ£¿é£¬²¢Ó¦ÓÃÔÚ¸÷ÖÖ²úÆ·ÉÏ¡£
¡¡¡¡3310LCDÂòÀ´Ê±ÈçÏÂͼËùʾ£¬¿ÉÒ԰ѽðÊôÍâ¿ò¡¢¼üÅ̺ÍÌýͲ²¿·ÖÈ¥µô£º

¡¡¡¡3310LCDµÄ¹¤×÷µçѹ·¶Î§ÊÇ2.7£3.3V£¬MCUºÍLCDÖ®¼äʹÓÃSPI½Ó¿Ú´«ÊäÊý¾Ý¡£

¡¡¡¡LCDÄ£¿éµÄÒý½ÅÅÅÁУº´ÓÄ£¿éµÄ±³Ãæ¿´£¬¹Ü½ÅÅÅÁÐ˳Ðò´Ó×óÖÁÓÒ·Ö±ðΪ1ÖÁ8½Å¡£ÈçÏÂͼËùʾ£º

Ö÷Òª³ÌÐò´úÂ룺
void LcdWriteData(BYTE xData);
void LcdWriteCmd(BYTE xCmd);
void LcdClear();
void LcdSetXY(BYTE x,BYTE y);
void LcdWriteChar6X8(BYTE c);
void LcdWriteStr6X8(BYTE x,BYTE y,char *s);
void LcdDrawBmp(BYTE X,BYTE Y,const BYTE* map,BYTE nWidth,BYTE nHeight);
void main(void);
const BYTE ASC6X8[][6] =
{
¡¡¡¡ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp
¡¡¡¡ { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !
¡¡¡¡ { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "
¡¡¡¡ { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// #
¡¡¡¡ { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $
¡¡¡¡ { 0x00, 0x23, 0x13, 0x08, 0x64, 0x62 },// %
¡¡¡¡ { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// &
¡¡¡¡ { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// '
¡¡¡¡ { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// (
¡¡¡¡ { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// )
¡¡¡¡ { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *
¡¡¡¡ { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// +
¡¡¡¡ { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// ,
¡¡¡¡ { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// -
¡¡¡¡ { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// .
¡¡¡¡ { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// /
¡¡¡¡ { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },// 0
¡¡¡¡ { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1
¡¡¡¡ { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },// 2
¡¡¡¡ { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },// 3
¡¡¡¡ { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },// 4
¡¡¡¡ { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },// 5
¡¡¡¡ { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },// 6
¡¡¡¡ { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },// 7
¡¡¡¡ { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },// 8
¡¡¡¡ { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },// 9
¡¡¡¡ { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },// :
¡¡¡¡ { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },// ;
¡¡¡¡ { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// <
¡¡¡¡ { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// =
¡¡¡¡ { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// >
¡¡¡¡ { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ?
¡¡¡¡ { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @
¡¡¡¡ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A
¡¡¡¡ { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B
¡¡¡¡ { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C
¡¡¡¡ { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D
¡¡¡¡ { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E
¡¡¡¡ { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F
¡¡¡¡ { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G
¡¡¡¡ { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H
¡¡¡¡ { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I
¡¡¡¡ { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J
¡¡¡¡ { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K
¡¡¡¡ { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L
¡¡¡¡ { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M
¡¡¡¡ { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N
¡¡¡¡ { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O
¡¡¡¡ { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P
¡¡¡¡ { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q
¡¡¡¡ { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R
¡¡¡¡ { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S
¡¡¡¡ { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T
¡¡¡¡ { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U
¡¡¡¡ { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V
¡¡¡¡ { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W
¡¡¡¡ { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X
¡¡¡¡ { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y
¡¡¡¡ { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z
¡¡¡¡ { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [
¡¡¡¡ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55
¡¡¡¡ { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ]
¡¡¡¡ { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^
¡¡¡¡ { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _
¡¡¡¡ { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// '
¡¡¡¡ { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a
¡¡¡¡ { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b
¡¡¡¡ { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c
¡¡¡¡ { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d
¡¡¡¡ { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e
¡¡¡¡ { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f
¡¡¡¡ { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g
¡¡¡¡ { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h
¡¡¡¡ { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i
¡¡¡¡ { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j
¡¡¡¡ { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k
¡¡¡¡ { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l
¡¡¡¡ { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m
¡¡¡¡ { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n
¡¡¡¡ { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o
¡¡¡¡ { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p
¡¡¡¡ { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q
¡¡¡¡ { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r
¡¡¡¡ { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s
¡¡¡¡ { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t
¡¡¡¡ { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u
¡¡¡¡ { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v
¡¡¡¡ { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w
¡¡¡¡ { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x
¡¡¡¡ { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y
¡¡¡¡ { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z
¡¡¡¡ { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }// horiz lines
};
BYTE GD_BMP_L[]=
{
¡¡¡¡ // Line:0
¡¡¡¡ 0x00,0x00,0x00,0x80,0x00,0x40,0xE0,0x40,
¡¡¡¡ 0x10,0xB8,0x10,0x44,0xEE,0x44,0x11,0x3B,
¡¡¡¡ 0x11,0x04,0x0E,0x04,0x11,0x3B,0x11,0x04,
¡¡¡¡ 0x2E,0x04,0x11,0x3B,
¡¡¡¡ // Line:1
¡¡¡¡ 0xEE,0x44,0x11,0xBB,0x11,0x44,0xEE,0x44,
¡¡¡¡ 0x11,0xBB,0x11,0x44,0x6C,0x44,0x10,0x38,
¡¡¡¡ 0x10,0x44,0x6C,0x44,0x10,0xB8,0x10,0x44,
¡¡¡¡ 0xEC,0x44,0x10,0xB8,
¡¡¡¡ // Line:2
¡¡¡¡ 0x00,0x00,0x01,0x03,0x01,0x04,0x0E,0x04,
¡¡¡¡ 0x11,0x3B,0x11,0x44,0xEE,0x44,0x10,0xB8,
¡¡¡¡ 0x10,0x40,0xE0,0x40,0x10,0xBB,0x11,0x44,
¡¡¡¡ 0xEE,0x44,0x11,0xBB,
¡¡¡¡ // Line:3
¡¡¡¡ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
¡¡¡¡ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
¡¡¡¡ 0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
¡¡¡¡ 0x00,0x00,0x01,0x01,
};
BYTE GD_BMP_R[]=
{
¡¡¡¡ // Line:0
¡¡¡¡ 0xBB,0x11,0x44,0xEE,0x44,0x11,0xBB,0x11,
¡¡¡¡ 0x04,0x0E,0x04,0x11,0x3B,0x11,0x44,0xEE,
¡¡¡¡ 0x44,0x10,0xB8,0x10,0x40,0xE0,0x40,0x00,
¡¡¡¡ 0x80,0x00,0x00,0x00,
¡¡¡¡ // Line:1
¡¡¡¡ 0xBB,0x11,0x44,0xEE,0x44,0x11,0xBB,0x00,
¡¡¡¡ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
¡¡¡¡ 0x00,0x01,0x83,0x11,0x44,0xEE,0x44,0x11,
¡¡¡¡ 0xBB,0x11,0x44,0xEE,
¡¡¡¡ // Line:2
¡¡¡¡ 0xBB,0x11,0x44,0xEE,0x44,0x11,0xBB,0x10,
¡¡¡¡ 0x40,0xE0,0x40,0x10,0xB8,0x10,0x44,0xEE,
¡¡¡¡ 0x44,0x11,0x3B,0x11,0x04,0x0E,0x04,0x01,
¡¡¡¡ 0x03,0x01,0x00,0x00,
¡¡¡¡ // Line:3
¡¡¡¡ 0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,
¡¡¡¡ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,
¡¡¡¡ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
¡¡¡¡ 0x00,0x00,0x00,0x00,
};
//¡¡¡¡ÏÂÃæµÄ¸ù¾Ýʵ¼ÊµÄMCU¸ü¸Ä
//¡¡¡¡IOSET£º°ÑÏìÓ¦µÄÊý¾ÝÏßÖÃ1
//¡¡¡¡IOCLR£º°ÑÏìÓ¦µÄÊý¾ÝÏßÖÃ0
//¡¡¡¡IOGET£º¶ÁÈ¡ÏìÓ¦µÄÊý¾ÝÏß0
void LcdWriteData(BYTE xData)
{
¡¡¡¡ // INIT
¡¡¡¡ IOSET=(MLCD_CE|MLCD_DC|MLCD_RESET|MLCD_DAT|MLCD_SCLK);
¡¡¡¡// LCD_CE=0,LCD_DC=1
¡¡¡¡ IOSET=MLCD_DC;
¡¡¡¡ IOCLR=MLCD_CE;
¡¡¡¡// D7
¡¡¡¡ if(xData&0x80)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡// D6
¡¡¡¡ if(xData&0x40)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡// D5
¡¡¡¡ if(xData&0x20)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D4
¡¡¡¡ if(xData&0x10)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D3
¡¡¡¡ if(xData&0x08)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D2
¡¡¡¡ if(xData&0x04)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D1
¡¡¡¡ if(xData&0x02)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D0
¡¡¡¡ if(xData&0x01)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // LCD_CE=0;
¡¡¡¡ IOCLR=MLCD_CE;
}
void LcdWriteCmd(BYTE xCmd)
{
¡¡¡¡ // INIT
¡¡¡¡ IOSET=(MLCD_CE|MLCD_DC|MLCD_RESET|MLCD_DAT|MLCD_SCLK);
¡¡¡¡// LCD_CE=0,LCD_DC=0
¡¡¡¡ IOCLR=(MLCD_CE|MLCD_DC);
¡¡¡¡// D7
¡¡¡¡ if(xCmd&0x80)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡// D6
¡¡¡¡ if(xCmd&0x40)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡// D5
¡¡¡¡ if(xCmd&0x20)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D4
¡¡¡¡ if(xCmd&0x10)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D3
¡¡¡¡ if(xCmd&0x08)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D2
¡¡¡¡ if(xCmd&0x04)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D1
¡¡¡¡ if(xCmd&0x02)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // D0
¡¡¡¡ if(xCmd&0x01)
¡¡¡¡¡¡¡¡ IOSET=MLCD_DAT;
¡¡¡¡ else
¡¡¡¡¡¡¡¡ IOCLR=MLCD_DAT;
¡¡¡¡ // LCD_SCLK=0;
¡¡¡¡ IOCLR=MLCD_SCLK;
¡¡¡¡ // LCD_SCLK=1;
¡¡¡¡ IOSET=MLCD_SCLK;
¡¡¡¡
¡¡¡¡ // LCD_CE=0;
¡¡¡¡ IOCLR=MLCD_CE;
}
void LcdClear()
{
¡¡¡¡ int i;
¡¡¡¡ LcdWriteCmd(0x0c);
¡¡¡¡ LcdWriteCmd(0x40); // column
¡¡¡¡ LcdWriteCmd(0x80);
¡¡¡¡ for (i=0; i<504; i++)
¡¡¡¡ {
¡¡¡¡¡¡¡¡ LcdWriteData(0);
¡¡¡¡ }
}
void LcdSetXY(BYTE x,BYTE y)
{
¡¡¡¡ LcdWriteCmd(0x40 | (y&0x7));¡¡¡¡// column
¡¡¡¡ LcdWriteCmd(0x80 | (x&0x7F)); // row
}
void LcdWriteChar6X8(BYTE c)
{
¡¡¡¡ BYTE line;
¡¡¡¡ c -= 32;
¡¡¡¡ for (line=0; line<6; line++)
¡¡¡¡ {
¡¡¡¡¡¡¡¡ LcdWriteData(ASC6X8[c][line]);
¡¡¡¡ }
}
void LcdWriteStr6X8(BYTE x,BYTE y,char *s)
{
¡¡¡¡ LcdSetXY(x,y);
¡¡¡¡ while(*s)
¡¡¡¡ {
¡¡¡¡¡¡¡¡ LcdWriteChar6X8(*s);
¡¡¡¡¡¡¡¡ s++;
¡¡¡¡ }
}
void LcdDrawBmp(BYTE X,BYTE Y,const BYTE* map,BYTE nWidth,BYTE nHeight)
{
¡¡¡¡ int i,n,m;
¡¡¡¡ int row;
¡¡¡¡ BYTE data;
¡¡¡¡ if(Y&0x80)
¡¡¡¡ {
¡¡¡¡¡¡¡¡ Y&=0x7F;
¡¡¡¡¡¡¡¡ row=(nHeight+11)/8;
¡¡¡¡¡¡¡¡LcdSetXY(X,Y);
¡¡¡¡¡¡¡¡ for(i=0; i<nWidth; i++)
¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡ m=Y*84+X;
¡¡¡¡¡¡¡¡¡¡¡¡ LcdWriteData(map[i]<<4);
¡¡¡¡¡¡¡¡¡¡¡¡ X++;
¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡ Y++;
¡¡¡¡¡¡¡¡ for (n=1;n<row-1;n++)
¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡ LcdSetXY(X,Y);
¡¡¡¡¡¡¡¡¡¡¡¡ for(i=0; i<nWidth; i++)
¡¡¡¡¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ m=Y*84+X;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ LcdWriteData((map[i+(n-1)*nWidth]>>4)|(map[i+n*nWidth]<<4));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ X++;
¡¡¡¡¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡¡¡¡¡ Y++;
¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡ LcdSetXY(X,Y);
¡¡¡¡¡¡¡¡ n--;
¡¡¡¡¡¡¡¡ for(i=0; i<nWidth; i++)
¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡ LcdWriteData((map[i+n*nWidth]>>4));
¡¡¡¡¡¡¡¡¡¡¡¡ X++;
¡¡¡¡¡¡¡¡ }
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡¡¡¡¡ row=(nHeight+7)/8;
¡¡¡¡¡¡¡¡ for (n=0;n<row;n++)
¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡ LcdSetXY(X,Y);
¡¡¡¡¡¡¡¡¡¡¡¡ for(i=0; i<nWidth; i++)
¡¡¡¡¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ LcdWriteData(map[i+n*nWidth]);
¡¡¡¡¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡¡¡¡¡ Y++;
¡¡¡¡¡¡¡¡ }
¡¡¡¡ }
}
void main()
{
¡¡¡¡ LcdClear();
¡¡¡¡ LcdDrawBmp(10,0x80,GD_BMP_L,28,25);
¡¡¡¡ LcdDrawBmp(46,0x80,GD_BMP_R,28,25);
¡¡¡¡ LcdWriteStr6X8(12,4,"GDTT V1.38");
¡¡¡¡ LcdWriteStr6X8(12,5,"2006.07.30");
}
|