基于單片機(jī)秒表設(shè)計(jì)_第1頁(yè)
基于單片機(jī)秒表設(shè)計(jì)_第2頁(yè)
基于單片機(jī)秒表設(shè)計(jì)_第3頁(yè)
基于單片機(jī)秒表設(shè)計(jì)_第4頁(yè)
基于單片機(jī)秒表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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、摘要摘要數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡(jiǎn)單、精度高為目標(biāo)。設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,計(jì)時(shí)與顯示電路和回零、啟動(dòng)和停表電路等。主控制器采用單片機(jī)AT89S51,顯示電路采用共陰極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間。文中設(shè)計(jì)了一種以單片機(jī)為控制核心的數(shù)字秒表。該數(shù)字秒表采用C語(yǔ)言開發(fā),通過(guò)數(shù)碼管顯示計(jì)時(shí)結(jié)果。 關(guān)鍵字:AT89S51;數(shù)字秒表;LED數(shù)碼管顯示28 ABSTRACTABSTRACTDigital electronic stopwatch display intuitive,

2、 read the convenient, high precision of advantages, widely used in time. The design of digital electronic stopwatch by single chip, and strive to simple structure, high precision for the target. Design including the design of the system hardware circuit and the design of the program. The main hardwa

3、re circuit is the main controller, timing and display circuit and back to zero, start and stop watch circuit, etc. Lord AT89S51 single-chip controller, show circuit of the cathode LED digital pipe display time clock. This paper designs a with the single chip processor as the core to control the digi

4、tal stopwatch. The digital stopwatch using C language development, through the digital pipe display the time. Key words:AT89S51 Digital stopwatch The LED digital display ABSTRACT目錄摘要IABSTRACTII前言IV1緒論11.1單片機(jī)的背景11.2 單片機(jī)的應(yīng)用領(lǐng)域22總體方案的設(shè)計(jì)42.1系統(tǒng)的組成模塊42.2工作原理43系統(tǒng)的硬件電路設(shè)計(jì)63.1單片機(jī)的選擇63.2 顯示電路的選擇與設(shè)計(jì)93.3 按鍵電路的選擇與

5、設(shè)計(jì)103.4 時(shí)鐘電路的選擇與設(shè)計(jì)113.5 復(fù)位電路的選擇與設(shè)計(jì)144系統(tǒng)的軟件電路設(shè)計(jì)164.1 程序設(shè)計(jì)思想164.2 主程序設(shè)計(jì)164.3 中斷程序設(shè)計(jì)184.4 系統(tǒng)的程序設(shè)計(jì)21結(jié) 論25參考文獻(xiàn)26致謝27附錄28前言前言秒表計(jì)時(shí)器是電器制造,工業(yè)自動(dòng)化控制、國(guó)防、實(shí)驗(yàn)室及科研單位理想的計(jì)時(shí)儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時(shí)器、定時(shí)器等的時(shí)間測(cè)試。自首屆現(xiàn)代奧運(yùn)會(huì)在希臘雅典舉辦以來(lái),奧運(yùn)計(jì)時(shí)技術(shù)一直在不斷地向前發(fā)展。一百多年過(guò)去了,首屆現(xiàn)代奧運(yùn)會(huì)上計(jì)時(shí)所用的跑表如今換成了一系列高科技計(jì)時(shí)裝 置,如高速數(shù)碼攝像機(jī)、電子觸摸墊、紅外光束、無(wú)線應(yīng)答器等等。鑒于當(dāng)今計(jì)

6、時(shí)技術(shù)的快速發(fā)展,即便千分之一秒(為眨眼的40倍)的毫微差距,也決定著冠軍的歸屬。在現(xiàn)在的體育競(jìng)技比賽中,隨著運(yùn)動(dòng)員的水平不斷提高,差距也在不斷縮小。有些運(yùn)動(dòng)對(duì)時(shí)間精度的要求也越來(lái)越高,有時(shí)比賽冠亞軍之間的差距只有幾毫秒,因此就需要高精度的秒表來(lái)記錄成績(jī)。一、從大型鐘向小型鐘演變。二、從小型鐘向袋表過(guò)渡。三、從袋表向腕表發(fā)展。每一階段的發(fā)展都是和當(dāng)時(shí)的技術(shù)發(fā)明分不開的。1088年,當(dāng)時(shí)我國(guó)宋朝的科學(xué)家蘇頌和韓工廉等人制造了水運(yùn)儀象臺(tái),它是把渾儀、渾象和機(jī)械計(jì)時(shí)器組合起來(lái)的裝置。它以水力作為動(dòng)力來(lái)源,具有科學(xué)的擒縱機(jī)構(gòu),雖然幾十年后毀于戰(zhàn)亂,但它在世界鐘表史上具有極其重要的意義。1656年,荷蘭

7、的科學(xué)家惠更斯應(yīng)用伽利略的理論設(shè)計(jì)了鐘擺,第二年,在他的指導(dǎo)下年輕鐘匠S.Coster制造成功了第一個(gè)擺鐘。1675年,他又用游絲取代了原始的鐘擺,這樣就形成了以發(fā)條為動(dòng)力、以游絲為調(diào)速機(jī)構(gòu)的小型鐘,同時(shí)也為制造便于攜帶的袋表提供了條件。18世紀(jì)期間發(fā)明了各種各樣的擒縱機(jī)構(gòu),為袋表的進(jìn)一步產(chǎn)生與發(fā)展奠定了基礎(chǔ)。20世紀(jì)初,尤其是第一次世界大戰(zhàn)的爆發(fā),袋表已經(jīng)不能適應(yīng)作戰(zhàn)軍人的需要,腕表的生產(chǎn)成為大勢(shì)所趨。許多新的設(shè)計(jì)和技術(shù)也被應(yīng)用在腕表上,成為真正意義上的帶在手腕上的計(jì)時(shí)工具。緊接著的二戰(zhàn)使腕表的生產(chǎn)量大幅度增加,價(jià)格也隨之下降,使普通大眾也可以擁有它。腕表的年代到來(lái)了!1998年:建立超冷銫

8、原子鐘,比微微秒又要精確10萬(wàn)倍。從我國(guó)水運(yùn)儀像臺(tái)的發(fā)明到現(xiàn)在各國(guó)都在研制的原子鐘這幾百年的鐘表演變過(guò)程中,我們可以看到,各個(gè)不同時(shí)期的科學(xué)家和鐘表工匠用他們的聰明的智慧和不斷的實(shí)踐融合成了一座時(shí)間的隧道,同時(shí)也為我們勾勒了一條鐘表文化和科技發(fā)展的軌跡。黑龍江八一農(nóng)墾大學(xué)畢業(yè)設(shè)計(jì)(論文)1緒論1.1單片機(jī)的背景單片機(jī)即單片機(jī)微型計(jì)算機(jī)。用專業(yè)語(yǔ)言講,單片機(jī)就是在一塊硅片上集成了微處理器、存儲(chǔ)器及各種輸入輸出接口的芯片。這樣一塊芯片就具有了計(jì)算機(jī)的屬性,因?yàn)楸环Q為單片機(jī)微型計(jì)算機(jī),簡(jiǎn)稱單片機(jī)。單片機(jī)的前身叫做單板機(jī),是將CPU芯片、存儲(chǔ)芯片、I/O接口和簡(jiǎn)單的I/O設(shè)備等裝配在一快印刷電路板上,

9、在配上監(jiān)控程序,就構(gòu)成一塊單板機(jī)。單片機(jī)基本用于數(shù)學(xué),后來(lái)發(fā)展為單片機(jī)?,F(xiàn)在這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到是產(chǎn)品更新?lián)Q代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”。 現(xiàn)在可以說(shuō)單片機(jī)是百花齊放的時(shí)期,世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,它們各具特色,互成互補(bǔ),為單片機(jī)的應(yīng)用提供廣闊的天地。縱觀單片機(jī)的發(fā)展過(guò)程,可以預(yù)示單片機(jī)的發(fā)展趨勢(shì) 。 1.1.1、低功耗CMOS化 MCS-51系列的8031推出時(shí)的功耗達(dá)630mW,而現(xiàn)在的單片機(jī)普遍都在100mW左

10、右,隨著對(duì)單片機(jī)功耗要求越來(lái)越低,現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了CMOS(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。80C51就采用了HMOS(即高密度金屬氧化物半導(dǎo)體工藝)和CHMOS(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點(diǎn),這些特征,更適合于在要求低功耗,電池供電的應(yīng)用場(chǎng)合。所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途徑。 1.1.2、微型單片化 現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(CPU)、隨機(jī)存取數(shù)據(jù)存儲(chǔ)(RAM)、只讀程序存儲(chǔ)器(ROM)、并行和串行通信接口,中斷系統(tǒng)、定時(shí)電路、時(shí)鐘電路集成在一塊

11、單一的芯片上,增強(qiáng)型的單片機(jī)集成了如A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)、有些單片機(jī)將LCD(液晶)驅(qū)動(dòng)電路都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就更多,功能就越強(qiáng)大。甚至單片機(jī)廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機(jī)芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小。現(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中SMD(表面封裝)越來(lái)越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。 1.1.3、主流與多品種共存 現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指

12、令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國(guó)臺(tái)灣的Winbond系列單片機(jī)。所以C8051為核心的單片機(jī)占據(jù)了半壁江山。而Microchip公司的PIC精簡(jiǎn)指令集(RISC)也有著強(qiáng)勁的發(fā)展勢(shì)頭,中國(guó)臺(tái)灣的HOLTEK公司近年的單片機(jī)產(chǎn)量與日俱增,與其低價(jià)質(zhì)優(yōu)的優(yōu)勢(shì),占據(jù)一定的市場(chǎng)分額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。1.1.4、大容量、高性能 以往單片機(jī)內(nèi)的ROM為1KB4KB,RAM 為64128B。但在需要復(fù)雜控制的場(chǎng)合,該存

13、儲(chǔ)容量是不夠的,必須進(jìn)行外接擴(kuò)充。為了適應(yīng)這種領(lǐng)域的要求,須運(yùn)用新的工藝,使片內(nèi)存儲(chǔ)器大容量化。目前,單片機(jī)內(nèi)ROM 最大可達(dá)64KB,RAM 最大為2KB。另外單片機(jī)進(jìn)一步改變CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。采用精簡(jiǎn)指令集(RISC)結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運(yùn)行速度?,F(xiàn)指令速度最高者已達(dá)100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加強(qiáng)了位處理、中斷和定時(shí)控制功能。這類單片機(jī)的運(yùn)算速度比標(biāo)準(zhǔn)的單片機(jī)高出10 倍以上。由于這類單片機(jī)有極高的指令速度,可以使用軟件模擬其I/O 功能,由此引入了虛擬外設(shè)的新概念。

14、1.2 單片機(jī)的應(yīng)用領(lǐng)域單片機(jī)改變了我們生活,縱觀我們現(xiàn)在生活的各個(gè)領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機(jī), 單片機(jī)有著廣闊的應(yīng)用前景。目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:1、智能儀表上的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,例如精密的測(cè)

15、量設(shè)備。2、在工業(yè)控制中的應(yīng)用用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。3、在家用電器中的應(yīng)用可以這樣說(shuō),現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯褒、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,無(wú)所不在。4、在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,例如:手機(jī),電話機(jī)、列車無(wú)線通信。5、單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀

16、,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。6、在各種大型電器中的模塊化應(yīng)用某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂(lè)集成單片機(jī),在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡(jiǎn)化了電路,降低了損壞、錯(cuò)誤率,也方便于更換。此外,單片機(jī)在工商,金融,科研、教育,國(guó)防航空航天等領(lǐng)域都有著十分廣泛的用途。從無(wú)線電世界到單片機(jī)世界。本設(shè)計(jì)利用AT89S51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2.0-P2.7口作列掃描輸出,P1.1、P1.2、P1.3、P1.4、

17、P3.0、P3.1、RST分別接七個(gè)按鈕開關(guān),分別實(shí)現(xiàn)開始、暫停、存儲(chǔ)、清除當(dāng)前數(shù)據(jù)、全部清零和查看上次時(shí)間和復(fù)位功能,顯示電路由八位共陰極數(shù)碼管組成。2 總體方案的設(shè)計(jì)設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路和回零、啟動(dòng)、查看、停表電路等。主控制器采用單片機(jī)AT89S51,顯示電路采用共陰極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間,七個(gè)按鍵均采用觸點(diǎn)式按鍵。2.1系統(tǒng)的組成模塊系統(tǒng)總電路是由控制電路,顯示電路,時(shí)鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機(jī)與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖如 附表所示。AT89S51單片機(jī)為控制電路的核心部分,各個(gè)

18、電路均和單片機(jī)相連接,由單片機(jī)統(tǒng)籌和協(xié)調(diào)各個(gè)電路的運(yùn)行工作。AT89S51單片機(jī)提供了XTAL1和XTAL2兩個(gè)專用引腳接晶振電路,因此只要將晶振電路接到兩個(gè)專用引腳即可為單片機(jī)提供時(shí)鐘脈沖,但在焊接晶振電路時(shí)要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的始終脈沖。復(fù)位電路同晶振電路,單片機(jī)設(shè)有一個(gè)專用的硬件復(fù)位接口,并設(shè)置為高電平有效。按鍵電路與單片機(jī)的端口連接可以由用戶自己設(shè)定,本設(shè)計(jì)中軟件復(fù)位鍵和查看鍵分別接單片機(jī)的RST和P3.1,均設(shè)為高電平有效。顯示電路由八位數(shù)碼管組成,采用動(dòng)態(tài)顯示方式,因此有8位段控制端和8位位選控制端,八位段控制接P0口,P0.0P0.7分別控制數(shù)碼顯

19、示管的a、b、c、d、e、f、g、dp顯示,AT89S51的P0口沒(méi)有集成上拉電阻,高電平的驅(qū)動(dòng)能力很弱,所以需要接上拉電阻來(lái)提高P0的高電平驅(qū)動(dòng)能力。八位位控制則由低位到高位分別接到P2.0P2.7口,當(dāng)P2.0P2.7端口任意一個(gè)端口為高電平時(shí),與其相對(duì)應(yīng)的數(shù)碼管導(dǎo)通顯示。2.2工作原理本設(shè)計(jì)利用AT89S51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),口作列掃描輸出,P1.1、P1.2、P1.3、P1.4、P3.0、P3.1、RST分別接七個(gè)按鈕開關(guān),分別實(shí)現(xiàn)開始、暫停、存儲(chǔ)、清除當(dāng)前數(shù)據(jù)、全部清零和查看上次時(shí)間和復(fù)位

20、功能,電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。根據(jù)要求知道秒表設(shè)計(jì)主要實(shí)現(xiàn)的功能是計(jì)時(shí)和顯示。因此設(shè)置了七個(gè)按鍵和八位數(shù)碼管顯示時(shí)間,七個(gè)按鍵分別是開始,暫停、存儲(chǔ)、清除當(dāng)前數(shù)據(jù)、全部清零、復(fù)位和查看上次計(jì)時(shí)時(shí)間按鍵。利用這七個(gè)建來(lái)實(shí)現(xiàn)秒表的全部功能,而八位數(shù)碼管則能顯示最多99分59.999秒的計(jì)時(shí)。計(jì)時(shí)采用定時(shí)器T0中斷完成,定時(shí)溢出中斷周期為1ms,當(dāng)一處中斷后向CPU發(fā)出溢出中斷請(qǐng)求,每發(fā)出一次中斷請(qǐng)求就對(duì)毫秒計(jì)數(shù)單元進(jìn)行加一,達(dá)到10次就對(duì)十毫秒位進(jìn)行加一,依次類推,直到99分59.999秒重新復(fù)位。再看按鍵的處理。這七個(gè)鍵可以采用

21、中斷的方法,也可以采用掃描的方法來(lái)識(shí)別。復(fù)位鍵和查看主要功能在于數(shù)值復(fù)位和查詢上次計(jì)時(shí)時(shí)間,對(duì)于時(shí)間的要求不是很嚴(yán)格。而開始和停止鍵則是用于對(duì)時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以對(duì)復(fù)位和查看按鍵采取掃描的方式。而對(duì)開始和停止鍵采用外部中斷的方式。3系統(tǒng)的硬件電路設(shè)計(jì) 3.1單片機(jī)的選擇本課題在選取單片機(jī)時(shí),充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗(yàn),并根據(jù)自己的實(shí)際情況,選擇了ATMEL公司的AT89S51。ATMEL公司的89系列單片機(jī)以其卓越的性能、完善的兼容性、快捷便利的電擦寫操作,低廉的價(jià)格、超強(qiáng)的加密功能,完全替代87C51/62和8751/52,低電壓、低電源、低功耗,有DIP、P

22、LCC、QFP封裝,有民用型、工業(yè)級(jí)、汽車級(jí)、軍品級(jí)等多種溫度等級(jí),是當(dāng)今世界上性能最好、價(jià)格最低、最受歡迎的八位單片機(jī)3。AT89S51為40 腳雙列直插封裝的8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的80C51 相同,下面介紹一下單片機(jī)的外部結(jié)構(gòu):AT89S51單片機(jī)采用40引腳的雙列直插封裝方式。圖1為引腳排列圖, 40條引腳說(shuō)明如下:主電源引腳Vss和Vcc Vss接地 Vcc正常操作時(shí)為+5伏電源外接晶振引腳XTAL1和XTAL2 XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。 XTAL2內(nèi)部振蕩電路

23、反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。圖1 單片機(jī)引腳圖控制或與其它電源復(fù)用引腳RST/VPD,ALE/,和/Vpp RST/VPD 當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。 ALE/正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)A

