久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

基于單片機,ds1302設(shè)計的電子時鐘(帶涓流)

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年01月02日   【字體:

  該設(shè)計是基于單片機設(shè)計的電子時鐘,顯示時分秒,本設(shè)計加入了ds1302帶有涓細(xì)電流充電功能的RTC(實時時鐘),直接用單片機對1302寫初值后,直接讀1302即可,該設(shè)計能保證在系統(tǒng)掉電后時間不會亂。還可調(diào)時,本設(shè)計只能調(diào)時間,年月日調(diào)節(jié)未作,因為和時間的調(diào)節(jié)方法大同小異。

 

源程序:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P3^0;
sbit lcdrw=P3^1;
sbit lcden=P3^2;
sbit rst=P1^3;
sbit sclk=P1^4;
sbit io=P1^5;
sbit ACC_7=ACC^7;
sbit menu=P1^0;
sbit jia=P1^1;
sbit jian=P1^2;
uchar code table[]="  20  -  -  ";
uchar code table1[]="    :  :  day:";
uchar code table2[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,
     0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,
     0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,
     0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,
     0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,0x51,0x52,0x53,
     0x54,0x55,0x56,0x57,0x58,0x59};
uchar unm,miao,fen,shi,nian,yue,ri,zhou,kkk;

void delay(int z)
 {
  int x,y;
   for(x=z;x>0;x--)
    for(y=110;y>0;y--);
 }
void writen1302(uchar addr,dat)
 {
  uchar i,temp;
  rst=0;
  sclk=0;
  rst=1;
  for(i=0;i<8;i++)
   {
    sclk=0;
 temp=addr;
 io=(bit)(temp&0x01);
 addr>>=1;
 sclk=1;
   }
  for(i=0;i<8;i++)
   {
    sclk=0;
 temp=dat;
 io=(bit)(temp&0x01);
 dat>>=1;
 sclk=1;
   }
   rst=0;
 }
uchar read1302(addr)
 {
  uchar i,temp,dat1,dat2;
  rst=0;
  sclk=0;
  rst=1;
  for(i=0;i<8;i++)
   {
    sclk=0;
 temp=addr;
 io=(bit)(temp&0x01);
 addr>>=1;
 sclk=1;
   }
  for(i=0;i<8;i++)
   {
    ACC_7=io;
 sclk=1;
 ACC>>=1;
 sclk=0;
   }
   rst=0;
  dat1=ACC;
  dat2=dat1/16;
  dat1=dat1%16;
  dat1=dat1+dat2*10;
  return (dat1);
 }
void writen_com(uchar com)
 {
  lcdrs=0;
  P0=com;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
 }
void writen_date(uchar date)
 {
  lcdrs=1;
  P0=date;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
 }
 void writen_sfm(uchar add,uchar date)
{
   uchar shi,ge;
   shi=date/10;
   ge=date%10;
   writen_com(0x80+0x40+add);
   writen_date(0x30+shi);
   writen_date(0x30+ge);
}
 void writen_nyr(uchar add,uchar date)
{
   uchar shi,ge;
   shi=date/10;
   ge=date%10;
   writen_com(0x80+add);
   writen_date(0x30+shi);
   writen_date(0x30+ge);
}
void keyscan()
 {
  if(menu==0)
  {
   delay(1);
   if(menu==0)
   {
    while(!menu);
    writen_com(0x0f);
    writen_com(0x80+0x40+8);
 while(menu)
  {
  if(jia==0)
      {
    delay(1);
    if(jia==0);
     {
      while(!jia);
      if(miao==59)
       {
    miao=-1;
    }
    miao++;
      writen1302(0x80,table2[miao]);
      writen_sfm(8,miao);
      writen_com(0x80+0x40+8); 
      }
    }
          }
  if(menu==0)
   {
    delay(1);
     if(menu==0)
   {
    while(!menu);
    writen_com(0x0f);
          writen_com(0x80+0x40+5);
     while(menu)
        {
         if(jia==0)
      {
    delay(1);
    if(jia==0);
     {
      while(!jia);
      if(fen==59)
       {
    fen=-1;
    }
    fen++;
      writen1302(0x82,table2[fen]);
      writen_sfm(5,fen);
      writen_com(0x80+0x40+5); 
      }
    }
          }
   }
     if(menu==0)
      {
    delay(1);
              if(menu==0)
      {
       while(!menu);
    writen_com(0x0f);
                writen_com(0x80+0x40+2);
     while(menu)
                 {
                 if(jia==0)
                {
              delay(1);
              if(jia==0);
              {
               while(!jia);
                if(shi==23)
                    {
                    shi=-1;
                    }
                 shi++;
         writen1302(0x84,table2[shi]);
         writen_sfm(2,shi);
         writen_com(0x80+0x40+2);
         writen1302(0x8e,0x80); 
           }
         }
               }
     
     if(menu==0)
     {
      delay(1);
       if(menu==0)
        {
      writen_com(0x0c);
                     writen_com(0x06);
     }
     }
      }
   }
   }
   }
  }
 }
void init()
 {
  lcdrw=0;
  lcden=0;
  writen_com(0x38);
  writen_com(0x0c);
  writen_com(0x06);
  writen_com(0x80);
  writen1302(0x8a,0x02);
  for(unm=0;unm<13;unm++)
   {
    writen_date(table[unm]);
   }
  writen_com(0x80+0x40);
  for(unm=0;unm<16;unm++)
   {
    writen_date(table1[unm]);
   }
 }
void main()
 {
 init();
 while(1)
 {
  keyscan();
  miao=read1302(0x81);
  writen_sfm(8,miao);
  writen_com(0x80+0x40+8);
  fen=read1302(0x83);
  writen_sfm(5,fen);
  writen_com(0x80+0x40+5);
  shi=read1302(0x85);
  writen_sfm(2,shi);
  writen_com(0x80+0x40+2);
  zhou=read1302(0x8b);
  writen_sfm(14,zhou);
  writen_com(0x80+0x40+14);
  nian=read1302(0x8d);
  writen_nyr(4,nian);
  writen_com(0x80+4);
  yue=read1302(0x89);
  writen_nyr(7,yue);
  writen_com(0x80+7);
  ri=read1302(0x87);
  writen_nyr(10,ri);
  writen_com(0x80+10);
  }
 }
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 亚洲精品一区中文字幕乱码 | 亚洲顶级毛片 | 欧美高清视频在线观看 | 午夜三区| 日韩在线国产 | 成人国产在线视频 | 国产精品国产三级国产aⅴ中文 | 99re6在线视频精品免费 | 成人在线电影在线观看 | 日韩一区二区精品 | 中文字幕在线看 | 欧美亚洲视频 | 日韩欧美精品 | 免费v片在线观看 | 狠狠操狠狠操 | 国产成人在线一区二区 | av中文字幕在线播放 | 日韩图区 | 超碰国产在线 | 一区二区片| 不卡在线视频 | 国产高清区 | 精品久久久久久亚洲综合网站 | 中文字幕一页二页 | 日韩中文字幕免费在线观看 | 欧美精品福利视频 | 色婷综合网 | 久久一起草 | 狠狠干av| 日韩欧美中文字幕在线观看 | 国产区在线观看 | 久草网站| 日韩在线视频观看 | 久久亚洲91| 亚洲久久一区 | 欧美 中文字幕 | 密室大逃脱第六季大神版在线观看 | 国产在线一区二区 | 九九在线| 精品国产一区二区三区免费 | 国产欧美一区二区三区在线播放 |