?? main.c
字號:
};
}
}
}
void SetNoiseData(void)
{
unsigned char key7KeyValue; //存儲按鍵鍵值的變量
bit setbit; //有鍵按下的標志
bit setOnbit; //顯示的標志
unsigned char key7I; //循環變量
setbit = 0; //各個標志位清0
setOnbit = 0;
key7KeyValue = 0;
time10msIsOK = 0;
time500msIsOK = 0;
time20sIsOK = 0;
time500msCounter = 0;
time20sCounter = 0;
DS1302ReadRamData(); //讀取鬧鐘數據
for (key7I = 0; key7I < 8; key7I++) //把鬧鐘數據賦值給DS1302Data
{
DS1302Data[key7I] = noiseData[key7I];
}
//顯示初始化
LcdSetXY(0, 0);
LcdPutFlashString(solarData);
LcdSetXY(1, 0);
LcdPutFlashString(timeData);
Change();
DisplayOne();
LcdSetXY(1, 6);
if (noiseData[8] == 0x01)
{
LcdPutOneChar(0x2A);
}
else
{
LcdPutOneChar(0x20);
}
key7I = 0;
while (1)
{
FindTime(); //判斷各個時間段是否已經到達
if(time10msIsOK)
{
time10msIsOK = 0;
key7KeyValue = FindKeyValue(); //讀取鍵值
switch (key7KeyValue)
{
case key7:
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
if (setbit) //如果有鍵按下,則把DS1302的數據賦值給noiseData
{
FindDataOfWeek();
for (key7I = 0; key7I < 8; key7I++)
{
noiseData[key7I] = DS1302Data[key7I];
}
DS1302WriteRamData(); //寫入鬧鐘數據
}
break;
case key6:
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
//noiseSetFlag = ~noiseSetFlag;
if (noiseData[8] == 0x01) //取反鬧鐘標志
{
noiseData[8] = 0x00;
}
else
{
noiseData[8] = 0x01;
}
LcdSetXY(1, 6); //顯示鬧鐘標志,鬧鐘標志為'*'
if (noiseData[8] == 0x01)
{
LcdPutOneChar(0x2A);
}
else
{
LcdPutOneChar(0x20);
}
break;
case key1: //按鍵1為右移處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
//以下兩行顯示為了防止剛才恰好沒有顯示
LcdPutOneChar((DS1302Data[key7I] / 10) + 48);
LcdPutOneChar((DS1302Data[key7I] % 10) + 48);
if (key7I == 0)
{
key7I = 6;
}
else if (key7I == 4)
{
key7I = 2;
}
else
{
--key7I;
}
break;
case key2: //按鍵2為左移處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
//以下兩行顯示為了防止剛才恰好沒有顯示
LcdPutOneChar((DS1302Data[key7I] / 10) + 48);
LcdPutOneChar((DS1302Data[key7I] % 10) + 48);
if (key7I == 6)
{
key7I = 0;
}
else if (key7I == 2)
{
key7I = 4;
}
else
{
++key7I;
}
break;
case key3: //按鍵3為加1處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
++DS1302Data[key7I];
break;
case key4: //按鍵4為減1處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
--DS1302Data[key7I];
break;
case key5: //按鍵5為加10處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
DS1302Data[key7I] += 10;
break;
case key8: //按鍵8為減10處理
setbit = 1; //有鍵按下標志位置1,表示有鍵按下
time20sCounter = 0; //只要有鍵按下則清0 20s計數器
DS1302Data[key7I] -= 10;
break;
};
}
if ((key7KeyValue == key7)||(time20sIsOK ==1)) //如果按下退出鍵或者20s沒有鍵按下,則進入設置鬧鐘音樂
{
noiseMusicOrPlayMusic = 1;
SetMusicPlay();
noiseMusicOrPlayMusic = 0;
// DS1302ReadTimeData();
// Change();
// LcdSetXY(0, 0);
// LcdPutFlashString(solarData);
// LcdSetXY(1, 0);
// LcdPutFlashString(timeData);
// DisplayOne();
break;
}
else
{
if (time500msIsOK) //500ms到,取反顯示標志
{
time500msIsOK = 0;
setOnbit = ~setOnbit;
}
switch (key7I)//switch語句用于選擇顯示的位置
{
case 0:
LcdSetXY(1, 14);
break;
case 1:
LcdSetXY(1, 11);
break;
case 2:
LcdSetXY(1, 8);
break;
case 4:
LcdSetXY(0, 14);
break;
case 5:
LcdSetXY(0, 11);
break;
case 6:
LcdSetXY(0, 8);
break;
};
DS1302CheckDataOve(); //判斷數據有效性
if (setOnbit) //500ms顯示數據,500ms顯示空格
{
LcdPutOneChar(0x20);
LcdPutOneChar(0x20);
}
else
{
LcdPutOneChar((DS1302Data[key7I] / 10) + 48);
LcdPutOneChar((DS1302Data[key7I] % 10) + 48);
}
switch (key7I)//switch語句用于選擇顯示的位置
{
case 0:
LcdSetXY(1, 14);
break;
case 1:
LcdSetXY(1, 11);
break;
case 2:
LcdSetXY(1, 8);
break;
case 4:
LcdSetXY(0, 14);
break;
case 5:
LcdSetXY(0, 11);
break;
case 6:
LcdSetXY(0, 8);
break;
};
}
}
}
void SetMusicPlay(void)
{
unsigned char key8KeyValue; //用于存儲鍵值
unsigned char key8MusicPlayChoose; //選擇播放的音樂
bit setbit; //有按鍵按下標志位
setbit = 0;
key8KeyValue = 0; //初始化為0,表示沒有按鍵按下
key8MusicPlayChoose = 0x01; //初始化為第一首音樂
time10msIsOK = 0; //清0 10ms, 20s標志位以及20s計數器
time20sIsOK = 0;
time20sCounter = 0;
LcdClear(); //清屏
//音樂選擇界面顯示初始化
LcdSetXY(0, 0);
LcdPutFlashString("CHOOSE MUSIC");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -