⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 液晶菜单 51串行实现 调试已通过
💻 C
字号:
//========================================================================
//  工程名称:MCS51_MzLH06_Menu
//  作    者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)    
//  联系方式:QQ 644272644
//	版权所有:北京铭正同创科技有限公司   www.mzdesign.com.cn
//  适应芯片: MCS51 (本例选择AT89S52)
//  编程环境: Keil C51
//  实现功能: MzLH04模块的列表式菜单应用范例,并在各分项菜单中演示MzLH04的功能
//
//  系统要求: PC with CPU 233MHz,128MB RAM,
//                      Keil uVision3(or later)
//  组成文件:
//	
//     	main.c		----主程序文件
//		Key_Service.c ----键盘扫描服务程序
//			Key_Service.h----键盘扫描服务程序的头文件
//
//		LCD_Dis.c
//     	LCD_Dis.h
//		LCD_Config.h
//					----MzLH06模块的基本驱动程序
//		Menu_GUI.c
//		Menu_GUI.h
//		Menu_GUI_Config.h
//		Menu_Resource.c
//					----列表式菜单服务程序源代码,包括资源定义以及菜单配置等
//		BaseDraw.c
//		BitmapTest.c
//		CharShow.c
//		NumberDirect.c
//					----各菜单项对应的用户定义功能程序,在此为演示液晶的各项功能
//
//
//	硬件连接:
//		LCD CS		    ---P1.0
//		LCD SCK			---P1.2
//		LCD SDA			---P1.1
//		LCD RST			---P1.3
//  端口定义请参考LCD_Config.h文件中的定义
//
//	CPU运行频率11.0592MHz	(每个指令为12周期)
//
//		键盘接入请参考该例程的电路示意图
//		Key1			---P0.0
//		Key2			---P0.1
//		Key3			---P0.2
//		Key4			---P0.3
//		键盘的另外一端接地,端口最好接上拉电阻
//
//		本例程仅提供参考,而例程中使用的键盘程序为简单的范例程序,用户可以参考,
//		或者根据自己的需要自行设计更合理的代码。
//
//  当前版本:  V1.00
//  日期:  2009-02-19
//  
//  参考文件: 
//  维护记录:
//-------------------------------------------------------------------
//  Version   2009-02-19-V10   Modified By    Xinqiang Zhang(小丑)
//
//========================================================================

#include "LCD_Dis.h"
#include "Key_Service.h"
#include "Menu_GUI.h"

extern void BaseDraw(void);
extern void CharShow(void);
extern void BitmapTest(void);
extern void NumberDirect(void);

int main(void)
{
	unsigned char uiKey=0;
	//uiKey用于存放扫描的键值状态
	unsigned char Item_Num,Update_Flag,Enter_Flag=0;
	//Item_Num:当前菜单界面当中共有几项菜单项,刷新时使用
	//Update_Flag:菜单界面刷新标识
	//Enter_Flag:确定键按下标识~~
	unsigned char PageItem_Num;
	//PageItem_Num:每页(全显示屏内)可以显示多少个菜单项
	unsigned char First_Index=0,Active_Index=0,Temp_Index=0;
	//First_Index:当前处在显示屏当中的最前面的菜单项序号
	//Active_Index:当前指向的菜单项,即当前活动的菜单项
	//Temp_Index:中间变量
	Key_Initial();
	LCD_Init();
	SetBackLight(100);				//设置背光的亮度等级为0
	ClrScreen();  					//清屏
	FontMode(0,1);

	Item_Num = GetMLNum(Menu_List01);			//获取要显示的菜单的菜单项个数
	PageItem_Num = GetMLiNum_Page(Menu_List01);	//获取要显示的菜单的页数
	Initial_Menu(Menu_List01);
	while(1)
	{
		KeyScan_Service();	
		uiKey = Key_Get();
		if(uiKey)
		{
			switch(uiKey)					//判断键值进行分支控制界面
			{
				case 4:				//确定键按下
					Enter_Flag=1;			//enter flag set
					break;
				case 3:				//down	向下键按下
					if(Active_Index<Item_Num)	
					{
						Active_Index++;
						if(Temp_Index<PageItem_Num-1) Temp_Index++;
						else if(First_Index<Item_Num) First_Index++;
						Update_Flag = 1;
					}
					break;
				case 1:				//up  向上键按下
					if(Active_Index>0)
					{
						Active_Index--;
						if(Temp_Index>0) Temp_Index--;
						else if(First_Index>0) First_Index--;
						Update_Flag = 1;
					}
					break;
			/*	case 2:					//返回键按下
					Exit_flag = 0;//
					break;*/
				default:break;
			}
		}
		if(Update_Flag)						//Update_Flag为1时刷新菜单
		{
			UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
			Update_Flag=0;
		}	
		if(Enter_Flag)						//有确定键按下时,则进入相应的功能函数
		{
			Enter_Flag = 0;
			switch(Active_Index)
			{
				case 0:						//这里定义了响应第一项菜单
				  	BaseDraw();
					Redraw_Menu(First_Index,Active_Index,Menu_List01);
				//	Update_Flag = 1;
					break; 
				case 1: 					//这里定义了响应第二项菜单 			
					CharShow();
					Redraw_Menu(First_Index,Active_Index,Menu_List01);
				//	Update_Flag = 1;
					break;	
				case 2:						//这里定义了响应第三项菜单 
					BitmapTest();
					Redraw_Menu(First_Index,Active_Index,Menu_List01);
				//	Update_Flag = 1;
					break;
				case 3: 					//这里定义了响应第四项菜单
					NumberDirect();
					Redraw_Menu(First_Index,Active_Index,Menu_List01);
				//	Update_Flag = 1;
					break;	
				case 4: break;				//如感兴趣可以自己加进去玩玩
				default:break;
			} 
		}
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -