在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用定時(shí)器中斷設(shè)計(jì)時(shí)鐘,用1602液晶顯示

      用定時(shí)器中斷設(shè)計(jì)時(shí)鐘,用1602液晶顯示

      作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
      時(shí)鐘有些功能還未完全實(shí)現(xiàn),僅實(shí)現(xiàn)一部分功能,年月日星期功能還未實(shí)現(xiàn) 還可以加上整點(diǎn)報(bào)時(shí)和斷電記憶的功能

      本文引用地址:http://www.biyoush.com/article/201611/322833.htm

      #include

      #defineucharunsignedchar

      sbit rd=P2^6;

      sbit wr=P2^5;

      sbit lcde=P2^7;

      sbit k1=P1^0;

      sbit k2=P1^1;

      sbit k4=P1^3;

      sbit k8=P1^7;

      uchar code table1[]=" 2011-10-01SAT";

      uchar code table2[]="00:00:00";

      uchar t,s1num;

      charshi,fen,miao;

      voiddelay(uchar z)//延遲zms函數(shù)

      {

      uchar x,y;

      for(x=z;x>0;x--)

      for(y=110;y>0;y--);

      }

      voidwrite_com(uchar com)//液晶寫指令操作

      {

      rd=0;

      wr=0;

      delay(5);

      lcde=1;

      P0=com;

      lcde=0;

      }

      voidwrite_date(uchar date)//液晶寫數(shù)據(jù)操作

      {

      rd=1;

      wr=0;

      delay(5);

      lcde=1;

      P0=date;

      lcde=0;

      }

      voidwrite_sfm(uchar add,uchar date)//更新時(shí)分秒

      {

      uchar shi,ge;

      shi=date/10;

      ge=date;

      write_com(0x80+0x40+add);

      write_date(0x30+shi);

      write_date(0x30+ge);

      }

      voidinit()//初始化函數(shù)

      {

      uchar i;

      write_com(0x38);

      write_com(0x0c);

      write_com(0x06);

      write_com(0x01);

      write_com(0x80+0x00);

      for(i=0;i<15;i++)

      write_date(table1[i]);

      write_com(0x80+0x46);

      for(i=0;i<8;i++)

      write_date(table2[i]);

      TMOD=0x01;//定時(shí)器工作方式

      TH0=(65536-50000)/256;//設(shè)定定時(shí)器初值

      TL0=(65536-50000)%6;//12M晶振時(shí)ms數(shù)為

      EA=1;

      ET0=1;

      TR0=1;

      }

      voidkeyscan()//鍵盤掃描函數(shù)

      {

      if(k1==0)//按下k1鍵確定調(diào)時(shí)分秒

      {

      delay(5);

      if(k1==0)

      {

      s1num++;

      while(!k1)

      ;

      delay(5);

      while(!k1);

      if(s1num==1)

      {

      TR0=0;//暫停計(jì)時(shí)器

      write_com(0x80+0x4d);//光標(biāo)在秒的位置閃爍

      write_com(0x0f);

      }

      if(s1num==2)//光標(biāo)在分的位置

      {

      TR0=0;

      write_com(0x80+0x4a);

      write_com(0x0f);

      }

      if(s1num==3)

      {

      TR0=0;

      write_com(0x80+0x47);

      write_com(0x0f);

      }

      if(s1num==4)//按下第四下時(shí)接著走時(shí)

      {

      s1num=0;

      write_com(0x0c);

      TR0=1;

      }

      }

      }

      if(s1num!=0)

      {

      if(s1num==1)

      {

      if(k2==0)//按k2鍵秒加

      {

      delay(5);

      if(k2==0)

      {

      while(!k2);

      delay(5);

      while(!k2);

      miao++;

      if(miao==60)

      miao=0;

      write_sfm(0x0c,miao);

      write_com(0x80+0x4d);

      }

      }

      }

      if(s1num==2)

      {

      if(k2==0)//分加

      {

      delay(5);

      if(k2==0)

      {

      while(!k2);

      delay(5);

      while(!k2);

      fen++;

      if(fen==60)

      fen=0;

      write_sfm(0x09,fen);

      write_com(0x80+0x4a);

      }

      }

      }

      if(s1num==3)

      {

      if(k2==0)//時(shí)加

      {

      delay(5);

      if(k2==0)

      {

      while(!k2);

      delay(5);

      while(!k2);

      shi++;

      if(shi==24)

      shi=0;

      write_sfm(0x06,shi);

      write_com(0x80+0x47);

      }

      }

      }

      if(k4==0)//判斷k3是否被按下

      {

      delay(5);

      if(k4==0)

      {

      while(!k4);

      delay(5);

      while(!k4);

      if(s1num==1)

      {

      miao--;//秒減

      if(miao==-1)

      miao=59;

      write_sfm(0x0c,miao);

      write_com(0x80+0x4d);

      }

      if(s1num==2)

      {

      fen--;//分減

      if(fen==-1)

      fen=59;

      write_sfm(0x09,fen);

      write_com(0x80+0x4a);

      }

      if(s1num==3)

      {

      shi--;//時(shí)減

      if(shi==-1)

      shi=23;

      write_sfm(0x06,shi);

      write_com(0x80+0x47);

      }

      }

      }

      }

      if(k8==0)//按下k8退出調(diào)時(shí)

      {

      delay(5);

      if(k8==0)

      {

      while(!k8);

      delay(5);

      while(!k8);

      s1num=0;

      write_com(0x0c);

      TR0=1;

      }

      }

      }

      voidmain()

      {

      init();

      while(1)

      {

      keyscan();

      }

      }

      voidtimer0() interrupt 1//中斷服務(wù)程序

      {

      TH0=(65536-50000)/256;

      TL0=(65536-50000)%6;//重新設(shè)定定時(shí)器初值

      t++;

      if(t==20)//定時(shí)器中斷次為秒

      {

      t=0;

      miao++;

      if(miao==60)

      {

      miao=0;

      fen++;

      if(fen==60)

      {

      fen=0;

      shi++;

      if(shi==24)

      {

      shi=0;

      }

      write_sfm(0x06,shi);//顯示時(shí)

      }

      write_sfm(0x09,fen);//顯示分

      }

      write_sfm(0x0c,miao);//顯示秒

      }

      }



      評論


      技術(shù)專區(qū)

      關(guān)閉