基于AT89C52單片機的電子秒表設計說明_第1頁
基于AT89C52單片機的電子秒表設計說明_第2頁
基于AT89C52單片機的電子秒表設計說明_第3頁
基于AT89C52單片機的電子秒表設計說明_第4頁
基于AT89C52單片機的電子秒表設計說明_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 . . . 清華大學 本科畢業(yè)論文(設計)基于AT89C52單片機的電子秒表設計所 在 學 院專 業(yè) 名 稱申請學士學位所屬學科年 級指導教師、職稱完 成 日 期27 / 32摘 要隨著計算機在社會領域的滲透,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測技術不斷更新。單片機是指集成在一個芯片上的微型計算機,主要包括CPU、隨機存儲器、只讀存儲器、基本輸入/輸出接口電路、定時器/計數(shù)器等部件。本文設計的主要思路是采用ATMEL公司的AT89C52單片機作為中央處理器,應用LED數(shù)碼顯示器,設計具有計時和倒計時功能的電子秒表。論文概述中主要介紹了本次課題的課題背景、研究意義以與要求完成的

2、任務。正文中首先介紹了系統(tǒng)硬件的設計思路以與工作原理,其次簡單闡述了程序的流程、程序各功能模塊的分析和實現(xiàn)過程,最后簡單總結了本次設計的難點、關鍵點以與收獲的經(jīng)驗。關鍵詞:單片機,LED數(shù)碼管顯示器 ,AT89C52ABSTRACTWith computer penetration in the social sphere, SCM applications are constantly deepening, and promote the traditional control detection technology update. Single chip is integrated on

3、 a chip microcomputer, including CPU, random access memory, a read-only memory, input / output interface circuit, timer / counter and other parts. In this paper the main train of thought of the design is the use of AT89C52 microcontroller as the central processor, the application of LED digital disp

4、lay, design has a timer and countdown function electronic stopwatch. The paper summarizes mainly introduced this topic research background, research significance and tasks. The text firstly introduces the system hardware design and working principle, then briefly discusses the process flow, process

5、of each function module of the analysis and the realization of the process, finally summarizes the design difficulty, key points and gain experience.Key words:Single-Chip Microcomputer, LED figures tube display,AT89C52目 錄1 緒論11.1 引言11.2 單片機與其發(fā)展11.3 LED顯示器概述41.4 論文章節(jié)安排72 系統(tǒng)功能概述73 系統(tǒng)硬件設計83.1中央處理器設計83.

6、2 系統(tǒng)電路設計94 系統(tǒng)軟件設計124.1 程序功能與主要變量的說明124.2 程序流程圖144.3 按鍵消抖介紹164.4 主要程序代碼175 總結22參考文獻24致251 緒論1.1 引言單片機自問世以來,性能不斷提高和完善,而且具有集成度高、功能強、速度快、體積小、功耗低、使用方便、價格低廉等特點,因此在工業(yè)控制、智能儀表、數(shù)據(jù)采集和處理、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、汽車工業(yè)、國防工業(yè)、家用電器等領域的應用日益廣泛,并且正逐步取代現(xiàn)有的多片微機應用系統(tǒng),單片機的潛力越來越被人們所重視。基于單片機的定時與控制裝置在諸多行業(yè)都有廣泛的應用,本文以AT89C52為主控制芯片,應用LED顯示器設計電子

7、秒表,其主要功能有單計時、連續(xù)記8個的計時、設定初值的倒計時。本文是一個單片機的最小系統(tǒng)設計,對于各種復雜系統(tǒng)的開發(fā),有一定的引導作用。1.2 單片機與其發(fā)展集成在一個芯片上的微型計算機即為單片機,也就是把組成微型計算機的各種功能部件,像CPU、只讀存儲器 ROM(Read only memory)、隨機存儲器RAM(Random access memory)、基本輸入/輸出接口電路、定時器/計數(shù)器等部件集成在一塊芯片上,構成一個較為完整的微型計算機,從而實現(xiàn)一些微型計算機所具有的功能2。1.2.1單片機的產(chǎn)生與發(fā)展(1)單片機的產(chǎn)生 電子計算機的發(fā)展經(jīng)歷了四個階段,分別是電子管、晶體管、集成

