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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 1602LCD液晶數(shù)字電子鐘 時(shí)鐘表 C語(yǔ)言

          1602LCD液晶數(shù)字電子鐘 時(shí)鐘表 C語(yǔ)言

          作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
          1602LCD液晶數(shù)字電子鐘 基本設(shè)計(jì)思路:
          1. 1602LCD顯示:
          第一行: 年, 月, 日 2012-01-22
          第二行: 時(shí), 分, 秒 23:59:00
          2. 獨(dú)立按鍵功能:
          Key1 恢復(fù)單片機(jī)調(diào)時(shí)之前的實(shí)際時(shí)間, 由于在調(diào)整時(shí)間期間,定時(shí)器T0暫停, 則啟動(dòng)定時(shí)器T1, 保證單片機(jī)的時(shí)間正確.(即 取消調(diào)時(shí))
          Key2 進(jìn)入調(diào)整時(shí)間狀態(tài): 停止定時(shí)器T0,啟動(dòng)定時(shí)器T1.
          Key3 退出調(diào)整時(shí)間狀態(tài): 啟動(dòng)定時(shí)器T0,停止定時(shí)器T1.
          Key4 選擇調(diào)整時(shí)間: 秒, 分, 時(shí), 日, 月, 年
          Key5 調(diào)時(shí): 遞增 同時(shí)啟動(dòng)蜂鳴器
          Key6 調(diào)時(shí): 遞減 同時(shí)啟動(dòng)蜂鳴器
          花了2天半的時(shí)間,終于按照自己的設(shè)計(jì)思路來(lái)實(shí)現(xiàn)了 時(shí)鐘表, 在這兩天多的時(shí)間, 感覺(jué)最難的就是,當(dāng)發(fā)生錯(cuò)誤的時(shí)候,不知道如何進(jìn)行調(diào)試,差錯(cuò),因?yàn)橛行╁e(cuò)誤無(wú)法進(jìn)行調(diào)試,因此往往都要換一個(gè)方向思考問(wèn)題,所以面對(duì)困惑就必須要檢測(cè)了, 自己的錯(cuò)誤,只能自己解決,因?yàn)閯e人對(duì)你的錯(cuò)誤往往都不容易理解。 哎,像我這樣獨(dú)自一個(gè)奮斗,真是寂寞啊, 遇到困惑,要么放棄,要么堅(jiān)持,可是卻不知道要堅(jiān)持多久, 心里總是害怕 這樣 浪費(fèi)時(shí)間。
          目前,還有一個(gè)問(wèn)題沒(méi)有解決: 如果調(diào)整時(shí)間,不合理,則必須恢復(fù) 原來(lái)的時(shí)間,并且有錯(cuò)誤提示。
          比如時(shí)間: 2012-2-34 , 若更改為這個(gè)日期,那么必須要有錯(cuò)誤提示,并且要取消 這個(gè)時(shí)間。
          #include
          #include"MyFuntion.h" //自定義頭文件
          //掃描這些按鍵是否被按下
          void Keycan()
          {
          if(Key1==0) //進(jìn)入調(diào)整時(shí)間狀態(tài)
          {
          Delay();
          if(Key1==0) //停止定時(shí)器T0 啟動(dòng)定時(shí)器T1
          {
          ButtonBeep();
          SaveCurrentTime(); //進(jìn)入調(diào)整時(shí)間狀態(tài) 必須保存當(dāng)前時(shí)間 若取消調(diào)時(shí) 則可以恢復(fù)時(shí)間
          TR0=0;//停止定時(shí)器T0
          TR1=1;//啟動(dòng)定時(shí)器T1
          tempSecond=0;
          }
          while(!Key1);
          }
          if(Key2==0)
          {
          Delay();
          if(Key2==0) // 取消調(diào)時(shí) 恢復(fù)單片機(jī)調(diào)時(shí)之前的實(shí)際時(shí)間
          {
          if(TR0==0) //在調(diào)整時(shí)間狀態(tài)下 恢復(fù)時(shí)間
          {
          ButtonBeep();
          CurrentTime();
          }
          }
          while(!Key2);
          }
          if(Key3==0) //退出調(diào)整時(shí)間狀態(tài):
          {
          Delay();
          if(Key3==0)
          {
          ButtonBeep(); //停止定時(shí)器T1 啟動(dòng)定時(shí)器T0
          TR0=1;//啟動(dòng)定時(shí)器T0
          TR1=0;//停止定時(shí)器T1
          Write_Command(0x0c); //設(shè)置開(kāi)顯示 不顯示光標(biāo)
          }
          while(!Key3);
          }
          //當(dāng)定時(shí)器T0 停止時(shí) 才能 進(jìn)行下面的各個(gè)按鍵的操作
          if(TR0==0) //定時(shí)器T0 停止
          {
          if(Key4==0) // Key4 控制光標(biāo)往右移動(dòng)
          {
          Delay();
          if(Key4==0)
          {
          AdjustCursorRight(); //控制光標(biāo)往右移動(dòng)
          ButtonBeep();
          }
          while(!Key4);
          }
          if(Key5==0) // Key5 控制光標(biāo)往左移動(dòng)
          {
          Delay();
          if(Key5==0)
          {
          AdjustCursorLeft(); //控制光標(biāo)往左移動(dòng)
          ButtonBeep();
          }
          while(!Key5);
          }
          if(Key6==0) // 遞增
          {
          Delay();
          if(Key6==0)
          {
          UpDown=1;
          ButtonSetTime();
          ButtonBeep();
          }
          while(!Key6);
          }
          if(Key7==0) // 遞減
          {
          Delay();
          if(Key7==0)
          {
          UpDown=0;
          ButtonSetTime();
          ButtonBeep();
          }
          while(!Key7);
          }
          }
          }
          void main()
          {
          TMOD=0X01;
          EA=1;
          ET0=1;
          ET1=1;
          TR0=1; //啟動(dòng)定時(shí)器T0
          // TR1=0; //停止定時(shí)器T1 即暫時(shí)不啟動(dòng)定時(shí)器T1
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
          TH1=(65536-50000)/256;
          TL1=(65536-50000)%256;
          InitLCD(); //初始化LCD
          Init_Table_YMD(table1); // LCD 時(shí)間表 年月日
          Init_Table_HMS(table2); // LCD 時(shí)間表 時(shí)分秒
          DisplayLCD_YMD(table1, 10); //LCD顯示時(shí)間 年月日
          DisplayLCD_HMS(table2, 8); //LCD顯示時(shí)間 時(shí)分秒
          while(1)
          {
          Keycan();
          if(t0==20)
          {
          t0=0;
          IncreaseHMS(); // 時(shí)分秒 遞增
          }
          }
          }
          //定時(shí)器T0 實(shí)現(xiàn)自動(dòng) 計(jì)時(shí)
          void LCD_Timer0() interrupt 1 using 0
          {
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
          t0++;
          }
          //定時(shí)器T1 實(shí)現(xiàn)自動(dòng) 計(jì)時(shí) 從而減少調(diào)整時(shí)間產(chǎn)生的誤差
          void LCD_Timer1() interrupt 3 using 1
          {
          TH1=(65536-50000)/256;
          TL1=(65536-50000)%256;
          t1++;
          if(t1==20)
          {
          t1=0;
          tempSecond++;
          }
          }



          評(píng)論


          技術(shù)專(zhuān)區(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); })();