電子設(shè)計與單片機應(yīng)用實訓(xùn)教程代碼第九章_第1頁
電子設(shè)計與單片機應(yīng)用實訓(xùn)教程代碼第九章_第2頁
電子設(shè)計與單片機應(yīng)用實訓(xùn)教程代碼第九章_第3頁
電子設(shè)計與單片機應(yīng)用實訓(xùn)教程代碼第九章_第4頁
電子設(shè)計與單片機應(yīng)用實訓(xùn)教程代碼第九章_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1:讓第一個數(shù)碼管顯示一個8字(單片機):#include<reg52.h>voidmain(){P0=0xfe;P2=0x7F;while(1);}2:數(shù)碼管動態(tài)顯示(單片機):#include<reg52.h> //52系列單片機頭文件#defineucharunsignedchar //宏定義#defineuintunsignedint //宏定義ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //編碼定義voiddelayms(uintxms) //延時函數(shù){uinti,j;for(i=xms;i>0;i--) for(j=110;j>0;j--);}voidmain(){while(1) { P0=0xfe; //送位選數(shù)據(jù) P2=table[1]; //送段選數(shù)據(jù) delayms(500); //延時0.5sP0=0xfd; //位選,第一個數(shù)碼管P2=table[2]; //段選,顯示2delayms(500);P0=0xfb;P2=table[3];delayms(500);P0=0xf7;P2=table[4];delayms(500);P0=0xef;P2=table[5];delayms(500);P0=0xdf;P2=table[6];delayms(500); }}3:初值顯示0,按下按鍵1,計數(shù)遞增,按下按鍵2,計數(shù)遞減,長按不會重復(fù)計數(shù)(單片機):#include<reg52.h> //52系列單片機頭文件#defineucharunsignedchar //宏定義uchartemp,ge=0,shi=0,bai=0; //全局變量intkey=0,c; //全局變量ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};voiddelayTime(uchartime) //延時函數(shù){ ucharx,y; for(x=0;x<110;x++) for(y=0;y<time;y++);}intkeyScan(intkey) //按鍵掃描{ P3=0xef; //掃描第一行 temp=P3; temp=temp&0xcf; if(temp!=0xcf) //判斷按鍵按下 { delayTime(10); //延時,消抖 temp=P3; temp=temp&0xcf; if(temp!=0xcf) //判斷按鍵確實按下 { temp=P3; switch(temp) //判斷幾號按鍵 { case0xaf: key++; break; case0x6f: key--; break; } while(temp!=0xcf) { temp=P3; temp=temp&0xcf; } } } P3=0xdf; //掃描第二行 temp=P3; temp=temp&0xcf; if(temp!=0xcf) { delayTime(10); temp=P3; temp=temp&0xcf; if(temp!=0xcf) { temp=P3; switch(temp) { case0x9f: key=0; break; } while(temp!=0xcf) { temp=P3; temp=temp&0xcf; } } } return(key);}intmain(){ while(1) { c=keyScan(key); //函數(shù)調(diào)用 if(c==0) { P0=0xf1; P2=table[0]; delayTime(1); } if(c>0) { bai=c/100; //分離個、十、百位 shi=(c/10)%10; ge=c%10; P0=0xf7; P2=table[ge]; delayTime(1); P0=0xfb; P2=table[shi]; delayTime(1); P0=0xfd; P2=table[bai]; delayTime(1); } if(c<0) { c=-c; bai=c/100; shi=(c/10)%10; ge=c%10; c=-c; P0=0xf7; P2=table[ge]; delayTime(1); P0=0xfb; P2=table[shi]; delayTime(1); P0=0xfd; P2=table[bai]; delayTime(1); P0=0xfe; P2=table[10]; delayTime(1); } key=c;}4:秒表制作(單片機):#include<reg52.h>#defineucharunsignedcharinttemp=0,key=0,c=0,num=0,msecs=0,msecb=0,secg=0,secs=0,m;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelayTime(uchartime) //延時子程序{ ucharx,y; for(x=0;x<110;x++) for(y=0;y<time;y++);}intkeyScan() //按鍵檢測{ P3=0xef; temp=P3; temp=temp&0xcf; if(temp!=0xcf) { delayTime(10); temp=P3; temp=temp&0xcf; if(temp!=0xcf) { temp=P3; switch(temp) { case0xaf: TR0=~TR0; break; case0x6f: TR0=0; num=0; msecs=0,msecb=0,secg=0,secs=0; break; } while(temp!=0xcf) { temp=P3; temp=temp&0xcf; } } } returnkey;}voidmain(){ TMOD=0x01; //設(shè)計定時器的工作方式 TH0=(65536-10000)/256; //裝初值 TL0=(65536-10000)%256; EA=1; //開總中斷 ET0=1; //開定時器中斷 TR0=0; while(1) { keyScan(); //按鍵檢測 P0=0xf7; //數(shù)碼管顯示 P2=table[msecs]; delayTime(1); P0=0xfb; P2=table[msecb]; delayTime(1); P0=0xfd; P2=table[secg]|0x80; delayTime(1); P0=0xfe; P2=table[secs]; delayTime(1); }}voidT0_time()interrupt1 //中斷子程序{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; num++; if(num==1) { num=0; msecs++; if(msecs==10) { msecb++; msecs=0; if(msecb==10) { secg++; msecb=0; if(secg==10) { secs++; secg=0; if(secs==6) { TR0=0; } } } } }}5:倒計時表(單片機):#include<reg52.h> //頭文件#defineucharunsignedcharuchartemp,key=0,num,minu=0;charsec=0;sbitled4=P1^3;ucharcodetable[]={ //數(shù)碼管數(shù)據(jù)0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};voidkeyScan();voiddelayTime(uchartime);voiddisplay(ucharminu,ucharsec) //顯示子程序{ P0=0xf7; P2=table[sec%10]; delayTime(1); P0=0xfb; P2=table[sec/10]; delayTime(1); P0=0xfd; P2=table[minu%10]|0x80; delayTime(1); P0=0xfe; P2=table[minu/10]; delayTime(1);}intmain() //主函數(shù){ TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=0; //定時器開啟 while(1) { keyScan(); display(minu,sec); }}voidkeyScan() //按鍵檢測子程序{ P3=0xef; temp=P3; temp=temp&0xcf; if(temp!=0xcf) { delayTime(10); temp=P3; temp=temp&0xcf; if(temp!=0xcf) { temp=P3; switch(temp) { case0xaf: sec+=10; if(sec>=60) { sec=sec-60; minu++; } if(minu>=10) { minu=10; sec=0; } break; case0x6f: sec-=10; if(sec<0) { if(minu>0) { sec=60+sec; minu--; } else { minu=0,sec=0; } } break; } while(temp!=0xcf) { temp=P3; temp=temp&0xcf; } } } P3=0xdf; temp=P3; temp=temp&0xcf; if(temp!=0xcf) { delayTime(10); temp=P3; temp=temp&0xcf; if(temp!=0xcf) { temp=P3; switch(temp) { case0x9f: TR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論