ILI9325驅動代碼,可以測試
單片機源程序如下:
- /******************** STM32模板 ***************************
- * 文 件 名 : main.c
- * 作 者 : 偉哥
- * 創建日期 : 2012.8.3
- * 描 述 : 主文件
- * 版 本 : V1.0
- * 歷史記錄 : 暫無
- ***********************************************************/
- /*--------------------------- 頭文件包含 --------------------------------------*/
- /********************************************************************************
- A_Item1 A_Item2
- / \ / \
- B_Item1 B_Item2(B1Item) B_Item3 B_Item4(B2Item)
- / \ | / \ |
- C_Item1 C_Item2 C_Item3 C_Item4 C_Item5 C_Item6
- (C1_Item) (C2_Item) (C3_Item) (C4_Item)
- ********************************************************************************/
- #include "systeminit.h"
- int main(void)
- {
-
- SystemInit(); //配置系統主頻為72MHz
- ILI9325_Init(); //彩屏初始化
- ILI9325_Clear(WHITE); //將屏刷為白色
- ConfigExtInterrupt(); //配置中斷
- ConfigKeyPort(); //配置按鍵端口
-
- DispCrtMenu(A_Item); //顯示初級菜單
- while(1)
- {
- DelayMs(2000); //--演示效果
- }
- }
復制代碼- #include "menu.h"
- /**********************************************
- struct MenuItem
- {
- char MenuDpth; //當前菜單深度
- unsigned char *str; //菜單字符串數組
- unsigned int x; //字符串顯示的X軸坐標
- unsigned int y; //字符串顯示的Y軸坐標
- char MenuCount; //當前菜單索引數目
- char MenuIdex; //當前菜單索引
- void(*Subs)(); //菜單確定時需要執行的功能的函數指針(可以為空)
- void(*Back)(); //菜單返回時需要執行的功能的函數指針(可以為空)
- // void(*Run)(); //在菜單的某層一直要運行的函數指針
- struct MenuItem *ChildrenMenus; //孩子指針(表明選擇該菜單項后,跳轉到哪個子菜單去)
- struct MenuItem *ParentMenus; //父指針(表明選擇返回后,跳轉到哪個菜單去)
- };
- **********************************************/
- /*全局變量聲明*/
- char ListCount = 1;
- char br;
- struct MenuItem A_Item[] =
- {
- {1,"A_Item1",10,20,2,1,Go_MenuB1,NULL,B1_Item,NULL},
- {1,"A_Item2",10,60,2,1,Go_MenuB2,NULL,B2_Item,NULL}
- };
- struct MenuItem B1_Item[] =
- {
- {2,"B_Item1",10,20,2,1,Go_MenuC1,Go_MenuA,C1_Item,A_Item},
- {2,"B_Item2",10,60,2,1,Go_MenuC2,Go_MenuA,C2_Item,A_Item}
- };
- struct MenuItem B2_Item[] =
- {
- {2,"B_Item3",10,20,2,1,Go_MenuC3,Go_MenuA,C3_Item,A_Item},
- {2,"B_Item4",10,60,2,1,Go_MenuC4,Go_MenuA,C4_Item,A_Item}
- };
- struct MenuItem C1_Item[] =
- {
- {3,"C_Item1",10,20,2,1,NULL,Go_MenuB1,NULL,B1_Item},
- {3,"c_Item2",10,60,2,1,NULL,Go_MenuB1,NULL,B1_Item}
- };
- struct MenuItem C2_Item[] =
- {
- { 3,"C_Item3",10,20,1,1,NULL,Go_MenuB1,NULL,B1_Item}
- };
- struct MenuItem C3_Item[] =
- {
- { 3,"C_Item4",10,20,2,1,NULL,Go_MenuB2,NULL,B2_Item},
- { 3,"C_Item5",10,60,2,1,NULL,Go_MenuB2,NULL,B2_Item}
- };
- struct MenuItem C4_Item[] =
- {
- { 3,"C_Item6",10,20,1,1,NULL,Go_MenuB2,NULL,B2_Item}
- };
- void Go_MenuA(void)
- {
- LCD_DispStr(A_Item[0].str,A_Item[0].x,A_Item[0].y,LARGE,BLACK,WHITE);
- LCD_DispStr(A_Item[1].str,A_Item[1].x,A_Item[1].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuB1(void)
- {
- LCD_DispStr(B1_Item[0].str,B1_Item[0].x,B1_Item[0].y,LARGE,BLACK,WHITE);
- LCD_DispStr(B1_Item[1].str,B1_Item[1].x,B1_Item[1].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuB2(void)
- {
- LCD_DispStr(B2_Item[0].str,B2_Item[0].x,B2_Item[0].y,LARGE,BLACK,WHITE);
- LCD_DispStr(B2_Item[1].str,B2_Item[1].x,B2_Item[1].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuC1(void)
- {
- LCD_DispStr(C1_Item[0].str,C1_Item[0].x,C1_Item[0].y,LARGE,BLACK,WHITE);
- LCD_DispStr(C1_Item[1].str,C1_Item[1].x,C1_Item[1].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuC2(void)
- {
-
- LCD_DispStr(C2_Item[0].str,C2_Item[0].x,C2_Item[0].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuC3(void)
- {
-
- LCD_DispStr(C3_Item[0].str,C3_Item[0].x,C3_Item[0].y,LARGE,BLACK,WHITE);
- LCD_DispStr(C3_Item[1].str,C3_Item[1].x,C3_Item[1].y,LARGE,BLACK,WHITE);
- }
- void Go_MenuC4(void)
- {
- LCD_DispStr(C4_Item[0].str,C4_Item[0].x,C4_Item[0].y,LARGE,BLACK,WHITE);
- }
- //顯示當前菜單函數
- void DispCrtMenu(struct MenuItem* menu) //傳遞的是結構體指針
- {
- char i;
- unsigned int color = WHITE; //color初始化為白色
- br = (*menu).MenuCount;
- (*menu).MenuIndex = ListCount;
- ClearScreen(WHITE); //將屏刷為白色
- LCD_Fill_Rect(0, 12 + 32*((*menu).MenuIndex-1), 239, 44+32*((*menu).MenuIndex-1), BLUE);
-
- for(i=0;i<br;i++) //顯示出所有菜單
- {
- if((*menu).MenuIndex == i+1)
- {
-
- color = BLUE; //顏色變為藍色
- }
- LCD_DispStr((*(menu+i)).str,10,20+32*i,LARGE,BLACK,color);
- color = WHITE;
- }
-
- }
復制代碼
Keil代碼下載,僅供參考:
多級菜單.7z
(434.05 KB, 下載次數: 90)
2022-5-10 16:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|