8、電路大(超大)規(guī)模集成電路階段,即通常所說的第一代,第二代,第三代和第四代計算機?,F(xiàn)在廣泛使用的微型計算機屬于第四代計算機,是大規(guī)模集成電路技術發(fā)展的產(chǎn)物,而單片機則是眾多微型計算機中的一個分支3。從 1971 年微型計算機問世以來,由于實際應用的需要,微型計算機向著兩個不同的方向發(fā)展;一個是向高速度,大容量,高性能的高檔微機方向發(fā)展;而另一個則是向穩(wěn)定可靠、體積小和價格廉價的單片機方向發(fā)展。但是兩者在原理和技術上是緊密聯(lián)系的4。 (2)單片機的發(fā)展繼1971年微處理器的研制成功不久,就出現(xiàn)了單片的微型計算機即單片機,但最早出現(xiàn)的單片機是一位的。隨后在1976年Intel公司推出了 8 位的

9、MCS-48 系列單片機,采用將8位CPU、8位并行I/O口、8位定時/計數(shù)器、RAM、ROM等集成于一塊芯片上的單片結構,能夠滿足一般工業(yè)控制和智能化儀器、儀表等的需求,贏得了廣泛的市場,為單片機的發(fā)展奠定了堅實的基礎6。到80年代末世界各地已相繼研制出大約50個系列300多個品種的單片機產(chǎn)品,其中包括Rockwell 公司的 6501,6502 , Motorola 公司的 6801,6802,Zilog 公司的 Z-8 系列等。此外,日本的日立公司,NEC公司等也相繼推出了各自的單片機品種。盡管目前市面上單片機的種類很多,但我國使用最為普遍的是 Intel 公司的MCS-51單片機系列。

10、20世紀80年代初,MCS-51 系列在 MCS-48 的基礎上迅速發(fā)展起來,盡管它是8位的單片機,但是相對于MCS-48,它的功能有很大的改善。此外,它還具有兼容性強,品種全,軟硬件資料豐富等特點,因此應用非常廣泛,成為非常重要的單片機品種。直到現(xiàn)在,單片機的主流系列仍然包含MCS-51系列。1983年Intel公司推出的 MCS-96 系列單片機是16位單片機中的典型代表,它是在8位單片機基礎上發(fā)展而來的。MCS-96相對于MCS-51,不但字長增加一倍,而且在其他性能方面也有很大的提高,特別是芯片還增加了一個10位數(shù)模轉(zhuǎn)換器,使其具有數(shù)模轉(zhuǎn)換的功能7??v觀單片機近些年來的發(fā)展歷程,今后單

11、片機將在集成度、功能、性能、速度、功耗、價格、可靠性、應用領域等全方位地向更高水平發(fā)展。盡管現(xiàn)在已經(jīng)有了32位單片機,但單片機位數(shù)不一定會繼續(xù)增加,并且目前32位單片機使用的并不多。由此可以推測,今后的單片機將具有更強的功能,更高的可靠性,更高的集成度,更低的功耗、更簡單的外圍電路等特點。除此之外,單片機的另一個發(fā)展方向是專業(yè)化,針對單一用途的專用單片機將會越來越多。 1.2.2單片機的分類根據(jù)控制應用的需要,可以將單片機分成為通用型和專用型兩種類型。通用型單片機是一種基本芯片,部資源比較豐富,性能全面且適用性強,能覆蓋多種應用需要。用戶可以根據(jù)需要設計成各種不同應用的控制系統(tǒng),即通用單片機有

12、一個在設計的過程,通過用戶的進一步設計,才能組建成一個以通用單片機芯片為核心再配以其它外圍電路的應用控制系統(tǒng)。然而在單片機的控制應用中,有許多時候是專門針對某個特定產(chǎn)品的,例如電度表和 IC 卡 讀寫器上的單片機等。這種應用的最大特點是針對性強而且數(shù)量巨大,為此廠家常與芯片制造商合作,設計和生產(chǎn)專用的單片機芯片。由于專用單片機芯片是針對一種產(chǎn)品或一種控制應用而專門設計的,設計時已經(jīng)對系統(tǒng)結構的最簡化,軟硬件資源利用的最優(yōu)化8。1.2.3 單片機應用領域由于單片機具有顯著的有點,它已經(jīng)成為科技領域的有力工具,人們生活的得力助手,其應用遍與各個領域,主要體現(xiàn)在一下幾個方面:(1)測控系統(tǒng)中的應用測

