找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4994|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)萬(wàn)年歷部分程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:267055 發(fā)表于 2017-12-26 13:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void main()
{
alarmflag=1;
//led=0;
lcdinit();//初始化液晶函數(shù)
ds1302_init();//DS1302時(shí)鐘芯片初始化函數(shù)
init();//定時(shí)器初始化函數(shù)
beep=0;
delay(200);
beep=1;
//led=0;
while(1)
{
  year1=(nian)/10*16+(nian)%10;//轉(zhuǎn)換為bcd碼
  month1=(yue)/10*16+(yue)%10;
  day1=(ri)/10*16+(ri)%10;
  chushihua();//初始化時(shí)間函數(shù)
     Conversion(0,year1,month1,day1);//
  timealarm();//報(bào)時(shí)程序
  keyscan();//不斷掃面按鍵函數(shù)
  /*if(key2==1)//加鍵不按下時(shí)才有用
  {
        ledcontrol();//背光控制
  } */
}
}
void timer0() interrupt 1//中斷任務(wù):取數(shù)據(jù)并顯示
{
TH0=(65536-60000)/256;//重新賦初值
TL0=(65536-60000)%256;
//讀取數(shù)據(jù)
flag=ReadTemperature();//讀取溫度(考慮是否放在此處)
miao=turnBCD(read_1302(0x81));//讀出秒
fen=turnBCD(read_1302(0x83));//讀出分
shi=turnBCD(read_1302(0x85));//讀出時(shí)
ri=turnBCD(read_1302(0x87));//讀出日
yue=turnBCD(read_1302(0x89));//讀出月
nian=turnBCD(read_1302(0x8d));//讀出年
week=turnBCD(read_1302(0x8b));//讀出周
//顯示數(shù)據(jù)

if(((0<=miao)&&(miao<15))||(((miao/10==2)||(miao/10==4))&&(miao%10<=5))||((54<=miao)&&(miao<60))) /*顯示所有信息的時(shí)間段*/
{
  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);//顯示出時(shí),第二行第一個(gè)開(kāi)始
}
//if(15<=miao)/*當(dāng)秒大于15時(shí)才顯示*/
//{
  if(((miao/10==1)||(miao/10==3))&&(miao%10>=5))
  {
  switch(flag/100)//取出溫度的十位數(shù)
  {
   case 0:print(0x80,"Pretty cold now!");
       break;
   case 1:print(0x80,"little cold now!");
       break;
   case 2:print(0x80,"It is warm now. ");
       break;
   case 3:print(0x80,"It's hot !!!    ");
       break;
   case 4:print(0x80,"Very very hot!!!");
       break;
   case 5:print(0x80,"Very very hot!!!");
       break;
   case 6:print(0x80,"Very very hot!!!");
       break;
  }

  //print(0x80,"It is warm now. ");
  print(0x40,"  :  :          ");
  writetemp(9,flag);//顯示溫度,第二行顯示
  writetime(6,miao);//顯示出秒
  writetime(3,fen);//顯示出分
  writetime(0,shi);//顯示出時(shí),第二行第一個(gè)開(kāi)始
  }
  if(((miao/10==2)||(miao/10==4))&&(miao%10>=5))/*25-30 45-50*/
  {
   if((5<=shi)&&(shi<=11)) flagT=1;//5-11時(shí)為早上
   if((11<shi)&&(shi<=14)) flagT=2;//11-14為中午
   if((14<shi)&&(shi<=18)) flagT=3;//14-18為下午
   if((18<shi)||(shi<5))   flagT=4;//18-24或者0-5為晚上
   switch(flagT)//分段時(shí)間
   {
    case 1:print(0x80," Good Morning!  ");
        break;
    case 2:print(0x80,"   Good Noon!   ");
        break;
    case 3:print(0x80,"Good afternoon! ");
        break;
    case 4:print(0x80,"  Good night!   ");   
        break;
   }
   print(0x40,"  :  :          ");
   writetemp(9,flag);//顯示溫度,第二行顯示
   writetime(6,miao);//顯示出秒
   writetime(3,fen);//顯示出分
   writetime(0,shi);//顯示出時(shí),第二行第一個(gè)開(kāi)始
  }
   
  if(((30<=miao)&&(miao<35))||((50<=miao)&&(miao<54)))//30-35 50-54
  {//else改為范圍
  festival();//選擇顯示節(jié)日
  }
//}
}
void timer1() interrupt 3//任務(wù):計(jì)時(shí)用作報(bào)時(shí)
{
TH1=(65536-50000)/256;//中斷后重新賦初值
TL1=(65536-50000)%256;
//count++;//計(jì)算時(shí)間
if(alarmflag==1)//設(shè)置鍵按下才有效
{
  if(fen==0 && miao<4)
  {
  count++;
  ledcount=count/10;//分開(kāi)時(shí)間段
   switch(ledcount)
   {
    case 0:Gled=0;Yled=1;break;//從零開(kāi)始
    case 1:Gled=1;Yled=0;break;
    case 2:Gled=0;Yled=1;break;
    case 3:Gled=1;Yled=0;break;
    case 4:Gled=0;Yled=0;break;
    case 5:Gled=1;Yled=1;break;
    case 6:Gled=0;Yled=0;break;
    case 7:Gled=0;Yled=0;count=0;break;//在這里面清零
   }
  }
  else if(fen==30 && miao<2)
  {
   Gled=0;
   Yled=0;
  }
  else {
  Gled=1;
  Yled=1;
  }
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:347352 發(fā)表于 2018-10-24 08:30 | 只看該作者
感謝大神
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表