色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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



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

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

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

          }
          else if(e==0)//確認(rèn)鍵按下
          {
          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ù)值已設(shè)定完畢,測(cè)退出設(shè)定狀態(tài)
          {
          seta=0;sec=0;setflag=0;
          sec=dateshu[1]*10+dateshu[0];//分別將設(shè)定好的值,賦給時(shí)秒變量,設(shè)定生效
          min=dateshu[3]*10+dateshu[2];//分別將設(shè)定好的值,賦給分變量,設(shè)定生效
          hour=dateshu[5]*10+dateshu[4];//分別將設(shè)定好的值,賦給時(shí)變量,設(shè)定生效

          }
          }

          }
          void main()

          本文引用地址:http://cafeforensic.com/article/201612/324565.htm

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

          {

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

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

          dqwrite(0x44);//開始溫度轉(zhuǎn)換
          while(!DS1820DQ);//延時(shí)等待溫度轉(zhuǎn)換完畢
          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;//移去讀回的符號(hào)號(hào)
          temper=temperl+temperh;//將處理后的高字節(jié)溫度和低字節(jié)溫度值相加
          for(i=250;i>0;i--)display(temper%10,temper/10,temper/100,10,10,10,10,10);//延時(shí)顯示實(shí)時(shí)溫度

          }
          }


          }
          }








          }
          void time0(void) interrupt 1
          {

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

          }





          上一頁 1 2 下一頁

          評(píng)論


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

          關(guān)閉