13、控系統(tǒng)特別是工業(yè)控制系統(tǒng)的工作環(huán)境惡劣,各種干擾也強,而且往往要時控制,故要求控制系統(tǒng)工作穩(wěn)定、可靠、抗干擾能力強。由單片機的特點可以看出,單片機很適合用于測控領域。例如,爐溫控制等2。(2)智能儀表中的應用 用單片機制作的測量、控制儀表,能使儀表向數(shù)字化、智能化、多功能化發(fā)展,并使檢測、處理、控制等功能一體化,使儀表重量大大減輕,便于攜帶和使用,同時降低了成本,提高了性價比。如智能轉(zhuǎn)速表、計時器等。(3)家用電器方面 當前,不斷提高其智能化程度是家用電器產(chǎn)品的一個重要發(fā)展趨勢,而單片機的參與是進一步提高家電智能化的需要,因此許多生產(chǎn)廠家經(jīng)常標榜“電腦控制”以提高產(chǎn)品的檔次,例如微波爐、空調(diào)機

14、、洗衣機、電視機和熱水器等,這里廠家所說的“電腦”實際上就是單片機。智能化家用電器將給我們帶來更大的舒適和方便,進一步改善我們的生活質(zhì)量。 (4)在智能計算機外設中的應用在計算機應用系統(tǒng)中,出通用外部設備外,還有許多用于外部通信、數(shù)據(jù)采集、驅(qū)動控制等接口。采用單片機專門對接口進行控制盒管理,則主機和單片機就能并行工作,這不僅大大提高了系統(tǒng)的運算速度,而且單片機還可以對接口信息進行預處理,以減少主機和接口之間的通信密度、提高接口控制管理的水平。如繪圖儀控制器、打印機的控制器等。1.2.4單片機的生產(chǎn)廠家和型號Intel(美國英特爾) 公司:MCS-48,MCS-51 系列;Microchip(美

15、國微晶)公司:PICI6XX,PIC54CXX 系列;Motorola(美國摩托羅拉)公司:6801 系列和 6805 系列;Rockwell(美國洛克威爾)公司:6500/1 系列;NS(美國國家半導體)公司:NS8070;RCA(美國無線電)公司:CDP1800 系列;Panasonic(日本松下)公司:MN101C 系列;NEC(日本電氣)公司:Ucom87,uPD7800 系列;Hitachi(日本日立)公司:HD6301,HD6305,HD63L05 系列; ATMEL 公司:AT89C51 系列;PHILIPS:87LPC 系列 。1.3 LED顯示器概述1.3.1 LED顯示器的

16、結構與分類發(fā)光二極管芯片的適當連接和適當?shù)墓鈱W結構,可構成發(fā)光顯示器的發(fā)光段和發(fā)光點,由這些發(fā)光段或發(fā)光點可以組成數(shù)碼管、符號管、米字管、矩陣管等。通常把數(shù)碼管、符號管、米字管共稱為筆畫顯示器;而把筆畫顯示器和矩陣管統(tǒng)稱為字符顯示器1。按照各發(fā)光段的連接方式分,數(shù)碼管可分為共陽極和共陰極兩種。所謂的共陽方式就是筆畫顯示器各段發(fā)光管的陽極是公共的,而陰極是互相隔離的。所謂的共陰方式就是筆畫顯示器各段發(fā)光管的陰極是公共的,而陽極是互相隔離的。按發(fā)光顏色分,發(fā)光二極管可分為橙色、紅色、藍色、綠色(又細分黃綠、標準綠和純綠)等。另外,有的發(fā)光管中包含兩種或兩種以上的顏色的芯片。根據(jù)出光處摻或不摻散射劑

