基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)論文_第1頁
基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)論文_第2頁
基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)論文_第3頁
基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)論文_第4頁
基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、. . . . 目 錄 摘要1第一章緒論11.1 當(dāng)前的數(shù)字鐘解決方案11.2 課題研究的主要容11.2 本設(shè)計(jì)的目的和意義11.3 本文的主要容1第二章總體方案設(shè)計(jì)32.1 總體功能分析32.2 LED驅(qū)動(dòng)方案選擇32.2.1 靜態(tài)顯示驅(qū)動(dòng)42.2.2動(dòng)態(tài)顯示驅(qū)動(dòng)52.3 按鍵檢測(cè)方案選擇62.3.1 查詢方式讀取按鍵值62.3.2 中斷方式讀取按鍵值62.3 電源方案選擇62.4 主要器件的選型7第三章系統(tǒng)硬件設(shè)計(jì)93.1 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)93.2 數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)103.3 按鍵驅(qū)動(dòng)電路設(shè)計(jì)123.4 電源設(shè)計(jì)13第四章系統(tǒng)軟件設(shè)計(jì)154.1按鍵讀取程序設(shè)計(jì)154.1.1 模式選

2、擇按鍵程序解析154.1.2 確定/清零按鈕程序解析164.1.3 設(shè)定位選擇按鈕程序解析174.1.4 開始/暫停計(jì)時(shí)按鈕程序解析174.1.5 加按鈕程序解析184.2 LED顯示驅(qū)動(dòng)程序設(shè)計(jì)194.3 計(jì)時(shí)程序設(shè)計(jì)204.4控制模塊程序設(shè)計(jì)21第五章系統(tǒng)的PROTUES仿真225.1 系統(tǒng)的PROTUES模型225.2 時(shí)鐘運(yùn)行仿真235.3 初始時(shí)間設(shè)定的仿真245.4 增計(jì)時(shí)的仿真255.5 減計(jì)時(shí)的仿真25結(jié)束語27參考文獻(xiàn)28致2925 / 27摘要數(shù)字鐘系統(tǒng)涉與到時(shí)鐘產(chǎn)生電路、計(jì)時(shí)控制電路、驅(qū)動(dòng)顯示和按鍵操作等部分,本設(shè)計(jì)將時(shí)鐘產(chǎn)生和計(jì)時(shí)控制部分集成到AT89S51單片機(jī)部,單

3、片機(jī)外接人際交互界面即顯示和按鍵,來構(gòu)成了整個(gè)數(shù)字鐘系統(tǒng)。本系統(tǒng)采用AT89S51單片機(jī)作為控制器件,通過單片機(jī)部的定時(shí)器技術(shù)功能實(shí)現(xiàn)分頻,將系統(tǒng)的12MHz時(shí)鐘分頻得到1mS的觸發(fā)信號(hào),來觸發(fā)計(jì)時(shí)程序,驅(qū)動(dòng)時(shí)鐘程序的運(yùn)行, 得到時(shí)鐘精度較高的時(shí)鐘。在完成整個(gè)系統(tǒng)的理論分析設(shè)計(jì)的基礎(chǔ)上,還對(duì)本系統(tǒng)做了詳細(xì)的硬件設(shè)計(jì)和軟件編寫,在PROTUES軟件中完成了整個(gè)系統(tǒng)功能的驗(yàn)證,能夠?qū)崿F(xiàn)6位LED數(shù)碼管實(shí)時(shí)顯示時(shí)間,準(zhǔn)確完成時(shí)、分、秒的計(jì)時(shí)功能,有10mS級(jí)的增計(jì)時(shí)和減計(jì)時(shí)(秒表倒計(jì)時(shí))功能,還能實(shí)現(xiàn)初始時(shí)間設(shè)定功能,可單獨(dú)設(shè)定時(shí)、分、秒,達(dá)到了預(yù)期的效果。關(guān)鍵詞:數(shù)字鐘 AT89S51單片機(jī)第一章

4、 緒論1.1 當(dāng)前的數(shù)字鐘解決方案當(dāng)前的數(shù)字鐘系統(tǒng)大都采用集成的實(shí)時(shí)時(shí)鐘芯片,這種芯片種類較多,功能和集成度也不一樣,主要代表為DS1302芯片。DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電

5、源進(jìn)行涓細(xì)電流充電的能力。DS1302 存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn)。DS1302可以用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。這種記錄對(duì)長(zhǎng)時(shí)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析與對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒有具體的時(shí)間記錄,因此,只能記錄數(shù)據(jù)而無法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且,某些測(cè)控系統(tǒng)可能不允許。但是,如果在系統(tǒng)中采用時(shí)鐘芯片DS1302,則能很好地解決這個(gè)問題。1.2

6、課題研究的主要容本設(shè)計(jì)主要是設(shè)計(jì)出一套基于單片機(jī)的數(shù)字鐘系統(tǒng),該系統(tǒng)通過6位LED數(shù)碼管實(shí)時(shí)顯示時(shí)間,具有準(zhǔn)確的計(jì)時(shí)功能,能夠設(shè)定計(jì)時(shí)初始值,并可以獨(dú)立設(shè)置時(shí)、分、秒位,具有倒計(jì)時(shí)功能。1.2 本設(shè)計(jì)的目的和意義本設(shè)計(jì)能夠?qū)崿F(xiàn)LED數(shù)碼管顯示數(shù)字的功能,完成時(shí)、分、秒的顯示,時(shí)間初始值的調(diào)整,秒表功能等。通過本次設(shè)計(jì)加深對(duì)數(shù)字電路、單片機(jī)等課程的全面認(rèn)識(shí)和復(fù)習(xí)掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步了解,并培養(yǎng)自己對(duì)單片機(jī)課程的興趣。掌握LED的原理和程序設(shè)計(jì)方法,通過本次設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來,對(duì)程序進(jìn)行編寫和仿真驗(yàn)證。綜合運(yùn)用單片機(jī)技術(shù),數(shù)字電子技術(shù)的知識(shí)設(shè)計(jì)數(shù)字鐘計(jì)時(shí)系統(tǒng),鍛煉自己發(fā)現(xiàn)問題

7、和很好地解決問題的能力,培養(yǎng)系統(tǒng)工程設(shè)計(jì)能力。1.3 本文的主要容本文介紹的主要容安排如下:(1)第一章 緒論。主要介紹了數(shù)字鐘的發(fā)展和應(yīng)用價(jià)值,對(duì)純硬件數(shù)字電路構(gòu)成數(shù)字鐘系統(tǒng)存在的問題作了探討。(2)第二章 總體方案設(shè)計(jì)。介紹了系統(tǒng)設(shè)計(jì)方案和工作原理,以與核心器件的選型和系統(tǒng)的參數(shù)計(jì)算。(3)第三章 系統(tǒng)的硬件設(shè)計(jì)。對(duì)系統(tǒng)各模塊的硬件設(shè)計(jì)進(jìn)行詳細(xì)介紹,給出了系統(tǒng)硬件設(shè)計(jì)的總體框圖和各模塊的詳細(xì)電路圖。(4)第四章 系統(tǒng)的軟件設(shè)計(jì)。主要介紹了本系統(tǒng)中AT89S51單片機(jī)編程的技巧和程序原理流程圖。(5)結(jié)束語闡述了本系統(tǒng)的設(shè)計(jì)思想,簡(jiǎn)要描述了本系統(tǒng)的設(shè)計(jì)特點(diǎn),并對(duì)進(jìn)一步的研究提出了展望。第二章

8、 總體方案設(shè)計(jì)2.1 總體功能分析本設(shè)計(jì)采用單片機(jī)作為主控制器,相比數(shù)字電路硬件實(shí)現(xiàn)來說,將計(jì)時(shí)和控制電路用單片機(jī)軟件實(shí)現(xiàn),提高了系統(tǒng)的集成度和開發(fā)難度,有利于縮短開發(fā)周期和減小產(chǎn)品體積和成本。本設(shè)計(jì)將數(shù)字鐘的所有功能集成在一起,由一個(gè)控制器來完成所有部分的控制,主要功能模塊分為按鍵、按鍵驅(qū)動(dòng)電路、LED驅(qū)動(dòng)電路,LED顯示、微控制器和供電系統(tǒng)等部分,如圖2-1所示。按鍵AT89S51單片機(jī)LED驅(qū)動(dòng)LED顯示電源系統(tǒng)按鍵驅(qū)動(dòng)圖2-1 數(shù)字鐘電路總體框圖開始系統(tǒng)初始化10mS計(jì)時(shí)到?時(shí)鐘計(jì)數(shù)加1增計(jì)數(shù)加1判斷進(jìn)位判斷進(jìn)位刷新顯示緩沖減計(jì)數(shù)減1判斷借位是否到0?停止減計(jì)數(shù)刷新顯示緩沖刷新顯示緩沖

9、圖2-2 系統(tǒng)的軟件總體框圖按鍵驅(qū)動(dòng)電路主要實(shí)現(xiàn)按鍵和單片機(jī)的接口,當(dāng)有按鍵操作的時(shí)候,按鍵驅(qū)動(dòng)電路通知單片機(jī)讀取按鍵值,本設(shè)計(jì)采用中斷方式讀取按鍵,中斷方式相比查詢能夠提高系統(tǒng)的響應(yīng)速度,占用更少的系統(tǒng)資源,而且當(dāng)單片機(jī)具有低功耗模式的時(shí)候,在沒有操作的時(shí)候可以進(jìn)入低功耗模式,在有操作的時(shí)候通過安檢驅(qū)動(dòng)電路來喚醒單片機(jī)讀取按鍵值,這樣可以很好的降低系統(tǒng)的功耗。LED顯示和LED驅(qū)動(dòng)電路主要完成單片機(jī)給定數(shù)據(jù)的顯示,通過6位數(shù)碼管實(shí)時(shí)顯示時(shí)、分、秒,本設(shè)計(jì)采用8位鎖存芯片74HC574來驅(qū)動(dòng)LED顯示,采用的是靜態(tài)驅(qū)動(dòng)顯示。2.2 LED驅(qū)動(dòng)方案選擇數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光

10、二極管。按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽極數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽極數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰極數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰極數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。abcdefg a b c d e f gCOM圖2-3 共陽極數(shù)碼管原理圖abc

11、defg a b c d e f gCOM圖2-4 共陰極數(shù)碼管原理圖2.2.1 靜態(tài)顯示驅(qū)動(dòng)靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。2.2.2動(dòng)態(tài)顯示驅(qū)動(dòng)數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯

12、示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到一樣的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象與發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描

13、的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。當(dāng)前大部分產(chǎn)品中用到的是數(shù)碼管的動(dòng)態(tài)掃描驅(qū)動(dòng)顯示,有很多的集成LED數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)芯片可供選擇,其中MAXIM公司的MAX7219就是用的很廣泛的一片驅(qū)動(dòng)芯片。MAX7219/MAX7221是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的LED。其上包括一個(gè)片上的B型BCD編碼器、多路掃描回路,段字驅(qū)動(dòng)器,而且還有一個(gè)8*8的靜態(tài)RAM用來存儲(chǔ)每一個(gè)數(shù)據(jù)。 只有一個(gè)外部寄存器