24、LE脈沖,ALE 端可以驅(qū)動(dòng)(吸收或輸出電流)八個(gè)LSTTL電路。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能) 外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動(dòng)八LSTTL輸入。 /Vpp、/Vpp為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng)/Vpp為高電平時(shí),訪問(wèn)內(nèi)部程序存儲(chǔ)器,當(dāng)/Vpp為低電平時(shí),則訪問(wèn)外部程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0

25、- P3.7。 P0口(P0.0 - P0.7)是一個(gè)8位漏極開路型雙向I/O口,在訪問(wèn)外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。 P1口(P1.0 - P1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。 P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問(wèn)外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。 P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載6。

26、AT89S51具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S51可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。CPU是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成2。(1) 運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫?duì)半字節(jié)(4位)、單字節(jié)等數(shù)據(jù)進(jìn)行

27、操作。例如能完成加、減、乘、除、加1、減1、BCD碼十進(jìn)制調(diào)整、比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。AT89S51運(yùn)算器還包含有一個(gè)布爾處理器,用來(lái)處理位操作。它是以進(jìn)位標(biāo)志位C為累加器的,可執(zhí)行置位、復(fù)位、取反、等于1轉(zhuǎn)移、等于0轉(zhuǎn)移、等于1轉(zhuǎn)移且清0以及進(jìn)位標(biāo)志位與其他可尋址的位之間進(jìn)行數(shù)據(jù)傳送等位操作,也能使進(jìn)位標(biāo)志位與其他可移位尋址的位之間進(jìn)行邏輯與、或操作5。(2) 程序計(jì)數(shù)器PC程序計(jì)數(shù)器PC用來(lái)存放即將要執(zhí)行的指令地址,共16位,可對(duì)64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。(3) 令

28、寄存器指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。本設(shè)計(jì)采用ATMEL的AT89S51微處理器,主要基于以下幾個(gè)因素: AT89S51為51內(nèi)核,仿真調(diào)試的軟硬件資源豐富。 性價(jià)比高,貨源充足。 功耗低,功能強(qiáng),靈活性高。 DIP40封裝,體積小,便于產(chǎn)品小型化。 為EEPROM程序存儲(chǔ)介質(zhì),1000次以上擦寫周期,便于編程調(diào)試。 工作電壓范圍寬:2.7V6V,便于交直流供電。3.2 顯示電路的選擇與設(shè)計(jì)對(duì)于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。對(duì)于一般的段式液晶屏,需要專門的驅(qū)動(dòng)電路,

29、而且液晶顯示作為一種被動(dòng)顯示,可視性差,不適合遠(yuǎn)距離觀看;對(duì)于具有驅(qū)動(dòng)電路和單片機(jī)接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對(duì)單片機(jī)的接口要求較高,占用資源多;另外,AT89S51單片機(jī)本身無(wú)專門的液晶驅(qū)動(dòng)接口。而數(shù)碼管作為一種主動(dòng)顯示器件,具有亮度高、響應(yīng)速度快、防潮防濕性能好、溫度特性極性、價(jià)格便宜、易于購(gòu)買等優(yōu)點(diǎn),而且有遠(yuǎn)距離視覺效果,很適合夜間或是遠(yuǎn)距離操作。因此,本設(shè)計(jì)的顯示電路采用7段數(shù)碼管作為顯示介質(zhì)。數(shù)碼管顯示可以分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。由于本設(shè)計(jì)需要采用八位數(shù)碼管顯示時(shí)間,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動(dòng)態(tài)顯示。動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮

30、各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動(dòng)態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時(shí)顯示的感覺。數(shù)碼顯示管分為共陽(yáng)數(shù)碼管和共陰數(shù)碼管兩種,共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陽(yáng)極(二極管正端)連接在一起,通常,公共陰極接

31、高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起,通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端,當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。本設(shè)計(jì)采用

32、共陰極數(shù)碼顯示管做顯示電路,數(shù)碼管引腳圖如圖2所示:圖2數(shù)碼管引腳圖 由于采用的是共陰的數(shù)碼顯示管,所以只要數(shù)碼管的a、b、c、d、e、f、g、h引腳為高電平,那么其對(duì)應(yīng)的二極管就會(huì)發(fā)光,使數(shù)碼顯示管顯示09的編碼見表1。表1 共陰極數(shù)碼顯示管字型代碼字型共陰極代碼字型共陰極代碼03FH56DH106H67DH25BH707H34FH87FH466H96FH動(dòng)態(tài)顯示電路由顯示塊、字形碼驅(qū)動(dòng)模塊、字位驅(qū)動(dòng)模塊三部分組成。圖中,8個(gè)數(shù)碼管的8段段選線分別與外接上拉電阻的單片機(jī)P0口對(duì)應(yīng)相連,而8個(gè)數(shù)碼管的位控制端則和單片機(jī)的P2口相連。單片機(jī)的P2.0P2.7口則分別對(duì)應(yīng)數(shù)碼顯示管的最低位到最高位

