<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 12864漢字液晶顯示--按鍵電子時鐘程序

          12864漢字液晶顯示--按鍵電子時鐘程序

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          #include

          #include
          #define uchar unsigned char
          void lcd_ini();
          void ascii_change(void);
          void delay();
          void wri_add(uchar com);
          void wri_dat(uchar com1);
          void shan(void);
          void disp();
          void tkey(void);
          sbit cs=P1^7;
          sbit sid=P1^6;
          sbit sclk=P1^5;
          bit flag=1;
          uchar dat,count,f=1;//f測試哪個單元為當(dāng)前閃爍狀態(tài)
          uchar data clock[3]={23,45,12};
          uchar code clockname[10]={"北京時間:"};
          uchar data num[6];

          本文引用地址:http://www.ex-cimer.com/article/201611/320484.htm


          void main()
          {
          lcd_ini();
          count=10;//機(jī)器周期為1us,每次定時50ms,此變量用來控制循環(huán)次數(shù),在下面賦值為20,共定時1秒
          TMOD=0x01;
          TL0=0XB0;
          TH0=0X3C;
          EA=1;
          ET0=1;
          IT0=1;
          EX0=1;
          TR0=1;
          while(1)
          {
          back:ascii_change();
          disp();
          delay();
          if(flag==1)
          goto back;
          tkey();
          shan();
          delay();
          }
          }



          void lcd_ini()
          {

          wri_add(0x30);
          delay();

          wri_add(0x0c);
          delay();

          wri_add(0x01);
          delay();

          wri_add(0x06);
          delay();
          }


          void timer1() interrupt 1 using 2
          {
          TL0=0XB0;
          TH0=0X3C;
          count--;
          if(count==0)
          {
          count=10;
          clock[2]++;//秒//
          }
          else
          goto out;

          if(clock[2]==60)
          {
          clock[2]=0;
          clock[1]++;//分//
          }

          if(clock[1]==60)
          {
          clock[1]=0;
          clock[0]++;
          }

          if(clock[0]==24)//時//
          clock[0]=0;

          out:_nop_();
          }


          void ascii_change(void)
          {
          num[5]=clock[2]-(clock[2]/10)*10+0x30;
          num[4]=clock[2]/10+0x30;
          num[3]=clock[1]-(clock[1]/10)*10+0x30;
          num[2]=clock[1]/10+0x30;
          num[1]=clock[0]-(clock[0]/10)*10+0x30;
          num[0]=clock[0]/10+0x30;
          }



          void delay()
          {
          uchar i,j;
          for (i=250;i>0;i--)
          for (j=250;j>0;j--);

          }

          void wri_add(uchar com)
          {
          uchar i,j,k;
          cs=0;
          cs=1;
          dat=0xf8;

          for(i=1;i<=8;i++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }
          dat=com;
          dat=dat&0xf0;
          for(j=1;j<=8;j++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }

          dat=com;
          dat=_cror_(dat,4);// 此為高低四位交換
          dat=dat&0xf0;

          for(k=1;k<=8;k++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }

          }


          void wri_dat(uchar com1)
          {
          uchar i,j,k;
          cs=0;
          cs=1;
          dat=0xfa;
          for(i=1;i<=8;i++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }

          dat=com1;
          dat=dat&0xf0;
          for(j=1;j<=8;j++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }

          dat=com1;
          dat=_cror_(dat,4);// 此為高低四位交換
          dat=dat&0xf0;

          for(k=1;k<=8;k++)
          {
          sid=(bit)(dat&0x80);
          sclk=0;
          sclk=1;
          sclk=0;
          dat=dat<<1;
          }
          }


          void disp()
          {
          uchar i,k=0;
          wri_add(0x80);

          for (i=1;i<=9;i++)
          wri_dat(clockname[i-1]);

          wri_add(0x90);

          for (i=1;i<=6;i++)
          {
          k++;
          if(k==3||k==5)
          wri_dat(clockname[8]);//時間之間的冒號。
          wri_dat(num[i-1]);
          }
          }


          void shan(void)
          {
          uchar i,k=0;
          wri_add(0x90);
          if(f==1)
          {
          num[0]= ;
          num[1]= ;
          }
          else
          goto next;
          for (i=1;i<=6;i++)
          {
          k++;
          if(k==3||k==5)
          wri_dat(clockname[8]);//時間之間的冒號。
          wri_dat(num[i-1]);
          }
          goto return1;

          next: if(f==2)
          {
          num[2]= ;
          num[3]= ;
          }
          else
          goto next1;
          for (i=1;i<=6;i++)
          {
          k++;
          if(k==3||k==5)
          wri_dat(clockname[8]);//時間之間的冒號。
          wri_dat(num[i-1]);
          }
          goto return1;

          next1: if(f==3)
          {
          num[4]= ;
          num[5]= ;
          }
          else
          goto return1;

          for (i=1;i<=6;i++)
          {
          k++;
          if(k==3||k==5)
          wri_dat(clockname[8]);//時間之間的冒號。
          wri_dat(num[i-1]);
          }
          return1:_nop_();

          }




          void intr0() interrupt 0 using 2
          {
          flag=~flag;//判斷是否閃爍位//
          TR0=~TR0; //閃關(guān)定時否則開定時
          f=1;
          }


          void tkey(void)
          {
          uchar judcekey;
          judcekey=P1&0x0f;
          if(judcekey==0x0f)
          goto return2;


          if (judcekey==0x0e)
          f++;
          if (f==4)
          f=1;

          if(judcekey==0x0d)
          {clock[f-1]++;}

          if (f==1)
          { if (clock[f-1]==24){
          clock[f-1]=0;}
          }
          else{ if (clock[f-1]==60)
          clock[f-1]=0;
          }


          if(judcekey==0x0b)
          {clock[f-1]--;}

          if (f==1)
          { if (clock[f-1]==0xff){
          clock[f-1]=23;}
          }
          else
          { if (clock[f-1]==0xff)
          clock[f-1]=59;
          }

          return2:_nop_();

          }




          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();