14、用來設(shè)置各個(gè)LED的段電流。 MAX7221與SPI、 QSPI以與 MICROWIRE相兼容,同時(shí)它有限制回轉(zhuǎn)電流的段驅(qū)動(dòng)來減少EMI(電磁干擾)。 一個(gè)方便的四線串行接口可以聯(lián)接所有通用的微處理器。 每個(gè)數(shù)據(jù)可以尋址在更新時(shí)不需要改寫所有的顯示。MAX7219/MAX7221同樣允許用戶對(duì)每一個(gè)數(shù)據(jù)選擇編碼或者不編碼。 整個(gè)設(shè)備包含一個(gè)150A的低功耗關(guān)閉模式,模擬和數(shù)字亮度控制,一個(gè)掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù),還有一個(gè)讓所有LED發(fā)光的檢測(cè)模式。 在應(yīng)用時(shí)要求3V的操作電壓或segment blinking,可以查閱MAX6951數(shù)據(jù)資料。2.3 按鍵檢測(cè)方案選擇2.3.1

15、查詢方式讀取按鍵值查詢方式讀取按鍵值是指,單片機(jī)不斷重復(fù)的讀取按鍵所接端口的值,判斷是否有按鍵被按下的一種方法,在簡(jiǎn)單的單片機(jī)系統(tǒng)中,查詢方式讀取按鍵用得較多,這種方式下的軟件編程比較容易,只需要簡(jiǎn)單的單片機(jī)讀端口數(shù)據(jù)即可實(shí)現(xiàn)。但是這一方式下單片機(jī)的負(fù)擔(dān)較重,需要間隔很小的時(shí)間掃描一次按鍵,在沒有按鍵按下的時(shí)候,相當(dāng)于單片機(jī)是在做無用功,浪費(fèi)了系統(tǒng)資源和能量。2.3.2 中斷方式讀取按鍵值中斷方式讀取按鍵值與查詢方式讀取按鍵值相比較,在系統(tǒng)資源占用和低功耗方面性能要高很多。中斷方式讀取按鍵值就是當(dāng)有按鍵被按下的時(shí)候,通過外部的邏輯電路來觸發(fā)單片機(jī)的外部中斷引腳,中斷單片機(jī)現(xiàn)有的任務(wù),去讀取按鍵

16、值,這種方式下單片機(jī)外圍的硬件設(shè)計(jì)相比較查詢方式下要稍顯復(fù)雜,但是其優(yōu)勢(shì)是不可忽視的。2.3 電源方案選擇電源是每個(gè)電子產(chǎn)品不可缺少的部分,在低電壓的電子產(chǎn)品中,主要的電源解決方案有兩種:變壓器降壓加線性穩(wěn)壓芯片結(jié)合和開關(guān)電源降壓型電源。變壓器降壓加線性穩(wěn)壓芯片結(jié)合的方案是比較傳統(tǒng)的方案,在小功率的電子產(chǎn)品中用的較多,但是當(dāng)電子產(chǎn)品的功率上升后,降壓變壓器的體積和重量是一個(gè)沒有辦法解決的問題,因?yàn)檫@里的變壓器是工頻變壓器,其磁芯是硅鋼片疊起來的,由于頻率較低為50Hz,變壓器的磁芯無法減小體積。開關(guān)電源是利用現(xiàn)代電力電子技術(shù),控制開關(guān)管開通和關(guān)斷的時(shí)間比率,維持穩(wěn)定輸出電壓的一種電源,開關(guān)電源

17、一般由脈沖寬度調(diào)制(PWM)控制IC和MOSFET構(gòu)成。開關(guān)電源和線性電源相比,二者的成本都隨著輸出功率的增加而增長(zhǎng),但二者增長(zhǎng)速率各異。線性電源成本在某一輸出功率點(diǎn)上,反而高于開關(guān)電源,這一點(diǎn)稱為成本反轉(zhuǎn)點(diǎn)。隨著電力電子技術(shù)的發(fā)展和創(chuàng)新,使得開關(guān)電源技術(shù)也在不斷地創(chuàng)新,這一成本反轉(zhuǎn)點(diǎn)日益向低輸出電力端移動(dòng),這為開關(guān)電源提供了廣闊的發(fā)展空間。開關(guān)電源高頻化是其發(fā)展的方向,高頻化使開關(guān)電源小型化,并使開關(guān)電源進(jìn)入更廣泛的應(yīng)用領(lǐng)域,特別是在高新技術(shù)領(lǐng)域的應(yīng)用,推動(dòng)了高新技術(shù)產(chǎn)品的小型化、輕便化。另外開關(guān)電源的發(fā)展與應(yīng)用在節(jié)約能源、節(jié)約資源與保護(hù)環(huán)境方面都具有重要的意義。開關(guān)電源高頻化是其發(fā)展的方向

18、,高頻化使開關(guān)電源小型化,并使開關(guān)電源進(jìn)入更廣泛的應(yīng)用領(lǐng)域,特別是在高新技術(shù)領(lǐng)域的應(yīng)用,推動(dòng)了高新技術(shù)產(chǎn)品的小型化、輕便化。另外開關(guān)電源的發(fā)展與應(yīng)用在節(jié)約能源、節(jié)約資源與保護(hù)環(huán)境方面都具有重要的意義。2.4 主要器件的選型本設(shè)計(jì)采用了價(jià)廉的 AT89S51芯片(目前一片價(jià)格在5-9元/片左右)。AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)與80C51引腳結(jié)構(gòu),芯片集成了通用8位

