51單片機(jī)c語言的秒表設(shè)計(jì)_第1頁
51單片機(jī)c語言的秒表設(shè)計(jì)_第2頁
51單片機(jī)c語言的秒表設(shè)計(jì)_第3頁
51單片機(jī)c語言的秒表設(shè)計(jì)_第4頁
51單片機(jī)c語言的秒表設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 學(xué)號:1108421065課程設(shè)計(jì)報告 基于AT89C51單片機(jī)的秒表設(shè)計(jì) 院 系 電子信息工程學(xué)院 專 業(yè) 電子信息工程 班 級 1 姓 名 張遠(yuǎn)遠(yuǎn) 摘 要 本設(shè)計(jì)是設(shè)計(jì)一個單片機(jī)控制的多功能秒表系統(tǒng)。 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時帶動著傳統(tǒng)控制檢測日新月異的更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個核心部件來使用,僅單片機(jī)方面的知識是不夠的,還要根據(jù)具體的硬件結(jié)構(gòu),以及針對具體的應(yīng)用對象的軟件結(jié)合,加以完善。秒表的出現(xiàn),解決了傳統(tǒng)的由于人為因素造成的誤差和不公平性。 本設(shè)計(jì)的秒表系統(tǒng)采用AT89C51單片機(jī)為中心器件,利用其定時器

2、/計(jì)數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、電源電路、LED數(shù)碼管以及按鍵電路來設(shè)計(jì)計(jì)時器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)數(shù),并且結(jié)合相應(yīng)的顯示驅(qū)動程序,使數(shù)碼管能夠正確地顯示時間,暫停和中斷。可謂功能強(qiáng)大。其中軟件系統(tǒng)采用c語言編寫程序,包括顯示程序,計(jì)數(shù)程序,中斷,延時程序,按鍵消抖程序等,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。 關(guān)鍵字:單片機(jī) 秒表 目 錄摘 要I目 錄II引 言III1.課程設(shè)計(jì)目的12.課程設(shè)計(jì)題目描述和要求13.課程設(shè)計(jì)報告內(nèi)容13.1設(shè)計(jì)思路(方案)13.2系統(tǒng)總體方案及硬件設(shè)計(jì)(方案論證、

3、設(shè)計(jì)、調(diào)試)13.2.1系統(tǒng)總體方案13.2.2硬件電路設(shè)計(jì)2 3.3 軟件設(shè)計(jì)53.3.1軟件設(shè)計(jì)概述53.3.2程序流程圖53.3.3子程序模塊設(shè)計(jì)64.Protues軟件仿真75.秒表c語言程序86.焊接實(shí)物圖107.總結(jié)(設(shè)計(jì)后的體會和建議)108.參考文獻(xiàn):11 引 言 中國使用單片機(jī)的歷史只有短短的30年,在初始的短短五年時間里發(fā)展極為迅速??v觀我們現(xiàn)在生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實(shí)時控制和數(shù)據(jù) 處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機(jī)。以前沒有單片機(jī)時,這些東西也能做

4、,但是只能使用復(fù)雜的模擬電路,然而這樣做出來的產(chǎn)品不僅體積大,而且成本高,并且由于長期使用,元器件不斷老化,控制的精度自然也會達(dá)不到標(biāo)準(zhǔn)。在單片機(jī)產(chǎn)生后,我們就將控制這些東西變?yōu)橹悄芑?,我們只需要在單片機(jī)外圍接一點(diǎn)簡單的接口電路,核心部分只是由人為的寫入程序來完成。這樣產(chǎn)品的體積變小了,成本也降低了,長期使用也不會擔(dān)心精度達(dá)不到了。所以,它的魔力不僅是在現(xiàn)在,在將來將會有更多的人來接受它、使用它。據(jù)統(tǒng)計(jì),我國的單片機(jī)年容量已達(dá)3億片,且每年以大約20%的速度增長,但相對于世界市場我國的占有率還不到1%。特別是沿海地區(qū)的玩具廠等生產(chǎn)產(chǎn)品多數(shù)用到單片機(jī),并不斷地輻射向內(nèi)地。 所以,學(xué)習(xí)單片機(jī)在我

5、國是有著廣闊前景的。 1.課程設(shè)計(jì)目的1) 掌握LED數(shù)碼管原理及使用方法。2) 掌握定時器、外部中斷的設(shè)置和編程原理。3) 通過此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來,對程序進(jìn)行編輯,校驗(yàn)。4) 該實(shí)驗(yàn)通過單片機(jī)的定時器/計(jì)數(shù)器定時和計(jì)數(shù)原理,設(shè)計(jì)簡單的計(jì)時器系統(tǒng),擁有正確的計(jì)時、暫停、清零、復(fù)位功能,并同時可以用數(shù)碼管顯示。2.課程設(shè)計(jì)題目描述和要求 題目描述:基于單片機(jī)的秒表設(shè)計(jì)。要求:開始時,顯示“00”,第一次按下按鈕后開始從0-99s計(jì)時,顯示精度為1s;對用有4個功能按鍵第1個按鍵開始按鈕,第2個按鍵停止按鈕,第3個按鍵及時歸零按鈕,第4個按鈕復(fù)位按鈕。3.課程設(shè)計(jì)報告內(nèi)容了解A

