求MSP430经典一些的教程。另求msp430驱动TFT显示屏的代码!
STM32我是学不会了,说实话,stm32不完全手册,还有网上的几本教程,都不是我这样的刚玩单片机的人能全部搞懂的STM32没有好教程啊
MSP430有好点的教程吗?
另求msp430驱动tft显示屏的代码,8位16位的都可以,9325的最好了,其它的也没有关系
多谢了 回复【楼主位】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);
}
} 代码很整洁干净,注释详细,很好的代码。谢谢
只是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,很好用。 回复【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());
} 感谢,兄弟有其它单片机的读寄存器的代码吗?
以前51和avr求了好久没求到 楼主,都是C写的代码,你改下IO口定义,就可以移植到任何单片机上了呀! 回复【5楼】wuha 致命武器
楼主,都是c写的代码,你改下io口定义,就可以移植到任何单片机上了呀!
-----------------------------------------------------------------------
但是我用51单片机,不知道什么原因,始终读不出来。
修修改改,起码整了一个星期也没有搞出。 不错, 谢谢分享。
页:
[1]