STC32G-DEMO-CODE-V9.6-20230425
37-2.4寸ILI9341驱动TFT显示屏实验程序
main.c
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC 1T Series MCU Demo Programme -------------------------------*/
- /* --- Mobile: (86)13922805190 ----------------------------------------*/
- /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
- /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
- /* --- Web: www.STCMCU.com --------------------------------------------*/
- /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
- /* --- QQ: 800003751 -------------------------------------------------*/
- /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用 */
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
-
- //=========================================电源接线================================================//
- //VDD接DC 3.3V电源
- //GND接地
- //=======================================液晶屏数据线接线==========================================//
- //本模块数据总线类型为8位并口
- //液晶屏模块 STC32G
- // LCD_D0~D7 接 P60~P67 //液晶屏8位数据线
- //=======================================液晶屏控制线接线==========================================//
- //液晶屏模块 STC32G
- // LCD_RS 接 P45 //数据/命令选择控制信号
- // LCD_RD 接 P44 //读控制信号
- // LCD_RST 接 P43 //复位信号
- // LCD_WR 接 P42 //写控制信号
- // LCD_CS 接 P34 //片选控制信号
- //================================================================================================//
- // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
- //**************************************************************************************************/
- #include "sys.h"
- #include "lcd.h"
- #include "gui.h"
- #include "test.h"
-
- //主函数
- void main(void)
- {
- WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
- EAXFR = 1; //扩展寄存器(XFR)访问使能
- CKCON = 0; //提高访问XRAM速度
-
- //液晶屏初始化
- LCD_Init();
-
- //循环进行各项测试
- while(1)
- {
- main_test(); //测试主界面
- Test_Read(); //读ID和颜色值测试
- Test_Color(); //简单刷屏填充测试
- Test_FillRec(); //GUI矩形绘图测试
- Test_Circle(); //GUI画圆测试
- Test_Triangle(); //GUI三角形填充测试
- English_Font_test();//英文字体示例测试
- Chinese_Font_test();//中文字体示例测试
- Pic_test(); //图片显示示例测试
- Rotate_Test(); //屏幕旋转测试
- }
- }
复制代码
test.h
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC 1T Series MCU Demo Programme -------------------------------*/
- /* --- Mobile: (86)13922805190 ----------------------------------------*/
- /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
- /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
- /* --- Web: www.STCMCU.com --------------------------------------------*/
- /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
- /* --- QQ: 800003751 -------------------------------------------------*/
- /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用 */
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
-
- //=========================================电源接线================================================//
- //VDD接DC 3.3V电源
- //GND接地
- //=======================================液晶屏数据线接线==========================================//
- //本模块数据总线类型为8位并口
- //液晶屏模块 STC32G
- // LCD_D0~D7 接 P60~P67 //液晶屏8位数据线
- //=======================================液晶屏控制线接线==========================================//
- //液晶屏模块 STC32G
- // LCD_RS 接 P45 //数据/命令选择控制信号
- // LCD_RD 接 P44 //读控制信号
- // LCD_RST 接 P43 //复位信号
- // LCD_WR 接 P42 //写控制信号
- // LCD_CS 接 P34 //片选控制信号
- //================================================================================================//
- // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
- //**************************************************************************************************/
- #ifndef __TEST_H__
- #define __TEST_H__
-
- void DrawTestPage(u8 *str);
- void Test_Color(void);
- void Test_FillRec(void);
- void Test_Circle(void);
- void Test_Triangle(void);
- void English_Font_test(void);
- void Chinese_Font_test(void);
- void Pic_test(void);
- void Load_Drow_Dialog(void);
- void Touch_Test(void);
- void main_test(void);
- void Rotate_Test(void);
- void Test_Read(void);
- #endif
复制代码
test.c
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC 1T Series MCU Demo Programme -------------------------------*/
- /* --- Mobile: (86)13922805190 ----------------------------------------*/
- /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
- /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
- /* --- Web: www.STCMCU.com --------------------------------------------*/
- /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
- /* --- QQ: 800003751 -------------------------------------------------*/
- /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用 */
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
-
- //=========================================电源接线================================================//
- //VDD接DC 3.3V电源
- //GND接地
- //=======================================液晶屏数据线接线==========================================//
- //本模块数据总线类型为8位并口
- //液晶屏模块 STC32G
- // LCD_D0~D7 接 P60~P67 //液晶屏8位数据线
- //=======================================液晶屏控制线接线==========================================//
- //液晶屏模块 STC32G
- // LCD_RS 接 P45 //数据/命令选择控制信号
- // LCD_RD 接 P44 //读控制信号
- // LCD_RST 接 P43 //复位信号
- // LCD_WR 接 P42 //写控制信号
- // LCD_CS 接 P34 //片选控制信号
- //================================================================================================//
- // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
- //**************************************************************************************************/
- #include <stdio.h>
- #include "lcd.h"
- #include "string.h"
- #include "sys.h"
- #include "gui.h"
- #include "test.h"
- #include "pic.h"
-
-
- //========================variable==========================//
- u16 ColorTab[5]={RED,GREEN,BLUE,YELLOW,BRED};//定义颜色数组
- u16 ColornTab[8]={RED,MAGENTA,GREEN,DARKBLUE,BLUE,BLACK,LIGHTGREEN};
- //=====================end of variable======================//
-
- /*****************************************************************************
- * @name :void DrawTestPage(u8 *str)
- * @date :2018-08-09
- * @function :Drawing test interface
- * @parameters :str:the start address of the Chinese and English strings
- * @retvalue :None
- ******************************************************************************/
- 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,"www.STCMCUDATA.com",16,1);//居中显示
- //绘制测试区域
- //LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
- }
-
- /*****************************************************************************
- * @name :void main_test(void)
- * @date :2018-08-09
- * @function :Drawing the main Interface of the Comprehensive Test Program
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void main_test(void)
- {
- DrawTestPage("2.4寸TFT屏测试程序");
-
- Gui_StrCenter(0,30,RED,BLUE,"宏晶科技",16,1);//居中显示
- Gui_StrCenter(0,60,RED,BLUE,"STC MCU Limited",16,1);//居中显示
- Gui_StrCenter(0,90,MAGENTA,BLUE,"Tel: 86-0513-55012928",16,1);//居中显示
- Gui_StrCenter(0,120,BLUE,BLUE,"www.STCAI.com",16,1);//居中显示
- delay_ms(1500);
- delay_ms(1500);
- }
-
- /*****************************************************************************
- * @name :void Test_Color(void)
- * @date :2018-08-09
- * @function :Color fill test(white,black,red,green,blue)
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- 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);
- }
-
- /*****************************************************************************
- * @name :void Test_FillRec(void)
- * @date :2018-08-09
- * @function :Rectangular display and fill test
- Display red,green,blue,yellow,pink rectangular boxes in turn,
- 1500 milliseconds later,
- Fill the rectangle in red,green,blue,yellow and pink in turn
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Test_FillRec(void)
- {
- u8 i=0;
- DrawTestPage("测试3: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-1,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);
- }
-
- /*****************************************************************************
- * @name :void Test_Circle(void)
- * @date :2018-08-09
- * @function :circular display and fill test
- Display red,green,blue,yellow,pink circular boxes in turn,
- 1500 milliseconds later,
- Fill the circular in red,green,blue,yellow and pink in turn
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Test_Circle(void)
- {
- u8 i=0;
- DrawTestPage("测试4: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-1,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);
- }
-
- /*****************************************************************************
- * @name :void Test_Triangle(void)
- * @date :2018-08-09
- * @function :triangle display and fill test
- Display red,green,blue,yellow,pink triangle boxes in turn,
- 1500 milliseconds later,
- Fill the triangle in red,green,blue,yellow and pink in turn
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Test_Triangle(void)
- {
- u8 i=0;
- DrawTestPage("测试5: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-1,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);
- }
-
- /*****************************************************************************
- * @name :void English_Font_test(void)
- * @date :2018-08-09
- * @function :English display test
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void English_Font_test(void)
- {
- DrawTestPage("测试6:英文显示测试");
- POINT_COLOR=RED;
- BACK_COLOR=BLUE;
- LCD_ShowString(10,30,12,"6X12:abcdefghijklmnopqrstuvwxyz",0);
- LCD_ShowString(10,45,12,"6X12:ABCDEFGHIJKLMNOP0123456789",1);
- LCD_ShowString(10,60,12,"6X12:~!@#$%^&*()_+{}:<>?/|-+.",0);
- LCD_ShowString(10,80,16,"8X16:abcdefghijklmnopqrstuvwxyz",0);
- LCD_ShowString(10,100,16,"8X16:ABCDEFGHIJKLMNOP0123456789",1);
- LCD_ShowString(10,120,16,"8X16:~!@#$%^&*()_+{}:<>?/|-+.",0);
- delay_ms(1500);
- }
-
- /*****************************************************************************
- * @name :void Chinese_Font_test(void)
- * @date :2018-08-09
- * @function :chinese display test
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Chinese_Font_test(void)
- {
- DrawTestPage("测试7:中文显示测试");
- 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:深圳市中文测试",24,1);
- Show_Str(10,100,BLUE,YELLOW,"32X32:字体测试",32,1);
- delay_ms(1500);
- }
-
- /*****************************************************************************
- * @name :void Pic_test(void)
- * @date :2018-08-09
- * @function :picture display test
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Pic_test(void)
- {
- DrawTestPage("测试8:图片显示测试");
- //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(1500);
- }
-
- /*****************************************************************************
- * @name :void Rotate_Test(void)
- * @date :2018-08-09
- * @function :rotate test
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- 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("测试9:屏幕角度测试");
- 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);
- }
-
- /*****************************************************************************
- * @name :void Test_Read(void)
- * @date :2018-11-13
- * @function :read test
- * @parameters :None
- * @retvalue :None
- ******************************************************************************/
- void Test_Read(void)
- {
- u16 lcd_id,color;
- u8 buf[10] = {0},i;
- u8 cbuf[20] = {0};
- DrawTestPage("测试2:读ID和颜色值测试");
- LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
- lcd_id = LCD_Read_ID();
- sprintf((char *)buf,"ID:0x%x",lcd_id);
- Show_Str(50,25,BLUE,YELLOW,buf,16,1);
- for (i=0; i<7; i++)
- {
- POINT_COLOR=ColornTab[i];
- LCD_DrawFillRectangle(40-10,55+i*25-10,40+10,55+i*25+10);
- color = LCD_ReadPoint(40,55+i*25);
- sprintf((char *)cbuf,"read color:0x%04x",color);
- Show_Str(40+20,55+i*25-8,POINT_COLOR,YELLOW,cbuf,16,1);
- }
- delay_ms(1500);
- }
复制代码
|