6、T89C51芯片的的工作原理和工作方式 ,使用該芯片對LED數(shù)碼管 進(jìn)行顯示控制,實(shí)現(xiàn)用單片機(jī)的端口控制數(shù)碼管,顯示秒,并能用按鈕實(shí)現(xiàn)秒表起動、停止、清零功能,精確到1秒。要求選用定時器的工作方式,畫出使用單片機(jī)控制LED數(shù)碼管顯示的電路圖,并在實(shí)驗(yàn)箱實(shí)現(xiàn)其硬件電路,并編程完成軟件部分,最后調(diào)試秒表起動、停止、清零功能。3.1設(shè)計(jì)思路(方案)該實(shí)驗(yàn)要求進(jìn)行計(jì)時并在數(shù)碼管上顯示時間,用AT89C51單片機(jī)來實(shí)現(xiàn),按設(shè)計(jì)要求本實(shí)驗(yàn)要采用四個按鍵,其中復(fù)位按鍵在電路中,不需要再用程序控制,在用protues仿真時用不到,其他三個按鍵可以用I/O端口來控制,寫上其對應(yīng)的程序,延時一秒鐘可以用中斷來控制

7、,計(jì)算好中斷次數(shù).寫程序時要加上防止按鍵抖動程序,選擇好數(shù)碼管的顯示方式,分為靜態(tài)和動態(tài),想減少I/O口的使用就用動態(tài),想編程簡單就是用靜態(tài),3.2系統(tǒng)總體方案及硬件設(shè)計(jì)(方案論證、設(shè)計(jì)、調(diào)試)3.2.1系統(tǒng)總體方案本系統(tǒng)采用AT89C51單片機(jī)為中心器件,利用其定時器/計(jì)數(shù)器定時計(jì)數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路和顯示電路,以及一些按鍵電路等來設(shè)計(jì)計(jì)數(shù)器,將軟硬件有機(jī)結(jié)合起來,其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計(jì)數(shù)程序,中斷,硬件系統(tǒng)利用Protues強(qiáng)大的功能來實(shí)現(xiàn),簡單易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。單片機(jī)顯示電路外圍電路按鍵電路電源電路(

8、1)單片機(jī)的選擇 AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片

9、機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。 主要特性:與MCS-51 兼容;4K字節(jié)可編程FLASH存儲器;壽命:1000寫/擦循環(huán);數(shù)據(jù)保留時間:10年;全靜態(tài)工作:0Hz-24MHz;三級程序存儲器鎖定;128×8位內(nèi)部RAM;32可編程I/O線;兩個16位定時器/計(jì)數(shù)器;5個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路 (2) 管腳說明 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0

10、 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須接上拉電阻。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P1口作為低八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。 P3口:P3口管腳是8

11、個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。3.2.2硬件電路設(shè)計(jì)本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路以及一些按鍵電路,電路原理圖如下: 圖3-1 電路原理圖1)晶振電路這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1、C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可以在20-100PF之間取值,這里取20PF,接線時要使晶體振蕩器X1盡可能接近單片機(jī)。 圖3-2 晶振電路 2)復(fù)位電路 復(fù)位是單

12、片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序,除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或者操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復(fù)位鍵以重新啟動。單片機(jī)復(fù)位電路原理是在單片機(jī)的復(fù)位引腳RST上外接電阻和電容,實(shí)現(xiàn)上電復(fù)位。當(dāng)復(fù)位電平持續(xù)兩個機(jī)器周期以上時復(fù)位有效。復(fù)位電平的持續(xù)時間必須大于單片機(jī)的兩個機(jī)器周期。具體數(shù)值可以由RC電路計(jì)算出時間常數(shù)。若使用頻率為6MHz的晶振,則復(fù)位信號持續(xù)時間應(yīng)超過4us才能完成復(fù)位操作。復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。按鍵電平復(fù)

13、位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的。在本設(shè)計(jì)中采用了按鍵電平復(fù)位方式,其復(fù)位電路如下圖所示: 圖3-3 復(fù)位電路2)按鍵部分電路接線在按鍵電路中,我們可以在I/O口上直接按鍵,或者通過I/O口設(shè)計(jì)一個鍵盤,然后通過鍵盤掃描程序判斷是否有按鍵按下等。此系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0清零,P1.1暫停,P1.2開始,復(fù)位開關(guān)在復(fù)位電路中。圖中復(fù)位按鍵現(xiàn)在不起作用,由于仿真環(huán)境比較理想,在實(shí)際焊好的實(shí)物中,可以起作用!也可用軟件復(fù)位,在下面的子程序設(shè)計(jì)模塊中有詳細(xì)介紹。 圖3-4 按鍵電路 3)顯示電路電路顯示電