17、、有色還是無色,上述各種顏色的發(fā)光二極管還可以分成有色散射和無色散射、有色透明和無色透明四種類型。散射型發(fā)光二極管適用于做指示燈。除上述分類方法外,還有按芯片材料分類與按功能分類的方法。1.3.2 LED顯示的原理如圖所示為七段LED數(shù)碼管的原理圖,通過該圖可以很容易的看出共陽極和共陰極的七段LED管的工作原理的不同點。對于共陰極的數(shù)碼管,所有發(fā)光二極管的陰極共連后接地,而陽極引出腳用于控制LED是否發(fā)亮。若陽極引出腳接地,則LED被熄滅;若陽極引腳接高電平,則LED被點亮。圖1-1 LED原理圖共陽極的LED正好相反,所有發(fā)光二極管的陽極共連后接高電平,而陽極引出腳用于控制LED是否點亮。若

18、陰極引腳接高電平,則LED被熄滅;若陰極引腳接地,則LED被點亮。單片機對LED管的顯示可以分為靜態(tài)和動態(tài)兩種。靜態(tài)顯示的特點是各LED管能同時穩(wěn)定地顯示各自字符;動態(tài)顯示是指各LED輪流一遍一遍顯示各自字符,但由于顯示的切換較快,在人的視覺看來是各LED管同時顯示不同字符。1.3.3 LED 數(shù)碼顯示器的接口方法與電路(1)LED 數(shù)碼顯示的接口方法。 單片機與 LED 數(shù)碼顯示器有以硬件為主和以軟件為主的兩種接口方法。 以硬件為主的接口方法,這種接口方法的電路如圖所示。圖1-2 LED接口方法電路圖(2)LED 數(shù)碼顯示器的接口電路。 PB0 實際使用的LED數(shù)碼顯示器位數(shù)較多。為降低成本

19、,大部分以軟件為主的接口方法對于多位LED數(shù)碼管顯示器,通常采用動態(tài)掃描顯示方法,即逐個循環(huán)點亮各位顯示器。這樣雖然在任一時期只有一位顯示器被點亮,但是由于人眼有視覺殘留效應,看起來與全部顯示持續(xù)點亮的效果基本一樣(在亮度上要有差別)。 1.3.4驅(qū)動器LED 顯示是單片機控制產(chǎn)品中常見的應用。使用LED模塊,這種模塊中帶有LED顯示管和LED 驅(qū)動電路,用起來較方便。一般用戶直接采用單片機+LED 驅(qū)動器+LED顯示管的方式,一種經(jīng)常使用的LED驅(qū)動器8550,它作為共陽數(shù)碼管的驅(qū)動器,而共陰數(shù)碼管的驅(qū)動器則是 A1015,它們都是三極管。 1.4 論文章節(jié)安排本文以單片機的研發(fā)工程項目作為

20、應用背景,對應用單片機設計電子秒表技術進行了研究。全文共分為五章,各章的主要容如下:第一章簡明扼要地介紹了單片機、LED特點、分類與應用;第二章扼要介紹了系統(tǒng)功能,各個按鍵的作用;第三章對電子秒表系統(tǒng)的總方案進行了研究,給出了電子秒表硬件的實現(xiàn)方法與設計思路;第四章列出了各模塊流程圖,完成控制系統(tǒng)中的軟件設定,給出了程序源代碼;第五章論文總結,設計中的重要問題,以與個人感想。2 系統(tǒng)功能概述畢業(yè)設計總體方案是以AT89C52單片機作為控制核心,設計具有計時、倒計時等功能的電子秒表。一個完整的電子秒表電路就是一個單片機的最小系統(tǒng),主要由鍵盤輸入電路、單片機、晶振、復位電路和LED顯示電路構成。本

21、畢業(yè)設計中電子秒表可以實現(xiàn)以下的功能:(1)用開關控制兩種計時模式的選擇。分別是單計時模式和連續(xù)計8個的計時模式。(2)用開關控制電子秒表的啟動、停止、復位,七段數(shù)碼管的高2位顯示秒表的秒值,低2位顯示秒表的百分秒值。(3)可實現(xiàn)設定初值的倒計時功能。其中涉與了三種初值調(diào)整方式,分別是增1(減1)、連續(xù)增(連續(xù)減)和快速增(快速減)。上述的功能主要是為了講述單片機定時器、鍵盤和LED顯示器的使用方法。本次畢業(yè)設計中所涉與的容主要包括:(1)定時器的使用:本設計通過秒表的計時詳細說明了定時器的使用方法。(2)鍵盤的使用:本設計通過秒表的啟動、停止、復位、計時模式的選擇,以與倒計時初值的設定,講述

