找回密码
 立即注册
查看: 1094|回复: 6

STC32G液晶应用程序

[复制链接]

1

主题

2

回帖

27

积分

新手上路

积分
27
发表于 2023-10-17 16:42:12 | 显示全部楼层 |阅读模式
TFT液晶应用学习中
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-02 00:29:54

10

主题

1159

回帖

5121

积分

论坛元老

积分
5121
发表于 2023-10-28 08:33:31 | 显示全部楼层


STC32G-DEMO-CODE-V9.6-20230425

37-2.4寸ILI9341驱动TFT显示屏实验程序

main.c
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用          */
  11. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
  12. /*---------------------------------------------------------------------*/
  13. //=========================================电源接线================================================//
  14. //VDD接DC 3.3V电源
  15. //GND接地
  16. //=======================================液晶屏数据线接线==========================================//
  17. //本模块数据总线类型为8位并口
  18. //液晶屏模块               STC32G
  19. // LCD_D0~D7     接       P60~P67        //液晶屏8位数据线
  20. //=======================================液晶屏控制线接线==========================================//
  21. //液晶屏模块               STC32G
  22. // LCD_RS        接        P45           //数据/命令选择控制信号
  23. // LCD_RD        接        P44           //读控制信号
  24. // LCD_RST       接        P43           //复位信号
  25. // LCD_WR        接        P42           //写控制信号
  26. // LCD_CS        接        P34           //片选控制信号
  27. //================================================================================================//
  28. // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
  29. //**************************************************************************************************/
  30. #include "sys.h"
  31. #include "lcd.h"
  32. #include "gui.h"
  33. #include "test.h"
  34. //主函数
  35. void main(void)
  36. {
  37.     WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  38.     EAXFR = 1; //扩展寄存器(XFR)访问使能
  39.     CKCON = 0; //提高访问XRAM速度
  40.         //液晶屏初始化
  41.         LCD_Init();
  42.         //循环进行各项测试       
  43.         while(1)
  44.         {       
  45.                 main_test();                 //测试主界面
  46.                 Test_Read();     //读ID和颜色值测试
  47.                 Test_Color();                  //简单刷屏填充测试
  48.                 Test_FillRec();                //GUI矩形绘图测试
  49.                 Test_Circle();                 //GUI画圆测试
  50.                 Test_Triangle();   //GUI三角形填充测试
  51.                 English_Font_test();//英文字体示例测试
  52.                 Chinese_Font_test();//中文字体示例测试
  53.                 Pic_test();                        //图片显示示例测试
  54.                 Rotate_Test();  //屏幕旋转测试
  55.         }   
  56. }
复制代码
test.h
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用          */
  11. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
  12. /*---------------------------------------------------------------------*/
  13. //=========================================电源接线================================================//
  14. //VDD接DC 3.3V电源
  15. //GND接地
  16. //=======================================液晶屏数据线接线==========================================//
  17. //本模块数据总线类型为8位并口
  18. //液晶屏模块               STC32G
  19. // LCD_D0~D7     接       P60~P67        //液晶屏8位数据线
  20. //=======================================液晶屏控制线接线==========================================//
  21. //液晶屏模块               STC32G
  22. // LCD_RS        接        P45           //数据/命令选择控制信号
  23. // LCD_RD        接        P44           //读控制信号
  24. // LCD_RST       接        P43           //复位信号
  25. // LCD_WR        接        P42           //写控制信号
  26. // LCD_CS        接        P34           //片选控制信号
  27. //================================================================================================//
  28. // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
  29. //**************************************************************************************************/
  30. #ifndef __TEST_H__
  31. #define __TEST_H__
  32. void DrawTestPage(u8 *str);
  33. void Test_Color(void);
  34. void Test_FillRec(void);
  35. void Test_Circle(void);
  36. void Test_Triangle(void);
  37. void English_Font_test(void);
  38. void Chinese_Font_test(void);
  39. void Pic_test(void);
  40. void Load_Drow_Dialog(void);
  41. void Touch_Test(void);
  42. void main_test(void);
  43. void Rotate_Test(void);
  44. void Test_Read(void);
  45. #endif
