?? menu.c
字號:
#include<reg52.h>
#include"12864-pin.h"
void menu8();
void menu_operate(void);
bit compare(uchar *key);
extern bit VOI; // 聲音開關
//////////////////////////////////////////////////////////////////////
void menu8_2_1(void)
{
clrddram();
send_i(0x0c); //關光標;
gotoxy(1,1);
LCD_puts("輸入密碼錯誤",12);
}
void menu8_2_2(void)
{
clrddram();
send_i(0x0c); //關光標;
gotoxy(1,1);
LCD_puts("兩次密碼不同",12);
}
void menu8_2_3(void)
{
clrddram();
send_i(0x0c); //關光標;
gotoxy(1,1);
LCD_puts("密碼修改成功",12);
}
////////////////////////////////////////////////////////////////////
void menu8_2_4()
{
clrddram();
send_i(0x0c); //關光標;
gotoxy(1,0);
LCD_puts("密碼修改失敗",12);
gotoxy(1,1);
LCD_puts("請使用萬能開機",15);
gotoxy(1,2);
LCD_puts("方式恢復密碼!",14);
}
//////////////////////////////////////////////////////////////////////////
/* 背光設置 *////////*/
void menu8_1(void)
{
uchar i=0;
clrddram();
send_i(0x0c); //關光標;
gotoxy(0,0);
LCD_puts("背光開",6);
gotoxy(0,1);
LCD_puts("背光關",6);
while(1)
{
fill_GD(0,0+i,4,16,0xff); // 反白;
delay(200);
while(P1==0xff);
if(p17==0)
{
if(VOI==1) voice(); // 按鍵聲音
break; // 按P17跳到前一菜單
}
if(p14==0)
{
if(VOI==1) voice(); // 按鍵聲音
if(i==0) p26=0;
else p26=1;
}
if(p15==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
if(i==0)i=16; // 反白下調
else i=0;
}
if(p16==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
if(i==0) i=16;
else i=0;
}
}
}
////////////////////////////////////////////////////////////////////////
//* 密碼設置 */
void menu8_2(void)
{
uchar i,key1[6],key2[6],key3[6];
uchar j; // 寫入出錯次數累計變量
loop1:
clrgdram();
clrddram();
gotoxy(0,0);
LCD_puts("輸入密碼",9);
gotoxy(0,1);
LCD_puts("輸新密碼",9);
gotoxy(0,2);
LCD_puts("再輸一遍",9);
send_i(0x0e); //開光標;
send_i(0x84); // 設置DDRAM 光標位置;
LCD_puts(" ",1);
for(i=0;i<6;) // 輸入密碼
{
key1[i]=gotkey();
if(VOI==1) voice(); // 按鍵聲音
if(key1[i]>11) goto loop; //按P17反回上一菜單
{
LCD_puts("*",1);
i++;
}
}
if(compare(key1)==0)
{
menu8_2_1(); // 密碼錯誤
delay(800);
goto loop1;
}
else // 輸入正確則繼續輸入
{
send_i(0x94); // 設置DDRAM 光標位置;
LCD_puts(" ",1);
for(i=0;i<6;) // 輸新密碼
{
key2[i]=gotkey();
if(VOI==1) voice(); // 按鍵聲音
if(key2[i]>11) goto loop; //按P17反回上一菜單
{
LCD_puts("*",1);
i++;
}
}
send_i(0x8c); // 設置DDRAM 光標位置;
LCD_puts(" ",1);
for(i=0;i<6;) // 再輸一遍
{
key3[i]=gotkey();
if(VOI==1) voice(); // 按鍵聲音
if(key3[i]>11) goto loop; //按P17反回上一菜單
{
LCD_puts("*",1);
i++;
}
}
///////////////////////////////
for(i=0;i<6;i++) // 比較兩次輸入的密碼
{
if(key2[i]!=key3[i])
{
i=10;
break;
}
}
if(i==10) // 兩次輸入密碼不一樣
{
menu8_2_2();
delay(800);
goto loop1;
}
else
{
j=0;
do{
for(i=0;i<6;i++) write_appoint(i,key2[i]); // 修改成功,保存到24C02
j++;
if(j==5)
{
for(i=0;i<6;i++) key1[i]=read_appoint(i); // 如果連續四次寫入出錯剛讀出24C02數據到key1[]
menu8_2_4();
while(p17==1); // 按P17跳出畫面
goto loop;
}
}while(compare(key2)==0); // 當密碼寫入出錯時重復寫入直到正確
menu8_2_3();
delay(800);
}
}
loop: send_i(0x0c); //關光標;
}
/////////////////////////////////////////////////////////////////////////////
void menu8_3()
{
uchar i=0;
clrgdram();
clrddram();
send_i(0x0c); //關光標;
gotoxy(0,0);
LCD_puts("聲音開",6);
gotoxy(0,1);
LCD_puts("聲音關",6);
while(1)
{
fill_GD(0,0+i,4,16,0xff); // 反白;
delay(200);
while(P1==0xff);
if(p17==0)
{
if(VOI==1) voice(); // 按鍵聲音
break; // 按P17跳到前一菜單
}
if(p14==0)
{
if(VOI==1) voice(); // 按鍵聲音
if(i==0) VOI=1;
else VOI=0;
}
if(p15==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
if(i==0)i=16; // 反白下調
else i=0;
}
if(p16==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
if(i==0) i=16;
else i=0;
}
}
}
/////////////////////////////////////////////////////////////////////////////////
void menu1(void)
{
fill_GD(0,0,4,32,0); // 清除反白
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu2(void)
{
fill_GD(0,16,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu3(void)
{
fill_GD(0,32,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu4(void)
{
fill_GD(0,48,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu5(void)
{
fill_GD(4,0,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu6(void)
{
fill_GD(4,16,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu7(void)
{
fill_GD(4,32,4,16,0x00); // 清除反白;
clrddram(); // 文本模式緩沖區清除
LCD_puts("系統設計中!",11);
delay(800);
while(p17==1);
if(VOI==1) voice(); // 按鍵聲音
}
void menu8(void)
{
uchar i=0;
// fill_GD(4,48,4,16,0x00); // 清除反白;
while(1)
{
clrgdram();
clrddram(); // 文本模式緩沖區清除
gotoxy(0,0);
LCD_puts("背光設置",8);
gotoxy(0,1);
LCD_puts("密碼設置",8);
gotoxy(0,2);
LCD_puts("按鍵聲音",8);
fill_GD(0,0+i,4,16,0xff); // 反白;
delay(200);
while(P1==0xff);
if(p17==0)
{
if(VOI==1) voice(); // 按鍵聲音
break; // 按P17跳到主菜單
}
if(p14==0)
{
if(VOI==1) voice(); // 按鍵聲音
switch(i)
{
case 0: menu8_1(); break;
case 16: menu8_2(); break;
case 32: menu8_3(); break;
default : break;
}
delay(100); // 防止連續返回菜單
}
if(p15==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
i+=16; // 反白下調
if(i==48)i=0;
}
if(p16==0)
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0,0+i,4,16,0x00); // 清除反白;
if(i==0) i=32;
else i-=16; // 反白上調
}
}
}
/////////////////////////////////////////////////////////////////////
void menu_main(void) // 主菜單;
{
clrgdram(); // 液晶圖形緩沖區清除
clrddram(); // 文本模式緩沖區清除
send_i(0x0c); //關光標;
gotoxy(0,0); //設置文本輸入位置;
LCD_puts("萬年歷",6);
gotoxy(0,1);
LCD_puts("秒表",4);
gotoxy(0,2);
LCD_puts("記事本",6);
gotoxy(0,3);
LCD_puts("計算器",6);
gotoxy(4,0);
LCD_puts("電話本",6);
gotoxy(4,1);
LCD_puts("音樂",4);
gotoxy(4,2);
LCD_puts("游戲",4);
gotoxy(4,3);
LCD_puts("設置",4);
}
/*////////////////////////////////////////////////////////////////
//////操作菜單////////////////////////////////////*////////*/////*/
void menu_operate(void)
{
uchar j=0; //菜單左右變量;
uchar menu_updown=0; //菜單上下按鍵;
while(1)
{
menu_main(); //主菜單顯示
fill_GD(0+j,0+menu_updown,4,16,0XFF); // 反白;
delay(100); // 防止連續按鍵閃動過快
while(P1==0xff);
if(p14==0) // 選中菜單
{
if(VOI==1) voice(); // 按鍵聲音
switch(menu_updown)
{
case 0: if(j==0) menu1(); else menu5(); break;
case 16: if(j==0) menu2(); else menu6(); break;
case 32: if(j==0) menu3(); else menu7(); break;
case 48: if(j==0) menu4(); else menu8(); break;
default : break;
}
}
if(p15==0) // 菜單下調
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0+j,0+menu_updown,4,16,0x00); // 清除反白;
menu_updown+=16;
}
if(p16==0) // 菜單上調
{
if(VOI==1) voice(); // 按鍵聲音
fill_GD(0+j,0+menu_updown,4,16,0x00);
if(menu_updown==0)
{
if(j==0)j=4;
else j=0;
menu_updown=48;
}
else menu_updown-=16;
}
if(menu_updown==64)
{
menu_updown=0;
if(j!=4)j=4;
else j=0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -