太原理工單片機(jī)課程設(shè)計(jì)-秒表設(shè)計(jì)_第1頁(yè)
太原理工單片機(jī)課程設(shè)計(jì)-秒表設(shè)計(jì)_第2頁(yè)
太原理工單片機(jī)課程設(shè)計(jì)-秒表設(shè)計(jì)_第3頁(yè)
太原理工單片機(jī)課程設(shè)計(jì)-秒表設(shè)計(jì)_第4頁(yè)
太原理工單片機(jī)課程設(shè)計(jì)-秒表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)報(bào)告書(shū)2021姓 名:班 級(jí):分 數(shù):實(shí)驗(yàn)要求:設(shè)計(jì)秒表計(jì)時(shí)系統(tǒng),能夠完成屢次計(jì)時(shí),即一次及時(shí)可以做到屢次取值,同時(shí)在及時(shí)停止后能夠自由查閱所記的數(shù)值。 試驗(yàn)所用語(yǔ)言:C語(yǔ)言試驗(yàn)環(huán)境:Windows XP Keil uVision3 STC-ISP V35試驗(yàn)芯片:AT89x51目錄1、設(shè)計(jì)方案書(shū)2、設(shè)計(jì)理念3、程序流程圖4、程序清單5、外部電路圖6、按鍵說(shuō)明7、程序運(yùn)行結(jié)果8、思想總結(jié)9、參考文獻(xiàn)一、設(shè)計(jì)方案書(shū):通過(guò)不同按鍵的輸入,使計(jì)時(shí)器完成不同的指令,例如開(kāi)始計(jì)時(shí)、記錄當(dāng)前時(shí)間、停止時(shí)間、查找記錄、清零等。計(jì)時(shí)器時(shí)間準(zhǔn)確。計(jì)時(shí)范圍盡量大些,有記錄條數(shù)的顯示,當(dāng)時(shí)間計(jì)滿自動(dòng)停

2、止。二、設(shè)計(jì)理念:對(duì)于按鍵,設(shè)計(jì)按鍵子程序,在主程序中不斷調(diào)用子程序。在數(shù)碼管上顯示秒,一個(gè)顯示十位,一個(gè)顯示各位。在二極管上,高三位顯示記錄條數(shù),其余五位顯示分鐘,同時(shí)記錄條數(shù)以二進(jìn)制數(shù)顯示。計(jì)時(shí)使用51單片機(jī)中斷程序進(jìn)行定時(shí),使用T0作為計(jì)時(shí)器。在中斷程序中,每隔一秒將一個(gè)全局變量置1,主程序在檢測(cè)到其為1時(shí),計(jì)時(shí)相應(yīng)加一。顯示時(shí)間在數(shù)碼管上的使用數(shù)組輸出。在二極管上的使用按位與的情況。記錄事情通過(guò)按鍵子程序讀回其值后,將當(dāng)時(shí)的秒值和分值存入數(shù)組。同時(shí)記錄條數(shù)加1。當(dāng)計(jì)時(shí)停止后通過(guò)上翻鍵和下翻鍵可以在記錄中查找各值。在清零按鍵按下的時(shí)候,所有顯示清零,這時(shí)秒表可以開(kāi)始重新計(jì)時(shí)。在計(jì)時(shí)階段,

3、上、下翻鍵無(wú)法使用,清零鍵無(wú)法使用。只有當(dāng)時(shí)間到達(dá)上限、停止按鍵按下和記錄條數(shù)慢時(shí)計(jì)時(shí)才停止工作。因?yàn)閷掖斡玫綌?shù)字顯示,顯示使用子程序調(diào)用形式。三、程序流程圖:開(kāi) 始主程序:設(shè)置計(jì)數(shù)器 進(jìn)入無(wú)限循環(huán)中NShangyi=1調(diào)用按鍵子程序 得值給鍵值根據(jù)鍵值相應(yīng)得標(biāo)志位置位NNxiayi=1M值加1Kai=1M值減1計(jì)時(shí),檢測(cè)tound=1那么計(jì)時(shí)加1 調(diào)用顯示子程序NTing=1根據(jù)m值顯示MM得內(nèi)容停止計(jì)時(shí),保存當(dāng)前值,kai=0NNZhanting=1Qingling=1將所有位清零保存當(dāng)前值到MM數(shù)組 同時(shí)m加1延時(shí)開(kāi) 始按鍵子程序:NKeyv!=0xff進(jìn)入循環(huán),等待按鍵放開(kāi)初始化將P3

4、口值給keyvNNKeyv=0xffKeyv=0xffReturn(0)Return(keyv)結(jié)束四、程序清單:#include "at89x51.h"#define uchar unsigned charuchar hex16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; 數(shù)碼管顯示int i,tound; /全局變量uchar key() /按鍵子程序uchar keyv;uchar tmp;keyv=P3; /將P3值給變量if(keyv=0xff)