19、中央處理器和ISP Flash存儲(chǔ)單元,AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。AT89S51芯片有40個(gè)引腳,核心部分為MCS-51核。片集成4k Bytes Flash片程序存儲(chǔ)器、128 Bytes RAM數(shù)據(jù)存儲(chǔ)器、2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器、5個(gè)中斷優(yōu)先級(jí)、2層中斷嵌套中斷、6個(gè)中斷源、32個(gè)外部雙向I/0端口和兩個(gè)全雙工的串口通信接口UART,工作頻率最高可達(dá)33MHz,支持在線編程下載,即ISP下載功能,AT89SXX系列單片機(jī)實(shí)現(xiàn)了ISP下載功能,故而取代了89CXX系列的下載方式,也是因?yàn)檫@樣,ATMEL公司已經(jīng)停止生產(chǎn)89CXX系列的單片機(jī),現(xiàn)在市面上的A

20、T89CXX多是停產(chǎn)前的庫存產(chǎn)品。P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口是一個(gè)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口為一個(gè)部上拉電阻的8位雙向I/O口

21、,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口管腳是8個(gè)帶部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口

22、將輸出電流(ILL)這是由于上拉的緣故。P3口除了作為普通I/O口,還有第二功能:數(shù)碼管驅(qū)動(dòng)電路采用8位數(shù)據(jù)脈沖觸發(fā)鎖存芯片74HC574,該芯片是三態(tài)輸出的8位D觸發(fā)器,在CP端的上升沿將輸入數(shù)據(jù)觸發(fā)到輸出端,輸出使能端(OE)控制三態(tài)輸出,當(dāng)使能端OE為高的時(shí)候,8位數(shù)據(jù)段輸出為高阻態(tài)。按鍵驅(qū)動(dòng)電路采用的是8位數(shù)據(jù)鎖存器/緩沖器74HC541,具有數(shù)據(jù)緩沖器、線路驅(qū)動(dòng)等功能,支持三態(tài)輸出,和74HC540的功能相近。第三章 系統(tǒng)硬件設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)本設(shè)計(jì)選用的是Atmel公司的8位單片機(jī)AT89S51,該單片機(jī)是基于MCS-51核,具有在線編程(ISP)的4k Bytes

23、 Flash存儲(chǔ)器,256Bytes RAM空間,可外擴(kuò)存儲(chǔ)空間64k Bytes,32個(gè)可編程的I/O引腳,集成了異步串口和16位定時(shí)器,最高工作時(shí)鐘頻率可達(dá)33MHz。單片機(jī)的最小系統(tǒng)電路包括ISP程序下載接口、電源電路、晶振電路和上電復(fù)位電路,下面做詳細(xì)分析。ISP程序下載接口是一個(gè)雙排10針的接口座子,與單片機(jī)的P1.5(MOSI)、P1.6(MISO)、P1.7(SCK)和復(fù)位引腳RESET連接。圖3-1 ISP下載接口電源濾波電容如圖3-2所示,本設(shè)計(jì)選擇了一個(gè)470F的電解電容和兩個(gè)0.1F的瓷片電容,電解電容用于儲(chǔ)能,抑制電壓波動(dòng)對(duì)單片機(jī)的影響,瓷片電容可以濾除電源中的高頻干擾

24、信號(hào),在設(shè)計(jì)PCB時(shí),這幾個(gè)電容要盡量靠近單片機(jī)的電源和地引腳。圖3-2電源濾波電容本系統(tǒng)的單片機(jī)時(shí)鐘選擇12M晶振,如圖3-3所示,晶振兩端分別接22pF電容到地。圖3-3 時(shí)鐘電路單片機(jī)的上電復(fù)位電路采用一個(gè)10F電容和10k電阻串聯(lián),在上電時(shí)候,電容和電阻分壓,給單片機(jī)的復(fù)位引腳提供了一個(gè)高電平信號(hào),使單片機(jī)復(fù)位,當(dāng)電容充電完成后,復(fù)位引腳被下拉到地,單片機(jī)正常工作。圖3-4 上電復(fù)位電路單片機(jī)最小系統(tǒng)的整體電路詳見附錄。3.2 數(shù)碼管驅(qū)動(dòng)電路設(shè)計(jì)本設(shè)計(jì)采用了靜態(tài)驅(qū)動(dòng)的方式來驅(qū)動(dòng)數(shù)碼管,數(shù)碼管驅(qū)動(dòng)芯片74HC574的電路連接如圖3-6所示,數(shù)據(jù)輸入端接單片機(jī)的數(shù)據(jù)總線,數(shù)據(jù)輸出端串連一個(gè)

25、510的電阻后接數(shù)碼管的段驅(qū)動(dòng)端,數(shù)碼管選用的是共陽極型,其公共端位陽極,接電源,輸出使能端直接接地,時(shí)鐘觸發(fā)端信號(hào)是由片選信號(hào)和寫使能信號(hào)經(jīng)過一個(gè)或門電路后得到的,當(dāng)片選和寫使能都有效的時(shí)候,拉低時(shí)鐘觸發(fā)端,然后單片機(jī)將數(shù)據(jù)加載到數(shù)據(jù)總線上,當(dāng)寫使能或者片選信號(hào)被單片機(jī)釋放后,在74HC574的時(shí)鐘觸發(fā)端就會(huì)出現(xiàn)一個(gè)上升沿信號(hào),利用這一個(gè)信號(hào)即可將數(shù)據(jù)總線上的數(shù)據(jù)鎖存到輸出。該驅(qū)動(dòng)電路對(duì)應(yīng)的的數(shù)碼管顯示數(shù)字0-9數(shù)據(jù)譯碼如表3-1所示。表3-1 數(shù)碼管顯示譯碼表段號(hào)數(shù)字1234567890a0110111111b1111001111c1011111111d0110110111e0100010

