久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32 ILI9325 TFT驅動代碼 多級菜單程序 [打印本頁]

作者: sr861126    時間: 2022-5-10 15:13
標題: STM32 ILI9325 TFT驅動代碼 多級菜單程序
  ILI9325驅動代碼,可以測試

單片機源程序如下:
  1. /******************** STM32模板 ***************************
  2. * 文 件 名                : main.c
  3. * 作        者           : 偉哥
  4. * 創建日期          : 2012.8.3
  5. * 描        述                : 主文件
  6. * 版        本                : V1.0
  7. * 歷史記錄          : 暫無
  8. ***********************************************************/
  9. /*--------------------------- 頭文件包含 --------------------------------------*/
  10. /********************************************************************************

  11.              A_Item1                                           A_Item2
  12.            /         \                                                          /                \
  13.         B_Item1       B_Item2(B1Item)                        B_Item3       B_Item4(B2Item)
  14.         /    \                          |                                   /      \              |
  15. C_Item1 C_Item2          C_Item3                                 C_Item4   C_Item5    C_Item6
  16.   (C1_Item)                 (C2_Item)                               (C3_Item)            (C4_Item)

  17. ********************************************************************************/
  18. #include "systeminit.h"

  19. int main(void)
  20. {
  21.         
  22.         SystemInit();                                        //配置系統主頻為72MHz
  23.         ILI9325_Init();                                        //彩屏初始化
  24.         ILI9325_Clear(WHITE);                         //將屏刷為白色
  25.         ConfigExtInterrupt();                        //配置中斷
  26.         ConfigKeyPort();                                //配置按鍵端口
  27.         
  28.            DispCrtMenu(A_Item);                        //顯示初級菜單

  29.         while(1)                                                   
  30.         {
  31.                 DelayMs(2000);                                //--演示效果
  32.         }
  33. }