5、/如果按鍵沒(méi)有按下了,返回0return(0);for(i=0;i<1250;i+); /按下延時(shí) 防抖動(dòng)keyv=P3; /從新付值if(keyv=0xff) /如果沒(méi)有到達(dá)時(shí)間,認(rèn)為無(wú)效返回0return(0);else /有按鍵值那么進(jìn)入循環(huán) for(;) tmp=P3; if(tmp=0xff) /當(dāng)按鍵放開(kāi)跳出break;return (keyv); /返回值void xianshi(int miao,int fen,int shu) /顯示子程序 uchar fenx=0x01; P0=hexmiao%10; /在數(shù)碼管上顯示秒 P1=hexmiao/10; fenx=0xf

6、f; /在低位顯示分鐘 利用移位原理 for(i=0;i<fen;i+) fenx=fenx<<1; switch(shu) /在高位顯示當(dāng)前記錄條數(shù) case 0:fenx=fenx&0xff;break; /通過(guò)按位與置位 case 1:fenx=fenx&0xdf;break; case 2:fenx=fenx&0xbf;break; case 3:fenx=fenx&0x9f;break; case 4:fenx=fenx&0x7f;break; case 5:fenx=fenx&0x5f;break; case 6:f

7、enx=fenx&0x3f;break; case 7:fenx=fenx&0x1f; P2=fenx; /將數(shù)碼管顯示指示 void main(void) /主程序uchar jianzhi;int kai=0,ting=0,zhanting=0,shangyi=0,xiayi=0,qingling=1; /標(biāo)志位int secound=0,minter=0,m=0,n=0; /時(shí)間位和記錄條數(shù)位int MM82; /保存狀態(tài)數(shù)組TMOD=0x09; /定義時(shí)間計(jì)數(shù)器T0TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0

8、=1;EA=1; while(1) /主循環(huán) jianzhi=key(); /讀回鍵值 if(jianzhi=0xfe&&kai=0&&qingling=1) kai=1;secound=0;minter=0;m=0;qingling=0; /當(dāng)開(kāi)始按下時(shí),設(shè)置標(biāo)志位if(jianzhi=0xfd&&kai=1) ting=1; /當(dāng)停止鍵按下時(shí) 置位if(jianzhi=0xfb&&kai=1) zhanting=1; /當(dāng)暫停鍵按下時(shí) 置位if(jianzhi=0xf7&&kai=0) shangyi=1; /

9、當(dāng)上移位鍵按下時(shí) 置位 if(jianzhi=0xef&&kai=0) xiayi=1; /當(dāng)下移位鍵按下時(shí) 置位if(jianzhi=0x7f&&kai=0) qingling=1; /當(dāng)清零鍵按下時(shí) 置位if(kai=1&&qingling!=1) /假設(shè)開(kāi)始之后 if(tound=1) /接受中斷傳回得1秒標(biāo)志位 secound+;tound=0; /秒加一,同時(shí)清楚標(biāo)志位 if(secound=60) /60秒進(jìn)位 minter+; secound=0; if(zhanting=1) /如果暫停了 MMm0=secound; /保存分秒值

10、 MMm1=minter; m+; /記錄條數(shù)加一 zhanting=0; /去除標(biāo)志位 xianshi(secound,minter,m); /調(diào)用顯示子程序 if(ting=1) /當(dāng)停止按下時(shí) MMm0=secound; /保存當(dāng)前值 MMm1=minter; kai=0; /關(guān)開(kāi)值 n=m; ting=0; xianshi(MM00,MM01,0); /顯示最后時(shí)間 else if(m!=0&&qingling=0) /在沒(méi)有計(jì)停止之后 if(shangyi=1) /上移鍵按下 將記錄上移一個(gè) if(n=m) n=0; /為最上一個(gè)得時(shí)候 回到0 else n+; if

11、(xiayi=1) /下移鍵按下 記錄下移一個(gè) if(n=0) n=m; /為最后一個(gè)時(shí) 變成最上面得一個(gè) else n-; secound=MMn0; /調(diào)出記錄值 minter=MMn1; xianshi(secound,minter,n); /顯示記錄值 if(qingling=1) /當(dāng)清零鍵按下 m=0; /所有標(biāo)志位清零 n=0; secound=0; minter=0;kai=0;xianshi(0,0,0); /顯示清零 shangyi=0; xiayi=0; void t0(void) interrupt 1 using 0 /中斷子程序 int shiv;shiv+; /每中斷一次加一if(shiv=20) /20次中斷一次置位,時(shí)間為1秒 shiv=0; tound=1; TH0=(65536-50000)/256; /從新置值TL0=(65536-50000)%256; /程序結(jié)束五、外部電路圖:見(jiàn)附頁(yè)六、按鍵說(shuō)明: P3-0: 開(kāi)始按鍵 P3-1:停止按鍵 P3-2:暫停按鍵 P3-3:上移按鍵 P3-4:下移按鍵 P3-7:清零

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論