音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

我想做一個(gè)單片機(jī)的萬(wàn)年歷,誰(shuí)手頭上有資料

作者:laibohai 欄目:單片機(jī)

我想做一個(gè)單片機(jī)的萬(wàn)年歷,誰(shuí)手頭上有資料.

最好有源代碼和電路圖,感激不盡.謝謝..


2樓: >>參與討論
laibohai

怎么沒(méi)有人回答啊..老王呢..

3樓: >>參與討論
danny032

資料是有一點(diǎn)

可是不知道適合你不

只有程序而已哦

電路圖方面,我只是在實(shí)驗(yàn)相上實(shí)現(xiàn)的

4樓: >>參與討論
danny032

#include "reg52.h"
#include "viic_c51.h"
#include "zlg7290.h"
#include "LCM_DRIVE.h"
#include "string.h"

#define PCF8563   0xA2    //定義PCF8563器件地址
#define ZLG7290   0x70    //定義ZLG7290地址

sbit KEY_INT=P1^4;
sbit RST7290=P1^1;

unsigned CHAR  xdata disp_buf[8];//顯示緩存
unsigned CHAR  xdata KEY=0,keyset=0,keyup=0,keydown=0;  //鍵值
unsigned CHAR  xdata swichdate=0;//時(shí)分秒與年月日的切換變量
unsigned CHAR  xdata ini_time[7]={0x00,0x59,0x23,0x01,0x04,0x86,0x06};//初始化時(shí)間
unsigned CHAR  xdata wdd[7],rdd[7],sbb[7];  //定義寫(xiě)、讀緩沖區(qū)
unsigned CHAR  xdata disp_str1[9],disp_str2[12];//時(shí)間、日期緩沖區(qū)
unsigned CHAR  xdata disp_s[]="--\0";//設(shè)置標(biāo)志符
CHAR  xdata n=15,m=0,nnn=0;

/********************************************************/
void delay(unsigned CHAR n)   //延時(shí)程序
{unsigned CHAR i;
  for(;n>0;n--)
   for(i=0;i<100;i++);
}

/******************************************************/

5樓: >>參與討論
danny032
void disptime(unsigned CHAR *sd)      //時(shí)分秒顯示程序
{ sd[0]=sd[0]&0x7f;   //屏蔽秒保留位
  sd[1]=sd[1]&0x7f;   //屏蔽分保留位
  sd[2]=sd[2]&0x3f;   //屏蔽秒保留位
  disp_buf[0]=(sd[0]%16);
  disp_buf[1]=(sd[0]/16);
  disp_buf[2]=31;
  disp_buf[3]=(sd[1]%16);
  disp_buf[4]=(sd[1]/16);
  disp_buf[5]=31;
  disp_buf[6]=(sd[2]%16);
  disp_buf[7]=(sd[2]/16);
  ZLG7290_SendBuf(disp_buf,8);

}

/***********************************************************/

void dispdate(unsigned CHAR *sd)     //年月日顯示程序
{
sd[0]=sd[0]&0x3f;   //屏蔽日保留位
sd[2]=sd[2]&0x1f;   //屏蔽月保留位
disp_buf[0]=(sd[0]%16);
disp_buf[1]=(sd[0]/16);
disp_buf[2]=(sd[2]%16)+0x80;//后面加小數(shù)點(diǎn)
disp_buf[3]=(sd[2]/16);
disp_buf[4]=(sd[3]%16)+0x80;
disp_buf[5]=(sd[3]/16);
disp_buf[6]=0;
disp_buf[7]=2;
ZLG7290_SendBuf(disp_buf,8);
}

/***************************************************/

6樓: >>參與討論
danny032
void displcd(unsigned CHAR *sd)        //LCD顯示
{unsigned CHAR xdata aaa[]="***************\0";
unsigned CHAR code bbb[4][16]={"Welcome To You ","    TANG Yu    ","  Guo Qinping \0","   Ning Gang   \0"};
unsigned CHAR xdata dispweek[7][10]={"Sunday\0","Monday\0","Tuesday\0",
                                     "Wednesday\0","Thursday\0","Friday\0","Saturday\0"};

  sd[0]=sd[0]&0x7f;   //屏蔽秒保留位
  sd[1]=sd[1]&0x7f;   //屏蔽分保留位
  sd[2]=sd[2]&0x3f;   //屏蔽秒保留位
  sd[3]=sd[3]&0x3f;   //屏蔽日保留位
  sd[5]=sd[5]&0x1f;   //屏蔽月保留位
  sd[4]=sd[4]&0x07;   //屏蔽星期保留位

  disp_str1[0]=sd[2]/16+0x30;
  disp_str1[1]=sd[2]%16+0x30;
  disp_str1[2]=':';
  disp_str1[3]=sd[1]/16+0x30;
  disp_str1[4]=sd[1]%16+0x30;
  disp_str1[5]=':';
  disp_str1[6]=sd[0]/16+0x30;
  disp_str1[7]=sd[0]%16+0x30;
  disp_str1[8]='\0';

disp_str2[0]='2';
disp_str2[1]='0';
disp_str2[2]=(sd[6]/16)+0x30;
disp_str2[3]=(sd[6]%16)+0x30;
disp_str2[4]=0x80;
disp_str2[5]=(sd[5]/16)+0x30;
disp_str2[6]=(sd[5]%16)+0x30;
disp_str2[7]=0x81;
disp_str2[8]=(sd[3]/16)+0x30;
disp_str2[9]=(sd[3]%16)+0x30;
disp_str2[10]=0x82;
disp_str2[11]='\0';


7樓: >>參與討論
danny032

if(nnn/10)
    {LCM_DispStr(0,0,bbb[m]);
   m++;
   if(m>3) m=0;}

  nnn++;
  if(nnn>10) nnn=0;
delay(10);
LCM_DispStr(2, 3, disp_str2);//顯示日期
delay(10);
LCM_DispStr(4, 4, disp_str1);//顯示時(shí)鐘
delay(10);
LCM_DispStr(6,4,dispweek[sd[4]]);//顯示星期
delay(10);
LCM_DispStr(7,0,aaa);//顯示*********
}


/******************************************************/
void set_hour()  //設(shè)置小時(shí)
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0xc0);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {++rdd[2];
     if(rdd[2]==0x0a) rdd[2]=0x10;
     if(rdd[2]==0x1a) rdd[2]=0x20;
  if(rdd[2]==0x24) rdd[2]=0x00;
     wdd[2]=rdd[2];
      

8樓: >>參與討論
danny032
ISendStr(PCF8563,0x04,wdd+2,1);
       }
     if(keyset==0x04)
       {--rdd[2];
     if(rdd[2]==0x1f) rdd[2]=0x19;
  if(rdd[2]==0x0f) rdd[2]=0x09;
  if(rdd[2]>0x23) rdd[2]=0x23;
     wdd[2]=rdd[2];
        ISendStr(PCF8563,0x04,wdd+2,1);
       }
     if(keyset==0x02)
       {
       LCM_DispIni();//初始化LCD
          return ;
       }
  }
delay(1);
disptime(rdd);
displcd(rdd);
delay(10);
LCM_DispStr(5, 4, disp_s);
}
}

/******************************************************/
void set_minute()   //設(shè)置分
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0x18);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {++rdd[1];
     if(rdd[1]==0x0a) rdd[1]=0x10;
     if(rdd[1]==0x1a) rdd[1]=0x20;
  if(rdd[1]==0x2a) rdd[1]=0x30;
  if(rdd[1]==0x3a) rdd[1]=0x40;
  if(rdd[1]==0x4a) rdd[1]=0x50;
  if(rdd[1]==0x5a) rdd[1]=0x00;
     wdd[1]=rdd[1];
        ISendStr(PCF8563,0x03,wdd+1,1);
       }
     if(keyset==0x04)
       {--rdd[1];
     if(rdd[1]==0x0f) rdd[1]=0x09;
     if(rdd[1]==0x1f) rdd[1]=0x19;
  if(rdd[1]==0x2f) rdd[1]=0x29;
  if(rdd[1]==0x3f) rdd[1]=0x39;
  if(rdd[1]==0x4f) rdd[1]=0x49;
  if(rdd[1]>0x5a) rdd[1]=0x59;
     wdd[1]=rdd[1];

9樓: >>參與討論
danny032
ISendStr(PCF8563,0x03,wdd+1,1);
       }
     if(keyset==0x02)
       {
     LCM_DispIni();
        return ;
       }
  }
