?? main.c
字號:
//========================================================================
// 工程名稱:Menu_MzLH01_MCS51.spj
// 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
// 聯系方式:QQ 644272644
// 版權所有:北京銘正同創科技有限公司 www.mzdesign.com.cn
// 適應芯片: S51/S52/MCS51兼容MCU
// 實現功能: 以MzL02-12864 帶LCD顯示模塊為顯示平臺的MzMenu_GUI軟件包
// 的演示程序
//
// 系統要求: PC with CPU 233MHz,128MB RAM,
// Keil uVision 2.0及以上版本
//
// 涉及的庫:(a)
//
// 組成文件:
// main.c ----主程序文件
// Driver/LCD_Driver/ ----LCD驅動程序
// Driver/Key_Service/ ----鍵盤掃描程序
// MzMenu_GUI/ ----MzMenu_GUI的軟件包源碼
//
// 硬件連接:
// LCD DB0~DB7 ---P0.0~P0.7
// LCD EP ---P2.4
// LCD RW ---P2.3
// LCD A0 ---P2.2
// LCD Reset ---P2.1
// LCD CS ---P2.0
// LCM 3.3V供電~~~(建議)
//
// Key1 接P2.0
// Key2 接P2.1
// Key3 接P2.2
// 鍵盤的公共端接地,接鍵盤的端口接上拉電阻
//
//
// 當前版本: V1.0
// 日期: 2007-07-26
//
// 參考文件:
// 維護記錄:
//-------------------------------------------------------------------
// Version 2007-07-26-V10 Modified By Xinqiang Zhang(小丑)
//
//========================================================================
#include "./Driver/LCD_Driver/LCD_Dis.h"
#include "./Driver/Key_Service/Key.h"
#include "./MzMenu_GUI/Menu_GUI.h"
void Show_DotTest(void);
void Show_LineTest(void);
void Show_RectanglTest(void);
void Show_HelpTest(void);
void CharTest_Menu(void);
void Show_CharTest(void);
void Show_StringTest(void);
void Show_ChTest(void);
//========================================================================
// 文件名: main.c
// 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
// 日 期: 2007/07/26
// 描 述: 以MzLH01-12864 帶漢字庫LCD顯示模塊為顯示平臺的MzMenu_GUI軟件包
// 的演示程序
//
// 參 考: 無
// 版 本:
// 2007/07/26 First version Mz Design
//========================================================================
void main(void)
{
//add your code here
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(); //初始化LCD
Item_Num = GetMLNum(Menu_List01); //獲取要顯示的菜單的菜單項個數
PageItem_Num = GetMLiNum_Page((unsigned char **)Menu_List01); //獲取要顯示的菜單的頁數
Initial_Menu((unsigned char**)Menu_List01);
while(1)
{
uiKey = Key_Get(); //獲取鍵值
if(uiKey) //如有鍵按下則響應
{
switch(uiKey) //判斷鍵值進行分支控制界面
{
case 3: //確定鍵按下
Enter_Flag=1; //enter flag set
break;
case 2: //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;
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: //這里僅定義了可以響應第一項菜單
Show_DotTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
Update_Flag = 1;
break;
case 1:
Show_LineTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
Update_Flag = 1;
break; //如感興趣可以自己加進去玩玩
case 2:
Show_RectanglTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
Update_Flag = 1;
break;
case 3:
CharTest_Menu();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
Update_Flag = 1;
break;
case 4:
Show_HelpTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
Update_Flag = 1;
break;
case 5: break;
default:break;
}
}
KeyScan_Service(); //鍵盤掃描的服務程序,最好在1KHz的定時/時基中斷調用
}
}
//繪點菜單項響應函數
void Show_DotTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
PutPixel(0,0); //繪制點
PutPixel(2,0);
PutPixel(4,0);
PutPixel(6,0);
PutPixel(8,0);
PutPixel(9,0);
PutPixel(10,0);
PutPixel(0,2);
PutPixel(0,4);
PutPixel(0,6);
PutPixel(0,8);
PutPixel(0,10);
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下則返回
KeyScan_Service();
}
}
//繪直線菜單項響應函數
void Show_LineTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
Line(127,63,0,63); //繪制一條直線
Line(10,12,10,42);
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
//繪矩形菜單項響應函數
void Show_RectanglTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
Rectangle(12,12,42,42,1); //矩形填充
Rectangle(52,12,82,42,0); //繪制矩形框
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
//幫助菜單項響應函數
void Show_HelpTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
FontSet(1,1); //設置字體類形,字符色為1
PutString(5,10,"Wellcome to MzDesign!!"); //顯示字符串
PutString(5,50,"www.mzdesign.com.cn");
Line(4,60,120,60); //繪制一條直線
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
//字符演示菜單項響應函數
void CharTest_Menu(void)
{
//add your code here
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:中間變量
unsigned char Exit_flag = 1;
Item_Num = GetMLNum(Menu_List02); //獲取要顯示的菜單的菜單項個數
PageItem_Num = GetMLiNum_Page((unsigned char **)Menu_List02); //獲取要顯示的菜單的頁數
Initial_Menu((unsigned char**)Menu_List02);
while(1)
{
uiKey = Key_Get(); //獲取鍵值
if(uiKey) //如有鍵按下則響應
{
switch(uiKey) //判斷鍵值進行分支控制界面
{
case 3: //確定鍵按下
Enter_Flag=1; //enter flag set
break;
case 2: //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;
default:break;
}
}
if(Update_Flag) //Update_Flag為1時刷新菜單
{
UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List02);
Update_Flag=0;
}
if(Enter_Flag) //有確定鍵按下時,則進入相應的功能函數
{
Enter_Flag = 0;
switch(Active_Index)
{
case 0: //這里僅定義了可以響應第一項菜單
Show_CharTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List02);
Update_Flag = 1;
break;
case 1:
Show_StringTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List02);
Update_Flag = 1;
break; //如感興趣可以自己加進去玩玩
case 2:
Show_ChTest();
Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List02);
Update_Flag = 1;
break;
case 3: Exit_flag = 0;break;
default:break;
}
}
KeyScan_Service(); //鍵盤掃描的服務程序,最好在1KHz的定時/時基中斷調用
}
}
//二級菜單中,單個西文字符菜單項響應函數
void Show_CharTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
Rectangle(64,0,127,63,1); //半邊繪制填充的矩形
FontSet(1,1); //設置字體類形,字符色為1
PutChar(10,10,'A'); //顯示字符
PutChar(10,40,'8'); //顯示字符
FontSet(1,0); //設置字體類形,字符色為0
PutChar(80,10,'A'); //顯示字符
PutChar(80,40,'8'); //顯示字符
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
//二級菜單中,西文字符串菜單項響應函數
void Show_StringTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
FontSet(1,1); //設置字體類形,字符色為1
PutString(5,10,"Wellcome to MzDesign!!"); //顯示字符串
PutString(5,50,"www.mzdesign.com.cn");
Line(4,60,120,60); //繪制一條直線
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
//二級菜單中,中文字符菜單項響應函數
void Show_ChTest(void)
{
unsigned int Key=0;
unsigned Exit_flag=1;
ClrScreen(0); //清屏
SetPaintMode(0,1); //設置繪圖模式及前景色
FontSet(2,1); //設置字體類形,字符色為1
PutChar(10,20,0); //顯示漢字 銘
PutChar(30,20,1); //顯示漢字 正
PutChar(50,20,2); //顯示漢字 同
PutChar(70,20,3); //顯示漢字 創
while(Exit_flag)
{
Key = Key_Get();
if(Key!=0)
Exit_flag = 0; //任意鍵按下時,退出返回
KeyScan_Service();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -