標(biāo)題:
STM32 ILI9325 TFT驅(qū)動代碼 多級菜單程序
[打印本頁]
作者:
sr861126
時間:
2022-5-10 15:13
標(biāo)題:
STM32 ILI9325 TFT驅(qū)動代碼 多級菜單程序
ILI9325驅(qū)動代碼,可以測試
單片機(jī)源程序如下:
/******************** STM32模板 ***************************
* 文 件 名 : main.c
* 作 者 : 偉哥
* 創(chuàng)建日期 : 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(); //配置系統(tǒng)主頻為72MHz
ILI9325_Init(); //彩屏初始化
ILI9325_Clear(WHITE); //將屏刷為白色
ConfigExtInterrupt(); //配置中斷
ConfigKeyPort(); //配置按鍵端口
DispCrtMenu(A_Item); //顯示初級菜單
while(1)
{
DelayMs(2000); //--演示效果
}
}
復(fù)制代碼
#include "menu.h"
/**********************************************
struct MenuItem
{
char MenuDpth; //當(dāng)前菜單深度
unsigned char *str; //菜單字符串?dāng)?shù)組
unsigned int x; //字符串顯示的X軸坐標(biāo)
unsigned int y; //字符串顯示的Y軸坐標(biāo)
char MenuCount; //當(dāng)前菜單索引數(shù)目
char MenuIdex; //當(dāng)前菜單索引
void(*Subs)(); //菜單確定時需要執(zhí)行的功能的函數(shù)指針(可以為空)
void(*Back)(); //菜單返回時需要執(zhí)行的功能的函數(shù)指針(可以為空)
// void(*Run)(); //在菜單的某層一直要運(yùn)行的函數(shù)指針
struct MenuItem *ChildrenMenus; //孩子指針(表明選擇該菜單項后,跳轉(zhuǎn)到哪個子菜單去)
struct MenuItem *ParentMenus; //父指針(表明選擇返回后,跳轉(zhuǎn)到哪個菜單去)
};
**********************************************/
/*全局變量聲明*/
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);
}
//顯示當(dāng)前菜單函數(shù)
void DispCrtMenu(struct MenuItem* menu) //傳遞的是結(jié)構(gòu)體指針
{
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; //顏色變?yōu)樗{(lán)色
}
LCD_DispStr((*(menu+i)).str,10,20+32*i,LARGE,BLACK,color);
color = WHITE;
}
}
復(fù)制代碼
Keil代碼下載,僅供參考:
多級菜單.7z
(434.05 KB, 下載次數(shù): 90)
2022-5-10 16:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
6874577
時間:
2022-7-20 20:14
感謝樓主,正愁控制不知道怎么去做
作者:
wxh126
時間:
2022-11-4 13:46
感謝樓主,正愁控制不知道怎么去做
作者:
Longan.Wang
時間:
2022-12-6 11:13
還可以,繼續(xù)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1