14、路我們采用的是數(shù)碼管顯示電路,在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,亮度較高,但是占用端口比較多,顯示位較少的情況下,一般采用靜態(tài)顯示方式;動態(tài)顯示程序相對復(fù)雜,但所使用的端口比較少,可以節(jié)省單片機(jī)的I/O口。單耗費(fèi)單片機(jī)的時間。 在設(shè)計(jì)中,我們采用LED靜態(tài)顯示,用P0和P3口驅(qū)動顯示。由于P0口的輸出極是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平,同時在焊接電路時要加限流電阻。3.3 軟件設(shè)計(jì)3.3.1軟件設(shè)計(jì)概述 在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn),把一個多功能的復(fù)雜的程序劃分成多個簡單的、單一的程序模塊,有利于程序的測試和調(diào)試,

15、有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)一目了然,為了提高程序的嚴(yán)謹(jǐn)性,我們在寫程序時,要以不同的思路去思考,盡量寫出質(zhì)量高的程序.3.3.2程序流程圖 1開始顯示單元清零T0設(shè)為16位計(jì)時器模式允許T0中斷調(diào)用顯示子程序按鍵按下?進(jìn)入功能程序NY)系統(tǒng)主程序流程圖 開始 顯示單元清零 T0設(shè)為16位計(jì)時器模式允許T0中斷 調(diào)用顯示子程序 按鍵按下? 進(jìn)入功能程序NY2)定時器中斷T0流程圖 T0中斷保護(hù)現(xiàn)場 秒表 加1s處理 恢復(fù),中斷返回3.3.3子程序模塊設(shè)計(jì)1)、顯示精度為1秒程序 本設(shè)計(jì)采用定時器/計(jì)數(shù)器T0的方式一,為16位位定時器/計(jì)數(shù)器,系統(tǒng)時鐘頻率采用

16、12MHZ,采用T0中斷方式1:16位定時器/計(jì)數(shù)器,TMOD=0X01,計(jì)算初值: 機(jī)器周期=1us=1×10-6設(shè)需要裝入T0的初始值為X,則有(216-X)×10-6=5×10-3; X=15536; TH0=(65536-50000)/256; TL0=(65536-50000)%256;由此公可知每次中斷時間是50ms,則只需要中斷20次, if(+countor=20) countor=0; ViewData0=Tabseconed/10; ViewData1=Tabseconed%10; +seconed;2)、消除按鍵抖動程序 keynum=P1;

17、 if(keynum!=0xff) delay(10); temp=P1; if(keynum=temp)3)、軟件復(fù)位程序 軟件復(fù)位不能清除中斷標(biāo)志位,實(shí)際效果與清零效果一樣,軟件復(fù)位后, 直接從程序開始運(yùn)行,如果在軟件復(fù)位 程序前加上關(guān)閉中斷,就與硬件復(fù)位 效果一樣了,還有軟件復(fù)位內(nèi)存中的臨時數(shù)據(jù)是不會清空的。 void (*reset)(void)=0x0000; TR0=0;*/關(guān)閉中斷/* reset(); 4.Protues軟件仿真 Protus仿真軟件可以看做是構(gòu)建了一個特殊的單片機(jī)系統(tǒng),只要將所寫程序的HEX文件導(dǎo)入該單片機(jī)系統(tǒng),就可以它他一句句的執(zhí)行所寫的指令,也可以讓它與K

18、eil實(shí)現(xiàn)聯(lián)調(diào),程序有問題可以隨時改,幫助快速調(diào)試程序。5. 秒表c語言程序*#include<reg51.h>sbit k1=P12;sbit k2=P11;sbit k3=P10;unsigned char countor;unsigned char seconed;unsigned char ViewData2;unsigned char Tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(unsigned int ms) unsigned int i,j; for(i=0;i<ms;i+)

19、for(j=0;j<1141;j+);void View(unsigned char Data2) P0=Data0; P3=Data1 ; delay(1);void Time_T0() interrupt 1 using 0 TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(+countor=20) countor=0; ViewData0=Tabseconed/10; ViewData1=Tabseconed%10; +seconed; if(seconed=100) seconed=0; void main() unsigned c

20、har keynum; countor=0; seconed=0; TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; ViewData0=0xc0; ViewData1=0xc0; while(1) keynum=P1; View(ViewData); if(keynum!=0xff) delay(10); temp=P1; if(keynum=temp) if(k1=0) EA=1; ET0=1; TR0=1; if(k2=0) EA=0; ET0=0; TR0=0; if(k3=0) ViewData0=0xc0; ViewData1=0xc0; countor=0; seconed=0; 6. 焊接實(shí)物圖7.總結(jié)(設(shè)計(jì)后的體會和建議)本文主要從軟硬件兩方面說明設(shè)計(jì)的總體思路和設(shè)計(jì)的實(shí)現(xiàn)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論