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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 點陣萬年歷(帶時間、年月日星期調整及鬧鐘功能)C程序

          點陣萬年歷(帶時間、年月日星期調整及鬧鐘功能)C程序

          作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏

          /******************************************************/
          /**********年調整界面顯示子程序(包括下半屏)************/
          /******************************************************/
          void xiannian(uchar nia)//變量年
          {
          uchar movee;
          char ii;
          for(line=8;line<16;line++)//掃描8次,即完成一個字的移動,line等于8,表示在下半屏顯示
          {
          if(flag1==0)//如果標志位為1,則執(zhí)行顯示部分
          {
          movee=line-8;
          BUF[0]=table[16+movee];//顯示數(shù)字2
          BUF[1]=table[movee];//顯示數(shù)字0
          BUF[2]=table[(8*(nia/10))+movee];//顯示年十位
          BUF[3]=table[(8*(nia%10))+movee];
          BUF[4]=table1[16+movee];//顯示橫線
          }
          if(flag1==1)
          yixianhei();//否則顯示黑屏
          for(ii=4;ii>=0;ii--)//循環(huán)5次將數(shù)發(fā)往顯示屏
          song(~BUF[ii]);//送數(shù)
          LINE=table2[line];//打開行線,即174HC154行線端
          CLKR=1;//在74HC595處鎖存起來
          CLKR=0;
          CLKR=1;
          delaya(800);
          }
          }
          /******************************************************/
          /*********月/日調整界面顯示子程序(包括下半屏)********/
          /******************************************************/
          void xianriyue(uchar ye,uchar rii)//月與日變量
          {
          uchar movee;
          char ii;
          for(line=8;line<16;line++)//掃描8次,即完成一個字的移動,line等于8,表示在下半屏顯示
          {
          if(flag1==0)//同上如果為0就顯示,為1就黑屏,形成閃爍
          {
          movee=line-8;
          BUF[0]=table[(8*(ye/10))+movee];//顯示月十位
          BUF[1]=table[(8*(ye%10))+movee];//月個位
          BUF[2]=table1[16+movee];//顯示橫線
          BUF[3]=table[(8*(rii/10))+movee];//顯示日十位
          BUF[4]=table[(8*(rii%10))+movee];//顯示橫線
          }
          if(flag1==1)//為1就黑屏顯示
          yixianhei();
          for(ii=4;ii>=0;ii--)//循環(huán)5次將數(shù)發(fā)往顯示屏
          song(~BUF[ii]);//送數(shù)
          LINE=table2[line];//打開行線,即174HC154行線端
          CLKR=1;//在74HC595處鎖存起來
          CLKR=0;
          CLKR=1;
          delaya(800);
          }
          }
          /******************************************************/
          /*********星期調整界面顯示子程序(包括下半屏)********/
          /******************************************************/
          void xi(uchar xi)
          {
          uchar movee;
          char ii;
          for(line=8;line<16;line++)//掃描8次,即完成一個字的移動,line等于8,表示在下半屏顯示
          {
          if(flag1==0)//0.5秒顯示
          {
          movee=line-8;
          BUF[0]=table1[16+movee];//顯示橫線"-"
          BUF[1]=table1[16+movee];//顯示橫線"-"
          BUF[2]=table[(8*(xi%10))+movee];//顯示出星期個位
          BUF[3]=table1[16+movee];//顯示橫線"-"
          BUF[4]=table1[16+movee];//顯示橫線"-"
          }
          if(flag1==1)
          yixianhei();
          for(ii=4;ii>=0;ii--)//循環(huán)5次將數(shù)發(fā)往顯示屏
          song(~BUF[ii]);//送數(shù)
          LINE=table2[line];//打開行線,即174HC154行線端
          CLKR=1;//在74HC595處鎖存起來
          CLKR=0;
          CLKR=1;
          delaya(800);
          }
          }
          /******************************************************/
          /***************鬧鐘時間調整顯示子程序*****************/
          /******************************************************/
          void xianniao(uchar shi,uchar ge,uchar z)
          {
          char ii;
          for(line=0;line<8;line++)//掃描8次,即完成一個字的移動
          {
          if(flag1==0)//同樣0.5秒顯示時間
          {
          BUF[0]=table[(8*(shi/10))+line];//顯示小時十位
          BUF[1]=table[(8*(shi%10))+line];
          BUF[2]=table1[z*8+line];//顯示橫線
          BUF[3]=table[(8*(ge/10))+line];//顯示分鐘十位
          BUF[4]=table[(8*(ge%10))+line];
          }
          if(flag1==1)//同樣0.5秒顯示黑屏
          yixianhei();
          for(ii=4;ii>=0;ii--)//循環(huán)5次將數(shù)發(fā)往顯示屏
          song(~BUF[ii]);//送數(shù)
          LINE=table2[line];//打開行線,即174HC154行線端
          CLKR=1;//在74HC595處鎖存起來
          CLKR=0;
          CLKR=1;
          delaya(800);
          }
          }
          /******************************************************/
          /***************按鍵按下后處理子程序*******************/
          /******************************************************/
          void skey()
          {
          if(shr!=0)//如果標志位shr不為0,則執(zhí)行以下內容------如果按下了加按鍵則程序復位
          {
          if(key1==0)
          {
          delay(10);
          if(key1==0)//如果加按鍵按下了,則全部復位
          {
          yin=0;//將按鍵計數(shù)器清0
          shr=0;//標志位清0
          lk=0;//顯示上半屏,此變量是全屏與半屏控制變量,當它為8時,就執(zhí)行全屏,否則半屏
          clockbiao=~clockbiao;
          bbtsoud();//蜂鳴器響一聲子程序
          while(!key1);//按鍵釋放
          }
          }
          }
          if(a!=0)//如果標志位不為0,則執(zhí)行以下內容-------閃爍進入調整模式
          xianshan();//閃爍
          if(b!=0)//如果標志位不為0,則執(zhí)行以下內容,進行主時間小時調整
          {
          xianshan();//調用主時間顯示子程序
          if(key1==0)
          {
          delay(10);
          if(key1==0)
          {
          xianshan();
          shi++;
          if(shi==24)//小時等于24?
          shi=0;//清0
          write1302(0x8e,0x00);//去掉保護
          write1302(0x84,((shi/10)<<4)|(shi%10));//時數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x85);
          shi=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//將小時轉換出來
          while(!key1);
          }
          }
          if(key2==0)//以下是處理主時間小時減部分
          {
          delay(10);
          if(key2==0)
          {
          shi--;
          if(shi==(0-1))
          shi=23;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x84,((shi/10)<<4)|(shi%10));//時數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x85);
          shi=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);
          while(!key2);
          }
          }
          }
          if(c!=0)//如果標志位不為0,則執(zhí)行以下內容------以下是處理主時間分鐘調整部分
          {
          xianshan();
          if(key1==0)//加分鐘部分
          {
          delay(10);
          if(key1==0)
          {
          xianshan();//調用主時間顯示子程序
          fen++;
          if(fen==60)
          fen=00;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x82,((fen/10)<<4)|(fen%10));//分數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x83);
          fen=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//將它轉換出來
          while(!key1);
          }
          }
          if(key2==0)//減分鐘部分
          {
          delay(10);
          if(key2==0)
          {
          xianshan();
          fen--;
          if(fen==(0-1))
          fen=59;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x82,((fen/10)<<4)|(fen%10));//分數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x83);
          fen=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);
          while(!key2);
          }

          }
          }
          if(d!=0)//如果標志位不為0,則執(zhí)行以下內容-----調整年
          {
          xiannian(nian);//調用年顯示子程序
          if(key1==0)//年時間加部分處理
          {
          delay(10);
          if(key1==0)
          {
          xiannian(nian);
          nian++;
          if(nian==99)//年到了99嗎?
          nian=0;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x8c,((nian/10)<<4)|(nian%10));//年數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x8d);
          nian=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//年數(shù)據(jù)轉換
          while(!key1);
          }
          }
          if(key2==0)//年時間減部分處理
          {
          delay(10);
          if(key2==0)
          {
          xiannian(nian);
          nian--;
          if(nian==(0-1))
          nian=99;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x8c,((nian/10)<<4)|(nian%10));//年數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x8d);
          nian=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//年數(shù)據(jù)轉換
          while(!key2);
          }

          }
          }
          if(e!=0)//如果標志位不為0,則執(zhí)行以下內容-----處理月
          {
          xianriyue(yue,ri);
          if(key1==0)//月加部分處理
          {
          delay(10);
          if(key1==0)
          {
          xianriyue(yue,ri);
          yue++;
          if(yue==13)
          yue=1;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x88,((yue/10)<<4)|(yue%10));//月數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x89);
          yue=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);
          while(!key1);
          }
          }
          if(key2==0)//月減部分處理
          {
          delay(10);
          if(key2==0)
          {
          xianriyue(yue,ri);
          yue--;
          if(yue==(1-1))
          yue=12;
          write1302(0x8e,0x00);//去掉保護
          write1302(0x88,((yue/10)<<4)|(yue%10));//月數(shù)據(jù)寫入
          write1302(0x8e,0x80);//打開保護
          readvalue=read1302(0x89);
          yue=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//月轉換
          while(!key2);
          }

          }
          }


          評論


          技術專區(qū)

          關閉
          看屁屁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); })();