33、,另外數(shù)碼管顯示是采用動(dòng)態(tài)顯示。由于數(shù)碼管是有P0口來(lái)驅(qū)動(dòng),它內(nèi)部沒(méi)有上拉電阻,作為輸出口時(shí)驅(qū)動(dòng)能力比較弱,不能點(diǎn)亮數(shù)碼顯示管,因此P0口必須接上拉電阻來(lái)提高驅(qū)動(dòng)能力。另外一位共陰數(shù)碼管的驅(qū)動(dòng)電流一般為20mA左右,如果電流太大容易造成數(shù)碼管損壞,所以也需要根據(jù)電源的電壓值來(lái)確定上拉電阻的大小。如果電阻過(guò)小,勢(shì)必會(huì)形成灌電流過(guò)大,造成單片機(jī)IO的損壞,如果電阻過(guò)大,那么對(duì)拉電流沒(méi)有太大的影響。電源供電電壓為5V,當(dāng)上拉電阻選用220電阻時(shí)灌電流為22mA。不會(huì)損壞單片機(jī)的I/O口,同時(shí)也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。3.3 按鍵電路的選擇與設(shè)計(jì)本設(shè)計(jì)中有七個(gè)按鍵,分別實(shí)現(xiàn)開始、暫停、

34、存儲(chǔ)、清除當(dāng)前數(shù)據(jù)、查看、全部清零復(fù)位功能。這七個(gè)鍵可以采用中斷的方法,也可以采用查詢的方法來(lái)識(shí)別。對(duì)于復(fù)位和查看鍵,主要功能在于數(shù)值復(fù)位和對(duì)上次計(jì)時(shí)時(shí)間的查看,對(duì)于時(shí)間的要求不是很嚴(yán)格,而開始和暫停鍵主要用于時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以考慮,對(duì)復(fù)位鍵和查看鍵采用查詢的方式,而對(duì)于開始和暫停鍵采用外部中斷。七個(gè)按鍵均采用低電平有效。當(dāng)按鍵沒(méi)有按下時(shí),單片機(jī)的I/O口直接連接電源,因此需要接上拉電阻來(lái)進(jìn)行限流,本設(shè)計(jì)中選取阻值為2k 的電阻作為上拉電阻,根據(jù)計(jì)算可知此時(shí)的灌電流為2.5mA,查看AT89S51的資料得知次電流在安全范圍內(nèi),符合安全設(shè)計(jì)要求。按鍵電路中由于采用了外部中斷

35、,所以需要用到P3口的第二功能。P3口引腳的第二功能如表2:表2 P3口引腳第二功能表P3口引腳特殊功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外部中斷0請(qǐng)求輸入端)P3.3INT1(外部中斷1請(qǐng)求輸入端)P3.4T0(定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖輸入端)P3.5T1(定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)脈沖輸入端)P3.6WR(片外數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸出端)P3.7RD(片內(nèi)數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端)3.4 時(shí)鐘電路的選擇與設(shè)計(jì)單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)內(nèi)各種微操作的時(shí)間基準(zhǔn),AT89S51片內(nèi)設(shè)有一個(gè)由反向放大器所構(gòu)成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路

36、的輸入和輸出端,AT89S51單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式與外部振蕩方式。外部方式的時(shí)鐘很少用,若要用時(shí),只要將XTAL1接地,XTAL2接外部振蕩器就行。對(duì)外部振蕩信號(hào)無(wú)特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHz的方波信號(hào)。時(shí)鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個(gè)兩相時(shí)鐘信號(hào)P1和P2供單片機(jī)使用。P1在每一個(gè)狀態(tài)S的前半部分有效,P2在每個(gè)狀態(tài)的后半部分有效。本設(shè)計(jì)采用的內(nèi)部振蕩方式,內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。本設(shè)計(jì)系統(tǒng)的時(shí)鐘電路如圖3所示。只要按照?qǐng)D3所示電路進(jìn)行設(shè)計(jì)連接就能使系統(tǒng)可靠起振并能穩(wěn)定運(yùn)行。圖中,電容器C1、C2起

37、穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為533pF。但在時(shí)鐘電路的實(shí)際應(yīng)用中一定要注意正確選擇其大小,并保證電路的對(duì)稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可能低。本設(shè)計(jì)中采用大小為30pF的電容和12MHz的晶振8。圖3 內(nèi)部振蕩電路(4) 時(shí)序AT89S51典型的指令周期(執(zhí)行一條指令的時(shí)間稱為指令周期)為一個(gè)機(jī)器周期,一個(gè)機(jī)器周期由六個(gè)狀態(tài)(十二振蕩周期)組成。每個(gè)狀態(tài)又被分成兩個(gè)時(shí)相P1和P2。所以,一個(gè)機(jī)器周期可以依次表示為S1P1,S1P2,S6P1,S6P2。圖4 AT89S51時(shí)序圖4給出了AT89S51單片機(jī)的取指和執(zhí)行指令的定時(shí)關(guān)系。這些內(nèi)部時(shí)

38、鐘信號(hào)不能從外部觀察到,所用XTAL2振蕩信號(hào)作參考。在圖中可看到,低8位地址的鎖存信號(hào)ALE在每個(gè)機(jī)器周期中兩次有效:一次在S1P2與S2P1期間,另一次在S4P2與S5P1期間。對(duì)于單周期指令,當(dāng)操作碼被送入指令寄存器時(shí),便從S1P2開始執(zhí)行指令。如果是雙字節(jié)單機(jī)器周期指令,則在同一機(jī)器周期的S4期間讀入第二個(gè)字節(jié),若是單字節(jié)單機(jī)器周期指令,則在S4期間仍進(jìn)行讀,但所讀的這個(gè)字節(jié)操作碼被忽略,程序計(jì)數(shù)器也不加1,在S6P2結(jié)束時(shí)完成指令操作。圖4的(a)和(b)給出了單字節(jié)單機(jī)器周期和雙字節(jié)單機(jī)器周期指令的時(shí)序。AT89S51指令大部分在一個(gè)機(jī)器周期完成。乘(MUL)和除(DIV)指令是僅

