mylovepzq 发表于 2011-9-21 14:33:41

求MSP430经典一些的教程。另求msp430驱动TFT显示屏的代码!

STM32我是学不会了,说实话,stm32不完全手册,还有网上的几本教程,都不是我这样的刚玩单片机的人能全部搞懂的
STM32没有好教程啊
MSP430有好点的教程吗?
另求msp430驱动tft显示屏的代码,8位16位的都可以,9325的最好了,其它的也没有关系
多谢了

sunshulin 发表于 2011-9-22 12:19:36

回复【楼主位】mylovepzq
-----------------------------------------------------------------------

TFT 9326的 16位240*400
CPU MSP430F5438A

#include "msp430x54x.h"
/*
*********************************************************************************************************
*                                       IO端口宏指令
*********************************************************************************************************
*/
#define        BLACK        0x0000
#define        BLUE        0x001F
#define        RED         0xF800
#define        GREEN         0x07E0
#define CYAN        0x07FF
#define MAGENTA 0xF81F
#define YELLOW        0xFFE0
#define WHITE        0xFFFF       


#define SET 1
#define RESET 0

#define _ADD_STR(a, b)            a##b
#define ADD_STR(a, b)               _ADD_STR(a, b)

/* PxIN */
#define _IO_PORT_IN(PORT)         (PORT##IN)
#define GPIO_READ_BITS(PORT, BIT)   ( (_IO_PORT_IN(PORT) & BIT) ? (SET):(RESET))
#define GOIO_READ_PORTS(PORT)       ( _IO_PORT_IN(PORT) )

/* PxOUT */
#define _IO_PORT_OUT(PORT)          (PORT##OUT)
#define GPIO_SET_BITS(PORT, BIT)    ( ( _IO_PORT_OUT(PORT) ) |= (BIT) )
#define GPIO_RESET_BITS(PORT, BIT)( ( _IO_PORT_OUT(PORT) ) &= ~(BIT) )

/* PxDIR */
#define _IO_PORT_DIR(PORT)          (PORT##DIR)
#define GPIO_OUTPUT_DIR(PORT, BIT)( ( _IO_PORT_DIR(PORT) ) |= (BIT) )
#define GPIO_INPUT_DIR(PORT, BIT)   ( ( _IO_PORT_DIR(PORT) ) &= ~(BIT) )

/* PxIE */
#define _IO_PORT_IE(PORT)         (PORT##IE)
#define GPIO_ENABLE_IRQ(PORT, BIT)( ( _IO_PORT_IE(PORT) ) |= (BIT) )
#define GPIO_DISABLE_IRQ(PORT, BIT) ( ( _IO_PORT_IE(PORT) ) &= ~(BIT) )

/* PxSEL */
#define _IO_PORT_SEL(PORT)          (PORT##SEL)
#define GPIO_PORT_FUNC(PORT, BIT)   ( ( _IO_PORT_SEL(PORT) ) |= (BIT) )
#define GPIO_MULTI_FUNC(PORT, BIT)( ( _IO_PORT_SEL(PORT) ) &= ~(BIT) )

/* ------------------ High layer function ----------------------------------- */
#define TEST_BIT(x)( GPIO_READ_BITS( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define SET_BIT(x)   ( GPIO_SET_BITS( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define CLR_BIT(x)   ( GPIO_RESET_BITS( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define BIT_OUT(x)   ( GPIO_OUTPUT_DIR( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define BIT_IN(x)    ( GPIO_INPUT_DIR( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define EINT_BIT(x)( GPIO_ENABLE_IRQ( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
#define DINT_BIT(x)( GPIO_DISABLE_IRQ( ADD_STR(x, _PORT), ADD_STR(x, _BIT) ) )
/* eg. */
/* #define HC165_SCLK_PORT       P1          // 使用的是P1口                  */
/* #define HC165_SCLK_BIT      BIT5      // BIT5位                        */
/* BIT_OUT( HC165_SCLK );                  // 设置P1.5位输出                */

/****************************************************************************
*                           ILI9326 LCD IO口定义
* 16位数据   Data_HP9      Data_LP8
* LCD_CS   P56 低电平有效
* LCD_RS   P57 低电平有效
* LCD_RST    P64
* LCD_WR   P72 低电平有效
* LCD_RD   P73 低电平有效
****************************************************************************/
#define LCD_DATA_H_DIR       P9DIR          // LCD 数据 高8位               
#define LCD_DATA_L_DIR       P8DIR          // LCD 数据 低8位

