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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于stc89c52rc單片機的數(shù)字鐘設(shè)計(數(shù)碼管顯示)

          基于stc89c52rc單片機的數(shù)字鐘設(shè)計(數(shù)碼管顯示)

          作者: 時間:2012-08-15 來源:網(wǎng)絡(luò) 收藏

          事情總是看著簡單,做起來沒那么容易。
          這個程序我開始時是根據(jù)教程編的,有些地方不理解就匆匆略過……事實證明這是不可取的……
          寫了百十來行以后編譯,報錯!就不會解決了。
          這時才體會到基礎(chǔ)是多么重要?。。?BR>學習方法要科學,要知其然,更要知其所以然。
          就像羅哥說的,從原理入手……
          感謝 劉鵬 百忙之中抽出時間指導,真是我的良師和益友。。。。。。。
          *****************************************************
          把程序貼出來。大家學習學習。千萬不要ctrl c,ctrl v。
          全部代碼下載地址:http://www.51hei.com/f/ssz.rar
          ********************************************

          我已經(jīng)加了部分注釋……

          *************************************************************
          P1口接4*4矩陣鍵盤
          P2口作為數(shù)碼管的片選控制端
          P0口送給數(shù)碼管數(shù)據(jù)
          1:實現(xiàn)時分秒的顯示
          2:通過S1調(diào)節(jié)秒,S2調(diào)節(jié)分鐘,S3調(diào)節(jié)小時,S4退出調(diào)節(jié)模式。
          3:按鍵松手有效

          *************************************************************
          矩陣鍵盤的掃描
          定時器的應(yīng)用
          *****************************************
          c語言函數(shù)調(diào)用
          形參
          實參
          ******************************************************************

          #includereg52.h>#define uchar unsigned char#define uint unsigned intuchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
          0x7f,0x6f,0x40};//共陰數(shù)碼管字模uchar code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
          //P2口位選8個數(shù)碼管uchar key_code[] ={0xb7,0xbb,0xbd,0xbe};uchar key;uchar hour,min,sec;uchar k;void delay(uchar z)  //延時函數(shù){uchar x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void display() //顯示函數(shù){if(k==20)//定時器定時50ms,20次就是1秒{k=0;sec++;}if(sec>59){sec=0;min++;}if(min>59){min=0;hour++;}if(hour>23){hour=0;}P2=table2[5];  //片選P0=table1[hour/10];//送數(shù)據(jù),十位delay(10);P2=table2[4];  //片選P0=table1[hour%10];//個位delay(10);P2=table2[3]; P0=table1[min/10];delay(10);P2=table2[2]; P0=table1[min%10];delay(10);P2=table2[1]; P0=table1[sec/10];delay(10);P2=table2[0]; P0=table1[sec%10];delay(10);}unsigned char keyscan()//鍵盤掃描程序{unsigned char scan1, scan2, keycode, j;P1 = 0xf0;scan1 = P1;if (scan1 != 0xf0)//判鍵是否按下{delay(10); //延時10msscan1 = P1;if (scan1 != 0xf0)//二次判鍵是否按下{TR0=0;P1 = 0x0f;scan2 = P1;keycode = scan1 | scan2; //組合成鍵掃描編碼for (j = 0; j  4; j++){if (keycode == key_code[j])//查表得鍵值{key = j;while(P1!= 0x0f)display();return (key); //返回有效鍵值   }}}}elseP1 = 0xff;return (key = 4); //返回無效碼}void system_Ini() //定時器初始化{TMOD= 0x01;TH0=(65535-50000)/256; TL0=(65535-50000)%256; ET0 = 1; TR0  = 1;EA=1;}void timer0 () interrupt 1 //中斷程序{TH0=(65535-50000)/256; TL0=(65535-50000)%256;k++;}void contral(uchar key) //調(diào)整時間{if(key==0||key==1||key==2){if(key==0){sec++;if(sec>59){sec=0;}}else if(key==1){min++;if(min>59){min=0;}}else if(key==2){hour++;if(hour>23){hour=0;}}}else if(key==3){TR0=1;}}void main(){uchar a;system_Ini();//函數(shù)調(diào)用,初始化while(1){a=keyscan();contral(a);display();}}


          評論


          相關(guān)推薦

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