欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
5.7寸的RA8806,LCD320240怎么接線?
[打印本頁]
作者:
鹽粒兒
時間:
2026-1-28 01:50
標題:
5.7寸的RA8806,LCD320240怎么接線?
代碼如下:
#include <STC12C5A.H>
#include <i2c.H>
#include <intrins.h>
#include <LCD320240.H>
#include <DS12C887.H>
#include <NongLi.H>
#include <ZiKu.H>
/*
AT24C08 地址分配
0 電源開關
1 聲音開關
2 背光設置
3 時間制式
*/
sbit Beep=P3^3;
sbit IRsignal=P3^2;//紅外接收輸入
sbit Error=P3^0;
unsigned char IR_DATA; //全局紅外鍵值
bit Power_SW;
bit Sound_SW;//聲音開關狀態
unsigned char BG_DATA;//背光設置數據
unsigned char KE;//背光比例
/*全局日期變量*/
unsigned char year,month,day;//年,月,日,星期(公歷)
unsigned char N_year,N_month,N_day;//年,月,日(農歷)
unsigned char Time_inf;//時間制式
unsigned char hour,min,sec;
unsigned char week;
unsigned char M_temp,D_temp;//當年春節所在的公歷月,日
/*全局節日變量*/
unsigned char DATE_TEMP;
bit DISP_SW;
/*用戶密碼*/
unsigned char USER_PassWord[6];
/*設置日期/時間臨時數組*/
unsigned char DATE_TIME[6];
void ms(ms)//通用延時函數
{
unsigned int x,y;
for(x=ms;x>0;x--)
for(y=220;y>0;y--)if((Power_SW==0)&&(IR_DATA==20))if(IR_DATA==20){IAP_CONTR=0x60;};
}
void KEY_BEP()//按鍵聲
{
if(Sound_SW==1)
{
Beep=0;
ms(80);
Beep=1;
}
}
void InitUART()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xB0;
TL1 = TH1;
PCON = 0x00;
ES = 1;
TR1 = 1;
}
void TEST_()//功能測試,此函數程序中不直接應用
{
unsigned char DATA,AD;
EEPROM_Write(1,2);//寫數據到24C08
DATA=EEPROM_Read(1);//讀24C08數據
LCD_GotoXY(1,2,0);//設置工作窗口
AD=PCF8591_Read_Data(1);//讀取AD值
Write_B(3,0,0,1);//一位數字顯示
Write_D(1,100,0,0,IR_DATA);
Write_Photo(5,130,32,32,ZF_Year);
Write_Photo(15,130,32,32,ZF_Month);
Write_Photo(20,130,32,32,ZF_Day);
Conversion(12,2,3);//農歷轉換
Write_Photo(0,130,16,32,Num_0);
Write_Photo(5,130,16,32,Num_1);
Write_Photo(10,130,16,32,Num_2);
Write_Photo(15,130,16,32,Num_3);
Write_Photo(20,130,16,32,Num_4);
Write_Photo(25,130,16,32,Num_5);
Write_Photo(30,130,16,32,Num_6);
Write_Photo(35,130,16,32,Num_7);
Write_Photo(0,180,16,32,Num_8);
Write_Photo(5,180,16,32,Num_9);
}
/**************************延時0.9ms子程序**********************/
void Delay0_9ms(void)
{
unsigned char a,b,c;
for(c=8;c>0;c--)
for(b=190;b>0;b--)
for(a=2;a>0;a--);
}
/***************************延時1ms子程序**********************/
void Delay1ms(void)
{
unsigned char a,b;
for(b=195;b>0;b--)
for(a=30;a>0;a--);
}
/***************************延時4.5ms子程序**********************/
void Delay4_5ms(void)
{
unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=168;b>0;b--)
for(a=300;a>0;a--);
}
void INIT()
{
Sound_SW=EEPROM_Read(1);//讀取聲音開關狀態
ms(10);
BG_DATA=EEPROM_Read(2);//讀取背光設置值
ms(10);
if(Sound_SW==1)
{
Beep=0;
ms(1000);
Beep=1;
}
init_lcd();//LCD初始化
DS_INIT();//時鐘初始化
}
void Power_ON()//開機畫面
{
PCF8591_Write_Data(200);//背光全開
ms(5000);
LCD_Graphic();
LCD_DrawRectangle(0,0,319,239,1);////畫外框
Write_Photo(12,50,128,64,Photo1);//標志
Write_Photo(10,130,32,32,ZF_Meng);
Write_Photo(15,130,32,32,ZF_Yan);
Write_Photo(20,130,32,32,ZF_Ke);
Write_Photo(25,130,32,32,ZF_Ji);
ms(20000);
Com_Dat(0xf0,0x08);//清屏
KE=EEPROM_Read(2);
if(KE==0)BG_DATA=0;
if(KE==7)BG_DATA=200;
if(KE<7&&KE>0){BG_DATA=(KE*10)+30;}
PCF8591_Write_Data(BG_DATA);
Write_Photo(0,0,48,64,Photo_L);
Write_Photo(34,0,48,72,Photo_R);
Write_Photo(0,160,320,79,Photo_main);
LCD_DrawRectangle(0,0,319,239,1);////畫外框
}
void main_Disp()
{
unsigned char year_shi,year_ge;
unsigned char month_shi,month_ge;
unsigned char day_shi,day_ge;
unsigned char hour_shi,hour_ge;
unsigned char min_shi,min_ge;
unsigned int LD_X,LD_Y;
unsigned int Celestial_stem,shengxiao;//干支,生肖
LCD_DrawRectangle(0,0,319,239,1);////畫外框
Com_Dat(0x10,0x10);//粗體
year=DS_Read(9);
month=DS_Read(8);
day=DS_Read(7);
hour=DS_Read(4);
min=DS_Read(2);
sec=DS_Read(0);
Time_inf=EEPROM_Read(3);
Conversion(year,month,day);//農歷轉換
Celestial_stem=((2000+N_year)-3)%60;//計算干支
shengxiao=((2000+N_year)-1900)%12;//計算生肖年
SendStr(5,140,0,"農");
SendStr(5,165,0,"歷");
SendStr(8,150,0,DD[Celestial_stem]);
SendStr(12,150,0,Sheng[shengxiao]);
SendStr(14,150,0,"年");
Com_Dat(0x10,0x00);//粗體
LD_X=17;
LD_Y=140;
if((hour==0)&&(min==0)&&(sec==0))
{
while(1)
{
SendStr(LD_X,LD_Y,1," ");
SendStr(LD_X+18,LD_Y,1," ");
break;
}
}
if(N_month!=11)LD_X+=2;
switch(N_month)
{
case 1:{Write_Photo(LD_X,LD_Y,32,33,ZF_zheng);}break;
case 2:{Write_Photo(LD_X,LD_Y,32,33,ZF_2);}break;
case 3:{Write_Photo(LD_X,LD_Y,32,33,ZF_3);}break;
case 4:{Write_Photo(LD_X,LD_Y,32,33,ZF_4);}break;
case 5:{Write_Photo(LD_X,LD_Y,32,33,ZF_5);}break;
case 6:{Write_Photo(LD_X,LD_Y,32,33,ZF_6);}break;
case 7:{Write_Photo(LD_X,LD_Y,32,33,ZF_7);}break;
case 8:{Write_Photo(LD_X,LD_Y,32,33,ZF_8);}break;
case 9:{Write_Photo(LD_X,LD_Y,32,33,ZF_9);}break;
case 10:{Write_Photo(LD_X,LD_Y,32,33,ZF_shi);}break;
case 11:{Write_Photo(LD_X,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+4,LD_Y,32,33,ZF_1);}break;
case 12:{Write_Photo(LD_X,LD_Y,32,33,ZF_la);}break;
}
if(N_month==11)LD_X+=4;
Write_Photo(LD_X+4,LD_Y,32,33,ZF_Month);
LD_X+=4;
switch(N_day)
{
case 1:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_1);}break;
case 2:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_2);}break;
case 3:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_3);}break;
case 4:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_4);}break;
case 5:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_5);}break;
case 6:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_6);}break;
case 7:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_7);}break;
case 8:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_8);}break;
case 9:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_9);}break;
case 10:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_chu);Write_Photo(LD_X+8,LD_Y,32,33,ZF_shi);}break;
case 11:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_1);}break;
case 12:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_2);}break;
case 13:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_3);}break;
case 14:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_4);}break;
case 15:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_5);}break;
case 16:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_6);}break;
case 17:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_7);}break;
case 18:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_8);}break;
case 19:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_shi);Write_Photo(LD_X+8,LD_Y,32,33,ZF_9);}break;
case 20:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_2);Write_Photo(LD_X+8,LD_Y,32,33,ZF_shi);}break;
case 21:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_1);}break;
case 22:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_2);}break;
case 23:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_3);}break;
case 24:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_4);}break;
case 25:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_5);}break;
case 26:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_6);}break;
case 27:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_7);}break;
case 28:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_8);}break;
case 29:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_er);Write_Photo(LD_X+8,LD_Y,32,33,ZF_9);}break;
case 30:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_3);Write_Photo(LD_X+8,LD_Y,32,33,ZF_shi);}break;
case 31:{Write_Photo(LD_X+4,LD_Y,32,33,ZF_3);Write_Photo(LD_X+8,LD_Y,32,33,ZF_1);}break;
}
Com_Dat(0x10,0x10);//粗體
year_shi=year/10;
year_ge=year%10;
LD_X=12;
LD_Y=5;
Write_Photo(LD_X,LD_Y,16,33,Num_2);
Write_Photo(LD_X+4,LD_Y,16,33,Num_0);
switch(year_shi)
{
case 0: Write_Photo(LD_X+8,LD_Y,16,33,Num_0); break;
case 1: Write_Photo(LD_X+8,LD_Y,16,33,Num_1); break;
case 2: Write_Photo(LD_X+8,LD_Y,16,33,Num_2); break;
case 3: Write_Photo(LD_X+8,LD_Y,16,33,Num_3); break;
case 4: Write_Photo(LD_X+8,LD_Y,16,33,Num_4); break;
case 5: Write_Photo(LD_X+8,LD_Y,16,33,Num_5); break;
case 6: Write_Photo(LD_X+8,LD_Y,16,33,Num_6); break;
case 7: Write_Photo(LD_X+8,LD_Y,16,33,Num_7); break;
case 8: Write_Photo(LD_X+8,LD_Y,16,33,Num_8); break;
case 9: Write_Photo(LD_X+8,LD_Y,16,33,Num_9); break;
}
switch(year_ge)
{
case 0: Write_Photo(LD_X+12,LD_Y,16,33,Num_0); break;
case 1: Write_Photo(LD_X+12,LD_Y,16,33,Num_1); break;
case 2: Write_Photo(LD_X+12,LD_Y,16,33,Num_2); break;
case 3: Write_Photo(LD_X+12,LD_Y,16,33,Num_3); break;
case 4: Write_Photo(LD_X+12,LD_Y,16,33,Num_4); break;
case 5: Write_Photo(LD_X+12,LD_Y,16,33,Num_5); break;
case 6: Write_Photo(LD_X+12,LD_Y,16,33,Num_6); break;
case 7: Write_Photo(LD_X+12,LD_Y,16,33,Num_7); break;
case 8: Write_Photo(LD_X+12,LD_Y,16,33,Num_8); break;
case 9: Write_Photo(LD_X+12,LD_Y,16,33,Num_9); break;
}
LD_X=10;
LD_Y=45;
if(hour==23||hour==0)SendStr(LD_X+21,LD_Y+25,0,"子時");
if(hour==1||hour==2)SendStr(LD_X+21,LD_Y+25,0,"丑時");
if(hour==3||hour==4)SendStr(LD_X+21,LD_Y+25,0,"寅時");
if(hour==5||hour==6)SendStr(LD_X+21,LD_Y+25,0,"卯時");
if(hour==7||hour==8)SendStr(LD_X+21,LD_Y+25,0,"辰時");
if(hour==9||hour==10)SendStr(LD_X+21,LD_Y+25,0,"巳時");
if(hour==11||hour==12)SendStr(LD_X+21,LD_Y+25,0,"午時");
if(hour==13||hour==14)SendStr(LD_X+21,LD_Y+25,0,"未時");
if(hour==15||hour==16)SendStr(LD_X+21,LD_Y+25,0,"申時");
if(hour==17||hour==18)SendStr(LD_X+21,LD_Y+25,0,"酉時");
if(hour==19||hour==20)SendStr(LD_X+21,LD_Y+25,0,"戌時");
if(hour==21||hour==22)SendStr(LD_X+21,LD_Y+25,0,"亥時");
if(hour<12)SendStr(LD_X-6,LD_Y+25,0,"上午");
if(hour>=12)SendStr(LD_X-6,LD_Y+25,0,"下午");
if(hour>=13)
{
if(Time_inf==1)hour-=12;
}
hour_shi=hour/10;
hour_ge=hour%10;
if((min==0)&&(sec==0))
{
Write_Photo(LD_X-1,LD_Y,32,48,num_3248_);
Write_Photo(LD_X+3,LD_Y,32,48,num_3248_);
Write_Photo(LD_X+7,LD_Y,32,48,num_3248_);
Write_Photo(LD_X+8,LD_Y,32,48,num_3248_);
Write_Photo(LD_X+12,LD_Y,32,48,num_3248_);
Write_Photo(LD_X+16,LD_Y,32,48,num_3248_);
}
if(hour_shi!=0)
{
switch(hour_shi)
{
case 0: Write_Photo(LD_X-1,LD_Y,32,48,num3248_0); break;
case 1: Write_Photo(LD_X-1,LD_Y,32,48,num3248_1); break;
case 2: Write_Photo(LD_X-1,LD_Y,32,48,num3248_2); break;
}
}
else
{
switch(hour_shi)
{
case 1: Write_Photo(LD_X-1,LD_Y,32,48,num3248_1); break;
}
LD_X-=2;
}
switch(hour_ge)
{
case 0: Write_Photo(LD_X+3,LD_Y,32,48,num3248_0); break;
case 1: Write_Photo(LD_X+3,LD_Y,32,48,num3248_1); break;
case 2: Write_Photo(LD_X+3,LD_Y,32,48,num3248_2); break;
case 3: Write_Photo(LD_X+3,LD_Y,32,48,num3248_3); break;
case 4: Write_Photo(LD_X+3,LD_Y,32,48,num3248_4); break;
case 5: Write_Photo(LD_X+3,LD_Y,32,48,num3248_5); break;
case 6: Write_Photo(LD_X+3,LD_Y,32,48,num3248_6); break;
case 7: Write_Photo(LD_X+3,LD_Y,32,48,num3248_7); break;
case 8: Write_Photo(LD_X+3,LD_Y,32,48,num3248_8); break;
case 9: Write_Photo(LD_X+3,LD_Y,32,48,num3248_9); break;
}
Write_Photo(LD_X+8,LD_Y,24,48,Photo_Time);//:
min_shi=min/10;
min_ge=min%10;
switch(min_shi)
{
case 0: Write_Photo(LD_X+12,LD_Y,32,48,num3248_0); break;
case 1: Write_Photo(LD_X+12,LD_Y,32,48,num3248_1); break;
case 2: Write_Photo(LD_X+12,LD_Y,32,48,num3248_2); break;
case 3: Write_Photo(LD_X+12,LD_Y,32,48,num3248_3); break;
case 4: Write_Photo(LD_X+12,LD_Y,32,48,num3248_4); break;
case 5: Write_Photo(LD_X+12,LD_Y,32,48,num3248_5); break;
case 6: Write_Photo(LD_X+12,LD_Y,32,48,num3248_6); break;
case 7: Write_Photo(LD_X+12,LD_Y,32,48,num3248_7); break;
case 8: Write_Photo(LD_X+12,LD_Y,32,48,num3248_8); break;
case 9: Write_Photo(LD_X+12,LD_Y,32,48,num3248_9); break;
}
switch(min_ge)
{
case 0: Write_Photo(LD_X+16,LD_Y,32,48,num3248_0); break;
case 1: Write_Photo(LD_X+16,LD_Y,32,48,num3248_1); break;
case 2: Write_Photo(LD_X+16,LD_Y,32,48,num3248_2); break;
case 3: Write_Photo(LD_X+16,LD_Y,32,48,num3248_3); break;
case 4: Write_Photo(LD_X+16,LD_Y,32,48,num3248_4); break;
case 5: Write_Photo(LD_X+16,LD_Y,32,48,num3248_5); break;
case 6: Write_Photo(LD_X+16,LD_Y,32,48,num3248_6); break;
case 7: Write_Photo(LD_X+16,LD_Y,32,48,num3248_7); break;
case 8: Write_Photo(LD_X+16,LD_Y,32,48,num3248_8); break;
case 9: Write_Photo(LD_X+16,LD_Y,32,48,num3248_9); break;
}
LD_X=5;
LD_Y=100;
month_shi=month/10;
month_ge=month%10;
switch(month_shi)
{
case 0: Write_Photo(LD_X,LD_Y,16,32,Num_0); break;
case 1: Write_Photo(LD_X,LD_Y,16,32,Num_1); break;
case 2: Write_Photo(LD_X,LD_Y,16,32,Num_2); break;
case 3: Write_Photo(LD_X,LD_Y,16,32,Num_3); break;
case 4: Write_Photo(LD_X,LD_Y,16,32,Num_4); break;
case 5: Write_Photo(LD_X,LD_Y,16,32,Num_5); break;
case 6: Write_Photo(LD_X,LD_Y,16,32,Num_6); break;
case 7: Write_Photo(LD_X,LD_Y,16,32,Num_7); break;
case 8: Write_Photo(LD_X,LD_Y,16,32,Num_8); break;
case 9: Write_Photo(LD_X,LD_Y,16,32,Num_9); break;
}
switch(month_ge)
{
case 0: Write_Photo(LD_X+2,LD_Y,16,32,Num_0); break;
case 1: Write_Photo(LD_X+2,LD_Y,16,32,Num_1); break;
case 2: Write_Photo(LD_X+2,LD_Y,16,32,Num_2); break;
case 3: Write_Photo(LD_X+2,LD_Y,16,32,Num_3); break;
case 4: Write_Photo(LD_X+2,LD_Y,16,32,Num_4); break;
case 5: Write_Photo(LD_X+2,LD_Y,16,32,Num_5); break;
case 6: Write_Photo(LD_X+2,LD_Y,16,32,Num_6); break;
case 7: Write_Photo(LD_X+2,LD_Y,16,32,Num_7); break;
case 8: Write_Photo(LD_X+2,LD_Y,16,32,Num_8); break;
case 9: Write_Photo(LD_X+2,LD_Y,16,32,Num_9); break;
}
Write_Photo(LD_X+4,LD_Y,32,32,ZF_Month);
day_shi=day/10;
day_ge=day%10;
switch(day_shi)
{
case 0: Write_Photo(LD_X+8,LD_Y,16,32,Num_0); break;
case 1: Write_Photo(LD_X+8,LD_Y,16,32,Num_1); break;
case 2: Write_Photo(LD_X+8,LD_Y,16,32,Num_2); break;
case 3: Write_Photo(LD_X+8,LD_Y,16,32,Num_3); break;
case 4: Write_Photo(LD_X+8,LD_Y,16,32,Num_4); break;
case 5: Write_Photo(LD_X+8,LD_Y,16,32,Num_5); break;
case 6: Write_Photo(LD_X+8,LD_Y,16,32,Num_6); break;
case 7: Write_Photo(LD_X+8,LD_Y,16,32,Num_7); break;
case 8: Write_Photo(LD_X+8,LD_Y,16,32,Num_8); break;
case 9: Write_Photo(LD_X+8,LD_Y,16,32,Num_9); break;
}
switch(day_ge)
{
case 0: Write_Photo(LD_X+10,LD_Y,16,32,Num_0); break;
case 1: Write_Photo(LD_X+10,LD_Y,16,32,Num_1); break;
case 2: Write_Photo(LD_X+10,LD_Y,16,32,Num_2); break;
case 3: Write_Photo(LD_X+10,LD_Y,16,32,Num_3); break;
case 4: Write_Photo(LD_X+10,LD_Y,16,32,Num_4); break;
case 5: Write_Photo(LD_X+10,LD_Y,16,32,Num_5); break;
case 6: Write_Photo(LD_X+10,LD_Y,16,32,Num_6); break;
case 7: Write_Photo(LD_X+10,LD_Y,16,32,Num_7); break;
case 8: Write_Photo(LD_X+10,LD_Y,16,32,Num_8); break;
case 9: Write_Photo(LD_X+10,LD_Y,16,32,Num_9); break;
}
Write_Photo(LD_X+12,LD_Y,32,32,ZF_Day);
Write_Photo(LD_X+17,LD_Y,32,32,ZF_Xing);
Write_Photo(LD_X+21,LD_Y,32,32,ZF_Qi);
switch(week)
{
case 0: Write_Photo(LD_X+25,LD_Y,32,32,ZF_Day); break;
case 1: Write_Photo(LD_X+25,LD_Y,32,32,ZF_1); break;
case 2: Write_Photo(LD_X+25,LD_Y,32,32,ZF_2); break;
case 3: Write_Photo(LD_X+25,LD_Y,32,32,ZF_3); break;
case 4: Write_Photo(LD_X+25,LD_Y,32,32,ZF_4); break;
case 5: Write_Photo(LD_X+25,LD_Y,32,32,ZF_5); break;
case 6: Write_Photo(LD_X+25,LD_Y,32,32,ZF_6); break;
}
Com_Dat(0x10,0x00);
}
void Festival()//節日
{
unsigned char y,DATE;
unsigned char LDX=22,LDY=185;
y=0;
DATE=0;
Com_Dat(0x10,0x10);
Conversion(year,month,day);
if(DISP_SW==1)SendStr(LDX-5,LDY,0,"今天:");
while(1)
{
if((month==2)&&((day>=2)&&(day<=5)))//立春
{
y=year;
DATE=(((y*0.2422)+3.87)-((y-1)/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[2]);else break;
}
if((month==2)&&((day>=18)&&(day<=20)))//雨水
{
y=year;
DATE=(((y*0.2422)+18.73)-(y/4));
if(y==26)DATE=DATE-1; //2026年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[2]);else break;
}
if((month==3)&&((day>=5)&&(day<=7)))//驚蟄
{
y=year;
DATE=((y*0.2422+5.63)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[3]);else break;
}
if((month==3)&&((day>=20)&&(day<=22)))//春分
{
y=year;
DATE=((y*0.2422+20.646)-(y/4));
if(y==84)DATE=DATE+1; //2084年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[3]);else break;
}
if((month==4)&&((day>=4)&&(day<=6)))//清明
{
y=year;
DATE=((y*0.2422+4.81)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[4]);else break;
}
if((month==4)&&((day>=19)&&(day<=21)))//谷雨
{
y=year;
DATE=((y*0.2422+20.1)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[4]);else break;
}
if((month==5)&&((day>=5)&&(day<=7)))//立夏
{
y=year;
DATE=((y*0.2422+5.52)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[5]);else break;
}
if((month==5)&&((day>=20)&&(day<=22)))//小滿
{
y=year;
DATE=((y*0.2422+21.04)-(y/4));
if(y==8)DATE=DATE+1; //2008年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[5]);else break;
}
if((month==6)&&((day>=5)&&(day<=7)))//芒種
{
y=year;
DATE=((y*0.2422+5.678)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[6]);else break;
}
if((month==6)&&((day>=21)&&(day<=22)))//夏至
{
y=year;
DATE=((y*0.2422+21.37)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[6]);else break;
}
if((month==7)&&((day>=6)&&(day<=8)))//小暑
{
y=year;
DATE=((y*0.2422+7.108)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[7]);else break;
}
if((month==7)&&((day>=22)&&(day<=24)))//大暑
{
y=year;
DATE=((y*0.2422+22.83)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[7]);else break;
}
if((month==8)&&((day>=7)&&(day<=9)))//立秋
{
y=year;
DATE=((y*0.2422+7.5)-(y/4));
if(y==2)DATE=DATE+1; //2002年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[8]);else break;
}
if((month==8)&&((day>=22)&&(day<=24)))//處暑
{
y=year;
DATE=((y*0.2422+23.13)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[8]);else break;
}
if((month==9)&&((day>=7)&&(day<=9)))//白露
{
y=year;
DATE=((y*0.2422+7.646)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[9]);else break;
}
if((month==9)&&((day>=21)&&(day<=24)))//秋分
{
y=year;
DATE=((y*0.2422+23.042)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[9]);else break;
}
if((month==10)&&((day>=8)&&(day<=9)))//寒露
{
y=year;
DATE=((y*0.2422+8.318)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[10]);else break;
}
if((month==10)&&((day>=23)&&(day<=24)))//霜降
{
y=year;
DATE=((y*0.2422+23.438)-(y/4));
if(y==89)DATE=DATE+1; //2089年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[10]);else break;
}
if((month==11)&&((day>=7)&&(day<=8)))//立冬
{
y=year;
DATE=((y*0.2422+7.438)-(y/4));
if(y==89)DATE=DATE+1; //2089年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[11]);else break;
}
if((month==11)&&((day>=22)&&(day<=23)))//小雪
{
y=year;
DATE=((y*0.2422+22.36)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[11]);else break;
}
if((month==12)&&((day>=6)&&(day<=8)))//大雪
{
y=year;
DATE=((y*0.2422+7.18)-(y/4));
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[12]);else break;
}
if((month==12)&&((day>=21)&&(day<=23)))//冬至
{
y=year;
DATE=((y*0.2422+21.94)-(y/4));
if(y==21)DATE=DATE+1; //2021年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[12]);else break;
}
if((month==1)&&((day>=5)&&(day<=7)))//小寒
{
y=year;
DATE=((y*0.2422+5.4055)-(y/4));
if(y==19)DATE=DATE-1; //2019年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_A[1]);else break;
}
if((month==1)&&((day>=20)&&(day<=21)))//大寒
{
y=year;
DATE=((y*0.2422+20.12)-(y/4));
if(y==82)DATE=DATE+1; //2082年例外
if(day==DATE)DATE_TEMP=DATE;
if((day==DATE)&&(DISP_SW==1))SendStr(LDX,LDY,0,Festival_B[1]);else break;
}
if((month==M_temp)&&(day+1==D_temp))SendStr(LDX,LDY,0,"除夕");else break;
break;
Com_Dat(0x10,0x00);
}
}
void Forecast()//節日預報
{
float y_Temp;
unsigned char Temp_A,y,S,DATE;
unsigned char LDX=15,LDY=185;
Com_Dat(0x10,0x10);
if(day<15)
{
switch(month)//上半月
{
case 1: y_Temp=5.4055;break;//小寒
case 2: y_Temp=3.87;break;//立春
case 3: y_Temp=5.63;break;//驚蟄
case 4: y_Temp=4.81;break;//清明
case 5: y_Temp=5.52;break;//立夏
case 6: y_Temp=5.678;break;//芒種
case 7: y_Temp=7.108;break;//小暑
case 8: y_Temp=7.5;break;//立秋
case 9: y_Temp=7.646;break;//白露
case 10: y_Temp=8.318;break;//寒露
case 11: y_Temp=7.438;break;//立冬
case 12: y_Temp=7.18;break;//小寒
default:break;
}
y=year;
DATE=((y*0.2422+y_Temp)-(y/4));
for(S=0;S<30;S++){if(DATE==S){Temp_A=S;break;}}//計算當前月節日在哪一日(上半月)
if((day+1)==Temp_A){SendStr(LDX,LDY,0," 明天:");SendStr(LDX+7,LDY,0,Festival_A[month]);}
if((day+2)==Temp_A){SendStr(LDX,LDY,0," 后天:");SendStr(LDX+7,LDY,0,Festival_A[month]);}
}
else
{
switch(month)//下半月
{
case 1: y_Temp=20.12;break;//大寒
case 2: y_Temp=18.73;break;//雨水
case 3: y_Temp=20.646;break;//春分
case 4: y_Temp=20.1;break;//谷雨
case 5: y_Temp=21.04;break;//小滿
case 6: y_Temp=21.37;break;//夏至
case 7: y_Temp=22.83;break;//大暑
case 8: y_Temp=23.13;break;//處暑
case 9: y_Temp=23.042;break;//秋分
case 10: y_Temp=23.438;break;//霜降
case 11: y_Temp=22.36;break;//小雪
case 12: y_Temp=21.94;break;//大寒
default:break;
}
y=year;
DATE=(((y*0.2422)+y_Temp)-(y/4));//計算出當月節日在第幾日
for(S=0;S<30;S++){if(DATE==S){Temp_A=S;break;}}//計算當前月節日在哪一日(下半月)
if((day+1)==Temp_A){SendStr(LDX,LDY,0," 明天:");SendStr(LDX+7,LDY,0,Festival_B[month]);}
if((day+2)==Temp_A){SendStr(LDX,LDY,0," 后天:");SendStr(LDX+7,LDY,0,Festival_B[month]);}
}
if(month==M_temp)//當前月是否接近春節
{
if(day==Temp_A){DISP_SW=1;}else DISP_SW=0;
if((day!=Temp_A)&&((day+1)!=Temp_A)&&((day+2)!=Temp_A)&&(day+3!=D_temp)&&(day+2!=D_temp)&&(day+1!=D_temp)&&(day!=D_temp))SendStr(LDX,LDY,0,"今天無節日!");
if(day+3==D_temp){SendStr(LDX,LDY,0," 后天:除夕");}
if(day+2==D_temp){SendStr(LDX,LDY,0," 明天:除夕");}
if((day+1==D_temp)||(day==D_temp)){DISP_SW=1;}else DISP_SW=0;
if((N_month==1)&&(N_day==1))SendStr(29,LDY,0,"春節");
}
else
{
if(day==Temp_A){DISP_SW=1;}else DISP_SW=0;
if((day!=Temp_A)&&((day+1)!=Temp_A)&&((day+2)!=Temp_A))SendStr(LDX,LDY,0,"今天無節日!");
}
Com_Dat(0x10,0x00);
}
void mi_Time()//小時間窗口
{
hour=DS_Read(4);
min=DS_Read(2);
Write_D(34,220,0,0,hour);
SendStr(36,220,0,":");
Write_D(37,220,0,0,min);
}
void MODE()
{
unsigned char GB_A,GB_B;
unsigned char Date_Count;//設置日期計數器
unsigned char D_T_OK;//設置日期/時間是否正確
unsigned char YH,YL,MH,ML,DH,DL;//設置日期元素
unsigned char HH,HL,SH,SL;//設置日期元素
Com_Dat(0xf0,0x08);//清屏
LCD_DrawRectangle(0,0,319,239,1);////畫外框
LCD_Graphic();
Dis_Linexy(1,25,319,25,1);
Dis_Linexy(1,215,319,215,1);
Dis_Linexy(150,25,150,215,1);
LCD_Text();
Com_Dat(0x10,0x10);//粗體
SendStr(14,5,0,"設 置 頁 面");
Com_Dat(0x10,0x00);
IR_DATA=0;
GB_B=0;
while(1)
{
mi_Time();//小時間窗口
GB_A++;
if(GB_A==15)SendStr(23,220,0,"_");
if(GB_A>=30){SendStr(23,220,0," ");GB_A=0;}
SendStr(1,50,0,"◇ 1:日期調整 ");
SendStr(1,80,0,"◇ 2:時間調整");
SendStr(1,110,0,"◇ 3:背光調整");
SendStr(1,140,0,"◇ 4:高級設定");
SendStr(1,220,0,"請選擇您要設置的項目:");
SendStr(20,50,0,"請按對應數字鍵選擇");
SendStr(20,70,0,"一個要設置的項目");
SendStr(22,120,0,"按 鍵返回主頁");
Write_Photo(24,120,16,16,Photo_ENTER);
ms(100);
if((IR_DATA==21)||(IR_DATA==23)||(IR_DATA==24)||(IR_DATA==25)||
(IR_DATA==26)||(IR_DATA==27)||(IR_DATA==28)||(IR_DATA==29))
{
SendStr(25,160,0,"無效按鍵!");
GB_B++;
if(GB_B>=60){SendStr(25,160,0," ");GB_B=0;IR_DATA=0;}
}
if(IR_DATA==30)//返回主頁
{
Com_Dat(0xf0,0x08);//清屏
Write_Photo(0,0,48,64,Photo_L);
Write_Photo(34,0,48,72,Photo_R);
Write_Photo(0,160,320,79,Photo_main);
LCD_DrawRectangle(0,0,319,239,1);////畫外框
break;
}
if(IR_DATA==1)//日期調整
{
CLS();
GB_A=0;
SendStr(23,220,0,"1");
SendStr(1,50,0,"◆");
Com_Dat(0x10,0x10);//粗體
SendStr(23,30,0,"日 期 調 整");
Com_Dat(0x10,0x00);
SendStr(20,190,0,"EQ保存 返回");
Write_Photo(28,190,16,16,Photo_ENTER);
SendStr(20,60,0,"當前日期:");
SendStr(20,115,0,"調整為:");
SendStr(25,140,0,"20 - - ");
IR_DATA=0;
Date_Count=0;
D_T_OK=0;
while(1)
{
year=DS_Read(9);
month=DS_Read(8);
day=DS_Read(7);
mi_Time();
Com_Dat(0x10,0x10);//粗體
SendStr(25,85,0,"20 - - ");
Write_D(27,85,0,0,year);
Write_D(30,85,0,0,month);
Write_D(33,85,0,0,day);
Com_Dat(0x10,0x00);//粗體
if(Date_Count<6)
{
if(IR_DATA>0&&IR_DATA<=10)
{
if(IR_DATA==10)IR_DATA=0;
DATE_TIME[Date_Count]=IR_DATA;
switch(Date_Count)
{
case 0:Write_B(27,140,0,IR_DATA);break;
case 1:Write_B(28,140,0,IR_DATA);break;
case 2:Write_B(30,140,0,IR_DATA);break;
case 3:Write_B(31,140,0,IR_DATA);break;
case 4:Write_B(33,140,0,IR_DATA);break;
case 5:Write_B(34,140,0,IR_DATA);break;
}
Date_Count++;
IR_DATA=0;
}
}
if(Date_Count>=6)
{
YH=DATE_TIME[0];
YL=DATE_TIME[1];
MH=DATE_TIME[2];
ML=DATE_TIME[3];
DH=DATE_TIME[4];
DL=DATE_TIME[5];
if(((MH*10+ML)>12)||((MH*10+ML)<1)||((DH*10+DL)>31)||((DH*10+DL)<1))
{
SendStr(25,165,0,"輸入錯誤!");
Date_Count=0;
D_T_OK=0;
}else {SendStr(25,165,0,"輸入正確!");D_T_OK=1;}
}
GB_A++;
if(GB_A==30)
switch(Date_Count)
{
case 0:SendStr(27,140,0,"_");break;
case 1:SendStr(28,140,0,"_");break;
case 2:SendStr(30,140,0,"_");break;
case 3:SendStr(31,140,0,"_");break;
case 4:SendStr(33,140,0,"_");break;
case 5:SendStr(34,140,0,"_");break;
}
if(GB_A>=60)
{
switch(Date_Count)
{
case 0:SendStr(27,140,0," ");break;
case 1:SendStr(28,140,0," ");break;
case 2:SendStr(30,140,0," ");break;
case 3:SendStr(31,140,0," ");break;
case 4:SendStr(33,140,0," ");break;
case 5:SendStr(34,140,0," ");break;
}
GB_A=0;
}
if(IR_DATA==28)//保存
{
if(D_T_OK==1)
{
year=YH*10+YL;
month=MH*10+ML;
day=DH*10+DL;
DS_Write(9,year);
DS_Write(8,month);
DS_Write(7,day);
SendStr(25,165,0," 已儲存!");
}
else SendStr(25,165,0," 未儲存!");
Date_Count=0;
IR_DATA=0;
D_T_OK=0;
}
if(IR_DATA==30){CLS();IR_DATA=0;break;}//退出
}
IR_DATA=0;
}
if(IR_DATA==2)//時間調整
{
GB_A=0;
CLS();
SendStr(23,220,0,"2");
SendStr(1,80,0,"◆");
Com_Dat(0x10,0x10);//粗體
SendStr(23,30,0,"時 間 調 整");
Com_Dat(0x10,0x00);
SendStr(20,190,0,"EQ保存 返回");
Write_Photo(28,190,16,16,Photo_ENTER);
SendStr(20,60,0,"當前時間:");
SendStr(26,85,0, " : : ");
SendStr(20,115,0,"調整為:");
SendStr(26,140,0," : : ");
IR_DATA=0;
Date_Count=0;
D_T_OK=0;
while(1)
{
hour=DS_Read(4);
min=DS_Read(2);
sec=DS_Read(0);
mi_Time();
Com_Dat(0x10,0x10);//粗體
Write_D(26,85,0,0,hour);
Write_D(29,85,0,0,min);
Write_D(32,85,0,0,sec);
Com_Dat(0x10,0x00);//粗體
if(Date_Count<6)
{
if(IR_DATA>0&&IR_DATA<=10)
{
if(IR_DATA==10)IR_DATA=0;
DATE_TIME[Date_Count]=IR_DATA;
switch(Date_Count)
{
case 0:Write_B(26,140,0,IR_DATA);break;
case 1:Write_B(27,140,0,IR_DATA);break;
case 2:Write_B(29,140,0,IR_DATA);break;
case 3:Write_B(30,140,0,IR_DATA);break;
case 4:Write_B(32,140,0,IR_DATA);break;
case 5:Write_B(33,140,0,IR_DATA);break;
}
Date_Count++;
IR_DATA=0;
}
}
if(Date_Count>=6)
{
HH=DATE_TIME[0];
HL=DATE_TIME[1];
MH=DATE_TIME[2];
ML=DATE_TIME[3];
SH=DATE_TIME[4];
SL=DATE_TIME[5];
if(((HH*10+HL)>23)||((MH*10+ML)>59)||((SH*10+SL)>59))
{
SendStr(25,165,0,"輸入錯誤!");
Date_Count=0;
D_T_OK=0;
}else {SendStr(25,165,0,"輸入正確!");D_T_OK=1;}
}
GB_A++;
if(GB_A==30)
switch(Date_Count)
{
case 0:SendStr(26,140,0,"_");break;
case 1:SendStr(27,140,0,"_");break;
case 2:SendStr(29,140,0,"_");break;
case 3:SendStr(30,140,0,"_");break;
case 4:SendStr(32,140,0,"_");break;
case 5:SendStr(33,140,0,"_");break;
}
if(GB_A>=60)
{
switch(Date_Count)
{
case 0:SendStr(26,140,0," ");break;
case 1:SendStr(27,140,0," ");break;
case 2:SendStr(29,140,0," ");break;
case 3:SendStr(30,140,0," ");break;
case 4:SendStr(32,140,0," ");break;
case 5:SendStr(33,140,0," ");break;
}
GB_A=0;
}
if(IR_DATA==28)//保存
{
if(D_T_OK==1)
{
hour=HH*10+HL;
min=MH*10+ML;
sec=SH*10+SL;
DS_Write(4,hour);
DS_Write(2,min);
DS_Write(0,sec);
SendStr(25,165,0," 已儲存!");
}
else SendStr(25,165,0," 未儲存!");
Date_Count=0;
IR_DATA=0;
D_T_OK=0;
}
if(IR_DATA==30){CLS();IR_DATA=0;break;}//退出
}
IR_DATA=0;
}
if(IR_DATA==3)//背光設定
{
GB_A=0;
CLS();
SendStr(23,220,0,"3");
SendStr(1,110,0,"◆");
KE=EEPROM_Read(2);
Com_Dat(0x10,0x10);//粗體
SendStr(23,30,0,"背 光 設 定");
Com_Dat(0x10,0x00);
SendStr(22,110,0,"背光級別:");
SendStr(20,190,0,"EQ保存 返回");
Write_Photo(28,190,16,16,Photo_ENTER);
while(1)
{
ms(200);
mi_Time();//小時間窗口
if(KE==0)SendStr(20,135,0,"- □□□□□□□ +");
if(KE==1)SendStr(20,135,0,"- ■□□□□□□ +");
if(KE==2)SendStr(20,135,0,"- ■■□□□□□ +");
if(KE==3)SendStr(20,135,0,"- ■■■□□□□ +");
if(KE==4)SendStr(20,135,0,"- ■■■■□□□ +");
if(KE==5)SendStr(20,135,0,"- ■■■■■□□ +");
if(KE==6)SendStr(20,135,0,"- ■■■■■■□ +");
if(KE==7)SendStr(20,135,0,"- ■■■■■■■ +");
Com_Dat(0x10,0x10);//粗體
if(KE==0){BG_DATA=0;SendStr(32,110,0,"關閉");}
if(KE==7){BG_DATA=200;SendStr(32,110,0,"最亮");}
if(KE<7&&KE>0){BG_DATA=(KE*10)+30;Write_D(32,110,0,1,KE);SendStr(34,110,0," ");}
Com_Dat(0x10,0x00);
PCF8591_Write_Data(BG_DATA);
if(IR_DATA==27){if(KE<7)KE++;IR_DATA=0;}
if(IR_DATA==26){if(KE>0)KE--;IR_DATA=0;}
if(IR_DATA==28){EEPROM_Write(2,KE);SendStr(26,165,0,"已儲存!");}//保存
if(IR_DATA==30)
{
KE=EEPROM_Read(2);
if(KE==0)BG_DATA=0;
if(KE==7)BG_DATA=200;
if(KE<7&&KE>0){BG_DATA=(KE*10)+30;}
PCF8591_Write_Data(BG_DATA);
CLS();
IR_DATA=0;
break;
}//退出
}
IR_DATA=0;
}
if(IR_DATA==4)//高級設定
{
CLS();
GB_A=0;
SendStr(23,220,0,"4");
SendStr(1,140,0,"◆");
Com_Dat(0x10,0x10);//粗體
SendStr(23,30,0,"高 級 設 定");
Com_Dat(0x10,0x00);
SendStr(20,60,0,"時間格式:(+ -)");
SendStr(21,90,0,"12小時制 □");
SendStr(21,120,0,"24小時制 □");
Time_inf=EEPROM_Read(3);
IR_DATA=0;
while(1)
{
mi_Time();//小時間窗口
if(Time_inf==0){SendStr(32,90,0,"□");SendStr(32,120,0,"■");}
if(Time_inf==1){SendStr(32,90,0,"■");SendStr(32,120,0,"□");}
ms(100);
if(IR_DATA==27)//+
{
Time_inf=1;
IR_DATA=0;
}
if(IR_DATA==26)//-
{
Time_inf=0;
IR_DATA=0;
}
if(IR_DATA==28)//確定
{
EEPROM_Write(3,Time_inf);
SendStr(26,165,0,"已儲存!");
IR_DATA=0;
}
if(IR_DATA==30){CLS();IR_DATA=0;break;}//返回
}
IR_DATA=0;
}
}
}
void IR_KEY()
{
while(IR_DATA==20)//電源鍵
{
PCF8591_Write_Data(0);
wr_cmd(0x00);
wr_data(0x80);
Sound_SW=0;
IR_DATA=0;
TR1=0;//關串口中斷
Power_SW=0;
while(1)
{
ms(10000);
Error=0;
ms(20);
Error=1;
ms(10000);
}
}
while(IR_DATA==22)//靜音
{
if(Sound_SW==0){EEPROM_Write(1,1);Sound_SW=1;}//保存聲音開關狀態
else {EEPROM_Write(1,0);Sound_SW=0;}
IR_DATA=0;
}
if(IR_DATA==21)MODE();//設置頁面
}
void main()
{
AUXR = AUXR|0x40; // T0, 1T Mode
ms(1000);//等待電源穩定
Power_SW=1;
IT0=1; //INT0為負邊沿觸發, (1:負邊沿觸發,0:低電平觸發)
EX0=1; //外部中斷INT0開, (1:開, 0:關 )
InitUART();//串口初始化
INIT();
ms(10000);//等待電源穩定
Power_ON();
EA=1; //開總中斷
if(P0==0x1234)TEST_();//此句無實際意義
ms(20);
/* 背光重設 */
KE=EEPROM_Read(2);
if(KE==0)BG_DATA=0;
if(KE==7)BG_DATA=200;
if(KE<7&&KE>0){BG_DATA=(KE*10)+30;}
PCF8591_Write_Data(BG_DATA);
Write_Photo(0,0,48,64,Photo_L);
Write_Photo(34,0,48,72,Photo_R);
Write_Photo(0,160,320,79,Photo_main);
LCD_DrawRectangle(0,0,319,239,1);////畫外框
while(1)
{
ms(100);
IR_KEY();//掃描按鍵
main_Disp();//顯示主界面
Festival();//當前節日
Forecast();//節日預報
}
}
void int0() interrupt 0 using 2//紅外和按鍵處理程序
{
unsigned char IRD,IR_Time,i,j,k; //延時用的循環變量
unsigned char data IRcode[4]; //定義一個4字節的數組用來存儲代碼
unsigned char IRD1,IRD2,IRD3,IRD4;
unsigned char CodeTemp; //編碼字節緩存變量
unsigned char shi_1,ge_1,shi_2,ge_2,shi_3,ge_3,shi_4,ge_4;
EA=0;//臨時關中斷,以免紅外處理出錯
CodeTemp=0; //初始化紅外編碼字節緩存變量
for(k=0;k<10;k++)
{
Delay0_9ms();
if(IRsignal==1) //如果0.9ms后IRsignal=1,說明不是引導碼
{
k=10;
break;
}
else if(k==9) //如果持續了10×0.9ms=9ms的低電平,說明是引導碼
{
while(IRsignal==0);
Delay4_5ms(); //跳過持續4.5ms的高電平
for(i=0;i<4;i++) //分別讀取4個字節
{
for(j=1;j<=8;j++) //每個字節8個bit的判斷
{
while(IRsignal==0); //等待上升沿
Delay0_9ms(); //從上升沿那一時刻開始延時0.9ms,再判斷IRsignal
if(IRsignal==1) //如果IRsignal是"1",則向右移入一位"1"
{
Delay1ms();
CodeTemp=CodeTemp|0x80;
if(j<8) CodeTemp=CodeTemp>>1;
}
else
if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",則向右移一位,自動補"0"
}
IRcode[i]=CodeTemp;
CodeTemp=0;
}
IR_Time=100;
for(IRD=0;IRD<1;IRD++)
{
IRD1=(IRcode[0]%100);
shi_1=(IRD1%100)/10;
ge_1=IRD1%10;
IRD1=(shi_1+ge_1);
IRD2=(IRcode[1]%100);
shi_2=(IRD2%100)/10;
ge_2=IRD2%10;
IRD2=(shi_2+ge_2);
IRD3=(IRcode[2]%100);
shi_3=(IRD3%100)/10;
ge_3=IRD3%10;
IRD3=(shi_3+ge_3);
IRD4=(IRcode[3]%100);
shi_4=(IRD4%100)/10;
ge_4=IRD4%10;
IRD4=(shi_4+ge_4);
if((IRD1==5)&&(IRD2==7)&&(IRD3==12)&&(IRD4==10)){IR_DATA=1;KEY_BEP();}//1
if((IRD1==5)&&(IRD2==7)&&(IRD3==4)&&(IRD4==9)){IR_DATA=2;KEY_BEP();}//2
if((IRD1==5)&&(IRD2==12)&&(IRD3==3)&&(IRD4==5)){IR_DATA=3;KEY_BEP();}//3
if((IRD1==5)&&(IRD2==7)&&(IRD3==3)&&(IRD4==10)){IR_DATA=4;KEY_BEP();}//4
if((IRD1==5)&&(IRD2==7)&&(IRD3==13)&&(IRD4==9)){IR_DATA=5;KEY_BEP();}//5
if((IRD1==5)&&(IRD2==12)&&(IRD3==13)&&(IRD4==5)){IR_DATA=6;KEY_BEP();}//6
if((IRD1==5)&&(IRD2==11)&&(IRD3==3)&&(IRD4==6)){IR_DATA=7;KEY_BEP();}//7
if((IRD1==5)&&(IRD2==11)&&(IRD3==4)&&(IRD4==5)){IR_DATA=8;KEY_BEP();}//8
if((IRD1==5)&&(IRD2==12)&&(IRD3==12)&&(IRD4==6)){IR_DATA=9;KEY_BEP();}//9
if((IRD1==5)&&(IRD2==2)&&(IRD3==9)&&(IRD4==9)){IR_DATA=10;KEY_BEP();}//0
if((IRD1==5)&&(IRD2==14)&&(IRD3==10)&&(IRD4==6)){IR_DATA=20;KEY_BEP();}//POWER
if((IRD1==5)&&(IRD2==2)&&(IRD3==12)&&(IRD4==6)){IR_DATA=21;KEY_BEP();}//MODE
if((IRD1==5)&&(IRD2==9)&&(IRD3==5)&&(IRD4==6)){IR_DATA=22;KEY_BEP();}//靜音
if((IRD1==5)&&(IRD2==16)&&(IRD3==8)&&(IRD4==6)){IR_DATA=23;KEY_BEP();}//上一個
if((IRD1==5)&&(IRD2==6)&&(IRD3==8)&&(IRD4==6)){IR_DATA=24;KEY_BEP();}//下一個
if((IRD1==5)&&(IRD2==9)&&(IRD3==15)&&(IRD4==6)){IR_DATA=25;KEY_BEP();}//暫停
if((IRD1==5)&&(IRD2==9)&&(IRD3==10)&&(IRD4==10)){IR_DATA=26;KEY_BEP();}//DEC
if((IRD1==5)&&(IRD2==14)&&(IRD3==7)&&(IRD4==9)){IR_DATA=27;KEY_BEP();}//ADD
if((IRD1==5)&&(IRD2==14)&&(IRD3==15)&&(IRD4==10)){IR_DATA=28;KEY_BEP();}//EQ
if((IRD1==5)&&(IRD2==14)&&(IRD3==16)&&(IRD4==9)){IR_DATA=29;KEY_BEP();}//100+
if((IRD1==5)&&(IRD2==5)&&(IRD3==5)&&(IRD4==10)){IR_DATA=30;KEY_BEP();}//Enter
}
while(IR_Time==1)//等待松開
{
if(!IRsignal){IR_Time=100;}
else {IR_Time--;ms(10);}
}
}
}
EA=1;//開中斷
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
IAP_CONTR=0x60;
}
else
TI = 0;
}
復制代碼
基于STC12C5A60S2的5.7寸(A8806)LCD電子萬年歷.7z
2026-1-28 05:26 上傳
點擊文件名下載附件
382.11 KB, 下載次數: 0
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1