#define LCD_DATA_H_OUT       P9OUT          // LCD 数据 高8位               
#define LCD_DATA_L_OUT       P8OUT          // LCD 数据 低8位

#define LCD_DATA_H_IN      P9IN         // LCD 数据 高8位               
#define LCD_DATA_L_IN      P8IN         // LCD 数据 低8位

#define LCD_CS_PORT          P5             // CS
#define LCD_CS_BIT         BIT6         // BIT6位

#define LCD_RS_PORT          P5             // RS
#define LCD_RS_BIT         BIT7         // BIT7位

#define LCD_RST_PORT         P6             // RST
#define LCD_RST_BIT          BIT4         // BIT4位

#define LCD_WR_PORT          P7             // WR
#define LCD_WR_BIT         BIT2         // BIT2位

#define LCD_RD_PORT          P7             // RD
#define LCD_RD_BIT         BIT3         // BIT3位


#define LCD_BL_PORT          P11            // BL
#define LCD_BL_BIT         BIT2         // BIT2位

unsigned charzifu[]={         
/*--文字:   --*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:!--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00,

/*--文字:"--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:#--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00,

/*--文字:$--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00,

/*--文字:%--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00,

/*--文字:&--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00,

/*--文字:'--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:(--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00,

/*--文字:)--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00,

/*--文字:*--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00,

/*--文字:+--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00,

/*--文字:,--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80,

/*--文字:---*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:.--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,

/*--文字:/--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00,

/*--文字:0--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:1--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,

/*--文字:2--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00,

/*--文字:3--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00,

/*--文字:4--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00,

/*--文字:5--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00,

/*--文字:6--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:7--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00,

/*--文字:8--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:9--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00,

/*--文字::--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00,

/*--文字:;--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00,

/*--文字:<--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00,

/*--文字:=--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,

/*--文字:>--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00,

/*--文字:?--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00,

/*--文字:@--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00,

/*--文字:A--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00,

/*--文字:B--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00,

/*--文字:C--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00,

/*--文字:D--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00,

/*--文字:E--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00,

/*--文字:F--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00,

/*--文字:G--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00,

/*--文字:H--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00,

/*--文字:I--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,

/*--文字:J--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00,

/*--文字:K--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00,

/*--文字:L--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00,

/*--文字:M--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00,

/*--文字:N--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00,

/*--文字:O--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:P--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00,

/*--文字:Q--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00,

/*--文字:R--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00,

/*--文字:S--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00,

/*--文字:T--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,

/*--文字:U--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00,

/*--文字:V--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00,

/*--文字:W--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00,

/*--文字:X--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00,

/*--文字:Y--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00,

/*--文字:Z--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00,

/*--文字:[--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00,

/*--文字:\--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00,

/*--文字:]--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00,

/*--文字:^--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:_--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,

/*--文字:`--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:a--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00,

/*--文字:b--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00,

/*--文字:c--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00,

/*--文字:d--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00,

/*--文字:e--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00,

/*--文字:f--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00,

/*--文字:g--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38,

/*--文字:h--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00,

/*--文字:i--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00,

/*--文字:j--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0,

/*--文字:k--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00,

/*--文字:l--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,

/*--文字:m--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00,

/*--文字:n--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00,

/*--文字:o--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00,

/*--文字:p--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0,

/*--文字:q--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C,

/*--文字:r--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00,

/*--文字:s--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00,

/*--文字:t--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00,

/*--文字:u--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00,

/*--文字:v--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00,

/*--文字:w--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00,

/*--文字:x--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00,

/*--文字:y--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0,

/*--文字:z--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00,

/*--文字:{--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00,

/*--文字:|--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,

/*--文字:}--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00,

/*--文字:~--*/
/*--宋体9;此字体下对应的点阵为:宽x高=6x12   --*/
/*--宽度不是8的倍数,现调整为:宽度x高度=8x12--*/
0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

void LCD_IO_INT(void)
{
LCD_DATA_H_DIR = 0xFF;
LCD_DATA_H_OUT = 0xFF;

LCD_DATA_L_DIR = 0xFF;
LCD_DATA_L_OUT = 0xFF;

BIT_OUT( LCD_CS );
SET_BIT( LCD_CS );

BIT_OUT( LCD_RS );
SET_BIT( LCD_RS );

BIT_OUT( LCD_RST );
SET_BIT( LCD_RST );

BIT_OUT( LCD_WR );
SET_BIT( LCD_WR );

BIT_OUT( LCD_RD );
SET_BIT( LCD_RD );

BIT_OUT( LCD_BL );
CLR_BIT( LCD_BL );
}
/****************************************************************************
* 名    称:void ILI9326_Delay(unsigned int nCount)
* 功    能:延时
* 入口参数:nCount   延时值
* 出口参数:无
* 说    明:
* 调用方法:ILI9326_Delay(10000);
****************************************************************************/
void ILI9326_Delay(unsigned int nCount)
{
for(; nCount != 0; nCount--);
}
/****************************************************************************
* 名    称:void ILI9326_WriteIndex(unsigned int idx)
* 功    能:写 ILI9326 控制器寄存器地址
* 入口参数:idx   寄存器地址
* 出口参数:无
* 说    明:调用前需先选中控制器,内部函数
* 调用方法:ILI9326_WriteIndex(0x0000);
****************************************************************************/
void ILI9326_WriteIndex(unsigned int idx)
{
CLR_BIT( LCD_CS );//LCD 片选
SET_BIT( LCD_RD );
CLR_BIT( LCD_RS );
LCD_DATA_H_OUT = idx >> 8;
LCD_DATA_L_OUT = idx&0XFF;
CLR_BIT( LCD_WR );
SET_BIT( LCD_WR );
SET_BIT( LCD_RS );
SET_BIT( LCD_CS );//LCD 片选
}

/****************************************************************************
* 名    称:void ILI9326_WriteData(unsigned int dat)
* 功    能:写 ILI9326 寄存器数据
* 入口参数:dat   寄存器数据
* 出口参数:无
* 说    明:向控制器指定地址写入数据,调用前需先写寄存器地址,内部函数
* 调用方法:ILI9326_WriteData(0x1030)
****************************************************************************/
void ILI9326_WriteData(unsigned int dat)
{
CLR_BIT( LCD_CS );//LCD 片选
SET_BIT( LCD_RS );
SET_BIT( LCD_RD );
LCD_DATA_H_OUT = dat >> 8;
LCD_DATA_L_OUT = dat&0XFF;
CLR_BIT( LCD_WR );
SET_BIT( LCD_WR );
SET_BIT( LCD_CS );//LCD 片选
}

/****************************************************************************
* 名    称:unsigned int ILI9326_ReadData(void)
* 功    能:读取控制器数据
* 入口参数:无
* 出口参数:返回读取到的数据
* 说    明:内部函数
* 调用方法:i=ILI9326_ReadData();
****************************************************************************/
unsigned int ILI9326_ReadData(void)
{
unsigned int val=0;
CLR_BIT( LCD_CS );//LCD 片选
SET_BIT( LCD_RS );
SET_BIT( LCD_WR );
CLR_BIT( LCD_RD );
val=LCD_DATA_H_OUT;
val=val<<8;
val=val|LCD_DATA_L_OUT;
SET_BIT( LCD_RD );
SET_BIT( LCD_CS );//LCD 片选
return val;
}

/****************************************************************************
* 名    称:u16 ILI9326_ReadRegister(unsigned int index)
* 功    能:读取指定地址寄存器的值
* 入口参数:index    寄存器地址
* 出口参数:寄存器值
* 说    明:内部函数
* 调用方法:i=ILI9326_ReadRegister(0x0022);
****************************************************************************/
unsigned int ILI9326_ReadRegister(unsigned int index)
{
unsigned int tmp=0;
CLR_BIT( LCD_CS );//LCD 片选
CLR_BIT( LCD_RS );
SET_BIT( LCD_RD );
CLR_BIT( LCD_WR );
LCD_DATA_H_OUT = index >> 8;
LCD_DATA_L_OUT = index&0XFF;
SET_BIT( LCD_WR );
SET_BIT( LCD_RS );
tmp=ILI9326_ReadData();
return tmp;
}
/****************************************************************************
* 名    称:void ILI9326_BackLight(unsigned char status)
* 功    能:开、关液晶背光
* 入口参数:status   1:背光开0:背光关
* 出口参数:无
* 说    明:
* 调用方法:ILI9326_BackLight(1);
****************************************************************************/
void ILI9326_BackLight(unsigned char status)
{
if ( status)
{
    SET_BIT( LCD_BL );
}
else
{
    CLR_BIT( LCD_BL );
}
}
/****************************************************************************
* 名    称:void ILI9326_Reset()
* 功    能:复位 ILI9326 控制器
* 入口参数:无
* 出口参数:无
* 说    明:复位控制器,内部函数
* 调用方法:ILI9326_Reset()
****************************************************************************/
void ILI9326_Reset(void)
{
/***************************************
   **                                 **
   **-------\______________/-------   **
   **         | <---Tres---> |          **
   **                                 **
   **Tres: Min.1ms                  **
   ***************************************/
SET_BIT( LCD_RST );
ILI9326_Delay(65000);
CLR_BIT( LCD_RST );
ILI9326_Delay(65000);
SET_BIT( LCD_RST );
ILI9326_Delay(65000);
}
/****************************************************************************
* 名    称:void ILI9326_WriteRegister(unsigned int index,unsigned int dat)
* 功    能:写指定地址寄存器的值
* 入口参数:index    寄存器地址
*         :dat      寄存器值
* 出口参数:无
* 说    明:内部函数
* 调用方法:ILI9326_WriteRegister(0x0000,0x0001);
****************************************************************************/
void LCD_CtrlWrite_ILI9326(unsigned int index,unsigned int dat)
{
/************************************************************************
**                                                                  **
** nCS       ----\__________________________________________/-------**
** RS      ------\____________/-----------------------------------**
** nRD       -------------------------------------------------------**
** nWR       --------\_______/--------\_____/-----------------------**
** DB------------------------------------------**
**                                                                  **
************************************************************************/
ILI9326_WriteIndex(index);
ILI9326_WriteData(dat);
}
void LCD_WRITE_CMD(unsigned int x)
{
ILI9326_WriteIndex(x);
}
void ILI9326_init(void)
{
ILI9326_Reset();
//Start Initial Sequence
LCD_CtrlWrite_ILI9326(0x0000, 0x0000);

LCD_CtrlWrite_ILI9326(0x0400, 0x6200);
LCD_CtrlWrite_ILI9326(0x0008, 0x0808);
   
LCD_CtrlWrite_ILI9326(0x0300, 0x0C00);
LCD_CtrlWrite_ILI9326(0x0301, 0x5A0B);
LCD_CtrlWrite_ILI9326(0x0302, 0x0906);
LCD_CtrlWrite_ILI9326(0x0303, 0x1017);
LCD_CtrlWrite_ILI9326(0x0304, 0x2300);
LCD_CtrlWrite_ILI9326(0x0305, 0x1700);
LCD_CtrlWrite_ILI9326(0x0306, 0x6309);
LCD_CtrlWrite_ILI9326(0x0307, 0x0C09);
LCD_CtrlWrite_ILI9326(0x0308, 0x100C);
LCD_CtrlWrite_ILI9326(0x0309, 0x2232);

LCD_CtrlWrite_ILI9326(0x0010, 0x0016);
LCD_CtrlWrite_ILI9326(0x0011, 0x0101);
LCD_CtrlWrite_ILI9326(0x0012, 0x0000);
LCD_CtrlWrite_ILI9326(0x0013, 0x0001);

LCD_CtrlWrite_ILI9326(0x0100, 0x0330);
LCD_CtrlWrite_ILI9326(0x0101, 0x0237);
LCD_CtrlWrite_ILI9326(0x0103, 0x0D00);
LCD_CtrlWrite_ILI9326(0x0280, 0x6100);
LCD_CtrlWrite_ILI9326(0x0102, 0xC1B0);

LCD_CtrlWrite_ILI9326(0x0001, 0x0100);
LCD_CtrlWrite_ILI9326(0x0002, 0x0100);
LCD_CtrlWrite_ILI9326(0x0003, 0x1030);
LCD_CtrlWrite_ILI9326(0x0009, 0x0001);
LCD_CtrlWrite_ILI9326(0x000C, 0x0000);
LCD_CtrlWrite_ILI9326(0x0090, 0x8000);
LCD_CtrlWrite_ILI9326(0x000F, 0x0000);

LCD_CtrlWrite_ILI9326(0x0210, 0x0000);
LCD_CtrlWrite_ILI9326(0x0211, 0x00EF);
LCD_CtrlWrite_ILI9326(0x0212, 0x0000);
LCD_CtrlWrite_ILI9326(0x0213, 0x018F);
LCD_CtrlWrite_ILI9326(0x0500, 0x0000);
LCD_CtrlWrite_ILI9326(0x0501, 0x0000);
LCD_CtrlWrite_ILI9326(0x0502, 0x005F);
LCD_CtrlWrite_ILI9326(0x0401, 0x0001);
LCD_CtrlWrite_ILI9326(0x0404, 0x0000);

LCD_CtrlWrite_ILI9326(0x0007, 0x0100);

LCD_CtrlWrite_ILI9326(0x0200, 0x0000);
LCD_CtrlWrite_ILI9326(0x0201, 0x0000);
LCD_WRITE_CMD(0x0202);
}
/********************************************************************************
DESCRIPTION:
LCM display window setting.
PARAMETERS:
xs: Horizontal Address Start Position
xe: Horizontal Address End Position
ys: Vertical Address Start Position
ye: Vertical Address End Position
RETURNS:
REMARKS:
*********************************************************************************/
void LCD_set_Window_ILI9326(int xs,int xe,int ys,int ye)
{
LCD_CtrlWrite_ILI9326(0x0210,xs);
LCD_CtrlWrite_ILI9326(0x0211,xe);
LCD_CtrlWrite_ILI9326(0x0212,ys);
LCD_CtrlWrite_ILI9326(0x0213,ye);
LCD_CtrlWrite_ILI9326(0x0200,xs);
LCD_CtrlWrite_ILI9326(0x0201,ys);
LCD_WRITE_CMD(0x0202);
}

void Test(unsigned int Data)
{      
unsigned int n,i;
LCD_WRITE_CMD(0x0202);
SET_BIT(LCD_RS);
CLR_BIT(LCD_CS);      
LCD_DATA_H_OUT = Data >> 8;
LCD_DATA_L_OUT = Data&0XFF;
for(i=0;i<400;i++)
    for(n=0;n<240;n++)
    {
      CLR_BIT( LCD_WR );
      SET_BIT( LCD_WR );
    }
SET_BIT(LCD_RS);
}
//=================================雪花画面======================================//
void Test1(unsigned int i,unsigned int j)      
{       
   unsigned int n,m;
   LCD_WRITE_CMD(0x0202);
   SET_BIT(LCD_RS);
   CLR_BIT(LCD_CS);
   for(n=0;n<200;n++)
   {
       for(m=0;m<120;m++)
       {
          LCD_DATA_L_OUT = i;
            LCD_DATA_H_OUT = i>>8;
            CLR_BIT( LCD_WR );
            SET_BIT( LCD_WR );
            
          LCD_DATA_L_OUT = j;
            LCD_DATA_H_OUT = j>>8;
            CLR_BIT( LCD_WR );
            SET_BIT( LCD_WR );
       }
       for(m=0;m<120;m++)
       {
          LCD_DATA_L_OUT = j;
            LCD_DATA_H_OUT = j>>8;
            CLR_BIT( LCD_WR );
            SET_BIT( LCD_WR );
            
          LCD_DATA_L_OUT = i;
            LCD_DATA_H_OUT = i>>8;
            CLR_BIT( LCD_WR );
            SET_BIT( LCD_WR );
       }
   }
SET_BIT(LCD_RS);
}
//====================================黑框画面==================================//
void Test2(void)      
{
   unsigned int i,j;
   LCD_WRITE_CMD(0x0202);
   SET_BIT(LCD_RS);
   CLR_BIT(LCD_CS);
   LCD_DATA_L_OUT= 0x00;
   LCD_DATA_H_OUT= 0x00;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
   for(i=0;i<238;i++)
   {
        LCD_DATA_L_OUT = 0xff;
      LCD_DATA_H_OUT = 0xff;
      CLR_BIT( LCD_WR );
      SET_BIT( LCD_WR );
   }
   LCD_DATA_L_OUT = 0xff;
   LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );                     
   for(j=0;j<398;j++)
   {
      LCD_DATA_L_OUT = 0xff;
      LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      for(i=0;i<238;i++)
          {
             LCD_DATA_L_OUT = 0xff;
             LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
          }
      LCD_DATA_L_OUT = 0xff;
      LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );          
   }

   LCD_DATA_L_OUT = 0xFF;
   LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
   for(i=0;i<238;i++)
   {
        LCD_DATA_L_OUT = 0xff;
      LCD_DATA_H_OUT = 0xff;
         CLR_BIT( LCD_WR );
         SET_BIT( LCD_WR );
   }
   LCD_DATA_L_OUT = 0xff;
   LCD_DATA_H_OUT = 0xff;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );      
   SET_BIT(LCD_RS);      
}
//=============================8色彩间隔画面======================================//
void Test3(unsigned int a,unsigned int b,unsigned int c,unsigned int d,unsigned int e,unsigned int f,unsigned int g,unsigned int h)                              
{
   unsigned int i,m;
   LCD_WRITE_CMD(0x0202);
   SET_BIT(LCD_RS);
   CLR_BIT(LCD_CS);
   for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = a;
      LCD_DATA_H_OUT = a>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }
   for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = b;
      LCD_DATA_H_OUT = b>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }
   for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = c;
      LCD_DATA_H_OUT = c>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
    for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = d;
      LCD_DATA_H_OUT = d>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
    for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = e;
      LCD_DATA_H_OUT = e>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
    for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = f;
      LCD_DATA_H_OUT = f>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
    for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = g;
      LCD_DATA_H_OUT = g>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
    for(i=0;i<50;i++)
    for(m=0;m<240;m++)
      {
      LCD_DATA_L_OUT = h;
      LCD_DATA_H_OUT = h>>8;
   CLR_BIT( LCD_WR );
   SET_BIT( LCD_WR );
      }   
   SET_BIT(LCD_RS);
}


