国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

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

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

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

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

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

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

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

#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個(gè)數(shù)碼管uchar key_code[] ={0xb7,0xbb,0xbd,0xbe};uchar key;uchar hour,min,sec;uchar k;void delay(uchar z)  //延時(shí)函數(shù){uchar x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void display() //顯示函數(shù){if(k==20)//定時(shí)器定時(shí)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];//個(gè)位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()//鍵盤(pán)掃描程序{unsigned char scan1, scan2, keycode, j;P1 = 0xf0;scan1 = P1;if (scan1 != 0xf0)//判鍵是否按下{delay(10); //延時(shí)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); //返回?zé)o效碼}void system_Ini() //定時(shí)器初始化{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)整時(shí)間{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();}}


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