黑夜11:
給你個1602的菜單顯示界面,哈哈#ifndef_Menu_#define_Menu_#include"Function.h"//功能函數(shù)#include//==================================================//LCD1602多級菜單顯示//BY:JH單片機//Ifyouwanttousetheprogramortheprogramreferencedinthearticle,//pleasespecifyinwhichdataandproceduresfromJHMCU.com////Web:www.JHMCU.com出自傻孩子菜單界面//==================================================#definekeyin(P1IN&0x0f)#defineADD0xfb//上頁#defineSUB0xf7//下頁#defineSET0x0e//設置、確定#defineBACK0x0d//返回#defineNull0//菜單目錄結構體聲明structMenuItemMainMenu_zhu[2];structMenuItemMainMenu[7];structMenuItemPriority_Menu[2];structMenuItemBaud_Menu[6];structMenuItemPmax_Menu[1];structMenuItemBuzzer_Menu[2];structMenuItemAbout_Menu[2];unsignedcharkeysacn(void);voidShowMenu();voidChangeMenu(unsignedcharkeynum);voidL_R_Move();voidBuzzer_ON(void);voidBuzzer_OFF(void);voidExit_o(void);//菜單使用的全局變量#defineLcdMaxLine2//定義LCD最多顯示菜單數(shù)目structMenuItem(*MenuPoint)=MainMenu_zhu;//結構體菜單指針指向主菜單constunsignedcharshuzi[10]={"0123456789"};//固定字符串//constunsignedcharyt[16]={"T:24.3°P:510W"};//15個字符串unsignedcharyu[16]={"52400W"};//可更改字符串//unsignedcharBuz_flag=1;unsignedcharDisplayStart=0;//顯示菜單的開始位置unsignedcharUserChoose=0;//用戶的選擇unsignedcharDisplayPoint=0;//顯示菜單的編號unsignedcharR_L_cnt=0;//全局變量unsignedcharMaxItems=0;//菜單的數(shù)量unsignedcharUp_Down=0;//==========================================================================//目錄結構體定義//==========================================================================structMenuItem{unsignedcharMenuCount;//菜單的數(shù)目unsignedchar*DisplayString;//顯示的字符串void(*Subs)();//菜單指向的功能函數(shù)使用方法:Subs=&函數(shù)名字;structMenuItem*ChildrenMenus;//子節(jié)點structMenuItem*ParentMenus;//父節(jié)點unsignedcharType_o;//顯示類型};//==========================================================================//菜單結構體鏈表//==========================================================================//主界面顯示structMenuItemMainMenu_zhu[2]={{2,"Systemis",NullSubs,MainMenu,MainMenu_zhu,0x01},//->顯示主界面{2,"beingtested",NullSubs,MainMenu,MainMenu_zhu,0x01},//->顯示主界面};//==========================================================================//菜單結構體鏈表//==========================================================================//主菜單-第一級菜單structMenuItemMainMenu[7]=//結構體主菜單{{7,"S/N_Priority",NullSubs,Priority_Menu,Null,0x00},//->逆變優(yōu)先級設置{7,"SetBaudRate",NullSubs,Baud_Menu,Null,0x00},//->設置波特率{7,"SetPmax",NullSubs,Pmax_Menu,Null,0x00},//->設置最大功率{7,"BuzzerSW",NullSubs,Buzzer_Menu,Null,0x00},//->蜂鳴器開關{7,"Exit",NullSubs,MainMenu_zhu,Null,0x00},//->退出(返回主界面){7,"About",NullSubs,About_Menu,Null,0x00},//->關于{7,"Power_off",Power_off,Null,Null,0x00},//->關機};structMenuItemPriority_Menu[2]=//優(yōu)先級菜單{{2,"ElectricCity",NullSubs,Null,MainMenu,0x00},{2,"Inverter",NullSubs,Null,MainMenu,0x00},};structMenuItemBaud_Menu[6]=//波特率菜單{{6,"2400",NullSubs,Null,MainMenu,0x00},{6,"4800",NullSubs,Null,MainMenu,0x00},{6,"9600",NullSubs,Null,MainMenu,0x00},{6,"19200",NullSubs,Null,MainMenu,0x00},{6,"38400",NullSubs,Null,MainMenu,0x00},{6,"76800",NullSubs,Null,MainMenu,0x00},};structMenuItemPmax_Menu[1]=//最大功率設置{{1,yu,L_R_Move,Null,MainMenu,0x02},};structMenuItemBuzzer_Menu[2]=//蜂鳴器開關{{2,"BuzzerON",Buzzer_ON,Null,MainMenu,0x00},{2,"BuzzerOFF",Buzzer_OFF,Null,MainMenu,0x00},};structMenuItemAbout_Menu[2]=//關于{{2,"Smallraccoon",NullSubs,Null,MainMenu,0x00},//小浣熊{2,"Electronics",NullSubs,Null,MainMenu,0x00},//電子};unsignedcharkeysacn(void)//{unsignedchartemp,k_num;if(keyin!=0x0f)//鍵值有改變{IE1|=WDTIE;//開看門狗中斷_NOP();//延時消抖if(keyin!=0x0f)//再次檢測按鍵狀態(tài){temp=keyin;while(keyin!=0x0f);//等待按鍵被放開IE1&=~WDTIE;//關閉看門狗中斷P6OUT|=BIT7;//輸出高電平switch(temp)//轉換鍵值{case0x0e://設置、確定k_num=SET;break;case0x0d://返回k_num=BACK;break;case0x0b://上頁k_num=ADD;break;case0x07://下頁k_num=SUB;break;default:k_num=Null;break;}}}returnk_num;//輸出鍵值}//==================================================//功能能函數(shù)//INPUT://OUTPUT://FUNCTION://==================================================voidPower_off(void)//關機程序{;//P2OUT^=BIT0;//燈全滅}voidBuzzer_ON(void){_EINT();}voidBuzzer_OFF(void){_DINT();}//==================================================//最大功率設置光標移動函數(shù)//INPUT://OUTPUT://FUNCTION://==================================================voidL_R_Move(){DispStr(0,1,"Maximumpower");//顯示最大功率字符if(++R_L_cnt>4)R_L_cnt=0;//右移5次//P2OUT^=BIT1;//燈全滅}//==================================================//LCD1602菜單顯示通用函數(shù)//INPUT:結構體鏈表,UserChoose//OUTPUT:NONE//FUNCTION:LCD1602液晶顯示屏上顯示菜單功能//==================================================voidShowMenu(){for(unsignedchari=0;i