39、有的需要兩個(gè)以上機(jī)器周期的指令,占用4個(gè)機(jī)器周期。對(duì)于雙字節(jié)單機(jī)器周期指令,通常是在一個(gè)機(jī)器周期內(nèi)從程序存儲(chǔ)器中讀入兩個(gè)字節(jié),唯有MOVX指令例外。MOVX是訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的單字節(jié)雙機(jī)器周期指令。在執(zhí)行MOVX指令期間,外部數(shù)據(jù)存儲(chǔ)器被訪問(wèn)且被選通時(shí)跳過(guò)兩次取指操作。圖4中(c)給出了一般單字節(jié)雙機(jī)器周期指令的時(shí)序9。3.5 復(fù)位電路的選擇與設(shè)計(jì)關(guān)于單片機(jī)的置位和復(fù)位,都是為了把電路初始化到一個(gè)確定的狀態(tài),一般來(lái)說(shuō),單片機(jī)復(fù)位電路作用是把一個(gè)例如狀態(tài)機(jī)初始化到空狀態(tài),而在單片機(jī)內(nèi)部,復(fù)位的時(shí)候單片機(jī)是把一些寄存器以及存儲(chǔ)設(shè)備裝入廠商預(yù)設(shè)的一個(gè)值,復(fù)位是一個(gè)很重要的操作方式。但單片機(jī)本身是不

40、能自動(dòng)進(jìn)行復(fù)位的,必須配合相應(yīng)的外部電路才能實(shí)現(xiàn)。當(dāng)AT89S51單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無(wú)法執(zhí)行程序。因此要求單片機(jī)復(fù)位后能脫離復(fù)位狀態(tài)。而本系統(tǒng)選用的是12MHz的晶振,因此一個(gè)機(jī)器周期為1s,那么復(fù)位脈沖寬度最小應(yīng)為2s。在實(shí)際應(yīng)用系統(tǒng)中,考慮到電源的穩(wěn)定時(shí)間,參數(shù)漂移,晶振穩(wěn)定時(shí)間以及復(fù)位的可靠性等因素,必須有足夠的余量。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動(dòng)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。AT89S51單片機(jī)的上電復(fù)位POR(

41、Power On Reset)實(shí)質(zhì)上就是上電延時(shí)復(fù)位,也就是在上電延時(shí)期間把單片機(jī)鎖定在復(fù)位狀態(tài)上。在單片機(jī)每次初始加電時(shí),首先投入工作的功能部件是復(fù)位電路。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個(gè)延時(shí)(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個(gè)等待時(shí)間;在電源電壓穩(wěn)定之后,再插入一個(gè)延時(shí),給予時(shí)鐘振蕩器從起振到穩(wěn)定的一個(gè)等待時(shí)間;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前,還要至少推遲2個(gè)機(jī)器周期的延時(shí)。上述一系列的延時(shí),都是利用在單片機(jī)RST引腳上外接一個(gè)RC支路的充電時(shí)間而形成的。典型復(fù)位電路,其中的阻容值是原始手冊(cè)中提供的。在經(jīng)歷了一系列延時(shí)之后,單片機(jī)才開始按照時(shí)鐘源的工作頻率,進(jìn)入到

42、正常的程序運(yùn)行狀態(tài)。在電源電壓以及振蕩器輸出信號(hào)穩(wěn)定之后,又等待了一段較長(zhǎng)的延時(shí)才釋放RST信號(hào),使得CPU脫離復(fù)位鎖定狀態(tài);而RST信號(hào)一旦被釋放,立刻在ALE引腳上就可檢測(cè)到持續(xù)的脈沖信號(hào)8。由于標(biāo)準(zhǔn)AT89S51的復(fù)位邏輯相對(duì)簡(jiǎn)單,復(fù)位源只有RST一個(gè)(相對(duì)新型單片機(jī)來(lái)說(shuō),復(fù)位源比較單一),因此各種原因所導(dǎo)致的復(fù)位活動(dòng)以及復(fù)位狀態(tài)的進(jìn)入,都要依靠在外接引腳RST上施加一定時(shí)間寬度的高電平信號(hào)來(lái)實(shí)現(xiàn)。標(biāo)準(zhǔn)AT89S51不僅復(fù)位源比較單一,而且還沒(méi)有設(shè)計(jì)內(nèi)部上電復(fù)位的延時(shí)功能,因此必須借助于外接阻容支路來(lái)增加延時(shí)環(huán)節(jié),其實(shí),外接電阻R還是可以省略的,理由是一些CMOS單片機(jī)芯片內(nèi)部存在一個(gè)現(xiàn)

43、成的下拉電阻Rrst。例如,AT89系列的Rrst阻值約為50200 k。在每次單片機(jī)斷電之后,須使延時(shí)電容C上的電荷立刻放掉,以便為隨后可能在很短的時(shí)間內(nèi)再次加電作好準(zhǔn)備。否則,在斷電后C還沒(méi)有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應(yīng)有的延遲功能。手動(dòng)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,如果發(fā)生死機(jī),用按鈕開關(guān)操作使單片機(jī)復(fù)位。單片機(jī)要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個(gè)機(jī)器周期以上的高電平,從而實(shí)現(xiàn)復(fù)位操作。本設(shè)計(jì)采用上電且開關(guān)復(fù)位電路,如圖5所示上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平

44、,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇C=1030F,本設(shè)計(jì)采用的電容值為10F的電容和電阻為4.7K的電阻。圖5 單片機(jī)復(fù)位電路4系統(tǒng)的軟件電路設(shè)計(jì)4.1 程序設(shè)計(jì)思想本設(shè)計(jì)采用了C語(yǔ)言編寫,C語(yǔ)言由于采用了助記符號(hào)來(lái)編寫程序,比用機(jī)器語(yǔ)言的二進(jìn)制代碼編程要方便些,在一定程度上簡(jiǎn)化了編程過(guò)程。C語(yǔ)言的特點(diǎn)是用符號(hào)代替了機(jī)器指令代碼,而且助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語(yǔ)言的靈活性。使用C語(yǔ)言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。C語(yǔ)言的特點(diǎn):(1).面向機(jī)器的低級(jí)語(yǔ)言,通常是為特定的計(jì)算機(jī)或系列計(jì)算機(jī)專門設(shè)計(jì)的。(2).保持了機(jī)器語(yǔ)言的優(yōu)點(diǎn),具有直接和簡(jiǎn)捷的特點(diǎn)。(

45、3).可有效地訪問(wèn)、控制計(jì)算機(jī)的各種硬件設(shè)備,如磁盤、存儲(chǔ)器、CPU、I/O端口等。(4).目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計(jì)語(yǔ)言。(5).經(jīng)常與高級(jí)語(yǔ)言配合使用,應(yīng)用十分廣泛。在程序設(shè)計(jì)過(guò)程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成若干個(gè)相互獨(dú)立但相互又仍可有聯(lián)系的任務(wù)模塊,這些任務(wù)模塊使得任務(wù)變得相對(duì)單純,對(duì)外的數(shù)據(jù)交換相對(duì)簡(jiǎn)單,容易編寫,容易檢測(cè),容易閱讀和維護(hù)。這種程序設(shè)計(jì)思想稱為模塊化程序設(shè)計(jì)思想。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。因此,本醫(yī)院病床呼叫系統(tǒng)在軟件的設(shè)計(jì)上,運(yùn)用了模塊化程序的結(jié)構(gòu)對(duì)

46、軟件進(jìn)行設(shè)計(jì),使得程序變得更加直觀易懂。程序的主要模塊有:主程序、顯示程序、定時(shí)溢出中斷服務(wù)程序、外部中斷服務(wù)程序。4.2 主程序設(shè)計(jì)本系統(tǒng)程序主要模塊由主程序、定時(shí)中斷服務(wù)程序、外部中斷0服務(wù)程序組成。其中主程序是整個(gè)程序的主體??梢詫?duì)各個(gè)中斷程序進(jìn)行調(diào)用。協(xié)調(diào)各個(gè)子程序之間的聯(lián)系。系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖6。首先對(duì)系統(tǒng)進(jìn)行初始化,包括設(shè)置各入口地址、中斷的開啟、對(duì)各個(gè)數(shù)據(jù)緩存區(qū)清“0”、賦定時(shí)器初值,初始化完畢后,就進(jìn)入數(shù)碼管顯示程序。數(shù)碼管顯示程序?qū)︼@示緩存區(qū)內(nèi)的數(shù)值進(jìn)行調(diào)用并在數(shù)碼管上進(jìn)行動(dòng)態(tài)顯示。顯示一次就對(duì)各個(gè)按鍵進(jìn)行一次掃描,查詢復(fù)位鍵RST是否按下,當(dāng)復(fù)