void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
   LCD_CtrlWrite_ILI9326(0x0200,x1);    //设置AC初始值(GRAM=0000)
   LCD_CtrlWrite_ILI9326(0x0201,y1);    //设置AC初始值(GRAM=0000)
   LCD_CtrlWrite_ILI9326(0x0210,x1);
   LCD_CtrlWrite_ILI9326(0x0211,x2);
   LCD_CtrlWrite_ILI9326(0x0212,y1);
   LCD_CtrlWrite_ILI9326(0x0213,y2);
   LCD_CtrlWrite_ILI9326(0x0000,y2);          //结束Y
   LCD_WRITE_CMD(0x0202);                                                
}
void showzifu(unsigned int x,unsigned int y,unsigned char value,unsigned int dcolor,unsigned int bgcolor)       
{
        unsigned char i,j;
        unsigned char const *temp=zifu;   
      Address_set(x,y,x+7,y+11); //设置区域      
        temp+=(value-32)*12;
        for(j=0;j<12;j++)
        {
                for(i=0;i<8;i++)
                {                      
                       if((*temp&(1<<(7-i)))!=0)
                        {
                                ILI9326_WriteData(dcolor);
                        }
                        else
                        {
                                ILI9326_WriteData(bgcolor);
                        }   
                }
                temp++;
       }
}
//在指定位置显示一个字符串(8*12大小)
//dcolor为内容颜色,gbcolor为背静颜色
void Test4(unsigned int x,unsigned int y,unsigned char *str,unsigned int dcolor,unsigned int bgcolor)          
{
        unsigned int x1,y1;
        x1=x;
        y1=y;
        while(*str!='\0')
        {       
                showzifu(x1,y1,*str,dcolor,bgcolor);
                x1+=7;
                str++;
        }       
}