22、了獨立式鍵盤的設計方法和關鍵技術。(3)LED的使用:本設計比較詳細的介紹了LED的原理和方法,并對其編程方法做了一般性的總結。外部指令對單片機的輸入一般是通過按鍵、鍵盤等輸入器件來實現(xiàn)的,本次畢業(yè)設計是利用鍵盤來實現(xiàn)秒表的啟停控制與功能選擇:(1)按鍵K1。按鍵K1有兩個功能,第一個是在單計時狀態(tài)下控制秒表的啟停;第二個是在倒計時初值設定的時候用于增加初值。(2)按鍵K2。按鍵K2同樣有兩個功能,第一個是在連續(xù)計8個的計時模式下控制秒表的啟停;第二個是在倒計時初值設定的時候用于減少初值。(3)按鍵K3。按鍵K3的功能是設定秒表的工作方式。在默認的狀態(tài)下,秒表始終處于準備計時的狀態(tài),按下K3后

23、秒表進入倒計時的狀態(tài),這時通過按鍵K1和K2可以進行倒計時初值的調(diào)整,再按下K3則進入倒計時。(4)按鍵RESET。起程序復位作用1。3 系統(tǒng)硬件設計3.1中央處理器設計3.1.1單片機選擇在微型單片機選擇上,我們應該考慮存儲器容量,時鐘頻率,I/O口線等基本參數(shù)。對于本設計,由于電子秒表系統(tǒng)在數(shù)據(jù)的處理和存儲方面要求不高,所以選取片帶RAM和ROM的單片機即可,在本設計中選取的是ATMEL公司的AT89C52單片機。3.1.2 AT89C52單片機的介紹 在眾多的單片機系列中,AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系列可編程Flash存儲器。使用Atmel公司高密

24、度非易失性存儲器技術制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。 AT89C52具有以下標準功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,3個16位定時器/計數(shù)器,一個響亮2級中斷結構,全雙工串行口,片晶振與時鐘電路。另外,AT89C52可降至0HZ靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89C52單片機的部結構與MCS-51系列單片機的構成基本一樣。CPU是由運算器和控制器所構成的。運算器主要用來對

25、操作數(shù)進行算術、邏輯運算和位操作的??刂破魇菃纹瑱C的指揮控制部件,主要任務的識別指令,并根據(jù)指令的性質(zhì)控制單片機各功能部件,從而保證單片機各部分能自動而協(xié)調(diào)地工作。AT89C52單片機的指令系統(tǒng)和引腳功能與MCS-51的完全兼容。AT89C52的引腳排列如圖3-1所示。圖3-1 AT89C52引腳排列圖3.2 系統(tǒng)電路設計如圖3-2所示為單片機電子秒表的電路圖,下面對其中某些部分做出解釋。圖3-2 電子秒表原理圖3.2.1 復位電路復位電路在單片機系統(tǒng)中是必不可少的。所謂的復位就是講單片機重新啟動,這是單片機部的都有寄存器都回到初始狀態(tài)。本設計電路中對應的復位電路如圖3-3所示。圖3-3 復位

26、電路圖對于AT89C52單片機來說,它是高電平復位,也就是說只要將單片機的RESET引腳接高電平并保持一定的時間就可以實現(xiàn)單片機的復位(而對于一些低電平復位的單片機來說就剛好相反,要使其RESET引腳置為低電平并保持一定時間以實現(xiàn)單片機的復位)。從上面的電路可以看出實現(xiàn)的是上電復位和按鍵復位兩個復位功能。上電的一瞬間,單片機的RESET引腳接到高電平,同時電容C1開始充電,經(jīng)過一定的時間后電容充電飽和,10K的下拉電阻把RESET引腳拉回到低電平狀態(tài),實現(xiàn)了單片機的復位。同樣道理,在單片機工作的時候按下復位按鈕,單片機的RESET引腳接到高電平,電容C1馬上放電完畢;松開該按鈕后電容C1開始充