delay(1);
disptime(rdd);
displcd(rdd);
delay(10);
LCM_DispStr(5, 7, disp_s);
}
}

/**********************************************************/
void set_second()    //設(shè)置秒
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0x03);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {++rdd[0];
     if(rdd[0]==0x0a) rdd[0]=0x10;
     if(rdd[0]==0x1a) rdd[0]=0x20;
  if(rdd[0]==0x2a) rdd[0]=0x30;
  if(rdd[0]==0x3a) rdd[0]=0x40;
  if(rdd[0]==0x4a) rdd[0]=0x50;
  if(rdd[0]==0x5a) rdd[0]=0x00;
     wdd[0]=rdd[0];
        ISendStr(PCF8563,0x02,wdd,1);
       }
     if(keyset==0x04)
       {--rdd[0];
     if(rdd[0]==0x0f) rdd[0]=0x09;
     if(rdd[0]==0x1f) rdd[0]=0x19;
  if(rdd[0]==0x2f) rdd[0]=0x29;
  if(rdd[0]==0x3f) rdd[0]=0x39;
  if(rdd[0]==0x4f) rdd[0]=0x49;
  if(rdd[0]>0x59) rdd[0]=0x59;
     wdd[0]=rdd[0];
        ISendStr(PCF8563,0x02,wdd,1);
    

10樓: >>參與討論
danny032
}
     if(keyset==0x02)
       {
     LCM_DispIni();
        return ;
       }
  }
delay(1);
disptime(rdd);
displcd(rdd);
delay(10);
LCM_DispStr(5, 10, disp_s);
}
}

/***********************************************************/
void set_year()     //設(shè)置年
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0xf0);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {++rdd[6];
     if(rdd[6]==0x0a) rdd[6]=0x10;
     if(rdd[6]==0x1a) rdd[6]=0x20;
  if(rdd[6]==0x2a) rdd[6]=0x30;
  if(rdd[6]==0x3a) rdd[6]=0x40;
  if(rdd[6]==0x4a) rdd[6]=0x50;
  if(rdd[6]==0x5a) rdd[6]=0x60;
  if(rdd[6]==0x6a) rdd[6]=0x70;
  if(rdd[6]==0x7a) rdd[6]=0x80;
  if(rdd[6]==0x8a) rdd[6]=0x90;
  if(rdd[6]==0x9a) rdd[6]=0x00;
     wdd[6]=rdd[6];
        ISendStr(PCF8563,0x08,wdd+6,1);

11樓: >>參與討論
danny032
}
     if(keyset==0x04)
       {--rdd[6];
     if(rdd[6]==0x0f) rdd[6]=0x09;
     if(rdd[6]==0x1f) rdd[6]=0x19;
  if(rdd[6]==0x2f) rdd[6]=0x29;
  if(rdd[6]==0x3f) rdd[6]=0x39;
  if(rdd[6]==0x4f) rdd[6]=0x49;
  if(rdd[6]==0x5f) rdd[6]=0x59;
     if(rdd[6]==0x6f) rdd[6]=0x69;
  if(rdd[6]==0x7f) rdd[6]=0x79;
  if(rdd[6]==0x8f) rdd[6]=0x89;
  if(rdd[6]>0x99) rdd[6]=0x99;
     wdd[6]=rdd[6];
        ISendStr(PCF8563,0x08,wdd+6,1);
       }
     if(keyset==0x02)
       {
    LCM_DispIni();
        return ;
       }
  }
delay(1);
dispdate(rdd+3);
displcd(rdd);
delay(10);
LCM_DispStr(3, 5, disp_s);
}
}

/*************************************************/
void set_mouth()    //設(shè)置月
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0x0c);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {rdd[5]=rdd[5]&0x1f;
     ++rdd[5];
     if(rdd[5]==0x0a) rdd[5]=0x10;
     if(rdd[5]==0x13) rdd[5]=0x01;
     wdd[5]=rdd[5];
        ISendStr(PCF8563,0x07,wdd+5,1);
       }
     if(keyset==0x04)
       {rdd[5]=rdd[5]&0x1f;
     --rdd[5];
     if(rdd[5]==0x0f) rdd[5]=0x09;
  if((rdd[5]>0x13)||(rdd[5]==0x00)) rdd[5]=0x12;
     wdd[5]=rdd[5];
        ISendStr(PCF8563,0x07,wdd+5,1);
       }
     if(keyset==0x02)
       {
  

12樓: >>參與討論
danny032
LCM_DispIni();
        return ;
       }
  }
