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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 時鐘及溫度用74hc164+74ls145數(shù)碼管顯示單片機程序

          時鐘及溫度用74hc164+74ls145數(shù)碼管顯示單片機程序

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



          }
          void keyshu()//設定鍵函數(shù)
          {

          bit b,d,e;
          b=MINUS;d=ADD;//變量B,D,E分別讀回P0。4~P0。6的狀態(tài)。分別為加一,減一,確認鍵
          e=ENTER;
          if(b==0)//減一按鍵按下
          {
          dateshu[seta]--;
          if(dateshu[seta]<0)dateshu[seta]=9;//減到零時自動循環(huán)回九
          b=MINUS;//再讀回鍵值,做松手查檢測
          while(b==0){b=MINUS;display(dateshu[0],dateshu[1],10,seta+1,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);}//松手檢測

          }
          else if(d==0)//加一按鍵按下
          {
          dateshu[seta]++;
          if(dateshu[seta]>9)dateshu[seta]=0;//加到九時自動循環(huán)回零
          d=ADD;//做松手檢測
          while(d==0){d=ADD;display(dateshu[0],dateshu[1],10,seta+1,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);}//松手檢測

          }
          else if(e==0)//確認鍵按下
          {
          seta++;
          e=ENTER;
          while(e==0){e=ENTER;display(dateshu[0],dateshu[1],10,seta+1,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);}
          if(seta>5)//如果六位數(shù)值已設定完畢,測退出設定狀態(tài)
          {
          seta=0;sec=0;setflag=0;
          sec=dateshu[1]*10+dateshu[0];//分別將設定好的值,賦給時秒變量,設定生效
          min=dateshu[3]*10+dateshu[2];//分別將設定好的值,賦給分變量,設定生效
          hour=dateshu[5]*10+dateshu[4];//分別將設定好的值,賦給時變量,設定生效

          }
          }

          }
          void main()

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

          {
          init();//各外圍元件及CPU初始化
          delay10us(150);//進入大循環(huán)時的延時
          while(1)

          {

          key();//檢測功能鍵有無按下
          if(setflag==0)//如果設定功能未進入,則顯示實時時鐘
          {
          timer();//時間運算函數(shù)
          display(dateshu[0],dateshu[1],10,10,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);//顯示實時時鐘
          }
          else//如果進入了功能設定函數(shù)
          {
          keyshu();//讀取鍵值
          display(dateshu[0],dateshu[1],10,seta+1,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);//顯示實時設定
          }
          if((dateshu[0]==3)&&(dateshu[1]%2==0))//每隔十秒溫度讀取顯示一次
          {uchar i;//顯示延時用
          dqrsr();//初始化
          if(dqflag==1)//檢測存在脈沖
          {

          dqwrite(0xcc);//跳過ROM操作

          dqwrite(0x44);//開始溫度轉換
          while(!DS1820DQ);//延時等待溫度轉換完畢
          dqrsr();//初始化
          if(dqflag==1)
          {
          uchar temper;//溫度變量
          dqwrite(0xcc);//跳過ROM操作
          dqwrite(0xbe);//讀取數(shù)據(jù)指令

          temperl=dqread();//讀取低字節(jié)溫度值
          temperh=dqread();//讀取高字節(jié)溫度值
          temperl=temperl>>4;//移去低四位的溫度值
          temperh=temperh<<4;//移去讀回的符號號
          temper=temperl+temperh;//將處理后的高字節(jié)溫度和低字節(jié)溫度值相加
          for(i=250;i>0;i--)display(temper%10,temper/10,temper/100,10,10,10,10,10);//延時顯示實時溫度

          }
          }


          }
          }








          }
          void time0(void) interrupt 1
          {

          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;//定時器零重賦初值
          tim++;
          if(tim==20)
          {
          tim=0;//tim==20時,為50MS*20=1S
          sec++;
          }

          }





          上一頁 1 2 下一頁

          評論


          技術專區(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); })();