第八讲:单片机驱动12864多级菜单设计(二)——主程序设计
/******************************************************
**作品:LCD12864多级菜单设计
**申明:转载请标明作品来源 知识产权归作者本人所有!
** 功能描述: LCD12864多级菜单设计
** 液晶:Proteus元件库—AMPIRE128X64(无字库)
** 作 者: 吴鉴鹰
** 日 期: 14.06.12
**作者所属单位:鉴鹰电子工作室
**交流QQ群: 第一群:198387118 第二群: 239316959 联系QQ:1811728618
** 更多内容可以关注微信公众号:单片机精讲吴鉴鹰 微信号:wujianying_danpianji
**申明:转载请标明作品来源 知识产权归作者吴鉴鹰所有!
- #include"inc/ComCtrol.h"
- #include"inc/Uart_Function.h"
- #include"inc/Short_variabledefine.h"
- #include"inc/WjMath_Fun.h"
- #include<reg51.h>
- #include"inc/Menu_Function_Display.h"
- #include"inc/Key_Function.h"
- #include"inc/Com_Diaplay_Function.h"
- #include"inc/Menufun_Array.h"
- #include"inc/Lcd_12864_Function.h"
- #include "inc/1302.h"
- //#include"inc/main.h"
- extern uFlag Menu_SysFlag;
- extern U8 KeyVal;
- extern U8 MenuIndexSaved;
- extern sMenuItem *pMenuSelect;
- extern code sMenuItem MenuRoot_L1[4];
- extern code sMenuItem Homepage[4];
- extern U8 code ascii[][32];
- extern char datastring[13]; ////存放时间的数组
- extern sMenuItem *pMenuSelect;//定义了一个结构体数组指针
- extern U8 code Hour[];
- extern U8 Chao_Flag;
- U8 Display_Time_Flag;
- U8 Cun_Sec_B;
- systemtime realtime;
- #define _DEBUG
- #ifdef _DEBUG
- /*************************************************************
- ** 函数名称:void main()
- ** 功能描述: 主函数
- ** 输 入:
- ** 输 出:
- **
- ** 全局变量:
- ** 调用模块:
- **备注:
- ** 作 者: 吴鉴鹰
- ** 日 期: 14.06.12
- **************************************************************/
- void main()
- {
- Menu_Init();
- Lcd_Clear_Screen(2);
- Lcd_Init_Fun();
- Display_Time_Flag = 0;
- Cun_Sec_B = datastring[11]+1;
- Chao_Flag = 0;
- /*while(1)
- {
- Get_Time_Function(&realtime);
-
- Lcd_12864_Function_SendString(1,0, 0, ascii[datastring[0]]);
- Lcd_12864_Function_SendString(1,0, 1, ascii[datastring[1]]);
- Lcd_12864_Function_SendString(1,1, 2, ascii[datastring[2]]);
- Lcd_12864_Function_SendString(1,1, 3, ascii[datastring[3]]);
- Lcd_12864_Function_SendString(1,2, 4, ascii[datastring[4]]);
- Lcd_12864_Function_SendString(1,2, 5, ascii[datastring[5]]);
- Lcd_12864_Function_SendString(1,3, 6, ascii[datastring[6]]);
- Lcd_12864_Function_SendString(1,3, 7, ascii[datastring[7]]);
- }*/
- //更新屏幕内容
- Menu_SysFlag.Bits.is_ScreenChanged = 1;
- while (1)
- {
- Key_Get_Value();
- Get_Time_Function(&realtime);
-
- if(((pMenuSelect->MenuTittle) == Hour)&&(Cun_Sec_B != datastring[11]))
- {
- Display_Time_Flag = 1;
- Cun_Sec_B = datastring[11];
- }
- else
- {
- Display_Time_Flag = 0;
- }
- //处于配置菜单模式
- if (Menu_SysFlag.Bits.is_InConfig)
- {
- Delay_1ms_Function(10);
-
- Menu_Main();
- }
- //设置进入配置模式标志
- else if ((!Menu_SysFlag.Bits.is_InConfig)&&(Menu_SysFlag.Bits.is_KeyPressed)&&(KeyVal == KEY_ENTER))
- {
- Menu_SysFlag.Bits.is_InConfig = 1;
- KeyVal = 0x00;
- MenuIndexSaved = 0x00;
- pMenuSelect = MenuRoot_L1;//把结构体数组的首地址传输给指针
- }
- //处于显示模式,根据标志刷新显示内容
- else if ((!Menu_SysFlag.Bits.is_InConfig)&Menu_SysFlag.Bits.is_ScreenChanged)
- {
- //Menu_SysFlag.Bits.is_ScreenChanged = 0;
- //Lcd_Clear_Screen(2);
- //etOnOff(0); //关显示
- ShowHomepage();
- Lcd_SetOnOff(1);
- }
- }
- while (1);
- }
- #endif
|