復制代碼
  1. #include "menu.h"
  2. /**********************************************
  3. struct MenuItem
  4. {
  5.         char MenuDpth;                                         //當前菜單深度
  6.         unsigned char *str;                                  //菜單字符串數組
  7.         unsigned int x;                                         //字符串顯示的X軸坐標
  8.         unsigned int y;                                         //字符串顯示的Y軸坐標
  9.         char  MenuCount;                                 //當前菜單索引數目
  10.         char  MenuIdex;                                         //當前菜單索引
  11.         void(*Subs)();                                     //菜單確定時需要執行的功能的函數指針(可以為空)
  12.         void(*Back)();                                         //菜單返回時需要執行的功能的函數指針(可以為空)
  13. //        void(*Run)();                                         //在菜單的某層一直要運行的函數指針
  14.         struct MenuItem *ChildrenMenus;  //孩子指針(表明選擇該菜單項后,跳轉到哪個子菜單去)
  15.         struct MenuItem *ParentMenus;    //父指針(表明選擇返回后,跳轉到哪個菜單去)
  16. };
  17. **********************************************/
  18. /*全局變量聲明*/
  19. char ListCount = 1;
  20. char br;

  21. struct MenuItem A_Item[] =
  22. {
  23.         {1,"A_Item1",10,20,2,1,Go_MenuB1,NULL,B1_Item,NULL},
  24.         {1,"A_Item2",10,60,2,1,Go_MenuB2,NULL,B2_Item,NULL}
  25. };

  26. struct MenuItem B1_Item[] =
  27. {
  28.         {2,"B_Item1",10,20,2,1,Go_MenuC1,Go_MenuA,C1_Item,A_Item},
  29.         {2,"B_Item2",10,60,2,1,Go_MenuC2,Go_MenuA,C2_Item,A_Item}
  30. };

  31. struct MenuItem B2_Item[] =
  32. {
  33.         {2,"B_Item3",10,20,2,1,Go_MenuC3,Go_MenuA,C3_Item,A_Item},
  34.         {2,"B_Item4",10,60,2,1,Go_MenuC4,Go_MenuA,C4_Item,A_Item}
  35. };


  36. struct MenuItem C1_Item[] =
  37. {
  38.         {3,"C_Item1",10,20,2,1,NULL,Go_MenuB1,NULL,B1_Item},
  39.         {3,"c_Item2",10,60,2,1,NULL,Go_MenuB1,NULL,B1_Item}

  40. };

  41. struct MenuItem C2_Item[] =
  42. {

  43.         { 3,"C_Item3",10,20,1,1,NULL,Go_MenuB1,NULL,B1_Item}

  44. };

  45. struct MenuItem C3_Item[] =
  46. {
  47.         { 3,"C_Item4",10,20,2,1,NULL,Go_MenuB2,NULL,B2_Item},
  48.         { 3,"C_Item5",10,60,2,1,NULL,Go_MenuB2,NULL,B2_Item}
  49. };

  50. struct MenuItem C4_Item[] =
  51. {
  52.         { 3,"C_Item6",10,20,1,1,NULL,Go_MenuB2,NULL,B2_Item}
  53. };


  54. void Go_MenuA(void)
  55. {
  56.         LCD_DispStr(A_Item[0].str,A_Item[0].x,A_Item[0].y,LARGE,BLACK,WHITE);        
  57.         LCD_DispStr(A_Item[1].str,A_Item[1].x,A_Item[1].y,LARGE,BLACK,WHITE);

  58. }

  59. void Go_MenuB1(void)
  60. {
  61.         LCD_DispStr(B1_Item[0].str,B1_Item[0].x,B1_Item[0].y,LARGE,BLACK,WHITE);        
  62.         LCD_DispStr(B1_Item[1].str,B1_Item[1].x,B1_Item[1].y,LARGE,BLACK,WHITE);
  63. }

  64. void Go_MenuB2(void)
  65. {
  66.         LCD_DispStr(B2_Item[0].str,B2_Item[0].x,B2_Item[0].y,LARGE,BLACK,WHITE);        
  67.         LCD_DispStr(B2_Item[1].str,B2_Item[1].x,B2_Item[1].y,LARGE,BLACK,WHITE);
  68. }

  69. void Go_MenuC1(void)
  70. {
  71.         LCD_DispStr(C1_Item[0].str,C1_Item[0].x,C1_Item[0].y,LARGE,BLACK,WHITE);        
  72.         LCD_DispStr(C1_Item[1].str,C1_Item[1].x,C1_Item[1].y,LARGE,BLACK,WHITE);
  73. }

  74. void Go_MenuC2(void)
  75. {
  76.         
  77.         LCD_DispStr(C2_Item[0].str,C2_Item[0].x,C2_Item[0].y,LARGE,BLACK,WHITE);        

  78. }

  79. void Go_MenuC3(void)
  80. {
  81.         
  82.         LCD_DispStr(C3_Item[0].str,C3_Item[0].x,C3_Item[0].y,LARGE,BLACK,WHITE);        
  83.         LCD_DispStr(C3_Item[1].str,C3_Item[1].x,C3_Item[1].y,LARGE,BLACK,WHITE);

  84. }

  85. void Go_MenuC4(void)
  86. {
  87.         LCD_DispStr(C4_Item[0].str,C4_Item[0].x,C4_Item[0].y,LARGE,BLACK,WHITE);
  88. }


  89. //顯示當前菜單函數
  90. void DispCrtMenu(struct MenuItem* menu)           //傳遞的是結構體指針
  91. {
  92.     char i;
  93.         unsigned int color = WHITE;                                //color初始化為白色

  94.         br = (*menu).MenuCount;

  95.         (*menu).MenuIndex = ListCount;

  96.         ClearScreen(WHITE);                                                //將屏刷為白色

  97.         LCD_Fill_Rect(0, 12 + 32*((*menu).MenuIndex-1), 239, 44+32*((*menu).MenuIndex-1), BLUE);
  98.         
  99.         for(i=0;i<br;i++)                                                //顯示出所有菜單
  100.         {
  101.                 if((*menu).MenuIndex == i+1)
  102.                 {
  103.                         
  104.                         color = BLUE;                                        //顏色變為藍色
  105.                 }

  106.                 LCD_DispStr((*(menu+i)).str,10,20+32*i,LARGE,BLACK,color);
  107.                 color = WHITE;

  108.         }
  109.                
  110. }
復制代碼

Keil代碼下載,僅供參考:
多級菜單.7z (434.05 KB, 下載次數: 90)


作者: 6874577    時間: 2022-7-20 20:14
感謝樓主,正愁控制不知道怎么去做
作者: wxh126    時間: 2022-11-4 13:46

感謝樓主,正愁控制不知道怎么去做
作者: Longan.Wang    時間: 2022-12-6 11:13
還可以,繼續




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产一级一级 | 国产综合精品 | 日韩综合在线 | 91一区二区三区在线观看 | 最近日韩中文字幕 | 色资源在线观看 | 国产精品视频一二三区 | 一级黄色影片在线观看 | 日韩中文字幕 | 国产高清视频在线 | 日韩伦理一区二区三区 | 日操操| 日韩中文字幕网 | 91精品国产色综合久久 | 欧美1区| 久久一 | 亚洲综合日韩精品欧美综合区 | 中文字幕一区二区三区不卡 | 久久久久久电影 | 人妖一区| av大片| 日韩a v在线免费观看 | 亚洲成人毛片 | 一区二区三区日韩精品 | 免费在线日韩 | 精品国产乱码久久久 | 国产真实乱对白精彩久久小说 | 91pao对白在线播放 | 奇米超碰在线 | 91免费版在线观看 | 欧美日韩在线一区二区 | 久久久久久九九九九九九 | 国产伦一区二区三区视频 | 国产在线观看网站 | 久久精品日产第一区二区三区 | 一级黄色片美国 | 999视频| 欧美极品少妇xxxxⅹ免费视频 | 免费观看色| 久久精品欧美一区二区三区不卡 | 91www在线观看 |