/*************系统时钟初始化函数*********************/   
void INT_SYS_CLK(void)   
{   
   unsigned int i;      
   P5SEL |= 0x0C;                           
   UCSCTL6 &= ~XT2OFF;                        
   UCSCTL3 |= SELREF_2;                                                               
   UCSCTL4 |= SELA_2;                              
   do   
   {   
   UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flags                                             
   SFRIFG1 &= ~OFIFG;                         // Clear fault flags   
   for(i=0;i<0xFF;i++);                     // Delay for Osc to stabilize   
   }while (SFRIFG1&OFIFG);                      // Test oscillator fault flag   
   UCSCTL4 |= SELS_5 + SELM_5;                  // SMCLK=MCLK=XT2   
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;               // Stop WDT
INT_SYS_CLK();
LCD_IO_INT();
ILI9326_init();
ILI9326_BackLight(1);
Test(BLACK);
for(;;)
{
    Test3(BLUE,BLACK,RED,GREEN,CYAN,MAGENTA,YELLOW,WHITE);
}
}

mylovepzq 发表于 2011-9-22 12:44:34

代码很整洁干净,注释详细,很好的代码。谢谢
只是a##b 这样的语句看不太懂,可能是msp430用专的吧。
另外,msp有读tft驱动ic型号的代码吗?
u16 LCD_ReadReg(u8 LCD_Reg)
{                                                                                  
        u16 t;
        LCD_WR_REG(LCD_Reg);   //写入要读的寄存器号
        GPIOB->CRL=0X88888888; //PB0-7上拉输入
        GPIOB->CRH=0X88888888; //PB8-15 上拉输入
        GPIOB->ODR=0X0000;   //全部输出0
        LCD_RS=1;
        LCD_CS=0;
        //读取数据(读寄存器时,并不需要读2次)
        LCD_RD=0;                                          
        LCD_RD=1;
        t=DATAIN;
        LCD_CS=1;   
        GPIOB->CRL=0X33333333; //PB0-7上拉输出
        GPIOB->CRH=0X33333333; //PB8-15 上拉输出
        GPIOB->ODR=0XFFFF;    //全部输出高
        return t;
}   
Delay(5); // delay 50 ms
        LCD_WriteReg(0x0000,0x0001);
        Delay(5); // delay 50 ms
        DeviceCode = LCD_ReadReg(0x0000);   
        printf(" LCD ID:%x\n",DeviceCode);   
        if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
        {

这是stm32用的,根据不同的驱动ic来初始化不同的TFT,很好用。

sunshulin 发表于 2011-9-22 13:08:18

回复【2楼】mylovepzq
-----------------------------------------------------------------------

两个##是把前后字符串连接到一起的 c语言里是通用的吧 不过我没在别的编译器里用过
读驱动器型号用这个就可以了
/****************************************************************************
* 名    称:unsigned int ILI9326_ReadRegister(unsigned int index)
* 功    能:读取指定地址寄存器的值
* 入口参数:index    寄存器地址
* 出口参数:寄存器值
* 说    明:内部函数
* 调用方法:i=ILI9326_ReadRegister(0x0022);
****************************************************************************/
unsigned int ILI9326_ReadRegister(unsigned int index)
{
CLR_BIT( LCD_CS );//LCD 片选
CLR_BIT( LCD_RS );
SET_BIT( LCD_RD );
CLR_BIT( LCD_WR );
SET_BIT( LCD_WR );
LCD_DATA_H_DIR = 0xFF;
LCD_DATA_L_DIR = 0xFF;
LCD_DATA_H_OUT = index >> 8;
LCD_DATA_L_OUT = index;
SET_BIT( LCD_RS );
return (ILI9326_ReadData());
}

mylovepzq 发表于 2011-9-22 17:11:35

感谢,兄弟有其它单片机的读寄存器的代码吗?
以前51和avr求了好久没求到

wuha 发表于 2011-9-22 17:28:11

楼主,都是C写的代码,你改下IO口定义,就可以移植到任何单片机上了呀!

mylovepzq 发表于 2011-9-22 18:27:41

回复【5楼】wuha 致命武器
楼主,都是c写的代码,你改下io口定义,就可以移植到任何单片机上了呀!
-----------------------------------------------------------------------
但是我用51单片机,不知道什么原因,始终读不出来。
修修改改,起码整了一个星期也没有搞出。

w_wei0817 发表于 2011-9-28 10:52:54

不错, 谢谢分享。
页: [1]
查看完整版本: 求MSP430经典一些的教程。另求msp430驱动TFT显示屏的代码!