47、位鍵按下后,程序返回開始,重新對(duì)系統(tǒng)進(jìn)行初始化。當(dāng)沒(méi)有按下復(fù)位鍵時(shí),程序則掃描各個(gè)接口按鍵,若沒(méi)有按下則返回顯示程,不斷地調(diào)用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示。使用戶能清楚的看到當(dāng)前電子秒表所記錄的時(shí)間。當(dāng)查詢到有按鍵按下后則跳轉(zhuǎn)到另外一段顯示程序并調(diào)用最紅緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,此時(shí)顯示的時(shí)間即為上一次計(jì)時(shí)的時(shí)間。與此同時(shí),在按鍵按下后單片機(jī)執(zhí)行顯示程序的同時(shí)也在對(duì)當(dāng)前按鍵進(jìn)行掃描,當(dāng)該按鍵斷開后立即跳轉(zhuǎn)回之前的顯示程序顯示當(dāng)前的計(jì)時(shí)時(shí)間。在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時(shí)器初值以及開啟外部中斷等操作,當(dāng)定時(shí)時(shí)間到后就轉(zhuǎn)去執(zhí)行定時(shí)中斷程序。當(dāng)外部中斷有請(qǐng)求則去執(zhí)行外部中斷服務(wù)程序。并在執(zhí)行完

48、后返回主程序。開始數(shù)碼顯示賦初始值其他按鍵是否按下否按下RST鍵是否按下調(diào)用緩存數(shù)據(jù)進(jìn)行顯示按鍵是否抬起是否否是是否圖6 主程序流程圖4.3 中斷程序設(shè)計(jì)現(xiàn)在方案中采用了一個(gè)中斷,外部中斷INT0。CPU在響應(yīng)中斷時(shí),先處理高級(jí)中斷,在處理低級(jí)中斷,若有多個(gè)同級(jí)中斷時(shí),則按自然優(yōu)先順序處理。例如當(dāng)CPU正在處理一個(gè)中斷申請(qǐng)時(shí),有出現(xiàn)了另一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,這是,CPU就暫停終止對(duì)當(dāng)前優(yōu)先級(jí)較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級(jí)比它高的中斷請(qǐng)求,并為其服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來(lái)較低級(jí)的中斷服務(wù)程序。而當(dāng)CPU為級(jí)別高的終端服務(wù)程序服務(wù)時(shí),如果級(jí)別低的中斷發(fā)出中斷請(qǐng)求,此時(shí)CPU是不會(huì)響

49、應(yīng)的,所以為了避免開始和暫停兩個(gè)按鍵中的一個(gè)出現(xiàn)沒(méi)有響應(yīng)的情況,在進(jìn)行程序編輯時(shí)要注意對(duì)中斷的使用,避免出現(xiàn)中斷的嵌套。,合理分配中斷對(duì)本設(shè)計(jì)的實(shí)現(xiàn)是至關(guān)重要的。另外由于數(shù)字式電子秒表的最小精度位1ms,屬于高精度電子秒表。定時(shí)器T0的定時(shí)周期也為1ms,為了使電子秒表暫停鍵按下后CPU能馬上去響應(yīng)中斷程序,必須將暫停的外部中斷級(jí)別高于定時(shí)計(jì)數(shù)器的中斷級(jí)別。避免出現(xiàn)CPU執(zhí)行完定時(shí)溢出中斷程序后再響應(yīng)外部中斷程序,影響計(jì)時(shí)精度。AT89S51的自然優(yōu)先級(jí)順序排列如下:外部中斷0 、定時(shí)/計(jì)數(shù)器0 、外部中斷1、定時(shí)/計(jì)數(shù)器1、串行口中斷。 (1)外部中斷0服務(wù)程序:外部中斷0服務(wù)程序結(jié)合外部停