26、101f0001110111g0111110010DP0000000000共陽碼F9A4B0999282F88090C0圖3-5 74HC138譯碼電路本設(shè)計(jì)中的LED數(shù)碼管驅(qū)動(dòng)電路需要驅(qū)動(dòng)6位數(shù)碼管,相對(duì)應(yīng)有6片數(shù)碼管驅(qū)動(dòng)芯片,本設(shè)計(jì)采用一片74HC138作為6片驅(qū)動(dòng)芯片的地址譯碼器,其電路如圖3-5所示。單片機(jī)的地址線A8、A9、A10、A11分別接74HC138的譯碼輸入信號(hào)線A0、A1、A2和高使能端E3,地使能端直接接地,其輸出端Y0-Y5分別接6片數(shù)碼管驅(qū)動(dòng)該芯片74HC574。數(shù)碼管驅(qū)動(dòng)芯片的地址譯碼如表3-2所示。表3-2 6位數(shù)碼管的地址譯碼表LED5LED4LED3LED2

27、LED1LED0A8101010A9001100A10110000A11111111地址碼D00C00B00A00900800圖3-6 LED數(shù)碼管驅(qū)動(dòng)電路3.3 按鍵驅(qū)動(dòng)電路設(shè)計(jì)為了提高系統(tǒng)的快速響應(yīng)速度,按鍵采用中斷讀取的方式來設(shè)計(jì),當(dāng)有按鍵按下后,通過單片機(jī)的外部中斷來通知單片機(jī)讀取按鍵值,這樣能夠提高系統(tǒng)對(duì)按鍵的響應(yīng)速度,也可以減少查詢方式下的編程工作量,而且,當(dāng)單片機(jī)具有低功耗功能的時(shí)候,可以使單片機(jī)在沒有任務(wù)的時(shí)候進(jìn)入低功耗模式,有按鍵按下的時(shí)候再喚醒單片機(jī)開始工作,或者在計(jì)數(shù)器需要CPU干預(yù)的時(shí)候喚醒CPU工作,這樣可以能耗的提高系統(tǒng)的低功耗效果,達(dá)到最小的功率消耗。按鍵讀取電路

28、如圖3-7所示,5個(gè)按鍵的輸出端接10k的上拉電阻和0.1uF的濾波防抖動(dòng)電容后,輸出到單片機(jī)的數(shù)據(jù)端,5個(gè)按鍵的輸出信號(hào)經(jīng)過相與后接到單片機(jī)的外部中斷檢測(cè)引腳。當(dāng)沒有按鍵按下的時(shí)候,KEY0-KEY4都為高電平,經(jīng)過如圖3-7所示的與門電路后輸出EXINT0為高電平,當(dāng)有任意一個(gè)按鍵按下后,EXINT0端就會(huì)出現(xiàn)低電平,所以當(dāng)按鍵按下就會(huì)在EXINT0端輸出一個(gè)下降沿信號(hào),當(dāng)松開所按下的按鍵就會(huì)在EXINT0端產(chǎn)生一個(gè)上升沿信號(hào),因此,只要設(shè)置單片機(jī)的外部中斷觸發(fā)方式為下降沿觸發(fā)即可實(shí)現(xiàn)按鍵中斷。單片機(jī)檢測(cè)到按鍵中斷后,再來讀取KEY0-KEY4的按鍵值,判斷具體的按下的按鍵。圖3-7 按鍵

29、讀取電路3.4 電源設(shè)計(jì)本系統(tǒng)的電源設(shè)計(jì)如圖3-8所示,這是直接通過交流220VAC市電給系統(tǒng)供電的電路原理圖。接線端子P2接交流市電,F(xiàn)1位過流保護(hù)熔斷絲,T1為工頻變壓器,本設(shè)計(jì)選用220VAC輸入,9VAC輸出,功率為5VA的交流降壓變壓器即可滿足需要,變壓器的將220VAC輸入降壓位9VAC輸出,經(jīng)過整流橋和平波電容C12后,轉(zhuǎn)換為直流電,因?yàn)樽儔浩鞯妮敵?VAC是交流有效值,其交流峰值電壓為從變壓器的輸出端看變壓器的輸入端,整個(gè)電網(wǎng)相當(dāng)于一個(gè)無限大功率系統(tǒng),所以整流后的輸出直流電壓也為12.7V左右。整流和濾波后的輸出電壓高達(dá)12.7V不能直接供給單片機(jī)系統(tǒng),本設(shè)計(jì)采用了一片線性穩(wěn)壓

30、芯片LM7805穩(wěn)壓后作為單片機(jī)系統(tǒng)的供電。用LM78/LM79系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元件極少,電路部還有過流、過熱與調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價(jià)格便宜。圖3-8中電源輸出端并聯(lián)了一個(gè)100uF電解電容,用于平波和儲(chǔ)能,兩個(gè)0.1uF的瓷片電容用于抑制數(shù)字電路工作的時(shí)候產(chǎn)生的高頻噪聲,提高電源的質(zhì)量。圖3-8 電源電路圖在實(shí)際的數(shù)字鐘應(yīng)用中,考慮到計(jì)時(shí)的可靠性,需要系統(tǒng)能夠長(zhǎng)期不斷電運(yùn)行,這就需要在系統(tǒng)電源中加上應(yīng)急供電部分。如圖3-9所示,采用一個(gè)電池和抑制低壓降二極管,即可實(shí)現(xiàn)對(duì)數(shù)字鐘系統(tǒng)的不間斷供電,為了降低電池的利用效率,這里的二極管可以采用壓降只有0

