51单片机12864万年历图片+主要程序C语言Word格式文档下载.docx
《51单片机12864万年历图片+主要程序C语言Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《51单片机12864万年历图片+主要程序C语言Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
voidinit()
{
unsignedchari;
init18b20();
ds1302_init();
initina1();
//---------------------------LCD字库初始化程序
RdFromROM(state1,8,1);
state[0]=state1[0];
//-------界面
RdFromROM(state1,15,1);
state[1]=state1[0];
//-------闹钟
RdFromROM(state1,11,1);
key_sound=state1[0];
//-------按键音
//state[2]=state1[2];
//state[3]=state1[3];
screennum=1;
//------默认一号屏
for(i=0;
i<
max_task;
i++)//清除任务延时
{task_delay[i]=0;
}
TMOD=0x11;
EA=1;
TH0=255-clock/time_task_sec/12/526;
TL0=255-clock/time_task_sec/12%526;
ET0=1;
TR0=1;
voidmain()
{
init();
while
(1)
{if(task_delay[0]==0){readtemp();
task_delay[0]=task_delay0;
if(task_delay[3]==0){MenuCheckKey();
task_delay[3]=task_delay1;
if(task_delay[1]==0){screen_select(screennum);
task_delay[1]=task_delay1;
if(task_delay[2]==0){ds1302_read_time();
task_delay[2]=task_delay0;
}
voidtimer0()interrupt1
uchari=0;
TH1=255-clock/time_task_sec/12%526;
i++)if(task_delay[i])task_delay[i]--;
//miao=21,fen=33,xiaomiao=94;
if(ma_start==1)
{
tt++;
if(tt==8)
{
tt=0;
xiaomiao++;
if(xiaomiao==99)
xiaomiao=0;
miao++;
if(miao==60)
miao=0;
fen++;
if(fen==99)
{
fen=0;
}
Screen.c:
delay.h"
festival.h"
idataunsignedcharmiao=0,fen=78,xiaomiao=0,tt=0;
idataunsignedcharbai,shi,ge,shinian,genian,shiyue,geyue,shiri,geri,shishi,geshi,shifen,gefen,shimiao,gemiao;
idataunsignedcharNumber[4];
unsignedcharcodemainmenu[]={
"
主菜单"
3.查询4.温度"
1.调时2.秒表"
5.设置6.返回"
};
unsignedcharcodesetmenu[]={
设置"
3.查温4.按键"
1.界面2.闹铃"
5.报时6.返回"
voidgettime()
shinian=(time_buf1[1]%100)/10;
genian=(time_buf1[1]%100)%10;
shiyue=(time_buf1[2])/10;
geyue=(time_buf1[2])%10;
shiri=(time_buf1[3])/10;
geri=(time_buf1[3])%10;
shishi=(time_buf1[4])/10;
geshi=(time_buf1[4])%10;
shifen=(time_buf1[5])/10;
gefen=(time_buf1[5])%10;
shimiao=(time_buf1[6])/10;
gemiao=(time_buf1[6])%10;
voidscreen_select(ucharnum)
//initina1();
gettime();
if(num==1)//----------主界面
Lcd_Set_Post(1,0);
TransferData(shinian+48,1);
//----------------------年
TransferData(genian+48,1);
TransferData('
/'
1);
TransferData(shiyue+48,1);
//----------------------月
TransferData(geyue+48,1);
TransferData('
TransferData(shiri+48,1);
//----------------------日
TransferData(geri+48,1);
Lcd_Set_Post(1,4);
if(state[1]==1)//----------------闹铃的状态图标
'
TransferData(14,1);
Lcd_Set_Post(1,5);
if(key_sound==1)
TransferData(13,1);
if(state[0]==0)
Lcd_Set_Post(1,7);
//----------------农历年
nian(0);
Lcd_Set_Post(2,0);
//-----------------------农历日月
LCD_WRITE_CHAR("
农历"
);
Conversion(0,time_buf[1],time_buf[2],time_buf[3]);
TransferData(month_moon/16+'
0'
TransferData(month_moon%16+'
TransferData(day_moon/16+'
TransferData(day_moon%16+'
if(state[0]==1){Lcd_Set_Post(3,5);
}else{Lcd_Set_Post(2,5);
LCD_WRITE_CHAR("
星期"
//----------------------星期
if(time_buf1[7]==7){LCD_WRITE_CHAR("
日"
}
if(time_buf1[7]==6){LCD_WRITE_CHAR("
六"
if(time_buf1[7]==5){LCD_WRITE_CHAR("
五"
if(time_buf1[7]==4){LCD_WRITE_CHAR("
四"
if(time_buf1[7]==3){LCD_WRITE_CHAR("
三"
if(time_buf1[7]==2){LCD_WRITE_CHAR("
二"
if(time_buf1[7]==1){LCD_WRITE_CHAR("
一"
Lcd_Set_Post(3,0);
TransferData(shishi+48,1);
//----------------------时
TransferData(geshi+48,1);
TransferData(58,1);
TransferData(shifen+48,1);
//----------------------分
TransferData(gefen+48,1);
TransferData(shimiao+48,1);
//----------------------秒
TransferData(gemiao+48,1);
bai=(temph/100);
//---------------------------------温度
shi=(temph%100)/10;
ge=(temph%100)%10;
Lcd_Set_Post(3,4);
if(zerotemp==0){TransferData('
TransferData('
Lcd_Set_Post(3,5);
TransferData(shi+48,1);
TransferData(ge+48,1);
.'
TransferData(templ+48,1);
TransferData(0xa1,1);
TransferData(0xe6,1);
Lcd_Set_Post(4,0);
festival(time_buf[2],time_buf[3],time_buf[4]);
//农历
if(num==3)//----------主菜单
Lcd_Set_Post(1,0);
//--------设置显示位置
LCD_WRITE_CHAR(mainmenu);
if(num==4)//----------设置菜单
LCD_WRITE_CHAR(setmenu);
if(num==5)//----------时间设置
Lcd_Set_Post(1,2);
时间设置"
Lcd_Set_Post(2,1);
年"
月"
TransferData(time_buf1[7]+48,1);
//---------------星期
Lcd_Set_Post(3,2);
//--------------------时
时"
//---------------------分
分"
//--------------------秒
if(num==6)//----------秒表
ucharshi1,shi2,shi3,ge1,ge2,ge3;
Lcd_Set_Post(1,3);
秒表"
shi1=fen/10;
ge1=fen%10;
TransferData(shi1+48,1);
TransferData(ge1+48,1);
:
'
shi2=miao/10;
ge2=miao%10;
TransferData(shi2+48,1);
TransferData(ge2+48,1);
shi3=xiaomiao/10;
ge3=xiaomiao%10;
TransferData(shi3+48,1);
TransferData(ge3+48,1);
if(num==8)
Lcd_Set_Post(1,2);
//--------农历查询
温度查询"
Lcd_Set_Post(3,0);
最高温度"
RdFromROM(Number,0,4);
if(Number[3]==0){TransferData('
-'
Lcd_Set_Post(3,5);
TransferData(Number[0]+48,1);
TransferData(Number[1]+48,1);
TransferData(Number[2]+48,1);
TransferData(0xa1,1);
Lcd_Set_Post(4,0);
最低温度"
RdFromROM(Number,4,4);
Lcd_Set_Post(4,5);
if(num==9)//----------界面菜单
界面选择"
Lcd_Set_Post(2,0);
TransferData(1+48,1);
多功能界面"
TransferData(2+48,1);
简洁界面"