复制代码
test.c
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用          */
  11. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
  12. /*---------------------------------------------------------------------*/
  13. //=========================================电源接线================================================//
  14. //VDD接DC 3.3V电源
  15. //GND接地
  16. //=======================================液晶屏数据线接线==========================================//
  17. //本模块数据总线类型为8位并口
  18. //液晶屏模块               STC32G
  19. // LCD_D0~D7     接       P60~P67        //液晶屏8位数据线
  20. //=======================================液晶屏控制线接线==========================================//
  21. //液晶屏模块               STC32G
  22. // LCD_RS        接        P45           //数据/命令选择控制信号
  23. // LCD_RD        接        P44           //读控制信号
  24. // LCD_RST       接        P43           //复位信号
  25. // LCD_WR        接        P42           //写控制信号
  26. // LCD_CS        接        P34           //片选控制信号
  27. //================================================================================================//
  28. // 本实验测试使用的2.4寸320*240的并口彩屏,是在淘宝店 https://kcer001.taobao.com/ 提供的样品彩屏上测试通过的
  29. //**************************************************************************************************/
  30. #include <stdio.h>
  31. #include "lcd.h"
  32. #include "string.h"
  33. #include "sys.h"
  34. #include "gui.h"
  35. #include "test.h"
  36. #include "pic.h"
  37. //========================variable==========================//
  38. u16 ColorTab[5]={RED,GREEN,BLUE,YELLOW,BRED};//定义颜色数组
  39. u16 ColornTab[8]={RED,MAGENTA,GREEN,DARKBLUE,BLUE,BLACK,LIGHTGREEN};
  40. //=====================end of variable======================//
  41. /*****************************************************************************
  42. * @name       :void DrawTestPage(u8 *str)
  43. * @date       :2018-08-09
  44. * @function   :Drawing test interface
  45. * @parameters :str:the start address of the Chinese and English strings
  46. * @retvalue   :None
  47. ******************************************************************************/
  48. void DrawTestPage(u8 *str)
  49. {
  50.         //绘制固定栏up
  51.         LCD_Clear(WHITE);
  52.         LCD_Fill(0,0,lcddev.width,20,BLUE);
  53.         //绘制固定栏down
  54.         LCD_Fill(0,lcddev.height-20,lcddev.width,lcddev.height,BLUE);
  55.         POINT_COLOR=WHITE;
  56.         Gui_StrCenter(0,2,WHITE,BLUE,str,16,1);//居中显示
  57.         Gui_StrCenter(0,lcddev.height-18,WHITE,BLUE,"www.STCMCUDATA.com",16,1);//居中显示
  58.         //绘制测试区域
  59.         //LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  60. }
  61. /*****************************************************************************
  62. * @name       :void main_test(void)
  63. * @date       :2018-08-09
  64. * @function   :Drawing the main Interface of the Comprehensive Test Program
  65. * @parameters :None
  66. * @retvalue   :None
  67. ******************************************************************************/
  68. void main_test(void)
  69. {
  70.         DrawTestPage("2.4寸TFT屏测试程序");
  71.        
  72.         Gui_StrCenter(0,30,RED,BLUE,"宏晶科技",16,1);//居中显示
  73.         Gui_StrCenter(0,60,RED,BLUE,"STC MCU Limited",16,1);//居中显示       
  74.         Gui_StrCenter(0,90,MAGENTA,BLUE,"Tel: 86-0513-55012928",16,1);//居中显示
  75.         Gui_StrCenter(0,120,BLUE,BLUE,"www.STCAI.com",16,1);//居中显示
  76.         delay_ms(1500);               
  77.         delay_ms(1500);
  78. }
  79. /*****************************************************************************
  80. * @name       :void Test_Color(void)
  81. * @date       :2018-08-09
  82. * @function   :Color fill test(white,black,red,green,blue)
  83. * @parameters :None
  84. * @retvalue   :None
  85. ******************************************************************************/
  86. void Test_Color(void)
  87. {
  88.         //DrawTestPage("测试1:纯色填充测试");
  89.         LCD_Fill(0,0,lcddev.width,lcddev.height,WHITE);
  90.         Show_Str(20,30,BLUE,YELLOW,"BL Test",16,1);delay_ms(800);
  91.         LCD_Fill(0,0,lcddev.width,lcddev.height,RED);
  92.         Show_Str(20,30,BLUE,YELLOW,"RED ",16,1);delay_ms(800);
  93.         LCD_Fill(0,0,lcddev.width,lcddev.height,GREEN);
  94.         Show_Str(20,30,BLUE,YELLOW,"GREEN ",16,1);delay_ms(800);
  95.         LCD_Fill(0,0,lcddev.width,lcddev.height,BLUE);
  96.         Show_Str(20,30,RED,YELLOW,"BLUE ",16,1);delay_ms(800);
  97. }
  98. /*****************************************************************************
  99. * @name       :void Test_FillRec(void)
  100. * @date       :2018-08-09
  101. * @function   :Rectangular display and fill test
  102.                                                                 Display red,green,blue,yellow,pink rectangular boxes in turn,
  103.                                                                 1500 milliseconds later,
  104.                                                                 Fill the rectangle in red,green,blue,yellow and pink in turn
  105. * @parameters :None
  106. * @retvalue   :None
  107. ******************************************************************************/
  108. void Test_FillRec(void)
  109. {
  110.         u8 i=0;
  111.         DrawTestPage("测试3:GUI矩形填充测试");
  112.         LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  113.         for (i=0; i<5; i++)
  114.         {
  115.                 POINT_COLOR=ColorTab[i];
  116.                 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);
  117.         }
  118.         delay_ms(1500);       
  119.         LCD_Fill(0,20,lcddev.width-1,lcddev.height-20,WHITE);
  120.         for (i=0; i<5; i++)
  121.         {
  122.                 POINT_COLOR=ColorTab[i];
  123.                 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);                
  124.         }
  125.         delay_ms(1500);
  126. }
  127. /*****************************************************************************
  128. * @name       :void Test_Circle(void)
  129. * @date       :2018-08-09
  130. * @function   :circular display and fill test
  131.                                                                 Display red,green,blue,yellow,pink circular boxes in turn,
  132.                                                                 1500 milliseconds later,
  133.                                                                 Fill the circular in red,green,blue,yellow and pink in turn
  134. * @parameters :None
  135. * @retvalue   :None
  136. ******************************************************************************/
  137. void Test_Circle(void)
  138. {
  139.         u8 i=0;
  140.         DrawTestPage("测试4:GUI画圆填充测试");
  141.         LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  142.         for (i=0; i<5; i++)  
  143.                 gui_circle(lcddev.width/2-80+(i*25),lcddev.height/2-50+(i*25),ColorTab[i],30,0);
  144.         delay_ms(1500);       
  145.         LCD_Fill(0,20,lcddev.width-1,lcddev.height-20,WHITE);
  146.         for (i=0; i<5; i++)
  147.                   gui_circle(lcddev.width/2-80+(i*25),lcddev.height/2-50+(i*25),ColorTab[i],30,1);
  148.         delay_ms(1500);
  149. }
  150. /*****************************************************************************
  151. * @name       :void Test_Triangle(void)
  152. * @date       :2018-08-09
  153. * @function   :triangle display and fill test
  154.                                                                 Display red,green,blue,yellow,pink triangle boxes in turn,
  155.                                                                 1500 milliseconds later,
  156.                                                                 Fill the triangle in red,green,blue,yellow and pink in turn
  157. * @parameters :None
  158. * @retvalue   :None
  159. ******************************************************************************/
  160. void Test_Triangle(void)
  161. {
  162.         u8 i=0;
  163.         DrawTestPage("测试5:GUI Triangle填充测试");
  164.         LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  165.         for(i=0;i<5;i++)
  166.         {
  167.                 POINT_COLOR=ColorTab[i];
  168.                 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));
  169.         }
  170.         delay_ms(1500);       
  171.         LCD_Fill(0,20,lcddev.width-1,lcddev.height-20,WHITE);
  172.         for(i=0;i<5;i++)
  173.         {
  174.                 POINT_COLOR=ColorTab[i];
  175.                 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));
  176.         }
  177.         delay_ms(1500);
  178. }
  179. /*****************************************************************************
  180. * @name       :void English_Font_test(void)
  181. * @date       :2018-08-09
  182. * @function   :English display test
  183. * @parameters :None
  184. * @retvalue   :None
  185. ******************************************************************************/
  186. void English_Font_test(void)
  187. {
  188.         DrawTestPage("测试6:英文显示测试");
  189.         POINT_COLOR=RED;
  190.         BACK_COLOR=BLUE;
  191.         LCD_ShowString(10,30,12,"6X12:abcdefghijklmnopqrstuvwxyz",0);
  192.         LCD_ShowString(10,45,12,"6X12:ABCDEFGHIJKLMNOP0123456789",1);
  193.         LCD_ShowString(10,60,12,"6X12:~!@#$%^&*()_+{}:<>?/|-+.",0);
  194.         LCD_ShowString(10,80,16,"8X16:abcdefghijklmnopqrstuvwxyz",0);
  195.         LCD_ShowString(10,100,16,"8X16:ABCDEFGHIJKLMNOP0123456789",1);
  196.         LCD_ShowString(10,120,16,"8X16:~!@#$%^&*()_+{}:<>?/|-+.",0);
  197.         delay_ms(1500);
  198. }
  199. /*****************************************************************************
  200. * @name       :void Chinese_Font_test(void)
  201. * @date       :2018-08-09
  202. * @function   :chinese display test
  203. * @parameters :None
  204. * @retvalue   :None
  205. ******************************************************************************/
  206. void Chinese_Font_test(void)
  207. {       
  208.         DrawTestPage("测试7:中文显示测试");
  209.         Show_Str(10,30,BLUE,YELLOW,"16X16:江苏国芯科技有限公司欢迎您",16,0);
  210.         Show_Str(10,50,BLUE,YELLOW,"16X16:Welcome宏晶科技",16,0);
  211.         Show_Str(10,70,BLUE,YELLOW,"24X24:深圳市中文测试",24,1);
  212.         Show_Str(10,100,BLUE,YELLOW,"32X32:字体测试",32,1);
  213.         delay_ms(1500);
  214. }
  215. /*****************************************************************************
  216. * @name       :void Pic_test(void)
  217. * @date       :2018-08-09
  218. * @function   :picture display test
  219. * @parameters :None
  220. * @retvalue   :None
  221. ******************************************************************************/
  222. void Pic_test(void)
  223. {
  224.         DrawTestPage("测试8:图片显示测试");
  225.         //LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  226.         Gui_Drawbmp16(30,30,gImage_qq);
  227.         Show_Str(30+12,75,BLUE,YELLOW,"QQ",16,1);
  228.         Gui_Drawbmp16(90,30,gImage_qq);
  229.         Show_Str(90+12,75,BLUE,YELLOW,"QQ",16,1);
  230.         Gui_Drawbmp16(150,30,gImage_qq);
  231.         Show_Str(150+12,75,BLUE,YELLOW,"QQ",16,1);
  232.         delay_ms(1500);
  233. }
  234. /*****************************************************************************
  235. * @name       :void Rotate_Test(void)
  236. * @date       :2018-08-09
  237. * @function   :rotate test
  238. * @parameters :None
  239. * @retvalue   :None
  240. ******************************************************************************/
  241. void Rotate_Test(void)
  242. {
  243.         u8 i=0;
  244.         u8 *Direction[4]={"Rotation:0","Rotation:90","Rotation:180","Rotation:270"};
  245.        
  246.         for(i=0;i<4;i++)
  247.         {
  248.         LCD_direction(i);
  249.         DrawTestPage("测试9:屏幕角度测试");
  250.         Show_Str(20,30,BLUE,YELLOW,Direction[i],16,1);
  251.         Gui_Drawbmp16(30,50,gImage_qq);
  252.         delay_ms(1000);delay_ms(1000);
  253.         }
  254.         LCD_direction(USE_HORIZONTAL);
  255. }
  256. /*****************************************************************************
  257. * @name       :void Test_Read(void)
  258. * @date       :2018-11-13
  259. * @function   :read test
  260. * @parameters :None
  261. * @retvalue   :None
  262. ******************************************************************************/
  263. void Test_Read(void)
  264. {
  265.         u16 lcd_id,color;
  266.         u8 buf[10] = {0},i;
  267.         u8 cbuf[20] = {0};
  268.         DrawTestPage("测试2:读ID和颜色值测试");
  269.         LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
  270.         lcd_id = LCD_Read_ID();
  271.         sprintf((char *)buf,"ID:0x%x",lcd_id);
  272.         Show_Str(50,25,BLUE,YELLOW,buf,16,1);
  273.         for (i=0; i<7; i++)
  274.         {
  275.                 POINT_COLOR=ColornTab[i];
  276.                 LCD_DrawFillRectangle(40-10,55+i*25-10,40+10,55+i*25+10);
  277.                 color = LCD_ReadPoint(40,55+i*25);
  278.                 sprintf((char *)cbuf,"read color:0x%04x",color);
  279.                 Show_Str(40+20,55+i*25-8,POINT_COLOR,YELLOW,cbuf,16,1);
  280.         }
  281.         delay_ms(1500);
  282. }
复制代码




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:489
  • 最近打卡:2025-05-02 10:56:10

6

主题

49

回帖

769

积分

高级会员

积分
769
发表于 2023-11-3 22:16:56 来自手机 | 显示全部楼层
看都看不懂对我来说不重要 但是代码看着很舒服,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-02 00:23:56

1

主题

114

回帖

1699

积分

金牌会员

积分
1699
发表于 2023-11-9 13:07:33 | 显示全部楼层
感谢,你这块屏没有触摸吗
回复 支持 反对

使用道具 举报 送花

1

主题

2

回帖

27

积分

新手上路

积分
27
发表于 2023-11-10 14:06:42 | 显示全部楼层
学习了,谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:267
  • 最近打卡:2025-04-22 07:35:24

13

主题

109

回帖

342

积分

中级会员

积分
342
发表于 2023-12-4 10:21:32 来自手机 | 显示全部楼层
学习了
回复

使用道具 举报 送花

0

主题

1

回帖

12

积分

新手上路

积分
12
发表于 2024-7-31 22:16:16 | 显示全部楼层
触摸一直调不通
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 18:11 , Processed in 0.224385 second(s), 93 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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