27、電,經(jīng)過一定的時間后電容充電飽和,10K的下拉電阻把RESET引腳拉回到低電平狀態(tài),實現(xiàn)了單片機的復位9。3.2.2 電路元件AT89C52:單片機,控制LED顯示。LED1LED4:七段碼LED,用于顯示秒表數(shù)據(jù)。SS9012:由于數(shù)碼管需要較大電流驅(qū)動,單靠AT89C52的I/O口直接驅(qū)動效果不好,需要加放大電路。本設計中,所用的數(shù)碼管為共陰極的,所以三極管選用了SS9012.NPN型三極管。按鍵K1:在正常情況下,用于控制單一計時模式下秒表的啟動、停止。在倒計時初值設定的情況下為倒計時初值的增加按鍵,按一下K1,倒計時初值增加1;按住K1不放,倒計時初值連續(xù)增加;快速連按兩下K1然后不放

28、,則倒計時初值快速增加,增加的速度是連續(xù)增加的10倍。按鍵K2:在正常情況下,用于控制連續(xù)計時8個的計時模式下秒表的啟動、停止。在倒計時初值設定的情況下為倒計時初值的減少按鍵,按一下K2,倒計時初值減少1;按住K2不放,倒計時初值連續(xù)減少;快速連按兩下K2然后不放,則倒計時初值快速減少,減少的速度是連續(xù)減少的10倍。按鍵K3:用于秒表的功能的選擇,在默認的情況下,為秒表的計時準備模式;按下K3后秒表進入倒計時的狀態(tài),這是通過按鍵K1和K2可以進行倒計時初值的調(diào)整,再按下K3則進入倒計時。按鍵RESET:在復位電路中,對于單片機起復位作用。LED5:用于顯示單片機的工作狀態(tài),在準備計時的時候,L

29、ED5點亮;在計時的時候,LED5閃爍;在倒計時初值設定和倒計時工作的時候,LED5熄滅。LED6:用于顯示單片機的工作狀態(tài),在準備計時和計時工作的時候,LED6熄滅;在倒計時初值設定的時候,LED6點亮;在倒計時工作的時候,LED6閃爍1。3.2.3 I/O口線連接P1.0P1.7:與數(shù)碼管的各個位相連,用于傳送數(shù)碼管的段位嗎。P3.0P3.3:與數(shù)碼管LED1LED4相連,通過單片機的P3.0P3.3可以控制LED的顯示。P2.1:和按鈕K1相連,用于決定單一計時模式下的秒表啟動、停止和倒計時初值的增加。P2.0:和按鈕K2相連,用于決定連續(xù)計8個的計時模式下秒表啟動、停止和倒計時初值的減

30、少。P2.2:和按鈕K3相連,用于單片機工作模式的選擇。P2.6:和LED6相連,用于顯示單片機的工作狀態(tài)。P2.7:和LED5相連,用于顯示單片機的工作狀態(tài)。4 系統(tǒng)軟件設計系統(tǒng)硬件設計好之后,接下來就要進行軟件設計。電子秒表的軟件設計主要有三個方面:第一是利用定時器來完成秒表的定時周期;第二是利用定時中斷來實現(xiàn)鍵盤的掃描,確定單片機的工作狀態(tài);第三是利用單片機控制LED的輸出顯示。4.1 程序功能與主要變量的說明4.1.1 程序功能電子秒表程序主要完成如下功能:(1)兩種計時模式的啟動、停止、復位功能的秒表。(2)可設定初值的倒計時定時器。4.1.2 主要變量說明程序中用到的關鍵變量說明如

31、下。表4-1 主要變量定義變量說明m整型變量,用于存儲要顯示的數(shù)ms字符型變量,用于10ms的累加LED0LED3整型變量,用于存儲要顯示的各個位的數(shù)字start位變量,用于控制秒表單一計時模式的計時開始stop位變量,用于控制秒表單一計時模式的計時停止eight_start位變量,用于控制秒表連續(xù)計時8次模式的計時開始 eight_stop位變量,用于控制秒表連續(xù)計時8次模式的計時停止count_down位變量,用于控制倒計時開始scankey位變量,用于控制鍵盤掃描cheak位變量,按鍵的消抖標志位keydown位變量,K1的按下標志位K2_keydown位變量,K2的按下標志位K3_ke

