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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)C語言電子時(shí)鐘加日歷顯示編程

          單片機(jī)C語言電子時(shí)鐘加日歷顯示編程

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

          else
          {
          if(month==2)
          {
          if(day==28)
          {
          day =1;
          month++;
          }
          else day++;
          }
          else
          {
          if(month==4||month==6||month==9||month==11)
          {
          if(day==30)
          {
          day =1;
          month++;
          }
          else day++;
          }
          else
          {
          if(day==31)
          {
          day =1;
          month++;
          if(month==13)
          {
          month =1;
          year1++;
          if(year1==100)
          {
          year2++;
          }
          }
          }
          else day++;

          }
          }
          }
          hour=0;
          week++;
          }
          if(sw1==0&&week>=7)
          week=0;
          }

          void delay(ms)
          {
          uchar i, k;
          while(ms--)
          for(k=0;k<123;k++);
          for(i=0;i<123;i++);
          }

          void scan_key(void)
          {
          if(cnt==7&&P3_4==0)
          {
          delay(3);
          if(cnt==7&&P3_4==0)
          {
          key4 =0;
          key1 =1; //檢查是第一個(gè)鍵按下
          }
          }
          if(sw5==0&&key1==1&&cnt==7&&P3_4==1) //按鍵松手時(shí)表示真的按下,sw5判斷此時(shí)是什么顯示狀態(tài),時(shí)間還是年月日
          {
          sw1 =1; //閃爍分針
          }
          if(sw5==1&&key1==1&&cnt==7&&P3_4==1) //若為年月日則閃爍第一二位
          {
          sw1 =9;
          }
          if(sw1==1&&P3_4==0&&cnt==7) //在時(shí)間狀態(tài)第一個(gè)鍵又一次按下
          {
          delay(3);
          if(sw1==1&&P3_4==0&&cnt==7)
          {
          key1 =2; //在時(shí)間狀態(tài)第一個(gè)鍵的第二種狀態(tài)
          }
          }
          if(sw1==9&&P3_4==0&&cnt==7) //在年月日狀態(tài)第一個(gè)鍵第二次按下
          {
          delay(3);
          if(sw1==9&&P3_4==0&&cnt==7)
          {
          key1 =9; //在年月日狀態(tài)第一個(gè)鍵的第二種狀態(tài)
          }
          }
          if(key1==2&&cnt==7&&P3_4==1) //在時(shí)間確認(rèn)第一個(gè)鍵第二次按下
          {
          sw1 =2; // 并閃爍時(shí)針
          }
          if(key1==9&&cnt==7&&P3_4==1) //年月日狀態(tài)確認(rèn)第一個(gè)鍵第二次按下
          {
          sw1 =8; // 并閃爍月分
          }
          if(sw1==8&&P3_4==0&&cnt==7) //在年月日狀態(tài)第一個(gè)鍵第三次按下
          {
          delay(3);
          if(sw1==8&&P3_4==0&&cnt==7)
          {
          key1 =8; //在年月日狀態(tài)第一個(gè)鍵的第三種狀態(tài)
          }
          }
          if(key1==8&&cnt==7&&P3_4==1) //年月日狀態(tài)確認(rèn)第一個(gè)鍵第三次按下
          {
          sw1 =7; // 并閃爍年的后兩位 ///////////////////
          }
          if(sw1==2&&P3_4==0&&cnt==7)
          {
          delay(3);
          if(sw1==2&&P3_4==0&&cnt==7)
          {
          key1 =3;
          }
          }
          if(sw1==7&&P3_4==0&&cnt==7) //在年月日狀態(tài)第一個(gè)鍵第四次按下
          {
          delay(3);
          if(sw1==7&&P3_4==0&&cnt==7)
          {
          key1 =7; //在年月日狀態(tài)第一個(gè)鍵的第四種狀態(tài)
          }
          }
          if(key1==7&&cnt==7&&P3_4==1) //年月日狀態(tài)確認(rèn)第一個(gè)鍵第四次按下
          {
          sw1 =6; // 并閃爍年的前兩位 ///////////////////
          }
          if(sw1==2&&P3_4==0&&cnt==7)
          {
          delay(3);
          if(sw1==2&&P3_4==0&&cnt==7)
          {
          key1 =3;
          }
          }
          if(key1==3&&cnt==7&&P3_4==1)
          {
          sw1 =3; // 并閃爍星期
          }
          if(sw5==0&&P3_4==0&&cnt==6) //檢查第二個(gè)鍵是否按下
          {
          delay(3);
          if(sw5==0&&P3_4==0&&cnt==6)
          {
          key2 =1;
          }
          }
          if(key2==1&&cnt==6&&P3_4==1)
          {
          key2 =0;
          sw2 =1; //在時(shí)間狀態(tài)確認(rèn)第二個(gè)鍵按下
          if(sw2==1&&sw1==1) //和sw1的值對比,加分
          {
          min++;
          if(min>=60)
          min =0;
          }
          if(sw2==1&&sw1==2) //和sw1的值對比,加時(shí)
          {
          hour++;
          if(hour>=24)
          hour =0;
          }
          if(sw2==1&&sw1==3)
          {
          week++;
          if(week>6)
          week =0;
          }
          }
          if(sw5==1&&P3_4==0&&cnt==6) //在年月日檢查第二個(gè)鍵是否按下
          {
          delay(3);
          if(sw5==1&&P3_4==0&&cnt==6)
          {
          key2 =7;
          }
          }
          if(key2==7&&cnt==6&&P3_4==1)
          {
          key2 =0;
          sw2 =1; //確認(rèn)第二個(gè)鍵按下
          if(sw2==1&&sw1==9) //和sw1的值對比,加day
          {
          day++;
          if(day>31)
          day =0;
          }
          if(sw2==1&&sw1==8) //和sw1的值對比,加month
          {
          month++;
          if(month>12)
          month =0;
          }
          if(sw2==1&&sw1==7)
          {
          year1++;
          if(year1>100)
          year1 =0;
          }
          if(sw2==1&&sw1==6)
          {
          year2++;
          if(year2>100)
          year2 =20;
          }
          } //檢查時(shí)間狀態(tài)第三個(gè)鍵是否按下
          if(sw5==0&&P3_4==0&&cnt==5) //檢查第三個(gè)鍵是否按下
          {
          delay(3);
          if(sw5==0&&P3_4==0&&cnt==5)
          {
          key3 =1;
          }
          }
          if(key3==1&&cnt==5&&P3_4==1)
          {
          key3 =0;
          sw3 =1;
          if(sw3==1&&sw1==1)
          {
          if(min<=0)
          min =60;
          min--; //分針減
          }
          if(sw3==1&&sw1==2)
          {
          if(hour<=0)
          hour =24;
          hour--; //時(shí)針減
          }
          if(sw3==1&&sw1==3)
          {
          if(week<=0)
          week =7;
          week--;
          }
          }
          if(sw5==1&&P3_4==0&&cnt==5) //在年月日檢查第三個(gè)鍵是否按下
          {
          delay(3);
          if(sw5==1&&P3_4==0&&cnt==5)
          {
          key3 =7;
          }
          }
          if(key3==7&&cnt==5&&P3_4==1)
          {
          key3 =0;
          sw3 =7;
          if(sw3==7&&sw1==9)
          {
          if(day<=0)
          day =32;
          day--; //day減
          }
          if(sw3==7&&sw1==8)
          {
          if(month<=0)
          month =13;
          month--; //month減
          }
          if(sw3==7&&sw1==7)
          {
          if(year1<=0)
          year1 =100; //year減
          year1--;
          }
          if(sw3==7&&sw1==6)
          {
          if(year2<=20)
          year2 =100; //year減
          year2--;
          }
          }
          if(P3_4==0&&cnt==4&&sw1!=0&&sw5==0)
          {
          delay(3);
          if(P3_4==0&&cnt==4&&sw1!=0&&sw5==0)
          {
          sw1=0;sec=0;key4=1;key1=0;
          }
          }
          if(P3_4==0&&cnt==4&&sw1!=0&&sw5==1)
          {
          delay(3);
          if(P3_4==0&&cnt==4&&sw1!=0&&sw5==1)
          {
          sw1=0;key4=1;key1=0;
          }
          }
          if(P3_4==0&&cnt==3)
          {
          delay(3);
          if(P3_4==0&&cnt==3)
          {
          key5 =1;
          }
          }
          if(key5==1&&P3_4==1&&cnt==3)
          {
          sw5 =1;
          }
          if(P3_4==0&&sw5==1&&cnt==3)
          {
          delay(3);
          if(P3_4==0&&sw5==1&&cnt==3)
          {
          key5 =0;
          }
          }
          if(P3_4==1&&key5==0&&cnt==3)
          {
          sw5 =0;
          }
          }

          void main(void)
          {
          PCA0MD =0 ;
          XBR1 =0x40 ;
          P0MDOUT =0xFF ;
          P1MDOUT =0xFF ;
          init();
          while(1)
          {
          conv();
          year=year1+year2*100;
          }
          }

          五、調(diào)試及性能分析
          5.1 硬件調(diào)試:主要檢查電路的焊接,有無虛焊,漏焊,然后檢查電路與單片機(jī)的聯(lián)線,為了方便自己做了一根數(shù)據(jù)線,然后用萬用表測試,全部導(dǎo)通后進(jìn)行通電檢測,上電后排查電路板的各點(diǎn)電平是否正常,測試完畢后進(jìn)行軟件調(diào)試。
          5.2 軟件調(diào)試:主要以以編程序?yàn)橹?,并進(jìn)行單片機(jī)輸出口線高低電平的檢驗(yàn)。本程序采用C語言編寫,用Keil C51編譯器編程調(diào)試,本程序的難點(diǎn)之一在于讓它閃爍,也就是再其它燈不變的情況下閃爍需要調(diào)整的部分。
          經(jīng)過測試,任務(wù)以及要求全部達(dá)到,初始化時(shí),時(shí)間是1-00:00:00,切換后是20096.08.15,由于時(shí)間關(guān)系沒能經(jīng)過長時(shí)間的驗(yàn)證性測試,短期測試發(fā)現(xiàn)每一個(gè)小時(shí)快一秒鐘,只進(jìn)行了粗調(diào)。

          本文引用地址:http://cafeforensic.com/article/201611/321849.htm

          上一頁 1 2 下一頁

          評論


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

          關(guān)閉