基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)畢業(yè)論文_第1頁(yè)
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)畢業(yè)論文_第2頁(yè)
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)畢業(yè)論文_第3頁(yè)
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)畢業(yè)論文_第4頁(yè)
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

目錄TOC\o"1-3"\h\u108181單片機(jī)及數(shù)字秒表簡(jiǎn)介 4272491.1單片機(jī)的背景 4290231.2數(shù)字秒表的背景 4315152設(shè)計(jì)的目標(biāo) 5254742.1設(shè)計(jì)目的 5138012.2具體操作 516823硬件設(shè)計(jì) 6155953.1原理圖 6248574系統(tǒng)的軟件設(shè)計(jì) 877624.1軟件整體設(shè)計(jì)思路 8110164.2軟件流程圖 8249704.3程序 9220084.3.1數(shù)碼管秒表顯示程序: 9159814.3.21602液晶秒表顯示程序 1565885總結(jié) 2122517參考文獻(xiàn) 2116967致謝 22

基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)摘要:在現(xiàn)今這個(gè)高度發(fā)達(dá)的社會(huì),信息的獲取成為了人們生活中非常重要的環(huán)節(jié),人們每天所要獲得的信息量非常之大,而在忙碌的生活中我們每天專門用來(lái)讀書,看報(bào)紙新聞的時(shí)間就非常的有限。所以我們就需要一些更加便利的手段來(lái)獲取信息而商家也需要一種更加廣泛實(shí)惠的手段來(lái)發(fā)布信息。近年來(lái)隨著科學(xué)技術(shù)的發(fā)展,單片機(jī)的應(yīng)用正在不斷走下面還深入。單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。關(guān)鍵字:?jiǎn)纹瑱C(jī);數(shù)字秒表;仿真1單片機(jī)及數(shù)字秒表簡(jiǎn)介1.1單片機(jī)的背景近年來(lái)隨著計(jì)算機(jī)在社會(huì)各領(lǐng)域的滲透,單片機(jī)的應(yīng)用正在不斷的走向深入,在實(shí)時(shí)監(jiān)測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往被作為一個(gè)核心部件來(lái)使用。單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器。在我們?nèi)粘I钪袉纹瑱C(jī)的應(yīng)用非常廣泛,數(shù)字秒表就是一個(gè)常見(jiàn)的應(yīng)用,數(shù)字秒表不僅是時(shí)代發(fā)展的產(chǎn)物,更是人們智慧的結(jié)晶。1.2數(shù)字秒表的背景數(shù)字秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛應(yīng)用。本設(shè)計(jì)中用單片機(jī)和數(shù)碼管組成數(shù)字秒,表力求結(jié)構(gòu)簡(jiǎn)單。

設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。硬件電路主要有主控制器、控制按鈕與顯示電路組成。本文簡(jiǎn)單闡述了基于單片機(jī)的數(shù)字秒表的的設(shè)計(jì)。本設(shè)計(jì)的主要特點(diǎn)是計(jì)時(shí)精度達(dá)到0.01秒,是各種體育競(jìng)賽的必要設(shè)備之一。本設(shè)計(jì)的數(shù)字秒表采用AT89C51單片機(jī)為主要器件,利用其定時(shí)器的原理,結(jié)合顯示電路、LED數(shù)碼管以及外部外部中斷電路來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟硬件結(jié)合起來(lái),使得系統(tǒng)能實(shí)現(xiàn)0~99.99秒的計(jì)時(shí),計(jì)時(shí)精度位0.01秒。硬件系統(tǒng)利用proteus仿真,在仿真中就能觀察到系統(tǒng)的實(shí)際運(yùn)行情況。2設(shè)計(jì)的目標(biāo)2.1設(shè)計(jì)目的1.利用單片機(jī)定時(shí)器中斷實(shí)現(xiàn)秒表計(jì)時(shí)功能。2.方案一:通過(guò)LED顯示程序的調(diào)整,熟悉LED動(dòng)態(tài)顯示的控制過(guò)程。 方案二:通過(guò)對(duì)1602設(shè)置,熟悉1602液晶顯示的控制過(guò)程。3.通過(guò)鍵盤程序的調(diào)整,熟悉矩陣式鍵盤的控制,熟悉鍵盤掃描原理。4.通過(guò)閱讀和調(diào)試簡(jiǎn)易秒表整體程序,學(xué)會(huì)如何編制含LED動(dòng)態(tài)顯示、1602液晶的顯示、鍵盤掃描和定時(shí)器中斷等多種功能的綜合程序。2.2具體操作2.2.1方案一:用AT89C51設(shè)計(jì)一個(gè)6位的數(shù)碼管顯示作為“秒表”,顯示時(shí)間范圍為0.00~655.36秒(此處可以通過(guò)設(shè)置兩個(gè)變量進(jìn)行進(jìn)位操作來(lái)達(dá)到最大計(jì)數(shù)9999.99秒),計(jì)時(shí)精度達(dá)到0.01秒。利用其定時(shí)器的原理,數(shù)碼管以及定時(shí)器中斷來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟硬件結(jié)合起來(lái),使得系統(tǒng)能實(shí)現(xiàn)0.00~655.36秒的計(jì)時(shí)。另外,通過(guò)獨(dú)立按鍵的設(shè)計(jì)來(lái)對(duì)秒表進(jìn)行控制。key1鍵控制計(jì)時(shí)的開始與暫停、key2鍵控制計(jì)時(shí)時(shí)的保存數(shù)據(jù)然后可以通過(guò)key4鍵控制數(shù)據(jù)的輸出(可以保存十個(gè),保存十個(gè)時(shí)秒表可以停止,該功能可用于賽跑中的計(jì)時(shí))、key3鍵控制“清零”和保存按下清零鍵前的最后一次所計(jì)時(shí)間。(特別聲明:每次處于“暫停狀態(tài)”的時(shí)間都可以在此基礎(chǔ)之上進(jìn)行計(jì)時(shí))。2.2.1方案二:用AT89C51設(shè)計(jì)一個(gè)1602液晶顯示的“秒表”,顯示時(shí)間范圍為0.00~655.36秒(此處可以通過(guò)設(shè)置兩個(gè)變量進(jìn)行進(jìn)位操作來(lái)達(dá)到最大計(jì)數(shù)9999.99秒),計(jì)時(shí)精度達(dá)到0.01秒。利用其定時(shí)器的原理,1602液晶以及定時(shí)器中斷來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟硬件結(jié)合起來(lái),使得系統(tǒng)能實(shí)現(xiàn)0.00~655.36秒的計(jì)時(shí)。另外,通過(guò)獨(dú)立按鍵的設(shè)計(jì)來(lái)對(duì)秒表進(jìn)行控制。key1鍵控制計(jì)時(shí)的開始與暫停、key3鍵控制“清零”和保存按下清零鍵前的最后一次所計(jì)時(shí)間。(特別聲明:每次處于“暫停狀態(tài)”的時(shí)間都可以在此基礎(chǔ)之上進(jìn)行計(jì)時(shí))。注:由于開發(fā)板的鍵盤對(duì)液晶顯示有影響,顧放棄數(shù)碼管秒表顯示中的部分功能。3硬件設(shè)計(jì)3.1原理圖程序可用于在下圖在軟件中仿真也可以用于開發(fā)板4系統(tǒng)的軟件設(shè)計(jì)4.1軟件整體設(shè)計(jì)思路將程序模塊化與功能,含有多個(gè)子程序的調(diào)用與嵌套。通過(guò)對(duì)按鍵的是否按下來(lái)對(duì)秒表進(jìn)行操作,按鍵功能在設(shè)計(jì)目標(biāo)的具體操作中已經(jīng)展現(xiàn)。10毫秒秒定時(shí)采用定時(shí)器T0中斷的工作方式1進(jìn)行,中斷及計(jì)數(shù)的開啟與關(guān)閉受控于按鍵處理程序。4.2軟件流程圖按鍵key1按鍵key3按鍵key4按鍵key2計(jì)時(shí)開始與暫停顯示key2保存的時(shí)間清零并保留清零時(shí)的時(shí)間按鍵key1按鍵key3按鍵key4按鍵key2計(jì)時(shí)開始與暫停顯示key2保存的時(shí)間清零并保留清零時(shí)的時(shí)間按一次保存一個(gè)時(shí)間上電上電程序開始程序開始初始化函數(shù)初始化函數(shù)選擇按鍵選擇按鍵4.3程序4.3.1數(shù)碼管秒表顯示程序:/**********************************數(shù)碼管顯示秒表計(jì)時(shí)**********************************//**********************************頭文件宏定義定義**********************************/#include<reg52.h> #defineuintunsignedint#defineucharunsignedcharuintt,tt;uinttable[10];ucharyi,er,san,si,wu,liu,i,j,k,l,m,flag;ucharcodetable0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};ucharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};ucharcodetable2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};/**********************************位定義***********************************/sbitdula=P2^6;sbitwela=P2^7;sbitkey1=P3^4; //開始與暫停sbitkey2=P3^5; //保存10次時(shí)間sbitkey3=P3^6; //清零與恢復(fù)sbitkey4=P3^7; //讀取保存的數(shù)據(jù)/**********************************函數(shù)的申明**********************************/voidinit();voiddisplay(flag);voiddisplay1();voidkeyscan1();voidkeyscan2();voidshu(uintt);voiddelay(uchard);/*********************************主函數(shù)**********************************/voidmain() {init(); while(1) { display1(); keyscan2(); }}/*********************************初始化函數(shù)**********************************/voidinit(){ m=1; TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=0; shu(t);}/*********************************總顯示函數(shù)**********************************/voiddisplay(flag){ while(flag) { display1(); keyscan1(); }}/*********************************數(shù)據(jù)顯示函數(shù)**********************************/voiddisplay1(){ P0=table0[liu]; dula=1; dula=0; P0=0xff; P0=table2[0]; wela=1; wela=0; delay(5); P0=table0[wu]; dula=1; dula=0; P0=0xff; P0=table2[1]; wela=1; wela=0; delay(5); P0=table0[si]; dula=1; dula=0; P0=0xff; P0=table2[2]; wela=1; wela=0; delay(5); P0=table1[san]; dula=1; dula=0; P0=0xff; P0=table2[3]; wela=1; wela=0; delay(3); P0=table0[er]; dula=1; dula=0; P0=0xff; P0=table2[4]; wela=1; wela=0; delay(3);P0=table0[yi]; dula=1; dula=0; P0=0xff; P0=table2[5]; wela=1; wela=0; delay(3);}/**************************************動(dòng)態(tài)顯示數(shù)字循環(huán)中的鍵盤檢測(cè)**************************************/voidkeyscan1(){ if(key1==0) { delay(10); if(key1==0) flag++; while(!key1); delay(10); while(!key1); if(flag%2) //判斷是否暫停 TR0=1; else TR0=0; } if(key2==0) { delay(10); if(key2==0) { if(j==10) { j=0; flag++; } else { table[j]=t; j++; } } while(!key2); delay(10); while(!key2); } if(key3==0) { delay(10); if(key3==0) { l++; if(l%2) //判斷是否清零還是恢復(fù) { tt=t; t=0; shu(t); } else { t=tt; shu(tt); } display1(); } while(!key3); delay(10); while(!key3); } if(key4==0) { delay(10); if(key4==0) { if(k==10)k=0; t=table[k]; shu(t); display1(); k++; } while(!key4); delay(10); while(!key4); }}/***************************************主程序中計(jì)時(shí)暫停時(shí)的鍵盤檢測(cè)***************************************/voidkeyscan2(){ if(key1==0) { delay(10); if(key1==0) flag++; while(!key1); delay(10); while(!key1); } if(flag%2) TR0=1; else TR0=0; display(flag%2); if(key4==0) { delay(10); if(key4==0) { if(k==10)k=0; t=table[k]; shu(t); display1(); k++; } while(!key4); delay(10); while(!key4); }}/***************************************數(shù)字的拆分***************************************/voidshu(uintt){ liu=t/100000; wu=t/10000%10; si=t/1000%10; san=t/100%10; er=t/10%10; yi=t%10; if(liu==0)liu=10; if(wu==0)wu=10; if(si==0)si=10;}/***************************************延時(shí)函數(shù)***************************************/voiddelay(uchard){unsignedchara,b,c;for(c=d;c>0;c--)for(b=120;b>0;b--)for(a=2;a>0;a--);}/*****************************************定時(shí)器0工作方式110毫秒計(jì)時(shí)******************************************/voidtime0()interrupt1 //計(jì)時(shí)10毫秒{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; t++; shu(t); if(t%1000==170) if(m%2) { P1=0xaa; m++; } else P1=0x55;}4.3.21602液晶秒表顯示程序/***************************************** 1602液晶顯示秒表計(jì)時(shí)******************************************//**********************************頭文件宏定義定義**********************************/#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharuintt,tt;ucharflag,yi,er,san,si,wu,liu,l,m,num;ucharcodetable[]="0123456789";ucharcodetable1[]="***STOPWATCH***";/**********************************位定義***********************************/sbitdula=P2^6;sbitwela=P2^7;sbitLCDE=P3^4;sbitrs=P3^5;sbitkey1=P3^6;sbitkey3=P3^7;/**********************************函數(shù)的申明**********************************/voidinit();voidwrite_com(ucharcom);voidwrite_da(ucharda);voidshu(uintt);voidkeyscan1();voiddisplay();voiddisplay1();voiddelay(ucharz);/*********************************主函數(shù)**********************************/voidmain() { init(); while(1) { keyscan1(); display1(); }}/*********************************初始化函數(shù)**********************************/voidinit() { dula=1; P0=0x00; dula=0; wela=1; P0=0xff; wela=0; LCDE=0; write_com(0x01); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x80); for(num=0;num<16;num++) { write_da(table1[num]); delay(3); } write_com(0x80+0x45); delay(5); shu(t); display1(); TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1;}/*********************************寫指令**********************************/voidwrite_com(ucharcom){ P0=com; rs=0; LCDE=0; delay(5); LCDE=1; delay(5); LCDE=0;}/*********************************寫數(shù)據(jù)**********************************/voidwrite_da(ucharda) { P0=da; rs=1; LCDE=0; delay(5); LCDE=1; delay(5); LCDE=0;}/*********************************數(shù)的拆分**********************************/voidshu(uintt) { liu=t/100000; wu=t/10000%10; si=t/1000%10; san=t/100%10; er=t/10%10; yi=t%10; if(liu==0)liu=10; if(wu==0)wu=10; if(si==0)si=10;}/**************************************動(dòng)態(tài)顯示數(shù)字循環(huán)中的鍵盤檢測(cè)**************************************/voidkeyscan1(){ if(key1==0) { delay(10); if(key1==0) flag++; while(!key1); delay(10); while(!key1); } if(flag%2) TR0=1; else TR0=0; if(key3==0) { delay(10); if(key3==0) { l++; if(l%2) { tt=t; t=0; shu(t); } else { t=tt; shu(tt); } display1(); } while(!key3); delay(10); while(!key3); } }/*********************************總顯示函數(shù)**********************************/voiddisplay(){ while(flag%2) { display1(); keyscan1(); }}/*********************************數(shù)據(jù)顯示函數(shù)**********************************/voiddisplay1() { write_com(0x80+0x45); delay(5); write_da(table[liu]); write_da(table[wu]); write_da(table[si]); write_da(table[san]); write_da(0x2e); write_da(table[er]); write_da(table[yi]);}/***************************************延時(shí)函數(shù)***************************************/voiddelay(ucharz) { uchari; for(z;z>0;z--) for(i=110;i>0;i--);}/*****************************************定時(shí)器0工作方式110毫秒計(jì)時(shí)******************************************/voidtime0()interrupt1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; t++; shu(t); if(t%1000==170) if(m%2) { P1=0xaa; m++; } else P1=0x55

溫馨提示

  • 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)論