32、ydown位變量,K3的按下標志位K3_keyup位變量,K3的彈起標志mm字符型變量,用于0.2秒的累加add位變量,倒計時初值加1標志位sub位變量,倒計時初值減1標志位bit_add1位變量,K1完成一次按鍵動作的標志位bit_sub位變量,K2完成一次按鍵動作的標志位fast_add位變量,倒計時初值連續(xù)增標志位double_key位變量,倒計時初值快速增標志位fast_sub位變量,倒計時初值連續(xù)減標志位double_sub位變量,倒計時初值快速減標志位tab8整型變量,存儲連續(xù)計時8次模式的8的時間值4.2 程序流程圖主程序完成的工作是檢測各個標志位的狀態(tài),以確定單片機的工作情況。

33、鍵盤查詢和數(shù)據(jù)顯示的部分在定時中段服務子程序中完成。由于程序較大,所以將程序的各個功能模塊的流程圖分別給出。4.2.1 計時功能流程圖圖4-1 計時功能流程圖4.2.2倒計時初值設定流程圖圖4-2 倒計時初值增加流程圖圖4-3 倒計時初值減少流程圖4.2.3倒計時功能流程圖圖4-4 倒計時開始流程圖4.3 按鍵消抖介紹按鍵消抖作為本設計的關鍵技術之一,在此做簡要介紹。通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合與斷開的瞬間均伴隨有一連串的抖動,為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消

34、抖。按鍵的消抖,可用硬件或軟件兩種方法。在鍵數(shù)較少時可用硬件方法消除鍵抖動。下圖所示的RS觸發(fā)器為常用的硬件去抖。圖4-5 硬件消抖電路圖圖中兩個“與非”門構成一個RS觸發(fā)器。當按鍵未按下是,輸出為1;當按鍵按下時,輸出為0。此時即使用按鍵的機械性能,使按鍵因彈性抖動而產(chǎn)生瞬時斷開(抖動跳開B),只要按鍵不返回原始狀態(tài)A,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為0,不會產(chǎn)生抖動的波形。也就是說,即使B點的電壓波形是抖動的,但經(jīng)雙穩(wěn)態(tài)電路之后,其輸出為正規(guī)的矩形波。這一點通過分析RS觸發(fā)器的工作過程很容易得到驗證。如果按鍵較多,常用軟件方法去抖,即檢測出鍵閉合后執(zhí)行一個延時程序,5ms10ms的延時,

35、讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5ms10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。本設計中采用軟件消抖方法,按鍵掃描過程子程序如下:bit start=0; /start為P1_2按下標志位 void scan(void) P2=0xff; /每次讀I/O口輸入數(shù)據(jù)是需要先拉高電平 if (P2_1=0) for(delay=0;delay<=200;delay+); /延時子程序 P2=0xff; if (P2_1=0) start=1; /標志位置1,確認P2_1按下 4.4 主要程序代碼全部的程

36、序包括了頭文件、變量的定義、主程序與各子程序。本部分對設計中的主要程序單獨說明。(1)主程序在主程序中需要完成以下的功能:首先調(diào)用初始化函數(shù)對各個變量進行初始化,再對定時器的定時初值進行設定,接著根據(jù)各個標志位的值來判斷單片機的工作模式與工作狀態(tài)5。鍵盤掃描由scan()來完成,各個位的數(shù)值的計算由add1()完成。void main(void)begin1(); /調(diào)用初始化函數(shù)TMOD=0x01;TL0=0x18;TH0=0xfc;EA=1;ET0=1;TR0=1;for(;) if(scankey=1) /進行鍵盤掃描 scankey=o;scan();if(double_key=1)

37、/倒計時初值快速增加 P2_6=0; P2_7=1;m=m+10; add1(m);if(fast_add=1) /倒計時初值連續(xù)增加 P2_6=0; P2_7=1; m+; add1(m); bit_add1=0;if(add=1) /倒計時初值增加1 P2_6=0; P2_7=1; add=0; m+; add1(m); if(double_sub=1) /倒計時初值快速減少 P2_6=0; P2_7=1;m=m-10; add1(m); if(fast_sub=1) /倒計時初值連續(xù)減少 P2_6=0; P2_7=1; m-; add1(m); bit_sub=0;if(sub=1) /

