在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > DS1302用1602顯示加按鍵調(diào)時(shí)

      DS1302用1602顯示加按鍵調(diào)時(shí)

      作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
      #include

      #include
      /*********************************端口定義**********************************/
      sbit sclk = P3^4;
      sbit io= P3^3;
      sbit rst= P3^5;
      sbit rs=P1^0;
      sbit en=P1^2;
      sbit rw=P1^1;
      sbit GND=P2^4;
      sbit key=P2^0;
      sbit K1=P2^1;
      sbit K2=P2^2;
      #define uchar unsigned char
      #define uint unsigned int
      uchar S1num,flag,second,minute,hour,week,day,month,year;//秒、分、時(shí)、星期、日、月、年
      bitkeyflag=0;

      本文引用地址:http://www.biyoush.com/article/201612/324681.htm

      void delay(uint z) //延時(shí)子程序
      {
      uint x,y;
      for(x=z;x>0;x--)
      for(y=110;y>0;y--);
      }
      void delayus()
      {
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      }

      void write_1602dat(uchar dat)//定義一個(gè)帶參數(shù)的寫數(shù)據(jù)子程序
      {
      rs=1; //1602的rs為0時(shí),接收命令,為1時(shí)接收數(shù)據(jù)
      P0=dat;//把void write_shu(uchar shu)中的COM中的數(shù)據(jù)給P0口
      delay(5);
      en=1;
      delay(5);
      en=0;
      delay(5);
      }

      void write_1602com(uchar com)//定義一個(gè)帶參數(shù)的寫命令子程序
      {
      rs=0; //1602的rs為0時(shí),接收命令,為1時(shí)接收數(shù)據(jù)
      P0=com;//把void write_com(uchar com)中的COM中的數(shù)據(jù)給P0口
      delay(5);
      en=1;
      delay(5);
      en=0;
      delay(5);
      }
      void Write1602(uchar add,uchar dat)
      {
      write_1602com(add);
      write_1602dat(dat);
      }
      void init1602()//定義一個(gè)初始化子程序
      {
      en=0;
      rw=0;
      write_1602com(0x38);//調(diào)用 write_com子程序并把0x38賦給P0口,顯示模式打開
      write_1602com(0x0e);//調(diào)用 write_com子程序并把“開顯示,顯示光標(biāo),光標(biāo)閃爍”指令碼賦給P0口
      write_1602com(0x06);//調(diào)用 write_com子程序并把“地址指針加1,整屏不移動(dòng)”指令碼賦給P0口
      //write_com(0x80+0x10);//數(shù)據(jù)指針初始化,讓指針指向可顯示的最右端
      write_1602com(0x80);//數(shù)據(jù)指針初始化,讓指針指向最左端,顯示從第一行開始
      write_1602com(0x01);//調(diào)用 write_com子程序并把"清零指"令碼賦給P0口
      Write1602(0x80,2);
      Write1602(0x81,0);
      Write1602(0x80+4,-);
      Write1602(0x80+7,-);
      Write1602(0x80+0x40+5,:);
      Write1602(0x80+0x40+8,:);
      }
      /********************寫一個(gè)字節(jié)**************/
      void write_1302byte(dat)
      {
      uchar i;
      sclk=0;
      delayus();
      for(i=8;i>0;i--)
      {
      io=dat&0x01;//只要是從低位取數(shù),向高位一定要和0X01與
      delayus();
      sclk=1;//為寫數(shù)據(jù)制造上升沿。
      delayus();
      sclk=0;//為下一次上升沿寫下一個(gè)字節(jié)做準(zhǔn)備
      dat>>=1;//將數(shù)據(jù)向左移一位,準(zhǔn)備寫入下一個(gè)數(shù)據(jù)
      }
      }

      /********************讀一個(gè)字節(jié)***************/
      uchar read_1302byte()
      {
      uchar i,dat;
      delayus();
      for(i=8;i>0;i--)
      {
      dat>>=1;
      if(io==1)
      {
      dat|=0x80;//將1取出,寫在dat的最高位。
      }

      sclk=1;//把sclk拉高,為讀一個(gè)字節(jié)的下降沿做準(zhǔn)備
      delayus();//稍等制造一個(gè)高電平
      sclk=0;//為讀一個(gè)字節(jié)制造下降沿
      delayus();
      }
      return dat;
      }

      /*************寫入一個(gè)時(shí)間位*****************/
      void write_1302(uchar add,uchar dat)
      {
      rst=0;
      delayus();
      sclk=0;
      delayus();
      rst=1;
      write_1302byte(add);
      delayus();
      write_1302byte(dat);
      delayus();
      rst=0;
      }
      /****************讀1302的地址******************/
      uchar read_1302add(uchar add)
      {
      uchar timedat;
      rst=0;
      _nop_();
      sclk=0;
      _nop_();
      rst=1;
      write_1302byte(add);//寫入要讀的地址
      timedat=read_1302byte();//將上面地址中的數(shù)據(jù)賦給timedat
      sclk=1;
      _nop_();
      rst=0;
      return timedat;
      }
      /****************初始化1302*********************/
      void init_1302()
      {

      flag=read_1302add(0x81);//讀秒寄存器的最高位,讀出時(shí)鐘狀態(tài)
      if(flag&0x80)//判斷時(shí)鐘是否關(guān)閉,若內(nèi)部關(guān)閉,則初始,若沒關(guān)閉,不初始化,還在走

      {
      write_1302(0x8e,0x00);//去除寫保護(hù)
      write_1302(0x80,((55/10)<<4|(55%10)));//寫秒寄存器,并寫入初值55
      write_1302(0x82,((59/10)<<4|(59%10)));//寫分寄存器,并寫入初值59
      write_1302(0x84,((22/10)<<4|(22%10)));//寫小時(shí)寄存器,并寫入初值23
      write_1302(0x86,((24/10)<<4|(24%10)));//寫日寄存器,并寫入初值18
      write_1302(0x88,((2/10)<<4|(2%10)));//寫月寄存器,并寫入初值2
      write_1302(0x8a,((5/10)<<4|(5%10)));//寫周寄存器,并寫入初值5
      write_1302(0x8c,((12/10)<<4|(12%10)));//寫年寄存器,并寫入初值12,不能寫2012年
      write_1302(0x90,0xa5);//寫充電方式
      write_1302(0x8e,0x80);//加上寫保護(hù)
      }
      }
      /*****************讀出秒的十進(jìn)制數(shù)***************************/

      uchar readsecond()
      {
      uchar dat;
      dat=read_1302add(0x81);
      second=((dat&0x70)>>4)*10+(dat&0x0f);
      return second;
      }

      /*****************讀出分的十進(jìn)制數(shù)***************************/

      uchar readminute()
      {
      uchar dat;
      dat=read_1302add(0x83);
      minute=((dat&0x70)>>4)*10+(dat&0x0f);
      return minute;
      }

      /*****************讀出小時(shí)的十進(jìn)制數(shù)***************************/

      uchar readhour()
      {
      uchar dat;
      dat=read_1302add(0x85);
      hour=((dat&0x70)>>4)*10+(dat&0x0f);
      return hour;
      }
      /*****************讀出天的十進(jìn)制數(shù)***************************/

      uchar readday()
      {
      uchar dat;
      dat=read_1302add(0x87);
      day=((dat&0x70)>>4)*10+(dat&0x0f);
      returnday;
      }

      /*****************讀出月的十進(jìn)制數(shù)***************************/

      uchar readmonth()
      {
      uchar dat;
      dat=read_1302add(0x89);
      month=((dat&0x70)>>4)*10+(dat&0x0f);
      return month;
      }
      /*****************讀出周的十進(jìn)制數(shù)***************************/

      uchar readweek()
      {
      uchar dat;
      dat=read_1302add(0x8b);
      week=((dat&0x70)>>4)*10+(dat&0x0f);
      return week;
      }

      /*****************讀出年的十進(jìn)制數(shù)***************************/

      uchar readyear()
      {
      uchar dat;
      dat=read_1302add(0x8d);
      year=((dat&0xf0)>>4)*10+(dat&0x0f);
      return year;
      }

      /************************讀出所有時(shí)間**********************/
      readtime()
      {
      readsecond();
      readminute();
      readhour();
      readday();
      readmonth();
      readweek();
      readyear();
      }


      上一頁 1 2 下一頁

      關(guān)鍵詞: DS13021602按鍵調(diào)

      評(píng)論


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

      關(guān)閉