搜索
bottom↓
回复: 7

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

[复制链接]

出0入0汤圆

发表于 2011-9-21 14:33:41 | 显示全部楼层 |阅读模式
STM32我是学不会了,说实话,stm32不完全手册,还有网上的几本教程,都不是我这样的刚玩单片机的人能全部搞懂的
STM32没有好教程啊
MSP430有好点的教程吗?
另求msp430驱动tft显示屏的代码,8位16位的都可以,9325的最好了,其它的也没有关系
多谢了

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 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_H  P9      Data_L  P8
* 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 char  zifu[]={         
/*--  文字:     --*/
/*--  宋体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[0:15]  ---------[index]----------[data]-----------------------  **
  **                                                                    **
  ************************************************************************/
  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);
  }
}

出0入0汤圆

 楼主| 发表于 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,很好用。

出0入0汤圆

发表于 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());
}

出0入0汤圆

 楼主| 发表于 2011-9-22 17:11:35 | 显示全部楼层
感谢,兄弟有其它单片机的读寄存器的代码吗?
以前51和avr求了好久没求到

出0入0汤圆

发表于 2011-9-22 17:28:11 | 显示全部楼层
楼主,都是C写的代码,你改下IO口定义,就可以移植到任何单片机上了呀!

出0入0汤圆

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

出0入0汤圆

发表于 2011-9-28 10:52:54 | 显示全部楼层
不错, 谢谢分享。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 10:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表