delay(1);
dispdate(rdd+3);
displcd(rdd);
delay(10);
LCM_DispStr(3, 8, disp_s);
}
}

/*******************************************/
void set_day()      //設(shè)置日
{unsigned CHAR i;
while(1)
{
for(i=0;i<7;i++)
  { IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  ZLG7290_SendCmd(0x70,0x03);
if(KEY_INT==0)
   { keyset=ZLG7290_GetKey();
     delay(8);
     if(keyset==0x03)
       {++rdd[3];
     if(rdd[3]==0x0a) rdd[3]=0x10;
     if(rdd[3]==0x1a) rdd[3]=0x20;
  if(rdd[3]==0x2a) rdd[3]=0x30;
  if(rdd[3]==0x32) rdd[3]=0x01;
     wdd[3]=rdd[3];
        ISendStr(PCF8563,0x05,wdd+3,1);
       }
     if(keyset==0x04)
       {--rdd[3];
     if(rdd[3]==0x0f) rdd[3]=0x09;
     if(rdd[3]==0x1f) rdd[3]=0x19;
  if(rdd[3]==0x2f) rdd[3]=0x29;
  if((rdd[3]>0x31)||(rdd[3]==0x00)) rdd[3]=0x31;
     wdd[3]=rdd[3];
        ISendStr(PCF8563,0x05,wdd+3,1);

13樓: >>參與討論
danny032
}
  delay(1);
    displcd(rdd);
    if(swichdate)
    dispdate(rdd+3);
else
    disptime(rdd);
  delay(10);
    LCM_DispStr(7, 3, "---------");
   }
}

/*********************************************************/
void main()
{
unsigned CHAR i;

RST7290=0;   //初始化ZLG7290
delay(10);
RST7290=1;
ISendStr(PCF8563,0x00,wdd,1);//初始化PCF8563
delay(1);
for(i=0;i<8;i++)            //初始化時(shí)間
  {
   ISendStr(PCF8563,0x02+i,ini_time+i,1);
   delay(1);
   }
LCM_DispIni();//初始化LCD

while(1)
{delay(1);
for(i=0;i<7;i++)          //從PCF8563中讀取時(shí)間
{ IRcvStr(PCF8563,0x02+i,rdd+i,1);
   delay(1);
  }
  displcd(rdd);//調(diào)用LCD顯示程序
    if(swichdate)
    dispdate(rdd+3);//調(diào)用LED顯示日期程序
else
    disptime(rdd); //調(diào)用LED顯示時(shí)間程序
  if(KEY_INT==0)       //是否有鍵按下?
  {
       KEY=ZLG7290_GetKey();//讀鍵值
    delay(10);  
       SWITCH(KEY)
     {case 0x01: swichdate=~swichdate;break;//按S1鍵時(shí)切換時(shí)間和日期
         case 0x02: set_hour(); //按S2鍵時(shí)設(shè)置時(shí)間,從小時(shí)始開(kāi)
         set_minute();
              set_second();
              set_year();
              set_mouth();
     set_day();
              break;      
   case 0x05:set_week();break;          //按S5鍵時(shí)設(shè)置星期
   }  
    }
}
}

14樓: >>參與討論
laibohai
有匯編的嗎?
15樓: >>參與討論
danny032

我編程都是用C的哦

匯編編這樣的程序,沒(méi)試過(guò)

16樓: >>參與討論
Jaylunix
你用的是什么時(shí)鐘芯片阿?我有個(gè)DS12887阿,但是不懂得用阿!
參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
各位大俠請(qǐng)幫幫我啊`~
大家能否推薦幾本比較好的單片機(jī)及其應(yīng)用的教程!一起...
大家如何看待S3C2440A
請(qǐng)問(wèn)學(xué)習(xí)單片機(jī)是否需要什么硬件?
求助關(guān)于JMY-503匯編程序
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)