找回密码
 立即注册
查看: 428|回复: 5

STC32G液晶应用程序

[复制链接]

该用户从未签到

1

主题

2

回帖

27

积分

新手上路

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

使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 202 天

    [LV.7]常住居民III

    9

    主题

    932

    回帖

    3631

    积分

    论坛元老

    积分
    3631
    发表于 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. }
    复制代码




    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:45
  • 签到天数: 194 天

    [LV.7]常住居民III

    5

    主题

    49

    回帖

    775

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 198 天

    [LV.7]常住居民III

    0

    主题

    90

    回帖

    839

    积分

    高级会员

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

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    27

    积分

    新手上路

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

    使用道具 举报

  • TA的每日心情
    开心
    前天 15:58
  • 签到天数: 139 天

    [LV.7]常住居民III

    11

    主题

    101

    回帖

    468

    积分

    中级会员

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-13 08:59 , Processed in 0.096326 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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