50、止鍵實(shí)現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖7。當(dāng)有按鍵按下向CPU發(fā)出外部中斷請(qǐng)求,CPU轉(zhuǎn)向外部中斷0服務(wù)程序執(zhí)行,停止定時(shí)器。另外將當(dāng)前顯示的時(shí)間進(jìn)行一次存儲(chǔ),存進(jìn)中間寄存區(qū),最后中斷返回。圖7 外部中斷0服務(wù)程序流程圖(2)定時(shí)中斷服務(wù)程序當(dāng)定時(shí)/計(jì)數(shù)器T0器溢出后,向CPU發(fā)出中斷請(qǐng)求信號(hào)。CPU跳轉(zhuǎn)到定時(shí)中斷程序執(zhí)行,具體流程如圖8。定時(shí)中斷程序是一個(gè)進(jìn)位程序,主要負(fù)責(zé)對(duì)1ms的加一。1ms位沒(méi)有滿十就跳出中斷程序,返回顯示程序。當(dāng)1ms位滿十后就對(duì)1ms位清零,向10ms位加一,同時(shí)檢測(cè)10ms位是否滿十,沒(méi)有滿十就跳出中斷程序,返回顯示程序。如果滿十就向100ms位加一,依次

51、類推,最終達(dá)到99分59.999秒后歸零,從零開始再次計(jì)時(shí)。定時(shí)/計(jì)數(shù)器T0工作在方式0下,TH0和TL0組成一個(gè)13位的二進(jìn)制數(shù)計(jì)數(shù)器。單片機(jī)開機(jī)或復(fù)位時(shí),它的值為00H,當(dāng)T0啟動(dòng)后,從第一個(gè)輸入脈沖開始計(jì)時(shí),每來(lái)一個(gè)脈沖計(jì)數(shù)加一,即從0000000000000開始計(jì)數(shù)到1111111111111,再計(jì)數(shù)一個(gè)脈沖時(shí)TH0和TL0組成的13位計(jì)數(shù)器將會(huì)從13個(gè)1變成13個(gè)0,并產(chǎn)生溢出,溢出位將被送到TF0標(biāo)志位,通過(guò)溢出標(biāo)志產(chǎn)生溢出中斷請(qǐng)求。顯然,T0定時(shí)器在方式0下引起一次中斷所允許計(jì)數(shù)的最多脈沖個(gè)數(shù)為213 個(gè)。但如果定時(shí)計(jì)數(shù)器如果每次都固定從0開始計(jì)數(shù),到計(jì)滿后,再向CPU發(fā)出溢出中

52、斷請(qǐng)求信號(hào)那是毫無(wú)意義的。為了使定時(shí)計(jì)數(shù)器在規(guī)定的計(jì)數(shù)脈沖個(gè)數(shù)字之后(此時(shí)應(yīng)小于213 個(gè)脈沖),向CPU發(fā)出溢出中斷請(qǐng)求,可采取預(yù)先向TH0和TL0中放入一個(gè)初值X的方法,使計(jì)數(shù)器以X值為起始值開始計(jì)數(shù),即X+1,X+2,直至計(jì)數(shù)器計(jì)滿,從1全變?yōu)?。設(shè)需要計(jì)數(shù)的脈沖個(gè)數(shù)為Y,則有:X+Y=213在定時(shí)方式下:定時(shí)時(shí)間間隔位t=(213X)*振蕩周期*12現(xiàn)在本設(shè)計(jì)要求1ms實(shí)現(xiàn)一次中斷,選擇定時(shí)器T0工作在方式0。所以需要根據(jù)以上條件計(jì)算出T0的初值。設(shè)T0的初值為X,則(213X)*12/12*106 =1*10-3轉(zhuǎn)換位十六進(jìn)制數(shù)X=7192=1110000011000B即TH0=0E

53、0H(取X的高8位)TL0=18H(取X的低5位)。由于定時(shí)1ms只是一個(gè)理想化的時(shí)間,其中并沒(méi)有考慮到中斷后單片機(jī)執(zhí)行語(yǔ)句所花的時(shí)間。雖然執(zhí)行語(yǔ)句所花的時(shí)間很短只有即微秒,但積少成多,數(shù)字秒表一秒中要溢出中斷1000次,積累起來(lái)誤差就能達(dá)到毫秒級(jí),這對(duì)于精度到達(dá)毫秒級(jí)的數(shù)字電子秒表來(lái)說(shuō)是很大的誤差。所以要在后期編程時(shí)還要將單片機(jī)讀程序的時(shí)間考慮進(jìn)去,在對(duì)定時(shí)器賦初值時(shí)將單片機(jī)需要執(zhí)行的語(yǔ)句所花的時(shí)間加上,這樣就能使數(shù)字電子秒表的誤差達(dá)到最小。圖8 定時(shí)中斷服務(wù)程序4.4 系統(tǒng)的程序設(shè)計(jì)#include#define uchar unsigned char#define uint unsign

54、ed intsbit begin=P11;sbit stop=P12;sbit save=P13;sbit clear=P14;sbit dot=P07;sbit L_A=P37;sbit L_B=P36;sbit L_C=P35;sbit L_D=P34;sbit S_save=P31;sbit S_c=P30;uchar a0,a1,a2,a3,a4,a5,a6;uchar j=0, i=0,S_f=0;uchar code DIS_SEG711=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;unsigned char store107;void delay(uint b) /0.05s uchar b0,b1; for(b0=0;b0b;b0+) for(b1=0;b1100;b1+); void show(uchar a0,uchar a1,uc

溫馨提示

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