38、倒計時初值減少1 P2_6=0; P2_7=1; sub=0; m-; add1(m);if(start=1) /計時開始 if(mm=0) P2_7=!P2_7; P2_6=1; m+; if(mm=6000)m=0; add1(m); if(stop=1) start=0; /計時停止if(count_down=1) /倒計時開始 if(m>0)m-; P2_7=1; if(mm=0)P2_6=!P2_6; (2)定時器中斷子程序 這里的秒表的計時、鍵盤的掃描與數(shù)值顯示燈都是利用定時中斷來完成的。定時的時間設為1ms,用于數(shù)值顯示;同時利用累加的方法實現(xiàn)10ms和200ms的定時,用

39、于鍵盤的掃描與控制顯示燈的閃爍。void time0(void) TL0=0x18; TH0=0xfc; ms+; if(ms=10) ms=0; mm+; if(mm=20)mm=0; scankey=1; display(); (3)顯示子程序顯示子程序其實包括了display()和add1(time)兩個子程序。add1(time)是用來計算數(shù)碼管各個位要顯示的數(shù)值的子程序,display()是查段位碼表與進行動態(tài)掃描的子程序1。void add1(time) uint time; uint n,a;a=time/1000; LED0=a; /計算十秒位數(shù)值n=time&1000

40、; LED1=(n/100); /計算秒位數(shù)值n=n%100; LED2=(n/10); /計算十分一秒位數(shù)值 LED3=n%10; /計算百分一秒位數(shù)值 void display(void) switch(ms%4) case o: P3=0xfe; P1=tableLED3; P1_7=1;Break;case 1: P3=0xfd; P1=tableLED2; P1_7=1;Break;case 2: P3=0xfb; P1=tableLED1; P1_7=1;Break;case o: P3=0xf7; P1=tableLED0; P1_7=1;Break; default:retur

41、n; (4)鍵盤掃描鍵盤掃描的子程序完成的任務是每10ms進行一次鍵盤的查詢,根據(jù)查詢的結果對相應的標志位進行賦值10。void scan(void) char a; P2=0x0f;if (count_down=0&&P2_2=0) /實現(xiàn)倒計時的功能 if(cheak=0)cheak=1; /若cheak為0,則按鍵沒消抖 else K3_keydown=1;cheak=0; P2=0x0f;if(K3_keydown=1&&P2_2=1) /K3彈起 K3_keyup=1; K3_keydown=0; if(K3_keyup=1) if(mm=0) if(

42、bit_add1=1&&keydown=1) /0.2秒連按2次K1,則快速增 double_key=1; elsebit_add1=0; if(mm=0) if(bit_sub=1&&K2_keydown=1) /0.2秒連按2次K2,則快速減 double_sub=1; elsebit_sub=0; if(mm=0&&keydown=1) /按住K1不放,連續(xù)增 fast_add=1; if(mm=0&&K2_keydown=1) /按住K2不放,連續(xù)減 fast_sub=1; if(P2_1=0) if(cheak=0)ch

43、eak=1;mm=0; else keydown=1; if(P2_0=0) if(cheak=0)cheak=1;mm=0; else K2_keydown=1; if(P2_1=&&keydown=1) /K1彈起,表示按一次K1 keydown=0; add=1; bit_add1=1; if(double_key=1) bit_add1=0; cheak=0; fast_add=0; double_key=0; mm=0; if(P2_0=&&keydown=1) /K2彈起,表示按一次K2 K2_keydown=0; sub=1; bit_sub=1;

44、 if(double_sub=1) bit_sub=0; cheak=0; fast_sub=0; double_sub=0; mm=0; if(P2_2=0) if(cheak=0)cheak=1; else count_down=1; P2=0x0f; if(P2_1=0) /計時模式的時候按K1 if(cheak=0)cheak=1; else keydown=1; cheak=0; if(P2_1=1) if(keydown=1) keydown=0; if(start=0)start=1;stop=0; /若沒有開始計時,則開始計時 elsestart=0;stop=1; /若開始計時,則計時停止 if(P2_0=1) if(K2_keydown=1) if(eight_start=0&&eight_stop=0) /連續(xù)計時8次 K2_keydown=0; eight_start=1; if(eight_start=1) K2_down=0; taba=m; /存儲8次的數(shù)據(jù) a+; if(a=8) eight_stop=1; eight_start=0; if(eight_

溫馨提示

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

評論

0/150

提交評論