?? 6511531325.c
字號:
//=========================================================================================//
//文件名稱:system.c
//功能描述:液晶顯示驅動,以及時間日期調整
//維護記錄:2006.7.31 by zhenlei
//==========================================================================================//
#include "SPCE061A.h"
#include "SPLC501User.h"
#include "model.h"
extern void keyscan(); //鍵盤掃描函數聲明
extern void PlayRespond(unsigned int Result);
//語音播放函數聲明
void showhour(int showhour); //顯示小時函數聲明
void ring_choice(); //鈴聲選擇函數聲明
extern unsigned int num; //2HZ計數單元
extern unsigned int hour; //存放當前的小時
extern unsigned int min; //存放當前的分鐘
extern unsigned int sec; //存放當前的秒
extern unsigned int year; //存放當前的年
extern unsigned int gmonth; //存放當前的公歷的月
extern unsigned int gday; //存放當前的公歷的日
extern unsigned int xqvalue; //存放當前的星期
extern unsigned int nmonth; //存放農歷的月
extern unsigned int nday; //存放農歷的日
extern unsigned int runxq[]; //閏年星期偏差表
extern unsigned int pingxq[]; //平年星期偏差表
extern unsigned int glunarmonthday[]; //農歷月天數表
extern char number[];
extern unsigned int keyvalue;
extern unsigned int keyflag3;
extern unsigned int keyflag4;
extern unsigned int keyflag6;
extern unsigned int keyflag7;
extern unsigned int clockset[];
extern unsigned int nhour;
extern unsigned int nmin;
extern unsigned int mbsec;
extern unsigned int mmsec;
extern unsigned int mbmin;
extern unsigned int keyflag5;
extern unsigned int mbnum;
extern unsigned int onoff;
extern unsigned int runflag;
extern unsigned int ringflag;
extern unsigned int int2hz;
extern unsigned int counter;
extern unsigned int mapcounter1;
extern unsigned int mapcounter2;
extern unsigned int* BMP_Cartoon[];
//===============================================================//
//語法格式:void clock()
//實現功能:時鐘的調整
//參數 :無
//返回值 :無
//==============================================================//
void clock() //時鐘運算函數,入口參數半秒、秒、分、時。
{
if(num==0x0002) //如果半秒到了2,則秒加1
{
num = 0x0000;
sec = sec++;
counter=counter++; //顯示動畫的楨加一
if(counter==40)
counter=0;
}
if(sec==60) //如果秒到了60,則秒清零分加1
{
sec = 0;
min = ++min;
}
if(min==60) //如果分到了60,則分清零,小時加1
{
min = 0;
hour = ++hour;
}
}
//===============================================================//
//語法格式: void gyearmonthday()
//實現功能:公歷日期和農歷日期的調整
//參數 :無
//返回值 :無
//==============================================================//
void gyearmonthday() //公歷運算子函數修改變量年、
{
int monthvalue = 0; //月、日、時、陰歷月,日
int xx = 0;
int nmonthvalue = 0;
if(hour==24)
{
hour = 0;
gday = ++gday;
nday = ++nday;
}
switch(nmonth) //查表確定陰歷月份的天數。
{
case 1:
xx=glunarmonthday[year-2001]&0x8000;
break;
case 2:
xx=glunarmonthday[year-2001]&0x4000;
break;
case 3:
xx=glunarmonthday[year-2001]&0x2000;
break;
case 4:
xx=glunarmonthday[year-2001]&0x1000;
break;
case 5:
xx=glunarmonthday[year-2001]&0x0800;
break;
case 6:
xx=glunarmonthday[year-2001]&0x0400;
break;
case 7:
xx=glunarmonthday[year-2001]&0x0200;
break;
case 8:
xx=glunarmonthday[year-2001]&0x0100;
break;
case 9:
xx=glunarmonthday[year-2001]&0x0080;
break;
case 10:
xx=glunarmonthday[year-2001]&0x0040;
break;
case 11:
xx=glunarmonthday[year-2001]&0x0020;
break;
case 12:
xx=glunarmonthday[year-2001]&0x0010;
break;
}
if(xx==0)
nmonthvalue = 29;
else
nmonthvalue = 30;
if(nday==(nmonthvalue+1))
{
if((nmonth==(glunarmonthday[year-2001] & 0x000f)) && runflag==0)//判斷是否當年閏月
{
runflag = 1;
nday = 1;
}
else
{
nmonth = ++nmonth;
runflag = 0;
nday = 1;
}
}
if(nmonth==13)
{
nmonth = 1;
}
switch(gmonth) //判斷公歷天的個數
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthvalue = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthvalue = 30;
break;
case 2:
if((year%4==0&&year%100!=0)||(year%400==0)) // 判斷當年是否是閏年。
monthvalue = 29;
else
{
monthvalue = 28;
}
break;
}
if(gday==monthvalue+1)
{
gday = 1;
gmonth=gmonth++;
}
if(gmonth==13)
{
gmonth = 1;
year = year++; //到了12月,年就加1。
}
if(year==2101) //年的顯示范圍為2001--2100。
{
year = 2001;
}
}
//===============================================================//
//語法格式:gxq()
//實現功能:星期的調整
//參數 :無
//返回值 :無
//==============================================================//
void gxq() // 計算當前星期的子函數,入口參數年、
{ //月、日、星期
if((year%4==0&&year%100!=0)||(year%400==0)) //如果當年是閏年
{
xqvalue = (((year/100)%4)*5+year%100+(year%100)/4+runxq[gmonth-1]+gday+2)%7;
}
else
xqvalue = (((year/100)%4)*5+year%100+(year%100)/4+pingxq[gmonth-1]+gday+2)%7;
}
//===============================================================//
//語法格式:showsec(int showsec)
//實現功能:顯示秒單元
//參數 :showsec:秒
//返回值 :無
//==============================================================//
void showsec(int showsec) //顯示秒單元子函數
{
int mshi = 0;
int sg = 0;
mshi = showsec/10;
sg = showsec%10;
LCD501_PutChar(66,20,number[sg]);
LCD501_PutChar(60,20,number[mshi]);
}
//===============================================================//
//語法格式:showmin(int showmin)
//實現功能:顯示分單元
//參數 :showmin:分
//返回值 :無
//==============================================================//
void showmin(int showmin) //顯示分單元子函數
{
int mshi = 0;
int sg = 0;
mshi = showmin/10;
sg = showmin%10;
LCD501_PutChar(40,20,number[sg]);
LCD501_PutChar(34,20,number[mshi]);
}
//===============================================================//
//語法格式:showhour(showhour)
//實現功能:顯示小時單元
//參數 :showhour:小時
//返回值 :無
//==============================================================//
void showhour(showhour) //顯示小時單元子函數。
{
int mshi = 0;
int sg = 0;
mshi = showhour/10;
sg = showhour%10;
LCD501_PutChar(12,20,number[sg]);
LCD501_PutChar(6,20,number[mshi]);
}
//===============================================================//
//語法格式:showyear(showyear)
//實現功能:顯示年單元
//參數 :showyear:年
//返回值 :無
//==============================================================//
void showyear(showyear) //顯示年單元子函數
{
int mshi = 0;
int sg = 0;
int ybai = 0;
sg = showyear%10;
mshi = (showyear-sg)/10%10;
ybai = (showyear-2000)/100;
LCD501_PutChar(18,2,number[sg]);
LCD501_PutChar(12,2,number[mshi]);
LCD501_PutChar(6,2,number[ybai]);
}
//===============================================================//
//語法格式:showgmonth(showgmonth)
//實現功能:顯示公歷月份單元
//參數 :showgmonth:月
//返回值 :無
//==============================================================//
void showgmonth(showgmonth) //顯示公歷月份子函數
{
int mshi = 0;
int sg = 0;
mshi = showgmonth/10;
sg=showgmonth%10;
LCD501_PutChar(42,2,number[sg]);
LCD501_PutChar(36,2,number[mshi]);
}
//===============================================================//
//語法格式:showgday(showgday)
//實現功能:顯示公歷日單元
//參數 :showgday:日
//返回值 :無
//==============================================================//
void showgday(showgday) //顯示公歷日子函數
{
int mshi = 0;
int sg = 0;
mshi = showgday/10;
sg = showgday%10;
LCD501_PutChar(66,2,number[sg]);
LCD501_PutChar(60,2,number[mshi]);
}
//===============================================================//
//語法格式:showxq(xq)
//實現功能:顯示星期單元
//參數 :xq:星期
//返回值 :無
//==============================================================//
void showxq(xq) //顯示星期子函數
{
switch(xq)
{
case 1:
LCD501_Bitmap(50,35,(unsigned int*)encoding_1);
break;
case 2:
LCD501_Bitmap(50,35,(unsigned int*)encoding_2);
break;
case 3:
LCD501_Bitmap(50,35,(unsigned int*)encoding_3);
break;
case 4:
LCD501_Bitmap(50,35,(unsigned int*)encoding_4);
break;
case 5:
LCD501_Bitmap(50,35,(unsigned int*)encoding_5);
break;
case 6:
LCD501_Bitmap(50,35,(unsigned int*)encoding_6);
break;
case 0:
LCD501_Bitmap(50,35,(unsigned int*)encoding_day);
break;
}
}
//===============================================================//
//語法格式:shownmonth(shownmonth)
//實現功能:顯示農歷月份單元
//參數 :shownmonth:農歷月
//返回值 :無
//==============================================================//
void shownmonth(shownmonth) //顯示農歷月份子函數
{
int mshi = 0;
int sg = 0;
mshi = shownmonth/10;
sg = shownmonth%10;
LCD501_PutChar(42,52,number[sg]);
LCD501_PutChar(36,52,number[mshi]);
}
//===============================================================//
//語法格式:shownday(shownday)
//實現功能:顯示農歷日單元
//參數 :shownday:農歷日
//返回值 :無
//==============================================================//
void shownday(shownday) //顯示農歷日子函數
{
int mshi = 0;
int sg = 0;
mshi = shownday/10;
sg = shownday%10;
LCD501_PutChar(66,52,number[sg]);
LCD501_PutChar(60,52,number[mshi]);
}
//===============================================================//
//語法格式:openshow()
//實現功能:固定位顯示年月日星期,農歷日期
//參數 :無
//返回值 :無
//==============================================================//
void openshow(void) //顯示開機狀態畫面、年、月、日、星期、
{ //農歷日期的固定位顯示
LCD501_PutChar(0,2,'2');
LCD501_Bitmap(24,0,(unsigned int*)encoding_year);
LCD501_Bitmap(48,0,(unsigned int*)encoding_month);
LCD501_Bitmap(72,0,(unsigned int*)encoding_day);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -