第八讲:单片机驱动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
|