2.4寸TFT情况如下(此屏幕不带触摸,也无触摸驱动程序,但是有底层)
接线情况如下
主要程序如下:
main.c
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "gui.h"
#include "test.h"
int main(void)
{
SystemInit();//³õʼ»¯RCC ÉèÖÃϵͳÖ÷ƵΪ72MHZ
delay_init(72); //ÑÓʱ³õʼ»¯
LCD_Init(); //Òº¾§ÆÁ³õʼ»¯
//Ñ»·²âÊÔ
while(1)
{
main_test(); //²âÊÔÖ÷½çÃæ
Test_Color(); //¼òµ¥Ë¢ÆÁÌî³ä²âÊÔ
Test_FillRec(); //GUI¾ØÐλæÍ¼²âÊÔ
Test_Circle(); //GUI»Ô²²âÊÔ
Test_Triangle(); //GUIÈý½ÇÐλæÍ¼²âÊÔ
English_Font_test();//Ó¢ÎÄ×ÖÌåʾÀý²âÊÔ
Chinese_Font_test();//ÖÐÎÄ×ÖÌåʾÀý²âÊÔ
Pic_test(); //ͼƬÏÔʾʾÀý²âÊÔ
Rotate_Test(); //ÐýתÏÔʾ²âÊÔ
}
}
lcd.c
#include "lcd.h"
#include "stdlib.h"
#include "delay.h"
#include "SPI.h"
//¹ÜÀíLCDÖØÒª²ÎÊý
//ĬÈÏΪÊúÆÁ
_lcd_dev lcddev;
//»±ÊÑÕÉ«,±³¾°ÑÕÉ«
u16 POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;
u16 DeviceCode;
void LCD_WR_REG(u8 data)
{
LCD_CS_CLR;
LCD_RS_CLR;
SPI_WriteByte(SPI2,data);
LCD_CS_SET;
}
void LCD_WR_DATA(u8 data)
{
LCD_CS_CLR;
LCD_RS_SET;
SPI_WriteByte(SPI2,data);
LCD_CS_SET;
}
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);
LCD_WR_DATA(LCD_RegValue);
}
void LCD_WriteRAM_Prepare(void)
{
LCD_WR_REG(lcddev.wramcmd);
}
void Lcd_WriteData_16Bit(u16 Data)
{
LCD_CS_CLR;
LCD_RS_SET;
SPI_WriteByte(SPI2,Data>>8);
SPI_WriteByte(SPI2,Data);
LCD_CS_SET;
}
void LCD_DrawPoint(u16 x,u16 y)
{
LCD_SetCursor(x,y);//ÉèÖùâ±êλÖÃ
Lcd_WriteData_16Bit(POINT_COLOR);
}
void LCD_Clear(u16 Color)
{
unsigned int i,m;
LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);
LCD_CS_CLR;
LCD_RS_SET;
for(i=0;i<lcddev.height;i++)
{
for(m=0;m<lcddev.width;m++)
{
Lcd_WriteData_16Bit(Color);
}
}
LCD_CS_SET;
}
void LCD_GPIOInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB ,ENABLE); //ʹÄÜGPIOBʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11| GPIO_Pin_12; //GPIOB9,10,11,12
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_Init(GPIOB, &GPIO_InitStructure);//³õʼ»¯
}
void LCD_RESET(void)
{
LCD_RST_CLR;
delay_ms(100);
LCD_RST_SET;
delay_ms(50);
}
void LCD_Init(void)
{
SPI2_Init(); //Ó²¼þSPI2³õʼ»¯
LCD_GPIOInit();//LCD GPIO³õʼ»¯
LCD_RESET(); //LCD ¸´Î»
//*************2.4inch ILI9341³õʼ»¯**********//
LCD_WR_REG(0xCF);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0xD9); //0xC1
LCD_WR_DATA(0X30);
LCD_WR_REG(0xED);
LCD_WR_DATA(0x64);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0X12);
LCD_WR_DATA(0X81);
LCD_WR_REG(0xE8);
LCD_WR_DATA(0x85);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x7A);
LCD_WR_REG(0xCB);
LCD_WR_DATA(0x39);
LCD_WR_DATA(0x2C);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x34);
LCD_WR_DATA(0x02);
LCD_WR_REG(0xF7);
LCD_WR_DATA(0x20);
LCD_WR_REG(0xEA);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xC0); //Power control
LCD_WR_DATA(0x1B); //VRH[5:0]
LCD_WR_REG(0xC1); //Power control
LCD_WR_DATA(0x12); //SAP[2:0];BT[3:0] 0x01
LCD_WR_REG(0xC5); //VCM control
LCD_WR_DATA(0x08); //30
LCD_WR_DATA(0x26); //30
LCD_WR_REG(0xC7); //VCM control2
LCD_WR_DATA(0XB7);
LCD_WR_REG(0x36); // Memory Access Control
LCD_WR_DATA(0x08);
LCD_WR_REG(0x3A);
LCD_WR_DATA(0x55);
LCD_WR_REG(0xB1);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x1A);
LCD_WR_REG(0xB6); // Display Function Control
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0xA2);
LCD_WR_REG(0xF2); // 3Gamma Function Disable
LCD_WR_DATA(0x00);
LCD_WR_REG(0x26); //Gamma curve selected
LCD_WR_DATA(0x01);
LCD_WR_REG(0xE0); //Set Gamma
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x1D);
LCD_WR_DATA(0x1A);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x0D);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x49);
LCD_WR_DATA(0X66);
LCD_WR_DATA(0x3B);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x05);
LCD_WR_DATA(0x04);
LCD_WR_REG(0XE1); //Set Gamma
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x18);
LCD_WR_DATA(0x1D);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x36);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x4C);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x2E);
LCD_WR_DATA(0x2F);
LCD_WR_DATA(0x05);
LCD_WR_REG(0x2B);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x3f);
LCD_WR_REG(0x2A);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0xef);
LCD_WR_REG(0x11); //Exit Sleep
delay_ms(120);
LCD_WR_REG(0x29); //display on
LCD_direction(USE_HORIZONTAL);//ÉèÖÃLCDÏÔʾ·½Ïò
LCD_LED=1;//µãÁÁ±³¹â
LCD_Clear(WHITE);//ÇåÈ«ÆÁ°×É«
}
void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(xStar>>8);
LCD_WR_DATA(0x00FF&xStar);
LCD_WR_DATA(xEnd>>8);
LCD_WR_DATA(0x00FF&xEnd);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(yStar>>8);
LCD_WR_DATA(0x00FF&yStar);
LCD_WR_DATA(yEnd>>8);
LCD_WR_DATA(0x00FF&yEnd);
LCD_WriteRAM_Prepare(); //¿ªÊ¼Ð´ÈëGRAM
}
void LCD_SetCursor(u16 Xpos, u16 Ypos)
{
LCD_SetWindows(Xpos,Ypos,Xpos,Ypos);
}
void LCD_direction(u8 direction)
{
lcddev.setxcmd=0x2A;
lcddev.setycmd=0x2B;
lcddev.wramcmd=0x2C;
switch(direction){
case 0:
lcddev.width=LCD_W;
lcddev.height=LCD_H;
LCD_WriteReg(0x36,(1<<3)|(0<<6)|(0<<7));//BGR==1,MY==0,MX==0,MV==0
break;
case 1:
lcddev.width=LCD_H;
lcddev.height=LCD_W;
LCD_WriteReg(0x36,(1<<3)|(0<<7)|(1<<6)|(1<<5));//BGR==1,MY==1,MX==0,MV==1
break;
case 2:
lcddev.width=LCD_W;
lcddev.height=LCD_H;
LCD_WriteReg(0x36,(1<<3)|(1<<6)|(1<<7));//BGR==1,MY==0,MX==0,MV==0
break;
case 3:
lcddev.width=LCD_H;
lcddev.height=LCD_W;
LCD_WriteReg(0x36,(1<<3)|(1<<7)|(1<<5));//BGR==1,MY==1,MX==0,MV==1
break;
default:break;
}
}
lcd.h
#ifndef __LCD_H
#define __LCD_H
#include "sys.h"
#include "stdlib.h"
//LCDÖØÒª²ÎÊý¼¯
typedef struct
{
u16 width; //LCD ¿í¶È
u16 height; //LCD ¸ß¶È
u16 id; //LCD ID
u8 dir; //ºáÆÁ»¹ÊÇÊúÆÁ¿ØÖÆ£º0£¬ÊúÆÁ£»1£¬ºáÆÁ¡£
u16 wramcmd; //¿ªÊ¼Ð´gramÖ¸Áî
u16 setxcmd; //ÉèÖÃx×ø±êÖ¸Áî
u16 setycmd; //ÉèÖÃy×ø±êÖ¸Áî
}_lcd_dev;
//LCD²ÎÊý
extern _lcd_dev lcddev; //¹ÜÀíLCDÖØÒª²ÎÊý
/Óû§ÅäÖÃÇø///
#define USE_HORIZONTAL 0//¶¨ÒåÒº¾§ÆÁ˳ʱÕëÐýת·½Ïò 0-0¶ÈÐýת£¬1-90¶ÈÐýת£¬2-180¶ÈÐýת£¬3-270¶ÈÐýת
//
//¶¨ÒåLCDµÄ³ß´ç
#define LCD_W 240
#define LCD_H 320
//TFTLCD²¿·ÖÍâÒªµ÷Óõĺ¯Êý
extern u16 POINT_COLOR;//ĬÈϺìÉ«
extern u16 BACK_COLOR; //±³¾°ÑÕÉ«.ĬÈÏΪ°×É«
//-----------------LCD¶Ë¿Ú¶¨Òå----------------
#define GPIO_TYPE GPIOB //GPIO×éÀàÐÍ
#define LED 9 //±³¹â¿ØÖÆÒý½Å PB9
#define LCD_CS 11 //ƬѡÒý½Å PB11
#define LCD_RS 10 //¼Ä´æÆ÷/Êý¾ÝÑ¡ÔñÒý½Å PB10
#define LCD_RST 12 //¸´Î»Òý½Å PB12
//QDtechȫϵÁÐÄ£¿é²ÉÓÃÁËÈý¼«¹Ü¿ØÖƱ³¹âÁÁÃð£¬Óû§Ò²¿ÉÒÔ½ÓPWMµ÷½Ú±³¹âÁÁ¶È
#define LCD_LED PBout(LED) //LCD±³¹â PB9
//Èç¹ûʹÓùٷ½¿âº¯Êý¶¨ÒåÏÂÁеײ㣬ËٶȽ«»áϽµµ½14֡ÿÃ룬½¨Òé²ÉÓÃÎÒË¾ÍÆ¼ö·½·¨
//ÒÔÏÂIO¶¨ÒåÖ±½Ó²Ù×÷¼Ä´æÆ÷£¬¿ìËÙIO²Ù×÷£¬Ë¢ÆÁËÙÂÊ¿ÉÒÔ´ïµ½28֡ÿÃ룡
//GPIOÖÃ루À¸ß£©
#define LCD_CS_SET GPIO_TYPE->BSRR=1<<LCD_CS //Ƭѡ¶Ë¿Ú PB11
#define LCD_RS_SET GPIO_TYPE->BSRR=1<<LCD_RS //Êý¾Ý/ÃüÁî PB10
#define LCD_RST_SET GPIO_TYPE->BSRR=1<<LCD_RST //¸´Î» PB12
//GPIO¸´Î»£¨ÀµÍ£©
#define LCD_CS_CLR GPIO_TYPE->BRR=1<<LCD_CS //Ƭѡ¶Ë¿Ú PB11
#define LCD_RS_CLR GPIO_TYPE->BRR=1<<LCD_RS //Êý¾Ý/ÃüÁî PB10
#define LCD_RST_CLR GPIO_TYPE->BRR=1<<LCD_RST //¸´Î» PB12
//»±ÊÑÕÉ«
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40 //רɫ
#define BRRED 0XFC07 //רºìÉ«
#define GRAY 0X8430 //»ÒÉ«
//GUIÑÕÉ«
#define DARKBLUE 0X01CF //ÉîÀ¶É«
#define LIGHTBLUE 0X7D7C //dzÀ¶É«
#define GRAYBLUE 0X5458 //»ÒÀ¶É«
//ÒÔÉÏÈýɫΪPANELµÄÑÕÉ«
#define LIGHTGREEN 0X841F //dzÂÌÉ«
#define LIGHTGRAY 0XEF5B //dz»ÒÉ«(PANNEL)
#define LGRAY 0XC618 //dz»ÒÉ«(PANNEL),´°Ìå±³¾°É«
#define LGRAYBLUE 0XA651 //dz»ÒÀ¶É«(Öмä²ãÑÕÉ«)
#define LBBLUE 0X2B12 //Ç³×ØÀ¶É«(Ñ¡ÔñÌõÄ¿µÄ·´É«)
void LCD_Init(void);
void LCD_DisplayOn(void);
void LCD_DisplayOff(void);
void LCD_Clear(u16 Color);
void LCD_SetCursor(u16 Xpos, u16 Ypos);
void LCD_DrawPoint(u16 x,u16 y);//»µã
u16 LCD_ReadPoint(u16 x,u16 y); //¶Áµã
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2);
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2);
void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd);
u16 LCD_RD_DATA(void);//¶ÁÈ¡LCDÊý¾Ý
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);
void LCD_WR_DATA(u8 data);
u16 LCD_ReadReg(u8 LCD_Reg);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);
u16 LCD_ReadRAM(void);
u16 LCD_BGR2RGB(u16 c);
void LCD_SetParam(void);
void Lcd_WriteData_16Bit(u16 Data);
void LCD_direction(u8 direction );
#endif
SPI.c
#include "spi.h"
u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte)
{
while((SPIx->SR&SPI_I2S_FLAG_TXE)==RESET); //µÈ´ý·¢ËÍÇø¿Õ
SPIx->DR=Byte; //·¢ËÍÒ»¸öbyte
while((SPIx->SR&SPI_I2S_FLAG_RXNE)==RESET);//µÈ´ý½ÓÊÕÍêÒ»¸öbyte
return SPIx->DR; //·µ»ØÊÕµ½µÄÊý¾Ý
}
void SPI_SetSpeed(SPI_TypeDef* SPIx,u8 SpeedSet)
{
SPIx->CR1&=0XFFC7;
if(SpeedSet==1)//¸ßËÙ
{
SPIx->CR1|=SPI_BaudRatePrescaler_2;//Fsck=Fpclk/2
}
else//µÍËÙ
{
SPIx->CR1|=SPI_BaudRatePrescaler_32; //Fsck=Fpclk/32
}
SPIx->CR1|=1<<6; //SPIÉ豸ʹÄÜ
}
void SPI2_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
//ÅäÖÃSPI2¹Ü½Å
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//SPI2ÅäÖÃÑ¡Ïî
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
//ʹÄÜSPI2
SPI_Cmd(SPI2, ENABLE);
}
test.c
#include "lcd.h"
#include "delay.h"
#include "gui.h"
#include "test.h"
#include "key.h"
#include "led.h"
#include "pic.h"
//========================variable==========================//
u16 ColorTab[5]={RED,GREEN,BLUE,YELLOW,BRED};//¶¨ÒåÑÕÉ«Êý×é
//=====================end of variable======================//
void DrawTestPage(u8 *str)
{
//»æÖƹ̶¨À¸up
LCD_Clear(WHITE);
LCD_Fill(0,0,lcddev.width,20,BLUE);
//»æÖƹ̶¨À¸down
LCD_Fill(0,lcddev.height-20,lcddev.width,lcddev.height,BLUE);
POINT_COLOR=WHITE;
Gui_StrCenter(0,2,WHITE,BLUE,str,16,1);//¾ÓÖÐÏÔʾ
Gui_StrCenter(0,lcddev.height-18,WHITE,BLUE,"http://www.lcdwiki.com",16,1);//¾ÓÖÐÏÔʾ
//»æÖƲâÊÔÇøÓò
//LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
}
void main_test(void)
{
DrawTestPage("È«¶¯µç×Ó×ۺϲâÊÔ³ÌÐò");
Gui_StrCenter(0,30,RED,BLUE,"È«¶¯µç×Ó",16,1);//¾ÓÖÐÏÔʾ
Gui_StrCenter(0,60,RED,BLUE,"×ۺϲâÊÔ³ÌÐò",16,1);//¾ÓÖÐÏÔʾ
Gui_StrCenter(0,90,GREEN,BLUE,"2.4\" ILI9341 240X320",16,1);//¾ÓÖÐÏÔʾ
Gui_StrCenter(0,120,BLUE,BLUE,"xiaoFeng@QDtech 2018-08-20",16,1);//¾ÓÖÐÏÔʾ
delay_ms(1500);
delay_ms(1500);
}
void Test_Color(void)
{
//DrawTestPage("²âÊÔ1:´¿É«Ìî³ä²âÊÔ");
LCD_Fill(0,0,lcddev.width,lcddev.height,WHITE);
Show_Str(20,30,BLUE,YELLOW,"BL Test",16,1);delay_ms(800);
LCD_Fill(0,0,lcddev.width,lcddev.height,RED);
Show_Str(20,30,BLUE,YELLOW,"RED ",16,1);delay_ms(800);
LCD_Fill(0,0,lcddev.width,lcddev.height,GREEN);
Show_Str(20,30,BLUE,YELLOW,"GREEN ",16,1);delay_ms(800);
LCD_Fill(0,0,lcddev.width,lcddev.height,BLUE);
Show_Str(20,30,RED,YELLOW,"BLUE ",16,1);delay_ms(800);
}
void Test_FillRec(void)
{
u8 i=0;
DrawTestPage("²âÊÔ2:GUI¾ØÐÎÌî³ä²âÊÔ");
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for (i=0; i<5; i++)
{
POINT_COLOR=ColorTab[i];
LCD_DrawRectangle(lcddev.width/2-80+(i*15),lcddev.height/2-80+(i*15),lcddev.width/2-80+(i*15)+60,lcddev.height/2-80+(i*15)+60);
}
delay_ms(1500);
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for (i=0; i<5; i++)
{
POINT_COLOR=ColorTab[i];
LCD_DrawFillRectangle(lcddev.width/2-80+(i*15),lcddev.height/2-80+(i*15),lcddev.width/2-80+(i*15)+60,lcddev.height/2-80+(i*15)+60);
}
delay_ms(1500);
}
void Test_Circle(void)
{
u8 i=0;
DrawTestPage("²âÊÔ3:GUI»Ô²Ìî³ä²âÊÔ");
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for (i=0; i<5; i++)
gui_circle(lcddev.width/2-80+(i*25),lcddev.height/2-50+(i*25),ColorTab[i],30,0);
delay_ms(1500);
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for (i=0; i<5; i++)
gui_circle(lcddev.width/2-80+(i*25),lcddev.height/2-50+(i*25),ColorTab[i],30,1);
delay_ms(1500);
}
void English_Font_test(void)
{
DrawTestPage("²âÊÔ5:Ó¢ÎÄÏÔʾ²âÊÔ");
Show_Str(10,30,BLUE,YELLOW,"6X12:abcdefghijklmnopqrstuvwxyz0123456789",12,0);
Show_Str(10,45,BLUE,YELLOW,"6X12:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",12,1);
Show_Str(10,60,BLUE,YELLOW,"6X12:~!@#$%^&*()_+{}:<>?/|-+.",12,0);
Show_Str(10,80,BLUE,YELLOW,"8X16:abcdefghijklmnopqrstuvwxyz0123456789",16,0);
Show_Str(10,100,BLUE,YELLOW,"8X16:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",16,1);
Show_Str(10,120,BLUE,YELLOW,"8X16:~!@#$%^&*()_+{}:<>?/|-+.",16,0);
delay_ms(1200);
}
void Test_Triangle(void)
{
u8 i=0;
DrawTestPage("²âÊÔ4:GUI TriangleÌî³ä²âÊÔ");
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for(i=0;i<5;i++)
{
POINT_COLOR=ColorTab[i];
Draw_Triangel(lcddev.width/2-80+(i*20),lcddev.height/2-20+(i*15),lcddev.width/2-50-1+(i*20),lcddev.height/2-20-52-1+(i*15),lcddev.width/2-20-1+(i*20),lcddev.height/2-20+(i*15));
}
delay_ms(1500);
LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
for(i=0;i<5;i++)
{
POINT_COLOR=ColorTab[i];
Fill_Triangel(lcddev.width/2-80+(i*20),lcddev.height/2-20+(i*15),lcddev.width/2-50-1+(i*20),lcddev.height/2-20-52-1+(i*15),lcddev.width/2-20-1+(i*20),lcddev.height/2-20+(i*15));
}
delay_ms(1500);
}
void Chinese_Font_test(void)
{
DrawTestPage("²âÊÔ6:ÖÐÎÄÏÔʾ²âÊÔ");
Show_Str(10,30,BLUE,YELLOW,"16X16:È«¶¯µç×Ó¼¼ÊõÓÐÏÞ¹«Ë¾»¶ÓÄú",16,0);
Show_Str(10,50,BLUE,YELLOW,"16X16:WelcomeÈ«¶¯µç×Ó",16,0);
Show_Str(10,70,BLUE,YELLOW,"24X24:ÉîÛÚÊÐÖÐÎIJâÊÔ",24,1);
Show_Str(10,100,BLUE,YELLOW,"32X32:×ÖÌå²âÊÔ",32,1);
delay_ms(1200);
}
void Pic_test(void)
{
DrawTestPage("²âÊÔ7:ͼƬÏÔʾ²âÊÔ");
//LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
Gui_Drawbmp16(30,30,gImage_qq);
Show_Str(30+12,75,BLUE,YELLOW,"QQ",16,1);
Gui_Drawbmp16(90,30,gImage_qq);
Show_Str(90+12,75,BLUE,YELLOW,"QQ",16,1);
Gui_Drawbmp16(150,30,gImage_qq);
Show_Str(150+12,75,BLUE,YELLOW,"QQ",16,1);
delay_ms(1200);
}
void Rotate_Test(void)
{
u8 i=0;
u8 *Direction[4]={"Rotation:0","Rotation:90","Rotation:180","Rotation:270"};
for(i=0;i<4;i++)
{
LCD_direction(i);
DrawTestPage("²âÊÔ8:ÆÁÄ»Ðýת²âÊÔ");
Show_Str(20,30,BLUE,YELLOW,Direction[i],16,1);
Gui_Drawbmp16(30,50,gImage_qq);
delay_ms(1000);delay_ms(1000);
}
LCD_direction(USE_HORIZONTAL);
}