版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖北大學(xué) 畢 業(yè) 設(shè) 計(jì)(論文)設(shè)計(jì)(論文)題目:數(shù)字顯示計(jì)時(shí)系統(tǒng)系 別: 物理與科學(xué)技術(shù)學(xué)院 專 業(yè): 電子信息工程班 級(jí):07電信(3)班姓 名: 學(xué) 號(hào): 指導(dǎo)老師: 完成時(shí)間: 2010年5月摘要:本次設(shè)計(jì)主要是利用AT89C51單片機(jī)完成,其中AT89C51是核心元件同時(shí)采用數(shù)碼管動(dòng)態(tài)顯示“時(shí)”、“分”、“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,它具有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為24小時(shí),顯示滿刻度為“23時(shí)59分59秒”,另外具有校時(shí)功能、整點(diǎn)報(bào)時(shí)功能、鬧鈴功能、斷電后有記憶功能、恢復(fù)供電時(shí)可實(shí)現(xiàn)計(jì)時(shí)同步等特點(diǎn)。本文主要介紹用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)數(shù)字顯示計(jì)時(shí)系統(tǒng)
2、的方法,本設(shè)計(jì)硬件由單片機(jī)AT89C51芯片和LED 數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個(gè)單片機(jī)數(shù)字顯示計(jì)時(shí)(鬧鐘)顯示系統(tǒng),硬件電路仿真由Proteus 仿真軟件完成,軟件由偉福(WAVE )編程完成。關(guān)鍵詞:AT89C51 LED 鬧鈴 整點(diǎn)報(bào)時(shí)Abstract:This is the main design, including complete AT89C51 is the core element also USES AT89C51 dynamic display of "digital tube," "points" and "
3、second" modern timing devices. Compared with the traditional mechanical watch, it is precisely that intuitive, walking, etc. It's time for 24 hours, show period for the full scale "and" 59 seconds when 59, also has the function of time, when the school on the function, alarm funct
4、ions, power was restored after the memory function, can be realized when the clock synchronization etc.This paper mainly introduces the MCU internal timing counter to realize/digital display timer system, the design method of the hardware of microcomputer AT89C51 chip and LED digital tube as the cor
5、e, with the necessary circuit, a digital display timer (alarm display system, the hardware circuit simulation by Proteus, software simulation software by weifu (WAVE programmed.Keywords: AT89C51 LED alarm on tim目錄第一章 概述1.1 課題簡(jiǎn)介41.2 設(shè)計(jì)的主要原理4 1.3方案論證4 1.4設(shè)計(jì)的目的及要求5 第二章 硬件設(shè)計(jì)2.1 硬件部分框圖62.2 使用芯片介紹6 2.3 分電
6、路設(shè)計(jì)8 第三章 軟件設(shè)計(jì)3.1 單元分配14 3.2 程序框圖與匯編程序14 第四章 調(diào)試4.1 軟件調(diào)試20 4.2 protues仿真軟件的應(yīng)用20 4.3性能分析21參考文獻(xiàn)23附錄A 源程序24 附錄B 電路原理圖32附錄C 元件清單33第一章 概述1.1 課題簡(jiǎn)介數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,已得到廣泛的使用。數(shù)字鐘的設(shè)計(jì)方法有許多種, 例如, 可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘等等。這些方
7、法都各有其特點(diǎn),其中利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,并便于功能的擴(kuò)展。單片機(jī)應(yīng)用的重要意義在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。本次設(shè)計(jì)以AT89C51單片機(jī)為核心來控制時(shí)鐘電路、按鍵電路、復(fù)位電路、LED 顯示器段碼驅(qū)動(dòng)電路、LED 顯示器碼驅(qū)動(dòng)電路、6位LED 顯示器電路以及蜂鳴器,以達(dá)到對(duì)“時(shí)”“分”“秒”精確的控制和顯示。1.2 設(shè)計(jì)的主要原理電路工作原理:該電路以AT89C51為核心。顯示器用七段共陽LED 數(shù)
8、碼管顯示器,顯示小時(shí)、分鐘以及秒,從P0口接入4個(gè)按鈕開關(guān),作為輸入電路,進(jìn)行手動(dòng)設(shè)置調(diào)時(shí)、調(diào)分和調(diào)秒,通過P2,P1口來實(shí)現(xiàn)對(duì)顯示的實(shí)時(shí)控制。同時(shí)在從P3口接入1個(gè)蜂鳴電路,作為報(bào)警用。1.3 設(shè)計(jì)的目的及要求1 設(shè) 計(jì) 目 的(1)熟悉集成電路的引腳安排;(2)熟悉并掌握80C51的結(jié)構(gòu)原理及應(yīng)用; (3)了解電路板結(jié)構(gòu)及其接線方法; (4)了解數(shù)字鐘的組成及工作原理; (5)掌握芯片的邏輯功能及使用方法; (6)熟悉數(shù)字鐘的設(shè)計(jì)與制作。 2. 設(shè) 計(jì) 要 求 (1)報(bào)時(shí)用中斷方式計(jì)時(shí); (2)到整時(shí)時(shí)能夠準(zhǔn)時(shí);(3)由晶振提供標(biāo)準(zhǔn)時(shí)間基準(zhǔn)信號(hào);(4)自動(dòng)計(jì)時(shí)并具備校調(diào)功能。可以單獨(dú)對(duì)每一
9、位校調(diào);(5)設(shè)置四個(gè)按鍵SET,RET,ALM 和+1鍵,對(duì)時(shí),分,秒進(jìn)行調(diào)整;(6)通過軟件編程的方法實(shí)現(xiàn)以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí), 分鐘和秒。1.4方案論證方案一:采用實(shí)時(shí)時(shí)鐘芯片設(shè)計(jì):針對(duì)計(jì)算機(jī)系統(tǒng)對(duì)實(shí)時(shí)時(shí)鐘功能的普遍需求,各大芯片生產(chǎn)廠家陸續(xù)推出了一系列的實(shí)時(shí)時(shí)鐘集成芯片,如DS1287,DS12887等,這些實(shí)時(shí)時(shí)鐘芯片具備年月日,時(shí)分秒計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)間程序簡(jiǎn)單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電池具備永不停止的計(jì)時(shí)功能,具有可編程方波輸出功能,可用做實(shí)時(shí)測(cè)控系統(tǒng)的采樣信號(hào)等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性
10、RAM ,可用來存放需長期保存的但有時(shí)也需變更的數(shù)據(jù)。方案二:采用單片機(jī)軟件控制技術(shù):利用AT89C51內(nèi)部的16位定時(shí)/計(jì)數(shù)器進(jìn)行中斷服務(wù),配合軟件延時(shí)實(shí)現(xiàn)計(jì)時(shí)計(jì)時(shí)及控制全部采用軟件控制,并配合外圍顯示及鍵盤電路,從而實(shí)現(xiàn)電子時(shí)鐘的各項(xiàng)功能。比較上述兩種方案:方案一雖然功能強(qiáng)大,性能較好但所用芯片較貴、外圍邏輯電路復(fù)雜,且靈活性較低,不利于各種功能的擴(kuò)展;方案二此系統(tǒng)硬件簡(jiǎn)單,將復(fù)雜的硬件功能用軟件實(shí)現(xiàn),因此系統(tǒng)控制靈活,能很好的滿足基本需求,且能夠使人在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,因此本次設(shè)計(jì)采用方案二。第二章 硬件設(shè)計(jì)2.1 硬件部分框圖圖2-1為該系統(tǒng)設(shè)計(jì)方案
11、的硬件電路設(shè)計(jì)框圖。該數(shù)字顯示計(jì)時(shí)系統(tǒng)的硬件電路是由單片機(jī)、時(shí)鐘電路、按鍵電路、復(fù)位電路、LED 顯示器段碼驅(qū)動(dòng)電路、LED 顯示器碼驅(qū)動(dòng)電路、6位LED 顯示器電路以及蜂鳴器電路。 圖2-1硬件電路框圖在圖2-1中,以AT89C51單片機(jī)為核心,LED 數(shù)碼管顯示內(nèi)容通過P1口從單片機(jī)傳送到數(shù)碼管。P2口是數(shù)碼管位選控制端口。形成一個(gè)可以顯示時(shí),分,秒的數(shù)字顯示計(jì)時(shí)系統(tǒng)。在這一系統(tǒng)中當(dāng)時(shí)間調(diào)整設(shè)置鍵(SET )被按下時(shí),系統(tǒng)進(jìn)入時(shí)間調(diào)整輸入功能狀態(tài);當(dāng)定時(shí)時(shí)間設(shè)置鍵(ALM被按下時(shí),系統(tǒng)進(jìn)入定時(shí)(鬧鐘)時(shí)間輸入功能狀態(tài);當(dāng)+1調(diào)整鍵被按下時(shí),被調(diào)整位加一;當(dāng)確認(rèn)鍵(RET被按下時(shí),指向下一個(gè)
12、要調(diào)整的位。4個(gè)按鍵開關(guān)通過不同的組合實(shí)現(xiàn)外部控制程序狀態(tài)2.2 使用芯片介紹AT89C51 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash 允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash ,使得AT89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89 c51具有以下標(biāo)準(zhǔn)功能:8k 字節(jié)Flash ,256字節(jié)RAM , 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針
13、,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM 、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器8K 字節(jié)在系統(tǒng)可編程Flash AT89C51。AT89C51系列單片機(jī)如圖2-2所示: 圖2-2 AT89C51系列單片機(jī)單片機(jī)的中央處理器(CPU )是單片機(jī)的核心,完成運(yùn)算和控制操作,中央處理器(CPU主要包括運(yùn)算器和控制器。1)
14、運(yùn)算器運(yùn)算器主要用來實(shí)現(xiàn)算術(shù),邏輯運(yùn)算和位操作,其中包括算術(shù)運(yùn)算和邏輯運(yùn)算單元ALU, 和累加器ACC,B 寄存器程序狀態(tài)字PSW 和兩個(gè)存儲(chǔ)器等。2 控制器控制器是識(shí)別指令并根據(jù)指令性質(zhì)協(xié)調(diào)計(jì)算機(jī)內(nèi)各組成單元進(jìn)行工作的部件,控制器主要包括程序計(jì)數(shù)器PC ,PC 增量器,指令寄存器,指令譯碼器,定時(shí)及控制邏輯電路等。其功能是控制指令的讀入,譯碼和執(zhí)行,并對(duì)指令執(zhí)行過程進(jìn)行定時(shí)和邏輯控制,在AT89C51單片機(jī)中,PC 是一個(gè)16位的計(jì)數(shù)器,可對(duì)64KB 程序存儲(chǔ)器進(jìn)行尋址,復(fù)位時(shí)PC 內(nèi)容為0000H ,說明程序應(yīng)從存儲(chǔ)器0000H 單元開始執(zhí)行。3)外圍接口電路CPU 與外部設(shè)備的信息交換都
15、要通過接口電路來進(jìn)行,這主要是為了解決CPU 的高速處理能力和外部設(shè)備低速運(yùn)行之間的速度匹配問題,并可以有效地提高CPU 的工作效率,同時(shí)也提高了CPU 的對(duì)外驅(qū)動(dòng)能力。輸出借口電路具有鎖存器和驅(qū)動(dòng)器,輸入接口電路具有三態(tài)門控制,成為接口電路的基本特性,AT89C51單片機(jī)的外圍接口電路主要包括:4個(gè)可編程并行I/O口,1個(gè)可編程串行口,2個(gè)16位的可編程定時(shí)器及中斷系統(tǒng)等,由于受集成度的限制,片內(nèi)存儲(chǔ)器和外圍接口電路的規(guī)模及數(shù)量受到一定的限制,為了適應(yīng)外部更復(fù)雜的控制功能,單片機(jī)具有較強(qiáng)的擴(kuò)展功能,可以很方便地?cái)U(kuò)展外部存儲(chǔ)器ROM,RAM 和I/O口等4 位處理器。單片機(jī)主要用于控制,需要有
16、較強(qiáng)的位處理功能,因此位處理器是它的必要組成部分,常把位處理器稱為布爾處理器。位處理器以狀態(tài)寄存器中的進(jìn)位標(biāo)志位C 為累加位,可進(jìn)行置位、復(fù)位、取反、等于“0”轉(zhuǎn)移、等于“1”轉(zhuǎn)移且清“0”以及C 與可尋址位之間的傳送、邏輯與、邏輯或等位操作。位處理操作也是通過運(yùn)算器實(shí)現(xiàn)的。4 存儲(chǔ)器單片機(jī)內(nèi)部的存儲(chǔ)器分為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,標(biāo)準(zhǔn)型AT89C51單片機(jī)的程序存儲(chǔ)器采用4KB 的快速擦寫存儲(chǔ)器FLASH MEMORY,程序和擦除完全是電氣實(shí)現(xiàn),編程和擦寫速度快,可以使用通用的編程器脫機(jī)編程,也可在線編程。FLASH 的應(yīng)用成為AT89系列單片機(jī)的顯著特點(diǎn)之一,在單片機(jī)中,用隨機(jī)存儲(chǔ)器RAM
17、來存儲(chǔ)程序運(yùn)行期間的工作變量和數(shù)據(jù),所以又稱為數(shù)據(jù)數(shù)據(jù)存儲(chǔ)器。一定容量的RAM 集成在單片機(jī)內(nèi),提高了單片機(jī)的運(yùn)行速度,也降低了功耗。5 串行口AT89C51單片機(jī)是由一個(gè)全雙工的串行接口,以實(shí)現(xiàn)單片機(jī)和其他數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。6)中斷控制系統(tǒng)AT89C51單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。80C51工有5個(gè)中斷源,即外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè)。全部中斷分為高級(jí)和低級(jí)共兩個(gè)優(yōu)先級(jí)別。2.3 分電路設(shè)計(jì)1按鍵電路設(shè)計(jì)與器件選擇數(shù)字顯示計(jì)時(shí)系統(tǒng)工作時(shí)應(yīng)具備兩項(xiàng)基本功能,一是隨時(shí)輸入定時(shí)(
18、鬧鐘)時(shí)間,二是隨時(shí)對(duì)當(dāng)前時(shí)間進(jìn)行調(diào)整。要實(shí)現(xiàn)這兩項(xiàng)功能,可以接入鍵盤輸入電路。1)按鍵方案一:4*4矩陣式鍵盤。如果選擇此方案,那么在修改時(shí)鐘或設(shè)置鬧鈴時(shí)間時(shí)就可以直接從鍵盤輸入,方便、快捷,但程序較為復(fù)雜。方案二:獨(dú)立式按鍵。如果設(shè)置過多按鍵,將會(huì)占用較多I/O口,而且會(huì)給布線帶來不便,因此,此方案適用于按鍵較少的情況。如果選擇此方案,由于按鍵較少,在修改時(shí)間或設(shè)置鬧鈴時(shí)間時(shí)就不能直接輸入,只能通過加或減來完成,稍為麻煩一些,但其程序簡(jiǎn)單。由于并不需要經(jīng)常修改時(shí)間和設(shè)置鬧鈴時(shí)間,而且方案二的程序簡(jiǎn)單,按鍵少、成本低,因此,選擇方案二。2) 鍵盤結(jié)構(gòu)的選擇鍵盤結(jié)構(gòu)可以分為獨(dú)立式鍵盤和行列式鍵
19、盤(矩陣式)兩類。在本次設(shè)計(jì)中只需要4個(gè)按鍵,因此選擇獨(dú)立式鍵盤。電路是由按鍵和4個(gè)電阻組成,按鍵分別命名為 SET、 ALM 、+1和 RET鍵,按鍵可以采用輕觸開關(guān),電阻采用并腳排電阻(4*10K)如圖2-4所示: 圖2-4 鍵盤結(jié)構(gòu)在圖2- 4中4個(gè)按鍵的功能的具體說明:RET 確認(rèn)鍵的功能:確認(rèn),即對(duì) +1 調(diào)整位進(jìn)行確認(rèn),該鍵按下時(shí)說明被調(diào)整位的值已經(jīng)確定,轉(zhuǎn)去調(diào)整下一位。+1鍵調(diào)整鍵的功能:分別對(duì)時(shí)間值的小時(shí)十位、小時(shí)個(gè)位、分的十位、分的個(gè)位、秒的十位、秒的個(gè)位進(jìn)行+1調(diào)整,即該鍵每按下一次,對(duì)應(yīng)的時(shí)間調(diào)整位+1。ALM 鍵功能:設(shè)置定時(shí)(鬧鐘)時(shí)間,即當(dāng)需要電子時(shí)鐘進(jìn)行定時(shí)(鬧鐘
20、)服務(wù)時(shí),可以通過該鍵的功能來輸入定時(shí)(鬧鐘)時(shí)間,使用ALM 鍵與 +1鍵RET 鍵配合來完成這一功能。SET 鍵功能:設(shè)置當(dāng)前時(shí)間,即當(dāng)電子時(shí)鐘的時(shí)間有誤差時(shí),需要隨時(shí)對(duì)它進(jìn)調(diào)整,使用SET 鍵與+1 鍵RET 鍵配合來完成這一功能。鍵盤的硬件電路設(shè)計(jì)只能保證4個(gè)按鍵信號(hào)的可靠進(jìn)入,要想完成鍵盤的輸入功能,還要靠軟件編程來具體實(shí)現(xiàn)的。3) 按鍵消抖處理:通常的按鍵所用開關(guān)為機(jī)械彈性開關(guān), 當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí), 電壓信號(hào)小型如圖2-5所示。由于機(jī)械觸點(diǎn)的彈性作用, 一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通, 在斷開時(shí)也不會(huì)一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng), 如下圖。抖
21、動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定, 一般為5ms 10ms 。這是一個(gè)很重要的時(shí)間參數(shù), 在很多場(chǎng)合都要用到。 圖2-5 按鍵工作過程按鍵穩(wěn)定閉合時(shí)間的長短則是由操作人員的按鍵動(dòng)作決定的, 一般為零點(diǎn)幾秒至數(shù)秒。鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次。為確保CPU 對(duì)鍵的一次閉合僅作一次處理, 必須去除鍵抖動(dòng)。在鍵閉合穩(wěn)定時(shí)讀取鍵的狀態(tài), 并且必須判別到鍵釋放穩(wěn)定后再作處理。按鍵的抖動(dòng), 可用硬件或軟件兩種方法。 硬件消抖:在鍵數(shù)較少時(shí)可用硬件方法消除鍵抖動(dòng)。圖2-6所示的RS 觸發(fā)器為常用的硬件去抖。在圖2-6中兩個(gè)“與非”門構(gòu)成一個(gè)RS 觸發(fā)器。當(dāng)按鍵未按下時(shí), 輸出為1; 當(dāng)鍵按下時(shí), 輸出為0
22、。此時(shí)即使用按鍵的機(jī)械性能, 使按鍵因彈性抖動(dòng)而產(chǎn)生瞬時(shí)斷開(抖動(dòng)跳開B ), 只要按鍵不返回原始狀態(tài)A, 雙穩(wěn)態(tài)電路的狀態(tài)不改變, 輸出保持為0, 不會(huì)產(chǎn)生抖動(dòng)的波形。也就是說, 即使B 點(diǎn)的電壓波形是抖動(dòng)的,但經(jīng)雙穩(wěn)態(tài)電路之后, 其輸出為正規(guī)的矩形波。 圖2-6 RS觸發(fā)器去抖 軟件消抖:如果按鍵較多, 常用軟件方法去抖, 即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序, 產(chǎn)生5ms 10ms 的延時(shí), 讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài), 如果仍保持閉合狀態(tài)電平, 則確認(rèn)為真正有鍵按下。當(dāng)檢測(cè)到按鍵釋放后, 也要給5ms 10ms 的延時(shí), 待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。2. LED顯示電路
23、選擇在單片機(jī)的應(yīng)用系統(tǒng)中,通常需要進(jìn)行人機(jī)對(duì)話。這包括人對(duì)應(yīng)用系統(tǒng)的狀態(tài)干預(yù)與數(shù)據(jù)輸入,以及應(yīng)用系統(tǒng)向人們顯示運(yùn)行狀態(tài)與運(yùn)行結(jié)果等。顯示器、鍵盤電路就是用來完成人-機(jī)對(duì)話活動(dòng)的人-機(jī)通道。LED 顯示器的驅(qū)動(dòng)是一個(gè)非常重要的問題,由系統(tǒng)硬件設(shè)計(jì)框圖可知顯示電路由LED 顯示器、段驅(qū)動(dòng)電路和位驅(qū)動(dòng)電路組成。在本次設(shè)計(jì)中運(yùn)用LED 數(shù)碼顯示器、采用PNP 管以及單片機(jī)的P2口來組成顯示電路。1) 顯示器:方案一:液晶顯示器。如果選擇此方案,將會(huì)降低系統(tǒng)的功耗,這樣就可以用電池供電,便于攜帶。但液晶顯示器的驅(qū)動(dòng)電路復(fù)雜,使用起來有一定的難度。方案二:用數(shù)碼管作為顯示器。數(shù)碼管的驅(qū)動(dòng)電路簡(jiǎn)單,使用方便
24、,如果選擇了此方案,那么在夜間看時(shí)間的時(shí)候就不需要有光源,非常方便。其缺點(diǎn)是功耗較大。由于數(shù)碼管使用起來較為方便,在夜間看時(shí)間也很方便,因此我們選擇了方案二。2) LED數(shù)碼顯示器的結(jié)構(gòu)LED 是發(fā)光二極管的縮寫,LED 顯示器由若干個(gè)發(fā)光二極管構(gòu)成的,妥發(fā)光二極管導(dǎo)通時(shí),顯示對(duì)應(yīng)的字符。LED 顯示器控制簡(jiǎn)單,使用方便,在單片機(jī)中應(yīng)用非常普遍。LED 顯示器由7個(gè)發(fā)光二極管組成,也稱為7段LED 顯示器,排列形狀如圖2-3a 所示。LED 顯示器還有一個(gè)圓點(diǎn)型的發(fā)光二極管(圖中以dp 表示),用于顯示小數(shù)點(diǎn),有時(shí)也稱為8段LED 顯示器。通過7段發(fā)光二極管亮暗的不同組合,可以顯示多種數(shù)字、字
25、母和其他符號(hào)。LED 顯示器的發(fā)光二極管有共陰極和共陽極兩種連接方法. 圖2-3b 為共陰極接法, 各發(fā)光二極管的陰極連在一起并接地, 當(dāng)某一發(fā)光二極管的陽極輸入高電平時(shí), 則該段發(fā)光;圖2-3c 為共陽極接法, 各發(fā)光二極管的陽極連在一起并接+5V,當(dāng)陰極輸入法低電平時(shí), 該段發(fā)光二極管發(fā)光。使用LED 顯示器時(shí),要注意區(qū)分兩種不同的接法。為了顯示數(shù)字或符號(hào),要為LED 顯示器提供代碼(字形碼),在兩種接法中字形碼是不同的。 圖2-3 7(8段LED 顯示器7段發(fā)光二極管再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,提供給LED 顯示器的字形 用LED 顯示器顯示十六進(jìn)制數(shù)的字形碼見表2-2。 3. 蜂鳴器
26、電路的設(shè)計(jì)鬧鈴指示可以有聲或光兩種形式,本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可;元件內(nèi)部已經(jīng)封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場(chǎng)上的有源蜂鳴器分為3V 、5V 、6V 等系列,以適應(yīng)不同的應(yīng)用需要。其中PNP 小功率三極管采用9012。其最大集電極電流為800mA 。完全滿足蜂鳴器驅(qū)動(dòng)的需要。適當(dāng)調(diào)節(jié)基極電阻可改變蜂鳴器的發(fā)聲功率。 圖2-7蜂鳴器電路在圖2-7中,當(dāng)P3.7=0時(shí),VT1導(dǎo)通時(shí),使蜂鳴器的兩個(gè)引腳間獲得將近5V 的直流電壓,蜂鳴器中有電流通過,而產(chǎn)生蜂鳴音。當(dāng)P3.7=
27、1時(shí),VT1截止時(shí),蜂鳴器的兩引腳間的直流電壓接近0V ,蜂鳴器不發(fā)聲。4. 單 片 機(jī) 的 復(fù) 位 方 式 與 電路選擇復(fù)位就是通過某種方式,使單片機(jī)內(nèi)各寄存器的值變?yōu)槌跏蓟癄顟B(tài)的操作。AT89C51單片機(jī)在時(shí)鐘電路工作以后,在RESET 端持續(xù)給出2個(gè)機(jī)器周期的高電平就可以完成復(fù)位操作。復(fù)位分為上點(diǎn)自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種方式。本系統(tǒng)采用上電復(fù)位方式。上電復(fù)位是在單片機(jī)接通電源時(shí),對(duì)單片機(jī)的復(fù)位。在上電瞬間RST 端與VCC 電位相同,隨著電容上電壓的逐漸上升,RST 端電位逐漸下降。上電復(fù)位所需要的最短時(shí)間是振蕩器建立時(shí)間加2個(gè)機(jī)器周期3種方式復(fù)位電路圖: 注:一般情況下圖中電容C1和C2
28、取30PF 左右,晶體的振蕩頻率范圍是1.212MHZ 。晶體振蕩頻率越高,則系統(tǒng)的時(shí)鐘頻率越高,單片機(jī)運(yùn)行速度也越快。一般情況下,單片機(jī)使用的振蕩頻率為6MHZ 或者說12MHZ 。5. 相關(guān)電路參數(shù)的計(jì)算(1)PNP 三極管與P2口之間的電阻選擇:選取三極管9012的放大倍數(shù)為100,選通一個(gè)LED 數(shù)碼管所需電流即三極管的集電極電流為:Ic=15mA*7=105mA,則它的基極電流Ib=105mA/100=1.05mA,取1mA ,三極管壓降為0.7V ,則電阻阻值為:R=(5-0.7V/1mA=4.3K,實(shí)際取4.7K(2)LED 數(shù)碼管與P1口之間的電阻選擇:由于LED 數(shù)碼管是由七
29、段發(fā)光二極管組成。每個(gè)二極管所需電壓為2V ,電阻的峰值電流取10mA ,又由于P1的壓降為,則電阻上所需電壓為5-2-0.3=2.7V則電阻上的阻值為2.7V/10mA=270,實(shí)際取300(3)開關(guān)與P0口之間的電阻選擇:由于開關(guān)端的電阻接+5電源,導(dǎo)線本身的電流是非常微小的,所以我選擇了10K 的電阻來完成硬件電路的連接。(4)I 端口分配及連接:P1.0P1.7:LED 數(shù)碼管顯示內(nèi)容通過P0口從單片機(jī)傳送到數(shù)碼管。 P2.0P2.5:數(shù)碼管位選控制端口。P0.0- P0.3:分別連接開關(guān),SET 、 ALM 、+1和 RET鍵,通過不同的組合實(shí)現(xiàn)外部控制程序狀態(tài)。第三章 軟件設(shè)計(jì)3.
30、1單元分配在AT89C51單片機(jī)的內(nèi)部00H-1FH 為工作寄存器區(qū),20H-2FH 為位尋址區(qū),30H-7FH 為數(shù)據(jù)緩沖區(qū)。堆棧的先進(jìn)后出的特點(diǎn)。1. 堆棧區(qū) 70H-7FH2. 段碼顯示緩沖區(qū) 45H-40H3. 當(dāng)前時(shí)間的二進(jìn)制存儲(chǔ)單元30H-32H4. 鬧鈴時(shí)間的二進(jìn)制存儲(chǔ)單元33H-35H5. 閃爍顯示單元 20H3.2程序框圖與匯編程序主程序框圖如圖3-1所示: 圖3-1主程序框圖一、主程序主程序的內(nèi)容的一般包括:主程序的起始地址,中斷服務(wù)程序的起始地址,有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序的調(diào)用等內(nèi)容。設(shè)置中斷入口地址、設(shè)置主程序的起始地址(開始),為了保護(hù)現(xiàn)場(chǎng)設(shè)置堆棧指
31、針,為了保證顯示的正確性要進(jìn)行T0的初始化和顯示緩沖區(qū)與計(jì)時(shí)有關(guān)的寄存器的清零。啟動(dòng)T0調(diào)用顯示程序顯示當(dāng)前時(shí)間,根據(jù)需要可以進(jìn)行按鍵處理,一旦鬧鐘時(shí)間到,發(fā)出報(bào)警,報(bào)警時(shí)間過后,調(diào)用顯示程序繼續(xù)正常的時(shí)間顯示。主程序清單如下:ORG 0000H ;中斷入口地址 AJMP MAINORG 000BH ;T0中斷 AJMP T0INTMAIN: MOV SP,#70H ;設(shè)置堆棧指針MOV R6,#06H ;顯示緩沖區(qū)清零 MOV R1,#45H S0:MOV R1,#00H DEC R1 DJNZ R6,S0MOV TMOD,#01H ;T0為工作方式1 MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)
32、初值 MOV TL0,#0DCHSETB RS0 ;選擇工作區(qū)1 MOV R2,#00H ;相關(guān)寄存器清零 MOV R3,#00H MOV R4,#00H MOV R5,#00HCLR RS0 ;選擇工作區(qū)0MOV R1,#45H ;顯緩區(qū)首指針?biāo)蚏1 SETB TR0 ;開T0SS1: LCALL DISP ;調(diào)用顯示程序LCALL KEYBOARD ;調(diào)用按鍵處理程序 MOV R2, 35H ;判斷是否有定時(shí)時(shí)間 CJNE R2, #0, NT MOV R2, 34H CJNE R2, #0, NT MOV R2, 33H CJNE R2, #0, NT SJMP BBNT: MOV A,
33、 35HCJNE A, 32H, BB ;判斷定時(shí)時(shí)間到否 MOV A, 34HCJNE A, 31H, BB MOV A, 33HCJNE A, 30H, BBCLR P3.7 ;時(shí)間到發(fā)出報(bào)警 MOV R7,#15 SJMP SS1BB: SETB P3.7 SJMP SS1 二中斷系統(tǒng)的介紹如果在執(zhí)行主程序時(shí)只有一個(gè)中斷請(qǐng)求源請(qǐng)求中斷,而這時(shí)CPU 又是對(duì)中斷開放的那么這個(gè)中斷立即得到響應(yīng)。然而由于中斷是隨機(jī)產(chǎn)生的,中斷源又不止1個(gè),因此往往會(huì)出現(xiàn)這樣的情況:幾個(gè)中斷源同時(shí)請(qǐng)求中斷,或者當(dāng)某一個(gè)中斷正在響應(yīng)中,又有其他中斷源請(qǐng)求中斷,這時(shí)中斷一般會(huì)按如下原則進(jìn)行處理:(1) 不同級(jí)的中斷
34、源同時(shí)請(qǐng)求中斷時(shí)先高后低 (2) 同級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí)事先規(guī)定(3) 處理低級(jí)中斷又收到高級(jí)中斷請(qǐng)求時(shí)停低轉(zhuǎn)高 (4) 處理高級(jí)中斷又收到低級(jí)中斷請(qǐng)求時(shí)高不理低AT89C51單片機(jī)的中斷系統(tǒng)對(duì)優(yōu)先級(jí)的控制比較簡(jiǎn)單,只規(guī)定了兩個(gè)中斷優(yōu)先級(jí),對(duì)于每一個(gè)中斷源均可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。在同一個(gè)優(yōu)先級(jí)中,五個(gè)中斷優(yōu)先級(jí)的次序如下: 外部中斷0(IE0)定時(shí)器/計(jì)數(shù)器T0溢出中斷(TF0) 外部中斷1(IE1)定時(shí)器/計(jì)數(shù)器T1溢出中斷(TF1) 串行口中斷(RI+TI)AT89C51單片機(jī)有1個(gè)中斷優(yōu)先級(jí)寄存器IP ,字節(jié)地址為B8H 。對(duì)于每一個(gè)中斷源,均可通過IP 的設(shè)置來確定優(yōu)
35、先等級(jí),置1為高優(yōu)先級(jí),反之為低。 三、時(shí)鐘計(jì)時(shí)程序數(shù)字顯示計(jì)時(shí)系統(tǒng)的主要任務(wù)是:采用單片機(jī)為核心的器件產(chǎn)生24小時(shí)時(shí)間,并用LED 顯示器將它顯示出來。在本次設(shè)計(jì)中所用的晶振為6MHz ,定時(shí)器最長的定時(shí)時(shí)間為131.72ms ,要產(chǎn)生24h 的時(shí)間值,故我們采用定時(shí)器T0方式1。(1)24小時(shí)的產(chǎn)生:選擇定時(shí)器T0 方式1,定時(shí)125ms 中斷一次,利用R2寄存器加1,8次為1s ,再利用寄存器R3計(jì)數(shù)60s ,依次類推,累計(jì)24的時(shí)間值,并需設(shè)置以下幾個(gè)寄存器:R2:累計(jì)1s 時(shí)間寄存器。T0每中斷一次R2=R2+1,計(jì)數(shù)八次向R3進(jìn)位,并將R2清零R3:累計(jì)60s 時(shí)間寄存器。當(dāng)R3=
36、60s,向R4進(jìn)位,并使R3=0。R4:累計(jì)60min 時(shí)間寄存器。當(dāng)R4=60min向R5進(jìn)位,并使R4=0。R5:累計(jì)24h 時(shí)間寄存器。當(dāng)R5=24h,正好是晝夜的時(shí)間,并使R5=0。 (2)定時(shí)器的初值:F=6MHZ, Tp=2us X=65536-125ms/2us=0BDCH (3)程序設(shè)計(jì)框圖:計(jì)時(shí)程序設(shè)計(jì)框圖如圖3-2所示 圖 3-2計(jì)時(shí)程序設(shè)計(jì)框圖程序清單如下:T0定時(shí)器,每125ms 中斷一次,中斷8次為1s 。T0INT: PUSH A ;T0計(jì)時(shí)中斷程序, 保護(hù)現(xiàn)場(chǎng)CLR TR0MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)初值 MOV TL0,#0DCHSETB TR0 ;開
37、T0 SETB RS0 ;選擇工作區(qū)1 INC R2CJNE R2,#08H,JT0 ;1s到了嗎? 沒到, 轉(zhuǎn)JT0 MOV R2,#00H ;到了,R2清零 INC R3 ;秒單元+1CJNE R3,#60,JT0 ;60s到了嗎? 沒到, 轉(zhuǎn)JT0 MOV R3,#00H ;到了, 秒單元清零 INC R4 ;分單元+1CJNE R4,#60,JT0 ;60min到了嗎? 沒到, 轉(zhuǎn)JT0 MOV R4,#00H ;到了, 分單元清零 INC R5 ;時(shí)單元+1CJNE R5,#24,JT0 ;24h到了嗎? 沒到, 轉(zhuǎn)JT0 MOV R5,#00H ;時(shí)單元清零JT0: MOV 30H
38、,R3MOV 31H,R4 MOV 32H,R5MOV R6,#03 ;二-十進(jìn)制轉(zhuǎn)換程序 MOV R0,#32H MOV R1,#45H JT1:MOV B,#10 MOV A,R0 DIV AB MOV R1,A DEC R1 MOV A,BMOV R1,A DEC R1 DEC R0 DJNZ R6,JT1 CLR RS0POP A ;恢復(fù)現(xiàn)場(chǎng) RETI ;中斷返回DTOB: SETB RS0 ;十-二進(jìn)制轉(zhuǎn)換程序MOV R6,#03 MOV R0,#32H MOV R1,#45H JT2:MOV B,#10 MOV A,R1 MUL AB DEC R1 ADD A,R1 MOV R0,
39、A DEC R1 DEC R0 DJNZ R6,JT2 MOV R3,30H MOV R4,31H MOV R5,32H MOV R2,#00 CLR RS0 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CFHEND第四章 調(diào)試4.1 軟 件 調(diào) 試軟件調(diào)試的任務(wù)是利用應(yīng)用軟件(如WAVE 軟件 進(jìn)行仿真調(diào)試,是通過對(duì)用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。程序運(yùn)行后編輯,查看程序是否有邏輯的錯(cuò)誤。運(yùn)用WAVE (偉福)軟件編譯自己設(shè)計(jì)的匯編程序,檢驗(yàn)程序。發(fā)現(xiàn)程序中的語
40、法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正。注意運(yùn)用WAVE 軟件保存文件時(shí)的后綴名用(.ASM )。仿真結(jié)果如下: 4.2 proteus 仿 真 軟 件 的 應(yīng) 用PROTEUS 軟件是由英國Labcenter electronics公司開發(fā)的一款電子設(shè)計(jì)軟件,它是目前能對(duì)CPU 芯片及其外圍電路進(jìn)行完整仿真的計(jì)算機(jī)設(shè)計(jì)分析軟件。在使用Proteus 進(jìn)行仿真調(diào)試時(shí),可以從實(shí)物的角度直接觀看電路運(yùn)行的結(jié)果(而不是某條語句或存儲(chǔ)器的內(nèi)容),從某種意義上講,proteus 解決了理論設(shè)計(jì)與動(dòng)手制作相互脫節(jié)的重大問題。在本次設(shè)計(jì)中,正是由于這款軟件的使用,大大提高了設(shè)計(jì)的效率,縮短了設(shè)計(jì)的周期。Proteu
41、s 仿真軟件無疑是單片機(jī)開發(fā)者掌握單片機(jī)開發(fā)技術(shù)的絕好的入門工具。 仿真結(jié)果數(shù)碼管能顯示“時(shí)”,“分”,“秒”,蜂鳴器也能響。系統(tǒng)初步達(dá)到了設(shè)計(jì)的要求。在仿真的過程中每個(gè)管腳旁邊會(huì)出現(xiàn)一個(gè)小方塊,紅色的方快表示高電平,藍(lán)色的表示低電平。通過方快顏色的變化可以很方便地知道每個(gè)管腳電平的變化,從而能對(duì)系統(tǒng)的運(yùn)行有更直觀的了解,這對(duì)程序的調(diào)試有很大的幫助 Protues 仿真電路圖如下: 4.3性能分析按照設(shè)計(jì)程序分析,LED 顯示器動(dòng)態(tài)掃描頻率在實(shí)際觀察時(shí)沒有閃爍。由于即使中斷程序中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)精度很高,可以滿足多種場(chǎng)合的應(yīng)用需要。小 結(jié)面臨畢業(yè),我在學(xué)校的最后一門功課(畢業(yè)
42、設(shè)計(jì))也即將完成。畢業(yè)設(shè)計(jì)是對(duì)我們整個(gè)大學(xué)階段所學(xué)的所有專業(yè)課程的一次綜合性考核。我做的是用AT89C51單片機(jī)設(shè)計(jì)具有鬧鐘等功能的數(shù)字顯示計(jì)時(shí)系統(tǒng)。這次數(shù)字顯示計(jì)時(shí)系統(tǒng)的設(shè)計(jì),使得我對(duì)單片機(jī)理論知識(shí)有了進(jìn)一步的了解。學(xué)習(xí)了三年,這次設(shè)計(jì)是對(duì)我們?nèi)晁鶎W(xué)東西的檢驗(yàn),提高了我們的綜合能力,具體來說提高了我們的自學(xué)能力,獨(dú)立分析,解決問題的能力以及動(dòng)手進(jìn)行實(shí)驗(yàn)的能力。同時(shí)也對(duì)所學(xué)知識(shí)進(jìn)行有效的鞏固,根據(jù)設(shè)計(jì)任務(wù),提出參考書目,讓我們自己自學(xué),對(duì)于設(shè)計(jì)中可能遇到的重點(diǎn)與難點(diǎn),通過分析與老師的詳細(xì)講解,啟發(fā)了我們的思考,幫助我們掌握自學(xué)的方法,起到了很好的效果。讓我們?cè)谠O(shè)計(jì)實(shí)踐中鍛煉能力,在整個(gè)設(shè)計(jì)過
43、程中方老師也引導(dǎo)我們明確了設(shè)計(jì)的要求以及現(xiàn)實(shí)這些要求的方法。鼓勵(lì)我們開動(dòng)腦筋,大膽探索,充分發(fā)揮我們的主觀能動(dòng)型與創(chuàng)造型。時(shí)間安排上,能使我們有效的去鉆研比較難的問題,也通過每組的同學(xué)的交流與討論確定最后的方案,方老師也定期負(fù)責(zé)檢查我們所設(shè)計(jì)的情況,并提出相關(guān)問題,以及幫助我們解決在設(shè)計(jì)過程中疑難的問題,直到設(shè)計(jì)出合格的電路。通過這次數(shù)字鐘的設(shè)計(jì)制作,我們將從書本上學(xué)到的知識(shí)應(yīng)用于實(shí)踐,提高了一些電子電路仿真設(shè)計(jì)能力, 雖然過程中遇到了一些困難,但是在解決這些問題的過程無疑也是對(duì)自己自身專業(yè)素質(zhì)的一種提高。當(dāng)最終調(diào)試成功的時(shí)候也是對(duì)自己的一種肯定。此次的設(shè)計(jì)作業(yè)不僅增強(qiáng)了自己在專業(yè)設(shè)計(jì)方面的信
44、心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己以后的學(xué)習(xí)方向的明確了重點(diǎn)。 另外在這次實(shí)驗(yàn)中我們遇到了不少的問題針對(duì)不同的問題我們采取不同的解決方法,最終一一解決設(shè)計(jì)中遇到的問題。在我們遇到不懂的問題時(shí),利用網(wǎng)上的資源,搜索查找得到需要的信息。和同學(xué)之間相互討論,明白了團(tuán)隊(duì)合作的重要性。這次的制作也讓我們感受到,我們?cè)陔娮臃矫鎸W(xué)到的只是很小的一部分知識(shí),我們需要更多的時(shí)間來學(xué)習(xí)知識(shí),學(xué)習(xí)技術(shù)。在軟件編程方面,我在這方面學(xué)到很多很多的東西,我為了搞懂一則程序可以一天不出宿舍,就算是這樣,我也知道自己所學(xué)到的東西太少,但我還是很感謝這次設(shè)計(jì),感謝我的的指導(dǎo)老師方老師,還有同組同學(xué),是老師的指導(dǎo)和同學(xué)一
45、起的努力才有了這一份收獲。參 考 文 獻(xiàn):(1)王效華 張?jiān)伱?主編:?jiǎn)纹瑱C(jī)原理與應(yīng)用 2009年1月第4次印刷 (2)樓然苗 李光飛 主編:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)指導(dǎo) 2008年3月 (3)李珍. 單片機(jī)原理與控制技術(shù). 北京:清華大學(xué)出版社,2002(4)皮紅梅,李英順. 單片機(jī)開發(fā)中的定時(shí)方法. 沈陽:石油化工高等專科學(xué)校學(xué)報(bào),2002年12月(5)張友德. 單片微型機(jī)原理、應(yīng)用與實(shí)踐. 上海:復(fù)旦大學(xué)出版社,1992 (6)汪敏,凌陽.16位單片機(jī)實(shí)驗(yàn)與實(shí)踐. 北京: 北京航空航天大學(xué)出版社,2007 (7)夏繼強(qiáng), 邢春香. 單片機(jī)應(yīng)用設(shè)計(jì)培訓(xùn)教程實(shí)踐篇. 北京:北京航空航天大學(xué)出版社,20
46、08附錄A 源程序主程序清單:ORG 0000H ;中斷入口地址AJMP MAINORG 000BH ;T0中斷AJMP T0INTMAIN: MOV SP,#70H ;設(shè)置堆棧指針MOV R6,#06H ;顯示緩沖區(qū)清零MOV R1,#45HS0:MOV R1,#00HDEC R1DJNZ R6,S0MOV TMOD,#01H ;T0為工作方式1MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)初值MOV TL0,#0DCHSETB RS0 ;選擇工作區(qū)1MOV R2,#00H ;相關(guān)寄存器清零MOV R3,#00HMOV R4,#00HMOV R5,#00HCLR RS0 ;選擇工作區(qū)0MOV R1,
47、#45H ;顯緩區(qū)首指針?biāo)蚏1SETB TR0 ;開T0S S1: LCALL DISP ;調(diào)用顯示程序LCALL KEYBOARD ;調(diào)用按鍵處理程序MOV R2, 35H ;判斷是否有定時(shí)時(shí)間CJNE R2, #0, NTMOV R2, 34HCJNE R2, #0, NTMOV R2, 33HCJNE R2, #0, NTSJMP BBNT: MOV A, 35HCJNE A, 32H, BB ;判斷定時(shí)時(shí)間到否MOV A, 34HCJNE A, 31H, BBMOV A, 33HCJNE A, 30H, BBCLR P3.7 ;時(shí)間到發(fā)出報(bào)警SJMP SS1BB: SETB P3.7S
48、JMP SS1按鍵處理(當(dāng)前)時(shí)間程序清單KEYBOARD: NOPKEY: MOV R4,#04H ;調(diào)顯示程序S1: LCALL DISPDJNZ R4,S1SETB P0.0JB P0.0,KEY ;P0.0(SET鍵 為高電平嗎? 是, 轉(zhuǎn)KEY MOV R4,#0AH ;否, 調(diào)顯示延時(shí)消抖 S2: LCALL DISPDJNZ R4,S2SETB P0.0JB P0.0,KEY ;P0.0為高電平嗎? 是, 轉(zhuǎn)KEY CLR TR0 ;否, 關(guān)T0 JNB P0.0,$ ;等待鍵釋放 MOV 20H,R1 ;R1送閃爍顯示單元20H MOV R2,#00 ;LED位數(shù)單元R2清零
49、KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序 MOV P0,#0FFHMOV A,P0CPL AJZ KEY1KEY2: JNB ACC.0,KEY3 ;P0.0(SET鍵 按下嗎? 否, 轉(zhuǎn)KEY3 JNB P0.0,$ ;是, 等待鍵釋放 DEC R1 ;R1-1INC R2 ;R2+1CJNE R2,#06,L13 ;R2=6嗎? 否, 轉(zhuǎn)L13 MOV R1,#45H ;是, 重新開始調(diào)位 MOV R2,#00L13:MOV 20H,R1 ;R1送閃爍顯示單元20H SJMP KEY1KEY3: JNB ACC.2,KEY4 ;P0.2(+1鍵 按下嗎? 否, 轉(zhuǎn)KEY4 J
50、NB P0.2,$MOV A,R1CJNE R1,#45H,L1 ;是小時(shí)的十位嗎? 否, 轉(zhuǎn)L1 CJNE A,#02,LL ;十位為2嗎? 否, 轉(zhuǎn)LL SJMP KEY5L1: CJNE R1,#44H,L2 ;是小時(shí)的個(gè)位嗎? 否, 轉(zhuǎn)L2 MOV R4,45HCJNE R4,#02,L101 ;十位為2嗎? 否, 轉(zhuǎn)L101CJNE A,#03,LL ;是, 個(gè)位為3嗎? 否, 轉(zhuǎn)LL SJMP KEY5L101: CJNE A,#09,LL ;個(gè)位為9嗎? 否, 轉(zhuǎn)LLSJMP KEY5L2: CJNE R1,#43H,L3 ;是分鐘的十位嗎? 否, 轉(zhuǎn)L3 CJNE A,#05,
51、LL ;是, 十位為5嗎? 否, 轉(zhuǎn)LL SJMP KEY5L3: CJNE R1,#42H,L4 ;是分鐘的個(gè)位嗎? 否, 轉(zhuǎn)L4 CJNE A,#09,LL ;是, 個(gè)位為9嗎? 否, 轉(zhuǎn)LL SJMP KEY5L4: CJNE R1,#41H,L5 ;是秒鐘的十位嗎? 否, 轉(zhuǎn)L5 CJNE A,#05,LL ;是, 十位為5嗎? 否, 轉(zhuǎn)LL SJMP KEY5L5: CJNE R1,#40H,L6 ;是秒鐘的個(gè)位嗎? 否, 轉(zhuǎn)L6 CJNE A,#09,LL ;是, 個(gè)位為9嗎? 否, 轉(zhuǎn)LL KEY5: MOV R1,#00H ;R1單元內(nèi)容清零SJMP KEY1LL: INC A
52、 ;做+1處理MOV R1,AL6: SJMP KEY1KEY4: JNB ACC.3,L6 ;P0.3(RET鍵 按下嗎? 否, 轉(zhuǎn)L6 JNB P0.3,$ ;是, 等待鍵釋放MOV R1,#45HACALL DTOB ;調(diào)十-二進(jìn)制轉(zhuǎn)換程序SETB TR0 ;開T0LJMP KEY按鍵處理(鬧鐘)時(shí)間程序清單KEYBOARD: NOPKEY: MOV R4,#04H ;調(diào)顯示程序S1: LCALL DISPDJNZ R4,S1SETB P0.2JB P0.1,KEY ;P0.1(ALM鍵 為高電平嗎? 是, 轉(zhuǎn)KEY MOV R4,#0AH ;否, 調(diào)顯示延時(shí)消抖S2: LCALL DI
53、SPDJNZ R4,S2SETB P0.1JB P0.1,KEY ;P0.1為高電平嗎? 是, 轉(zhuǎn)KEY CLR TR0 ;否, 關(guān)T0JNB P0.0,$ ;等待鍵釋放MOV 20H,R1 ;R1送閃爍顯示單元20HMOV R2,#00 ;LED位數(shù)單元R2清零KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序MOV P0,#0FFHMOV A,P0CPL AJZ KEY1KEY2: JNB ACC.1,KEY3 ;P0.1(ALM鍵 按下嗎? 否, 轉(zhuǎn)KEY3 JNB P0.1,$ ;是, 等待鍵釋放DEC R1 ;R1-1INC R2 ;R2+1CJNE R2,#06,L13 ;R2
54、=6嗎? 否, 轉(zhuǎn)L13MOV R1,#45H ;是, 重新開始調(diào)位MOV R2,#00L13:MOV 20H,R1 ;R1送閃爍顯示單元20H SJMP KEY1KEY3: JNB ACC.2,KEY4 ;P0.2(+1鍵 按下嗎? 否, 轉(zhuǎn)KEY4 JNB P0.2,$MOV A,R1CJNE R1,#45H,L1 ;是小時(shí)的十位嗎? 否, 轉(zhuǎn)L1 CJNE A,#02,LL ;十位為2嗎? 否, 轉(zhuǎn)LL SJMP KEY5L1: CJNE R1,#44H,L2 ;是小時(shí)的個(gè)位嗎? 否, 轉(zhuǎn)L2 MOV R4,45HCJNE R4,#02,L101 ;十位為2嗎? 否, 轉(zhuǎn)L101 CJN
55、E A,#03,LL ;是, 個(gè)位為3嗎? 否, 轉(zhuǎn)LL SJMP KEY5L101: CJNE A,#09,LL ;個(gè)位為9嗎? 否, 轉(zhuǎn)LL SJMP KEY5L2: CJNE R1,#43H,L3 ;是分鐘的十位嗎? 否, 轉(zhuǎn)L3 CJNE A,#05,LL ;是, 十位為5嗎? 否, 轉(zhuǎn)LL SJMP KEY5L3: CJNE R1,#42H,L4 ;是分鐘的個(gè)位嗎? 否, 轉(zhuǎn)L4 CJNE A,#09,LL ;是, 個(gè)位為9嗎? 否, 轉(zhuǎn)LL SJMP KEY5L4: CJNE R1,#41H,L5 ;是秒鐘的十位嗎? 否, 轉(zhuǎn)L5 CJNE A,#05,LL ;是, 十位為5嗎?
56、否, 轉(zhuǎn)LL SJMP KEY5L5: CJNE R1,#40H,L6 ;是秒鐘的個(gè)位嗎? 否, 轉(zhuǎn)L6 CJNE A,#09,LL ;是, 個(gè)位為9嗎? 否, 轉(zhuǎn)LL KEY5: MOV R1,#00H ;R1單元內(nèi)容清零 SJMP KEY1LL: INC A ;做+1處理 MOV R1,AL6: SJMP KEY1KEY4: JNB ACC.3,L6 ;P0.3(RET鍵 按下嗎? 否, 轉(zhuǎn)L6 JNB P0.3,$ ;是, 等待鍵釋放MOV R1,#45HACALL DTOB ;調(diào)十-二進(jìn)制轉(zhuǎn)換程序 SETB TR0 ;開T0LJMP KEY顯示程序清單DISP: MOV DPTR,#TAB ;顯示程序MOV R0,#45HMOV B,#0FEHMOV R5,#06HDIP1: MOV P2,#0FFH ;關(guān)顯示MOV A,R0
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度消防設(shè)施安裝施工協(xié)議模板
- 2025年中國健身行業(yè)市場(chǎng)現(xiàn)狀、前景分析研究報(bào)告(智研咨詢發(fā)布)
- 鄉(xiāng)鎮(zhèn)烈士陵園管理合同范本
- 油品裝卸合同范本
- 2024年礦石產(chǎn)品銷售具體協(xié)議書
- 2024建筑施工人力資源服務(wù)協(xié)議
- 齊齊哈爾大學(xué)《工業(yè)企業(yè)管理導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024電腦經(jīng)銷商銷售協(xié)議樣本
- 2024年企業(yè)間股權(quán)轉(zhuǎn)讓協(xié)議范本
- 2024屆甘肅省武威市第二中學(xué)高考數(shù)學(xué)試題全練版
- 2024入團(tuán)考試題庫考試100題題庫(含答案)
- 保安培訓(xùn)記錄內(nèi)容
- 公務(wù)快艇常規(guī)安全
- 高中生活如何啟航 課件 2023-2024學(xué)年高一主題班會(huì)
- 《互聯(lián)網(wǎng)的應(yīng)用》課件
- 2024山東能源集團(tuán)高校畢業(yè)生校園招聘筆試參考題庫附帶答案詳解
- 初中九年級(jí)美術(shù)期末藝術(shù)測(cè)評(píng)指標(biāo)試卷及答案
- 新能源科學(xué)與工程專業(yè)職業(yè)生涯規(guī)劃
- 高考作文等級(jí)評(píng)分標(biāo)準(zhǔn)
- GH/T 1418-2023野生食用菌保育促繁技術(shù)規(guī)程干巴菌
- pmma粒料制造工藝
評(píng)論
0/150
提交評(píng)論