31、.2V的鍺二極管,因?yàn)檎麄€(gè)系統(tǒng)的工作電流較小,在設(shè)計(jì)的時(shí)候在電池上串聯(lián)了一只100的電阻,用于在單片機(jī)系統(tǒng)電源短路的時(shí)候保護(hù)電池不會(huì)因?yàn)檫^流和過熱被燒壞。圖3-9 電池供電電路第四章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì)主要包括5個(gè)模塊,分別是按鍵讀取模塊、LED顯示驅(qū)動(dòng)模塊、計(jì)時(shí)模塊、秒表模塊和控制模塊。4.1按鍵讀取程序設(shè)計(jì)按鍵讀取模塊的程序流程圖如圖4-1所示,從流程圖可以看出,這就是一個(gè)簡(jiǎn)單的中斷服務(wù)程序框圖,當(dāng)讀取到按鍵值后,再根據(jù)當(dāng)前的工作模式和狀態(tài)來確定下一步的工作狀態(tài)。進(jìn)入中斷退出中斷讀取按鍵值根據(jù)當(dāng)前工作模式和按鍵值確定按鍵功能圖4-1 按鍵讀取程序流程圖4.1.1 模式選擇按鍵程序解

32、析以下是模式選擇按鈕按下后的程序反應(yīng),總共定義了四種工作模式,分別表示為0x01、0x02、0x04和0x08,按下“模式選擇”按鈕后,通過當(dāng)前模式變量CurrentModle左移一位來切換工作模式,當(dāng)切換到0x08后先一步自動(dòng)回到0x01模式。#define DctModle 0x08#define ClkModle 0x04#define CntModle 0x02#define SetModle 0x01if(Keytemp = 0x08)CurrentModle<<=1;if(CurrentModle>0x08)CurrentModle=0x01;4.1.2 確定/清

33、零按鈕程序解析系統(tǒng)的“確定/清零”按鈕主要有三個(gè)功能,分別如下程序所示,當(dāng)前模式為時(shí)間初始設(shè)置模式,按下“確定/清零”按鈕后,系統(tǒng)將設(shè)定的時(shí)間零時(shí)初值寫入到時(shí)間值,并將當(dāng)前模式切換到時(shí)鐘模式。當(dāng)前模式為增計(jì)數(shù)模式時(shí),按下“確定/清零”按鈕后,系統(tǒng)會(huì)將計(jì)數(shù)值歸零。當(dāng)前模式為減計(jì)數(shù)模式時(shí),按下“確定/清零”按鈕后,系統(tǒng)會(huì)清零減計(jì)數(shù)值,并停止減計(jì)數(shù)器工作。if(Keytemp = 0x01) if(CurrentModle = SetModle)CLKTime0 = CLKTemp0;CLKTime1 = CLKTemp1;CLKTime2 = CLKTemp2;CLKTime3 = CLKTemp

34、3;CLKTime4 = CLKTemp4;CLKTime5 = CLKTemp5;CurrentModle = ClkModle;else if(CurrentModle = CntModle)CLKCnt0=0;CLKCnt1=0;CLKCnt2=0;CLKCnt3=0;CLKCnt4=0;CLKCnt5=0;else if(CurrentModle = DctModle)CLKDct0=0;CLKDct1=0;CLKDct2=0;CLKDct3=0;CLKDct4=0;CLKDct5=0;DctRunning=0;4.1.3 設(shè)定位選擇按鈕程序解析系統(tǒng)的“設(shè)定位選擇”按鈕程序如下,這個(gè)按

35、鈕只在時(shí)鐘初值設(shè)置模式和減計(jì)數(shù)模式初值設(shè)定時(shí)有作用。當(dāng)在初值設(shè)定模式下,將當(dāng)前的設(shè)定位加一,如果設(shè)定位超過了最高位,則自動(dòng)跳轉(zhuǎn)到最低位,這兩種模式下的初值設(shè)定用了一樣的變量。if(Keytemp = 0x02) if(CurrentModle = SetModle)if(+CurrentDig>=0x06)CurrentDig=0;else if(CurrentModle = DctModle)if(+CurrentDig>=0x06)CurrentDig=0;4.1.4 開始/暫停計(jì)時(shí)按鈕程序解析系統(tǒng)的“開始/暫停計(jì)時(shí)”按鈕的程序如下,該按鈕只在增計(jì)時(shí)和減計(jì)時(shí)模式下有作用,并且在

36、這兩種模式下的功能都一樣,即將變量CntRunning和DctRunning清零和置一,如果變量當(dāng)前值為一,則清零,如果變量當(dāng)前值位零,則置一。if(Keytemp = 0x10)if(CurrentModle = CntModle)if(CntRunning)CntRunning=0;elseCntRunning=1;else if(CurrentModle = DctModle)if(DctRunning)DctRunning=0;elseDctRunning=1;4.1.5 加按鈕程序解析系統(tǒng)的“加”按鈕程序如下所示,主要在當(dāng)前模式為時(shí)鐘初值設(shè)定模式,或者位減計(jì)數(shù)模式并且減計(jì)數(shù)沒有開始計(jì)

37、時(shí)的工作狀態(tài)下有作用。在時(shí)鐘初值設(shè)定模式下,根據(jù)CurrentDig變量的值來確定調(diào)整的數(shù)據(jù)位,在小時(shí)為調(diào)整的過程中,需要考慮到小時(shí)為的十位為2的時(shí)候,個(gè)位需要滿4進(jìn)1,而在小時(shí)的十位為0或者1的時(shí)候,個(gè)位需要滿10進(jìn)1。在減計(jì)數(shù)初值設(shè)定的時(shí)候,利用減計(jì)數(shù)工作狀態(tài)變量DctRunning來確定是否開啟設(shè)定計(jì)數(shù)設(shè)定功能,當(dāng)減計(jì)數(shù)功能正在運(yùn)行的時(shí)候,關(guān)閉初值設(shè)定功能。if(Keytemp = 0x04)if(CurrentModle = SetModle)if(CurrentDig=0)if(+CLKTemp0>=3)CLKTemp0=0;else if(CurrentDig = 1) if

38、(CLKTemp0=2) if(+CLKTemp1>=4)CLKTemp1=0;elseif(+CLKTemp1>=10)CLKTemp1=0;else if(CurrentDig = 2) if(+CLKTemp2>=6)CLKTemp2=0; else if(CurrentDig = 3) if(+CLKTemp3>=10)CLKTemp3=0; else if(CurrentDig = 4) if(+CLKTemp4>=6)CLKTemp4=0; else if(CurrentDig = 5) if(+CLKTemp5>=10)CLKTemp5=0;

39、else if(CurrentModle = DctModle)&&(DctRunning=0)if(CurrentDig=0)if(+CLKDct0>=6)CLKDct0=0;else if(CurrentDig = 1)if(+CLKDct1>=10)CLKDct1=0;else if(CurrentDig = 2) if(+CLKDct2>=6)CLKDct2=0; else if(CurrentDig = 3) if(+CLKDct3>=10)CLKDct3=0; else if(CurrentDig = 4) if(+CLKDct4>=1

40、0)CLKDct4=0; else if(CurrentDig = 5) if(+CLKDct5>=10)CLKDct5=0; 4.2 LED顯示驅(qū)動(dòng)程序設(shè)計(jì)數(shù)碼管顯示程序如下所示,本設(shè)計(jì)采用C語言和匯編語言交叉調(diào)用的方式來顯示數(shù)字,在系統(tǒng)頂層調(diào)用Display(unsigned char dig,unsigned char dat),即可控制數(shù)碼管顯示,其中參數(shù)dig位顯示位選擇,圍為0-5,參數(shù)dat為顯示的數(shù)字,從0-9,函數(shù)過一個(gè)switch語句來實(shí)現(xiàn)共陽極數(shù)碼管顯示碼的譯碼,當(dāng)顯示碼譯碼后,需要將顯示碼寫到對(duì)應(yīng)外部地址的數(shù)碼管驅(qū)動(dòng)芯片中,本設(shè)計(jì)在Display()函數(shù)中調(diào)用了匯

41、編函數(shù)_ Place來實(shí)現(xiàn)數(shù)據(jù)輸出,雙參數(shù)傳遞用到了R5和R7兩個(gè)寄存器。 #define One 0x0f9 #define Two 0x0a4 #define Thr 0x0b0 #define Fur 0x99 #define Fiv 0x92 #define Six 0x82 #define Sev 0x0f8 #define Egt 0x80 #define Nin 0x90 #define Zer 0x0c0void Display(unsigned char dig,unsigned char dat)unsigned char datatemp;switch(dat)case

42、0:datatemp=Zer;break;case 1:datatemp=One;break;case 2:datatemp=Two;break;case 3:datatemp=Thr;break;case 4:datatemp=Fur;break;case 5:datatemp=Fiv;break;case 6:datatemp=Six;break;case 7:datatemp=Sev;break;case 8:datatemp=Egt;break;case 9:datatemp=Nin;Place(dig,datatemp);_ Place:MOVA,R7ADD A,#10hMOVDPH

43、,Aclr A MOVDPL,AMOVA,R5MOVX DPTR,ARET4.3 計(jì)時(shí)程序設(shè)計(jì)本設(shè)計(jì)中,單片機(jī)晶振采用了最常用的12MHz無源晶振,單片機(jī)計(jì)數(shù)器的時(shí)鐘輸入信號(hào)頻率為晶振頻率的12分頻,即1MHz,如果要得到1kHz信號(hào),即1mS延時(shí),需要單片機(jī)的計(jì)數(shù)器對(duì)1MHz的信號(hào)進(jìn)行1000分頻。為了提高時(shí)鐘的精度,設(shè)置單片機(jī)的計(jì)數(shù)模式為自動(dòng)重載模式,即TL0用于計(jì)數(shù),TH0用于存放計(jì)數(shù)器初值,當(dāng)計(jì)數(shù)到零后,系統(tǒng)自動(dòng)將TH0中的計(jì)數(shù)初值加載到TL0中,不用CPU的干預(yù),也不會(huì)中斷時(shí)鐘計(jì)數(shù),很好地提高了系統(tǒng)的計(jì)時(shí)精度。這種模式下,計(jì)數(shù)器的最大計(jì)數(shù)值只有256,所以在對(duì)1MHz信號(hào)1000分頻

44、的時(shí)候,需要的定時(shí)器自動(dòng)重載次數(shù)至少為所以,需要定時(shí)器至少重載4次,每次計(jì)數(shù)值為設(shè)置好計(jì)數(shù)器的計(jì)數(shù)初值后,計(jì)數(shù)器每中斷4就是1mS時(shí)間到,在中斷服務(wù)程序中實(shí)現(xiàn)時(shí)、分、秒和毫秒的進(jìn)位運(yùn)算,在每次進(jìn)位產(chǎn)生的時(shí)候講相應(yīng)的標(biāo)識(shí)為置一,用于在主控制模塊中控制增計(jì)數(shù)和減計(jì)數(shù)的運(yùn)行。4.4控制模塊程序設(shè)計(jì)系統(tǒng)的主控制模塊主要完成三部分的工作,即在每次10mS位加一時(shí),完成增計(jì)時(shí)功能的10mS位加一,完成減計(jì)時(shí)功能的10mS位減一,以與各模式下的顯示容的切換。以下是主控制程序主循環(huán)中的增計(jì)時(shí)程序,當(dāng)每個(gè)10mS信號(hào)到來之后,如果增計(jì)時(shí)功能正在運(yùn)行,即CntRunning被置一了,那么增計(jì)數(shù)值就會(huì)累加,以下程序

45、主要完成計(jì)數(shù)值累加和進(jìn)位。if(CntRunning)if(+CLKCnt5>9)CLKCnt5=0;if(+CLKCnt4>9)CLKCnt4=0;if(+CLKCnt3>9)CLKCnt3=0;if(+CLKCnt2>5)CLKCnt2=0;if(+CLKCnt1>9)CLKCnt1=0;if(+CLKCnt0>5)CLKCnt0=0;第五章 系統(tǒng)的PROTUES仿真5.1 系統(tǒng)的PROTUES模型系統(tǒng)的整體PROTUES模型如圖5-1所示,6個(gè)數(shù)碼管從左到右分別顯示時(shí)、分、秒的高低位,數(shù)碼管上面的LED燈在時(shí)間初值調(diào)整和減計(jì)時(shí)設(shè)置計(jì)時(shí)初值時(shí)用于指示當(dāng)前

46、的調(diào)整位,LED數(shù)碼管顯示驅(qū)動(dòng)電路如圖接到單片機(jī)的數(shù)據(jù)總線,通過74HC138譯碼器來選擇需要寫入的數(shù)字位,74HC138譯碼器的輸出端和單片機(jī)的寫使能端信號(hào)相與后作為74HC574芯片的片選信號(hào),右邊縱向排列的LED燈用于顯示當(dāng)前的工作模式,4個(gè)LED燈從上到下分別表示減計(jì)數(shù)模式、設(shè)置時(shí)鐘初值模式、增計(jì)數(shù)模式和時(shí)鐘模式,5個(gè)按鍵作為操作按鍵,其功能如表5-1所示,按鍵輸入端均接上拉電阻,所有按鍵信號(hào)經(jīng)過與門電路將信號(hào)合并后送到單片機(jī)的外部中斷檢測(cè)引腳,按鍵信號(hào)接P1口的低5位。圖5-1 系統(tǒng)的PROTUES模型表5-1 按鍵功能說明按鍵時(shí)鐘模式初值設(shè)置模式增計(jì)時(shí)模式減計(jì)時(shí)模式KEY1確定清零

47、計(jì)數(shù)清零計(jì)數(shù)KEY2設(shè)定位選擇設(shè)定位選擇KEY3加加(設(shè)定初值)KEY4模式切換KEY5開始/暫停開始/暫停圖5-2 數(shù)碼管驅(qū)動(dòng)接口電路5.2 時(shí)鐘運(yùn)行仿真本系統(tǒng)在仿真中的時(shí)鐘運(yùn)行如圖5-3所示,經(jīng)過仿真檢驗(yàn),系統(tǒng)可以實(shí)現(xiàn)準(zhǔn)確的計(jì)時(shí)和進(jìn)位功能。圖5-3 系統(tǒng)的時(shí)鐘模式運(yùn)行仿真5.3 初始時(shí)間設(shè)定的仿真時(shí)鐘的初始值設(shè)定運(yùn)行仿真如圖5-4所示,進(jìn)入該模式后,調(diào)整位顯示LED會(huì)自動(dòng)切換到最高位,也就是小時(shí)的十位,按“設(shè)定為選擇”按鈕可以選擇需要設(shè)定的數(shù)字位,調(diào)整好時(shí)間后,按“確定”按鈕,系統(tǒng)會(huì)自動(dòng)進(jìn)入時(shí)鐘運(yùn)行模式,并從設(shè)定的時(shí)間初值開始計(jì)時(shí),如圖5-5所示。圖5-4 時(shí)鐘初始值設(shè)定運(yùn)行仿真圖5-5

48、設(shè)定初值后進(jìn)入時(shí)鐘模式5.4 增計(jì)時(shí)的仿真增計(jì)時(shí)功能仿真進(jìn)入計(jì)時(shí)模式后,界面如圖5-6所示,增計(jì)時(shí)模式LED燈亮,6位數(shù)碼管清零,等待用戶按下“開始計(jì)時(shí)”按鈕。圖5-6 仿真進(jìn)入增計(jì)時(shí)功能按下“開始計(jì)時(shí)”按鈕后,系統(tǒng)開始增計(jì)時(shí)運(yùn)行,運(yùn)行中最低位的分別率為10mS,最低兩位計(jì)時(shí)到1000mS后清零并進(jìn)位,秒計(jì)時(shí)位即圖中的中間兩位數(shù)碼管,秒的個(gè)位計(jì)數(shù)到10后清零并進(jìn)位,秒的十位滿6后清零并進(jìn)位,分鐘計(jì)時(shí)位為最左邊兩位數(shù)碼管顯示,進(jìn)位和秒進(jìn)位類似。在系統(tǒng)增計(jì)時(shí)運(yùn)行中,點(diǎn)擊“暫停計(jì)時(shí)”按鈕,系統(tǒng)暫停增計(jì)時(shí),最后的計(jì)時(shí)時(shí)間值保存在數(shù)碼管顯示,再點(diǎn)擊“開始計(jì)時(shí)”按鈕后,系統(tǒng)從最后計(jì)時(shí)時(shí)間值開始增計(jì)時(shí)。在增計(jì)時(shí)運(yùn)行或者暫停計(jì)時(shí)狀態(tài)下,均可以按下“清零計(jì)時(shí)”按鈕來清零當(dāng)前計(jì)時(shí)時(shí)間值。在增計(jì)時(shí)運(yùn)行或者暫停計(jì)時(shí)的狀態(tài)下,可以任意切換系統(tǒng)的運(yùn)行模式,不影響增計(jì)時(shí)模式的運(yùn)行,當(dāng)從其他模式切換到增計(jì)時(shí)模式后,可以發(fā)現(xiàn),系統(tǒng)增計(jì)時(shí)功能還在穩(wěn)定地保持著最后一次操作后的狀態(tài)運(yùn)行。圖5-7 增計(jì)時(shí)運(yùn)行中5.5 減計(jì)時(shí)的仿真減計(jì)數(shù)模式需要有計(jì)數(shù)初始時(shí)間值,所以在進(jìn)入減計(jì)數(shù)模式后需要先

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論