微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机+1602液晶万年历程序

51单片机+1602液晶万年历程序

时间:11-30 来源:互联网 点击:

else if (month_moon== 0x08 && day_moon == 0x15 ){ print(0x80," the Mid-Autumn ");print(0x40," Festival "); }
else if ( yue == 8 && ri == 1 ){ print(0x80," Today is: ");print(0x40," the Army Day "); }//8
else if ( yue == 8 && ri == 8 ){ print(0x80," Chinese man ");print(0x40," Festival "); }
else if ( yue == 8 && ri == 15 ){ print(0x80," The victory of ");print(0x40," war anniversary"); }

else if (month_moon== 0x09 && day_moon == 0x09 ){ print(0x80,"the Double Ninth");print(0x40," Festival "); }
else if ( yue == 9 && ri == 10 ){ print(0x80," Today is: ");print(0x40," Teachers Day "); }//9

//else if ( yue == 9 && ri == 20 ){ print(0x80," International ");print(0x40,"Teeth-loving Day"); }
else if ( yue == 9 && ri == 27 ){ print(0x80," World Tourism ");print(0x40," Day "); }

else if ( yue == 10 && ri == 1 ){ print(0x40," Today is: ");print(0x40," National Day "); }//10
else if ( yue == 10 && ri == 4 ){ print(0x80," Today is: ");print(0x40,"World Animal Day"); }
else if ( yue == 10 && ri == 24 ){ print(0x80," United Nations ");print(0x40," Day "); }

else if ( yue == 11 && ri == 10 ){ print(0x80," Today is: ");print(0x40,"World Youth Day "); }//11
else if ( yue == 11 && ri == 11 ){ print(0x80,"Today is 1,1,1..");print(0x40," Ones Day "); }//光棍节
else if ( yue == 11 && ri == 17 ){ print(0x80," The student ");print(0x40," section "); }

else if (month_moon== 0x12 && day_moon == 0x08 ){ print(0x80,"the laba Rice P-");print(0x40,"orridge Festival"); }
else if (month_moon== 0x12 && day_moon == 0x15 ){ print(0x80," guo xiao nian ");print(0x40," a lunar year "); }
//if (month_moon== 0x12 && day_moon == 0x29 ){ print(" 腊月二十九 "); }
else if (month_moon== 0x12 && day_moon == 0x30 ){ print(0x80," Today is: ");print(0x40," New Years Eve "); }
else if ( yue == 12 && ri == 1 ){ print(0x80," Today is: ");print(0x40," World AIDS Day "); }//12
//if ( yue == 12 && ri == 23 ){ print(" 明晚平安夜 "); }
else if ( yue == 12 && ri == 24 ){print(0x80,"Tonight is "); print(0x40,"The Silent Night"); }
else if ( yue == 12 && ri == 25 ){print(0x80,"Merry Christmas!"); print(0x40," Christmas Day "); }
else if ( yue == 12 && ri == 31 ){ print(0x80," The last day ");print(0x40," of the year "); }

else{
print(0x40," ...(*^_^*)... ");//显示笑脸。。。
//print(0x40," ...0(n_n)0... ");
print(0x80,"Have a Good Day!");
}
}

/*报时函数*/
void timealarm()
{
if(shi>7)//大于7点才启动报时
{
if(alarmflag==1)//不按下设置按键时才有效
{
if(fen==0 && miao<2)
{
beep=0;//启动蜂鸣器
}
else if(fen==30 && miao==0)
{
beep=0;
}
else beep=1;
}
}
}
//按键初始化时间函数
void chushihua()//初始化时间函数
{
if(key2==0)
{
if(key3==0)
{
delay(5);
if(key3==0)
{
RST=0;
SCLK=0;
write_1302(0x8e,0x00);//允许写
write_1302(0x80,0x00);//秒:00
write_1302(0x82,0x00);//分:00
write_1302(0x84,0x12);//时:12
write_1302(0x8a,0x06);//周:4
write_1302(0x86,0x01);//日:15
write_1302(0x88,0x01);//月:3
write_1302(0x8c,0x11);//年:11
write_1302(0x8e,0x80);//打开保护
}
}
}
}

/*void ledcontrol()//背光led灯的控制函数
{
if(key3==0)
{
delay(5);
if(key3==0)
{
while(!key3);
lednum++;
if(lednum==3) lednum=1;
}
}
if(lednum==1) led=0;//关闭背光
if(lednum==2) led=1;//打开背光
} */

/*以下是主函数部分*/
void main()
{
alarmflag=1;
//led=0;
lcdinit();//初始化液晶函数
ds1302_init();//DS1302时钟芯片初始化函数
init();//定时器初始化函数
beep=0;
delay(200);
beep=1;
//led=0;
while(1)
{
year1=(nian)/10*16+(nian)%10;//转换为bcd码
month1=(yue)/10*16+(yue)%10;
day1=(ri)/10*16+(ri)%10;
chushihua();//初始化时间函数
Conversion(0,year1,month1,day1);//
timealarm();//报时程序
keyscan();//不断扫面按键函数
/*if(key2==1)//加键不按下时才有用
{
ledcontrol();//背光控制
} */
}
}
void timer0() interrupt 1//中断任务:取数据并显示
{
TH0=(65536-60000)/256;//重新赋初值
TL0=(65536-60000)%256;
//读取数据
flag=ReadTemperature();//读取温度(考虑是否放在此处)
miao=turnBCD(read_1302(0x81));//读出秒
fen=turnBCD(read_1302(0x83));//读出分
shi=turnBCD(read_1302(0x85));//读出时
ri=turnBCD(read_1302(0x87));//读出日
yue=turnBCD(read_1302(0x89));//读出月
nian=turnBCD(read_1302(0x8d));//读出年
week=turnBCD(read_1302(0x8b));//读出周
//显示数据

if(((0<=miao)&&(miao<15))||(((miao/10==2)||(miao/10==4))&&(miao%10<=5))||((54<=miao)&&(miao<60))) /*显示所有信息的时间段*/
{
print(0x80,"20 / / W < >");
writecom(h1+0x0c);
writedata(0x7e);//→右箭头
writeday(8,ri);//显示日
writeday(5,yue);//显示月
writeday(2,nian);//显示年
writeweek(week);//显示星期
print(0x40," : : ");
writetemp(9,flag);//显示温度,第二行显示
writetime(6,miao);//显示出秒
writetime(3,fen);//显示出分
writetime(0,shi);//显示出时,第二行第一个开始
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top