?? mainmymedia.c
字號:
#include"REG51F.h"
#include"intrins.h"
#include"USEH1.h"
#include"MainMyMedia.h"
#include"lcd.h"
#include"Music.h"
#include"24c02.h"
#include"PictureCode.h"
#include"CartoonCode.h"
#include"MusicCode.h"
//位變量聲明===========================================
bit gf_50Ms = 0;
bit gf_kLok = 0;
bit gf_have = 0;
bit gf_clrScreen = 0; //清屏標志
//全局變量聲明=========================================
uchar g_tim2Ms = 0; //time0計數器
//按鍵變量
uchar g_kCou = 0;
uchar g_kStart = 0;
uchar g_kLast = 0;
uchar g_kVal = 0;
uchar g_cnLin=0, g_cnColumn=0, g_cnNum1=0;
uchar g_bootDly = 0; //文字顯完時延時
uchar g_cnDly = 0;
uchar g_jdColumn = 16;
uchar g_jdBootDy = 0;
uchar g_bootCartoonDly = 0;
uchar g_cantStup = 0; //動畫播放的幀指示
uchar g_showLCD = 0; //LCD顯示界面控制
uchar g_menu1=25, g_menu2=24, g_menu3=24; //光標指示
/*e2romData[0]:頭碼0x55,e2romData[1]:g_menu1,e2romData[2]:g_menu2
e2romData[3]:g_menu3,e2romData[4]:g_showLCD,e2romData[5]:累加和校驗
*/
uchar e2romData[6]; //E2ROM緩存
uchar chkSun;
//函數聲明=============================================
void InitMCU(void);
void WR_E2rom(void); //寫E2ROM函數
//主程序===============================================
void main(void)
{
InitMCU();
ReadDate(0, e2romData, 6); //E2ROM處理
chkSun = e2romData[0]+e2romData[1]+e2romData[2]+e2romData[3]+e2romData[4];
if((e2romData[0]==0x55)&&(e2romData[4]!=0)&&(e2romData[5]==chkSun))
{
g_menu1 = e2romData[1];
g_menu2 = e2romData[2];
g_menu3 = e2romData[3];
g_showLCD = e2romData[4];
g_cnNum1 = 18;
g_bootDly = 0;
}
InitLCD();
for(;;)
{
if(gf_50Ms)
{
gf_50Ms = 0;
if(g_cnNum1<=17) //上電顯示
{
if(g_cnDly==0)
{
ShowChina(g_cnLin,g_cnColumn,g_cnNum1);
if(++g_cnNum1>=18)
g_cnDly = 0;
else
g_cnDly = 4;
g_cnColumn += 16;
if(g_cnColumn>=112)
{
g_cnColumn = 0;
g_cnLin += 2;
}
}
else
--g_cnDly;
}
else if(g_bootDly!=0)
--g_bootDly;
else //進入正常工作
{
if(gf_have) //按鍵處理
{
gf_have = 0;
if(g_showLCD==0)
{
if((g_kVal==KUP)&&(g_menu1!=25)) //向上選擇
{
if(g_menu3==25) //鈴聲→動畫
{
g_menu2 = 25;
g_menu1 = g_menu3 = 24;
}
else if(g_menu2==25) //動畫→圖片
{
g_menu1 = 25;
g_menu2 = g_menu3 = 24;
g_jdBootDy = 30;
}
else { }
}
else if((g_kVal==KDOW)&&(g_menu3!=25)) //向下選擇
{
if(g_menu1==25) //圖片→動畫
{
g_menu2 = 25;
g_menu1 = g_menu3 = 24;
g_jdBootDy = 30;
}
else if(g_menu2==25) //動畫→鈴聲
{
g_menu3 = 25;
g_menu1 = g_menu2 = 24;
}
else { }
}
else if(g_kVal==KENT)
{
gf_clrScreen = 1;
if(g_menu1==25) //選擇了圖片確認
g_showLCD = 1;
else if(g_menu2==25) //選擇了動畫確認
g_showLCD = 2;
else //選擇了鈴聲確認
g_showLCD = 3;
WR_E2rom();
}
else { }
}
else
{
if(g_kVal==KESC) //按ESC返回菜單選擇
{
gf_clrScreen = 1;
g_showLCD = 0;
g_cantStup = 0;
g_jdColumn = 16;
g_jdBootDy = 30;
WR_E2rom();
}
}
}
if(gf_clrScreen)
{
gf_clrScreen = 0;
ClearScreen(1);
ClearScreen(2);
}
//選菜單============================
if(g_showLCD==0)
{
ShowChina(0,16,18); //圖片
ShowChina(0,32,19);
ShowChina(2,16,20); //動畫
ShowChina(2,32,21);
ShowChina(4,16,22); //鈴聲
ShowChina(4,32,23);
ShowChina(0,0,g_menu1); //光標
ShowChina(2,0,g_menu2);
ShowChina(4,0,g_menu3);
}
//顯示圖片---------------------------
else if(g_showLCD==1)
{
ShowPicture(1, 13, 48, 101, PictureCode);
}
//放動畫----------------------------
else if(g_showLCD==2)
{
if(g_jdColumn<=96)
{
if(g_cnDly==0)
{
ShowChina(2,0,26); //[ ]
ShowChina(2,112,27);
ShowChina(4,32,29); //請稍候…
ShowChina(4,48,30);
ShowChina(4,64,31);
ShowChina(4,80,32);
if(g_jdBootDy == 0)
{
ShowChina(2,g_jdColumn,28); //■
g_jdColumn += 16;
if(g_jdColumn>=112)
{
g_cnDly = 0;
g_bootCartoonDly = 20;
}
else
g_cnDly = 15;
}
else
--g_jdBootDy;
}
else
--g_cnDly;
}
else if(g_bootCartoonDly!=0)
{
if(--g_bootCartoonDly==0)
gf_clrScreen = 1;
}
else //進入動畫播放
{
if(g_cnDly==0)
{
switch(++g_cantStup)
{
case 1:
{
ShowPicture(1, 22, 48, 84, CartoonP1);
g_cnDly = 8;
}
break;
case 2:
{
ShowPicture(1, 22, 48, 84, CartoonP2);
g_cnDly = 12;
}
break;
default:
{
ShowPicture(1, 22, 48, 84, CartoonP3);
g_cantStup = 0;
g_cnDly = 40;
}
}
}
else
--g_cnDly;
} //end else 進入動畫播放
} //end else 放動畫
//放鈴聲----------------------------
else
{
ShowChina(2,16,33); //∮
ShowChina(2,32,34); //兩
ShowChina(2,48,35); //只
ShowChina(2,64,36); //蝴
ShowChina(2,80,37); //蝶
if(g_cnDly==0)
{
InitialSound();
Play(music1,0,3,360);
if(gf_have&&(g_kVal==KESC))
{
gf_have = 0;
gf_clrScreen = 1;
g_showLCD = 0;
ET0 = 0;
ET1 = 0;
//g_cantStup = 0;
//g_jdColumn = 16;
//g_jdBootDy = 30;
BeepIO = 0;
WR_E2rom();
}
else
g_cnDly = 40;
}
else
--g_cnDly;
}
} //end else進入正常工作
}
}
}
//定時器2中斷,10ms中斷一次=========================
void time2_interrupt(void)interrupt 5
{
TF2 = 0;
if(++g_tim2Ms>=5)
{
g_tim2Ms = 0;
gf_50Ms = 01;
}
//按鍵讀取---------------
P0 |= 0xf0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
g_kStart = P0 | 0x0f;
if(g_cnNum1<=17) { }
else if(g_kStart!=g_kLast)
{
g_kLast = g_kStart;
g_kCou = 0;
}
else
{
if(++g_kCou>=3)
{
g_kCou = 0;
if(g_kStart==0xff)
{
gf_kLok = 0;
}
else if(gf_kLok) { }
else
{
gf_kLok = 1;
gf_have = 1;
g_kVal = g_kStart;
}
}
}
}
//子函數===============================================
//MCU初始化----------------------
void InitMCU(void)
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0x7f;
//定時器2初始化
T2MOD = 0xfd;
CP_RL2 = 0;
TL2 = 0xf0;
TH2 = 0xd8;
RCAP2L = 0xf0;
RCAP2H = 0xd8;
C_T2 = 0;
TR2 = 1;
ET2 = 1;
EA = 1;
gf_clrScreen = 1;
g_bootDly = 40;
}
//寫E2ROM函數--------------------
void WR_E2rom(void)
{
e2romData[0] = 0x55;
e2romData[1] = g_menu1;
e2romData[2] = g_menu2;
e2romData[3] = g_menu3;
e2romData[4] = g_showLCD;
e2romData[5] = e2romData[0]+e2romData[1]+e2romData[2]+e2romData[3]+e2romData[4];
WriteDate(0, e2romData, 6);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -