基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)
《基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)(29頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
摘 要基于單片機(jī)的定時(shí)和控制裝置在許多行業(yè)有著廣泛的應(yīng)用,而數(shù)字鐘是其中最基本,也是最具有代表性的一個(gè)例子。在基于單片機(jī)系統(tǒng)的數(shù)字鐘電路中,除了基本的單片機(jī)系統(tǒng)和外圍電路外,還需要外部的控制和顯示裝置。在本設(shè)計(jì)系統(tǒng)中,輸入裝置是按鍵開關(guān),由于控制數(shù)字鐘的運(yùn)行模式,顯示裝置是LED 七段數(shù)碼管,顯示時(shí)間。通過數(shù)字鐘的設(shè)計(jì)這個(gè)實(shí)例,可以使單片機(jī)系統(tǒng)的初步入門設(shè)計(jì)者很好地了解單片機(jī)的結(jié)構(gòu)及其系統(tǒng)開發(fā)的設(shè)計(jì)方法。關(guān)鍵字:數(shù)字鐘;單片機(jī);LED顯示電路;定時(shí)目 錄第一章 引言1.1單片機(jī)簡介11.1.1單片機(jī)的特點(diǎn)11.1.2 單片機(jī)的應(yīng)用 1第二章 總體方案設(shè)計(jì)2.1 系統(tǒng)分析32.2 單片機(jī)的選擇4第三章 系統(tǒng)硬件設(shè)計(jì)3.1 硬件系統(tǒng)設(shè)計(jì)53.2單片機(jī)結(jié)構(gòu)及其引腳63.2.1 端口線73.2.2 電源線73.2.3 控制線73.3 定時(shí)器/計(jì)數(shù)器83.3.1 MCS-51對內(nèi)部定時(shí)器/計(jì)數(shù)器的控制83.3.2 工作方式83.4 晶振和復(fù)位電路113.4.1 晶振電路113.4.2 復(fù)位電路113.5 校時(shí)(功能切換)電路133.6 LED顯示電路133.6.1 LED顯示的基本原理133.7 音頻驅(qū)動143.8 系統(tǒng)整體電路14第四章 軟件設(shè)計(jì)4.1 匯編語言的構(gòu)成154.1.1 匯編語言的格式154.1.2 常用偽指令164.2 主要指令的介紹174.3 幾個(gè)主要的子程序17第五章 結(jié)論5.1畢業(yè)設(shè)計(jì)所做的工作185.2 系統(tǒng)存在問題及改進(jìn)方案18致謝19參考文獻(xiàn)20附錄120附錄223電路圖24第一章 單片機(jī)11 單片機(jī)簡介在一片集成電路芯片上集成微處理器、存儲器、I/O接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)。單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價(jià)錢也是低的,一般不超過10元即可.用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影!.它主要是作為控制部分的核心部件。它是一種在線式實(shí)時(shí)控制計(jì)算機(jī),在線式就是現(xiàn)場控制,需要的是有較強(qiáng)的抗干擾能力,較低的成本,這也是和離線式計(jì)算機(jī)的(比如家用PC)的主要區(qū)別。 單片機(jī)是靠程序的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大力氣才能做到的,有些則是花大力氣也很難做到的。一個(gè)不是很復(fù)雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機(jī),結(jié)果就會有天壤之別!只因?yàn)閱纹瑱C(jī)的通過你編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!1.1.1 單片機(jī)的特點(diǎn)一、 控制性能和可靠性能高單片機(jī)是為滿足工業(yè)控制而設(shè)計(jì)的,所以實(shí)時(shí)控制功能特別強(qiáng),其CPU可以對I/O端口直接進(jìn)行操作,位操作能力更是其他計(jì)算機(jī)無法比擬的。另外,由于CPU 、存儲器I/O接口集成在同一芯片內(nèi),各部件間的連接緊湊,數(shù)據(jù)在傳送時(shí)受干擾的影響較小,且不易受環(huán)境條件的影響,所以單片機(jī)可靠性非常高。 二、體積小、價(jià)格低、易于產(chǎn)品化 每片單片機(jī)芯片即是一臺完整的微型計(jì)算機(jī),對于批量大的專用場合,一方面可以在眾多的單片機(jī)品種間進(jìn)行匹配選擇,同時(shí)還可以專門進(jìn)行芯片設(shè)計(jì),使芯片功能與應(yīng)用具有良好的對應(yīng)關(guān)系。在單片機(jī)產(chǎn)品的引腳封裝方面,有的單片機(jī)引腳已減少到8個(gè)或更少,從而使應(yīng)用系統(tǒng)的印制板減小、接插件減少、安裝簡單方便。 1.1.2 單片機(jī)的應(yīng)用1.在智能儀器儀表上的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于 儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、 厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智 能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測量設(shè)備(功率計(jì),示波器,各種分析儀)。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)成二級控制系統(tǒng)等。3.在家用電器中的應(yīng)用可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯褒、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門,無所不在。4.在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機(jī)等。5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。此外,單片機(jī)在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。第二章 總體方案設(shè)計(jì)2.1 系統(tǒng)分析基于單片機(jī)系統(tǒng)的數(shù)字鐘的基本結(jié)構(gòu)如下圖 所示。從圖中可以看出, 對于一個(gè)最簡單的數(shù)字鐘而言,除了輸入控制方法具備數(shù)字鐘自身的特點(diǎn)之外,LED 顯示模塊和其它的操作均是單片機(jī)的通用方法。由上圖可以看出數(shù)字鐘的主要功能模塊分為3 類: 1. 輸入控制是指在一定要求下,采取按鍵的控制方式來實(shí)現(xiàn)數(shù)字鐘不同功能的轉(zhuǎn)換,以及控制指令以匯編語言方式傳送到單片機(jī)。2. LED 數(shù)碼顯示是指單片機(jī)將需要顯示的數(shù)據(jù)發(fā)送到LED 顯示模塊,并控制LED 顯示模塊按照一定的格式顯示的功能。3. 其它功能是指在實(shí)現(xiàn)數(shù)字鐘的計(jì)時(shí)和顯示的基本功能的基礎(chǔ)上通過輸入控制功能的切換來實(shí)現(xiàn)倒計(jì)時(shí)、秒表和鬧鐘定時(shí)等功能。而晶振電路都是所有單片機(jī)系統(tǒng)的必備部分,復(fù)位電路則在很多的時(shí)候也經(jīng)常用到,極少的特殊情況下可以不用復(fù)位電路,其作用是在系統(tǒng)運(yùn)行有問題的時(shí)候可以通過人工復(fù)位的辦法進(jìn)行初始化,使之能夠重新從頭開始執(zhí)行程序,使系統(tǒng)運(yùn)行再進(jìn)入正常的狀態(tài)。 2.2 單片機(jī)的選擇一個(gè)完整的數(shù)字鐘電路相當(dāng)于一個(gè)簡單的單片機(jī)系統(tǒng),該系統(tǒng)由輸入脈沖電路、單片機(jī)、晶振和復(fù)位電路、LED 顯示電路幾大部分組成。當(dāng)中除了單片機(jī)是集成的IC 芯片,而其它的幾個(gè)部分則需根據(jù)應(yīng)用要求而自行設(shè)計(jì)。單片機(jī)又分為帶有片內(nèi)存儲器和不帶片內(nèi)存儲器兩種,由片內(nèi)存儲器的容量十分有限,往往都比較小,在一些簡單的系統(tǒng)應(yīng)用里可能會綽綽有余,要是設(shè)計(jì)的是稍為復(fù)雜一點(diǎn)的系統(tǒng)就會顯得捉襟見肘,此時(shí)就需要對存儲器進(jìn)行片外的擴(kuò)展,到底選用哪一種芯片則由用戶根據(jù)需要和成本來進(jìn)行衡量和選定。對于本設(shè)計(jì)系統(tǒng)而言,選擇帶有片內(nèi)RAM 和ROM 的MSC-8051/8752 已經(jīng)足夠應(yīng)付對所有數(shù)據(jù)的讀取應(yīng)用,也可選用容量稍為大一點(diǎn)的8752 來設(shè)計(jì),以便今后可以增加其它的控制功能,便于擴(kuò)展。第三章 系統(tǒng)硬件設(shè)計(jì)3.1 硬件系統(tǒng)設(shè)計(jì)一個(gè)單片機(jī)微處理器的硬件電路設(shè)計(jì)包括兩部分:一是系統(tǒng)擴(kuò)充,即單片機(jī)內(nèi)部如ROM、RAM、I/O 口、計(jì)數(shù)器中斷系統(tǒng)等容量不夠用時(shí),必須在外部進(jìn)行擴(kuò)充,選擇適當(dāng)?shù)臄U(kuò)充IC,設(shè)計(jì)相容的電路。二是系統(tǒng)裝置,即按照系統(tǒng)功能要求配備外圍設(shè)備,如鍵盤、顯示器、打印機(jī)、A/D 轉(zhuǎn)換器、D/A 轉(zhuǎn)換器、串行通信接口,設(shè)計(jì)合適的接口電路。硬件設(shè)計(jì)需要考慮下列幾點(diǎn): 1. 硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件一并考慮。軟件有執(zhí)行的功能盡可能由軟件來執(zhí)行,以簡化硬件結(jié)構(gòu)。但必須注意,由軟件執(zhí)行硬件的功能,其響應(yīng)時(shí)間比直接使用硬件要長,且占用CPU 時(shí)間。2. 整個(gè)系統(tǒng)器件盡可能做到性能匹配。例如選用石英振蕩器頻率較高時(shí),應(yīng)選擇存取速度較快的IC;選擇CMOS 單片機(jī)構(gòu)成低功耗系統(tǒng)時(shí),系統(tǒng)所有的IC 都應(yīng)該選擇低功耗的IC。3. 可靠性及抗干擾設(shè)計(jì)是硬件設(shè)計(jì)極其重要的部分,包括器件選擇、電路板布線、通道隔離等。3.2 單片機(jī)結(jié)構(gòu)及其引腳80C51單片機(jī)由微處理器(含運(yùn)算器和控制器)、存儲器、I/O口以及特殊功能寄存器SFR(圖中加黑方框和相應(yīng)的標(biāo)識符表示)等構(gòu)成,內(nèi)部邏輯結(jié)構(gòu)如下圖所示。80C51系列單片采用雙列直插式(DIP),QFP44(Quad Flat Pack)和LCC(Leaded Chip Carrier)形式封裝。這里僅介紹常用的總線型DIP40封裝和非總線型DIP20封裝,如下圖所示。3.2.1端口線80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。3.2.2 電源線電源: 1. VCC - 芯片電源,接+5V;2. VSS - 接地端;3.2.3 控制線控制線:控制線共有4根,1. ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖 ALE功能:用來鎖存P0口送出的低8位地址 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。2. PSEN:外ROM讀選通信號。3. RST/VPD:復(fù)位/備用電源。 ST(Reset)功能:復(fù)位信號輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。4. EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 EA功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。3.3定時(shí)器/計(jì)數(shù)器80C51單片機(jī)片內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:T0和T1。它們即可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式。此外,T1還可以作為串行接口的波特率發(fā)生器。3.3.1 80C51對內(nèi)部定時(shí)器/計(jì)數(shù)器的控制80C51單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式,TXON用于控制其啟動和中斷申請 。一、工作方式寄存器TMOD工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低4位用于T0,高4位用于T1GATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TRO或TR1為1,就可以啟動定時(shí)/計(jì)數(shù)器工作:GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引角INTO或INT1也為高電平時(shí),才能啟動定時(shí)/計(jì)數(shù)器工作。 即此時(shí)定時(shí)器的啟動條件,加上了INT0或INT1引腳為高電平這一條件。C/T:定時(shí)/計(jì)數(shù)模式選擇位。C/T=0為定時(shí)模式;C/T=1為計(jì)數(shù)模式。M1M01:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有4種工作方式,由M1M0進(jìn)行設(shè)置。如下表:表 定時(shí)/計(jì)數(shù)器工作方式設(shè)置表M1MO工作方式說明00方式013位定時(shí)/計(jì)數(shù)器01方式116位定時(shí)/計(jì)數(shù)器10方式28位自動重裝定時(shí)/計(jì)數(shù)器11方式3T0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1此方式停止計(jì)數(shù)應(yīng)注意的是,由于TMOD不能進(jìn)行位尋址,所以只能用字節(jié)指令設(shè)置定時(shí)/計(jì)數(shù)器的工作方式。CPU復(fù)位時(shí)TMOD所有位清0,一般應(yīng)重新設(shè)置。二、 控制寄存器TCONTCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動和中斷申請。TF1(TCON.7):定時(shí)/計(jì)數(shù)器T1益處中斷請求標(biāo)志位。定時(shí)/計(jì)數(shù)器T1計(jì)數(shù)益處時(shí)由硬件自動置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動清0。T1工作時(shí),CPU可隨時(shí)查詢TF1的狀態(tài)。所以,TF1可用作查詢測試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1(TCON.6):定時(shí)/計(jì)數(shù)器T1運(yùn)行控制位。TR1置1時(shí),定時(shí)/計(jì)數(shù)器T1開始工作;TR1置0時(shí),定時(shí)/計(jì)數(shù)器T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動與停止。TF0(TCON.5):定時(shí)/計(jì)數(shù)器T0益處中斷請求標(biāo)志位,其功能 與TF1類同。TR0(TCON.4):定時(shí)/計(jì)數(shù)器T0運(yùn)行控制位,其功能與TR1類同。3.3.2工作方式80C51單片機(jī)定時(shí)/計(jì)數(shù)器T0有4種工作方式(方式0、1、2、3),T1有3種工作方式(方式0、1、2)。前3種工作方式,T0和T1除了所使用的寄存器、有關(guān)控制位、標(biāo)志位不同外,其他操作完全相同。為了簡化敘述,下面以定時(shí)/計(jì)數(shù)器T0為例進(jìn)行介紹。一、方式0當(dāng)TMOD的M1M0為00時(shí),定時(shí)/計(jì)數(shù)器工作于方式0方式0為13位計(jì)數(shù),有TL0的低5位(高3位未用)和TH0的高8位組成。TL0的低5位溢出時(shí)向TH0進(jìn)位,TH0溢出時(shí),位置TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請求。C/T-=0時(shí)為定時(shí)器模式,且有N=t/Tcy式中t為定時(shí)時(shí)間,N為計(jì)數(shù)個(gè)數(shù),Tcy為機(jī)器周期。通常,在定時(shí)/計(jì)數(shù)器的應(yīng)用中要根據(jù)計(jì)數(shù)個(gè)數(shù)求出送入TH1、TL1和TH0中的計(jì)數(shù)初值。計(jì)數(shù)初值計(jì)算的公式為X=213-N式中X為計(jì)數(shù)初值,計(jì)數(shù)個(gè)數(shù)為1時(shí),初值X為8191,計(jì)數(shù)個(gè)數(shù)為8192時(shí),初值X為0。即初值在81910范圍時(shí),計(jì)數(shù)范圍為18192。另外,定時(shí)器的初值還可以采用計(jì)數(shù)個(gè)數(shù)數(shù)直接取補(bǔ)法獲得。C/T=1時(shí)為計(jì)數(shù)模式,計(jì)數(shù)脈沖是T0引角上的外部脈沖。門控位GATE具有特殊的作用。當(dāng)GATE=0時(shí),經(jīng)反相后使或門輸出為1,此時(shí)僅由TR0控制與門的開啟,與門輸出1時(shí),控制開關(guān)接通,計(jì)數(shù)開始;當(dāng)GATE=1時(shí),由INT0控制或門的輸出,此時(shí)控制與門的開啟由INT0和TR0共同控制。當(dāng)TR0=1時(shí),INT0引腳的高電平啟動計(jì)數(shù),INT0引腳的低電平停止計(jì)數(shù)。這種方式可以用來測量INT0引腳上正脈沖的寬度。應(yīng)說明的是,方式0采用13位計(jì)數(shù)器是為了早期的產(chǎn)品兼容,計(jì)數(shù)初值的高8為和低5為的確定比較麻煩,所以在實(shí)際應(yīng)用中常由16位的方式1取代。二、方式1當(dāng)M1M0為01時(shí),定時(shí)/計(jì)數(shù)器工作于方式1,其電路結(jié)構(gòu)和操作方法與方式0基本相同,它們的差別僅在于計(jì)數(shù)的位數(shù)不同。方式1的計(jì)數(shù)位數(shù)是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計(jì)數(shù)器。計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為X=216-N可見,計(jì)數(shù)個(gè)數(shù)為1時(shí),初值X為65535,計(jì)數(shù)個(gè)數(shù)為65536時(shí),初值X為0。即初值在655350范圍時(shí),計(jì)數(shù)范圍為165536。三、 方式2當(dāng)M1M0為10時(shí),定時(shí)/計(jì)數(shù)器工作方式2。方式2為自動重裝初值的8位計(jì)數(shù)方式。TH0為8位初值寄存器。當(dāng)TL0寄滿溢出時(shí),由硬件使TF0置1,向CPU發(fā)出中斷請求,并將TH0中的計(jì)數(shù)初值自動送入TL0。TL0從初值重新進(jìn)行加1計(jì)數(shù)。周而復(fù)始,直至TR0=0才會停止。計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為X=28-N可見,計(jì)數(shù)個(gè)數(shù)為1時(shí),初值X為255;計(jì)數(shù)個(gè)數(shù)為256時(shí),初值X為0。即初值在2550范圍時(shí),計(jì)數(shù)范圍為1256。由于工作方式2時(shí)省去了用戶軟件中重裝常數(shù)的程序,所以特別適合于用作較精確的脈沖信號發(fā)生器。 四、 方式3方式3只適用于定時(shí)/計(jì)數(shù)器T0,定時(shí)器T1處于方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)。當(dāng)T0的方式字段中的M1M0為11時(shí),T0被設(shè)置為方式3。方式3時(shí),T0分成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,TL0使用T0的所有控制位:C/T、GATE、TR0、TF0和INT0。當(dāng)TL0計(jì)數(shù)溢出時(shí),由硬件使TF0置1,向CPU發(fā)出中斷請求。而TH0固定為定時(shí)方式(不能進(jìn)行外部計(jì)數(shù)),并且借用了T1的控制位TR1、TF1。因此,TH0的啟、停受TR1控制,TH0的溢出將置位TF1。在T0方式3時(shí),因T1的控制位C/T、M1M0并未交出,原則上T1仍可按方式0、1、2工作,只是不能使用運(yùn)行控制位TR1和溢出標(biāo)志位TF1,也不能發(fā)出中斷請求信號。方式設(shè)定后,T1將自動運(yùn)行,如果要停止工作,只需將其定義為方式3即可。在單片機(jī)的串行通信應(yīng)用中,T1常作為串行接口波特率發(fā)生器,且工作于方式2。這時(shí)將T0設(shè)置成方式3,可以使單片機(jī)的定時(shí)/計(jì)數(shù)器資源得到充分利用。34晶振和復(fù)位電路一個(gè)單片機(jī)系統(tǒng)的運(yùn)行必須要有穩(wěn)定的時(shí)鐘脈沖來作為前提條件,而其可靠地運(yùn)行則必須要有可靠的復(fù)位電路來作為保證。3.4.1 晶振電路晶振的連接電路圖如下圖所示。石英晶振起振后要能在XTAL2 線上輸出一個(gè)3V 左右的正弦波,以便使MSC-51 片內(nèi)的OSC 電路按石英晶振相同頻率自激振蕩。通常,OSC 的輸出時(shí)鐘頻率fosc 為0.5M-16MHz,典型值為12M 或11.0592MHz,在本設(shè)計(jì)系統(tǒng)中采用12M 的晶振。電容C01 和C02 可以幫助起振,典型值為30pF, 在本設(shè)計(jì)系統(tǒng)中選用20pF,調(diào)節(jié)它們可以達(dá)到微調(diào)fosc 的目的。3.4.2 復(fù)位電路復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。 35校時(shí)(功能切換)電路校時(shí)電路,同時(shí)也是功能切換電路,一般都是由按鍵的輸入來完成,而在單片機(jī)的內(nèi)部執(zhí)行的過程中對按鍵的響應(yīng)又可以分為查詢和中斷兩種方式,采用查詢的方式按鍵的連線通??梢越拥酵ㄓ肐/O 口(P0.0-P2.7)的任意一個(gè)口上面(P3 口一般作為第二種控制功能來使用),而采用中斷的方式則按鍵的連線只能連到/INT0(P3.2)或是/INT1(P3.3)上面去。本設(shè)計(jì)系統(tǒng)采用的是查詢方式,其電路圖如下圖所示。36 LED顯示電路在單片機(jī)系統(tǒng)中,LED 數(shù)碼管顯示是反映系統(tǒng)輸出和操縱輸入的有效器件。數(shù)碼管具備數(shù)字接口,可以很方便地和單片機(jī)系統(tǒng)連接;數(shù)碼管的體積小、重量輕,并且功耗低,是一種理想的顯示單片機(jī)數(shù)據(jù)輸出的器件。361 LED顯示的基本原理用單片機(jī)驅(qū)動LED 數(shù)碼管有很多種方法,按顯示分,有靜態(tài)顯示和動態(tài)顯示,按譯碼方式可分為硬件和軟件譯碼。靜態(tài)顯示是顯示驅(qū)動電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后不再控制LED,直到下次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的CPU 時(shí)間少。動態(tài)顯示要CPU 時(shí)刻對顯示器件進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用CPU 時(shí)間多。這兩種顯示方式各有利弊:靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的CPU 時(shí)間,但每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動電路,使用的電路硬件較多;動態(tài)顯示雖然有閃爍感,占用的CPU 時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。 37 音頻驅(qū)動在本設(shè)計(jì)系統(tǒng)中有定時(shí)鬧鐘的功能,在鬧鐘功能啟動并且定時(shí)時(shí)間到的時(shí)候會自動啟動,喇叭可以發(fā)出一段音樂的鈴聲。由于單片機(jī)的I/O 輸出口的驅(qū)動能力不足以驅(qū)動喇叭發(fā)出足夠大的聲音,所以要用一片功率放大芯片(LM386)來作為外部的驅(qū)動。38 系統(tǒng)整體電路(附錄2)第四章 軟件設(shè)計(jì)41匯編語言的構(gòu)成411匯編語言的格式80C51單片機(jī)匯編語言的語句行由四個(gè)字段組成,匯編程序能對這種格式正確地進(jìn)行識別。這四個(gè)字段的格式為:標(biāo)號:操作碼 操作數(shù);注釋括號內(nèi)的部分可以根據(jù)實(shí)際情況取舍。每個(gè)字段之間要用分隔符分隔,可以用作分隔符分隔,可以用作分隔符的符號有空格、冒號、逗號、分號等。如:LOOP:MOV A,#7FH;A7FH一、標(biāo)號標(biāo)號是語句地址的標(biāo)志符號,用于引導(dǎo)對該語句的非順序訪問。有關(guān)標(biāo)號的規(guī)定為:(1)標(biāo)號由18個(gè)ASCII字符組成。第一個(gè)字符必須是字母,其余字符可以是字母、數(shù)字或其他特定字符;(2)不能使用該匯編語言已經(jīng)定義了的符號作為標(biāo)號。如指令助記符、寄存器符號名稱等;(3)標(biāo)號后邊必須跟冒號。二、操作碼操作碼用語規(guī)定語句執(zhí)行的操作。它是匯編語句中唯一不能空缺的部分。它用指令助記符表示。三、操作數(shù)操作數(shù)用于給指令的操作提供數(shù)據(jù)或地址。在一條匯編語句中操作數(shù)可能是空缺的,也可能包括一項(xiàng),還可能包括兩項(xiàng)或三項(xiàng)。各操作數(shù)間以逗號分隔。操作數(shù)字段的內(nèi)容可能包括以下幾種情況:(1)工作寄存器名(2)特殊功能寄存器名(3)標(biāo)號名(4)常數(shù)(5)符號“”,表示程序計(jì)數(shù)器PC的當(dāng)前值(6)表達(dá)式四、注釋注釋不屬于匯編語句的功能部分,它只是對語句的說明。注釋字段可以增加程序的可讀性,有助于編程人員的閱讀和維護(hù)。注釋字段必須以分號“;”開頭,長度不限,當(dāng)一行書寫不下時(shí),可以換行接著書寫,但換行時(shí)應(yīng)注意在開頭使用分號“;”。五、數(shù)據(jù)的表示形式80C51匯編語言的數(shù)據(jù)可以與以下幾種表示形式:(1)二進(jìn)制數(shù),末尾以字母B標(biāo)識。(2)十進(jìn)制數(shù),末尾以字母D標(biāo)識或?qū)⒆帜窪省略。(3)十六進(jìn)制數(shù),末尾以字母H標(biāo)識。(4)ASCII碼,以單引號括起來標(biāo)識。412常用偽指令偽指令是匯編程序能夠識別并對匯編過程進(jìn)行某種控制的匯編命令。常用的有以下幾種:一、起始地址設(shè)定偽指令ORG格式為:ORG 表達(dá)式該指令的功能是向匯編程序說明下面緊接的程序段或數(shù)據(jù)段存在的起始地址。表達(dá)式通常為十六進(jìn)制地址,也可以是已定義的標(biāo)號地址。在每一個(gè)匯編語言源程序的開始,都要設(shè)置一條ORG偽指令來指定該程序在存儲器中存放的起始位置。若省略O(shè)RG偽指令,則該程序段從000H單元開始存放。在一個(gè)源程序中,可以多次使用ORG偽指令規(guī)定不同程序段或數(shù)據(jù)段存放的起始地址,但要求地址值由小到大依序排列。不允許空間重疊。二、匯編結(jié)束偽指令END格式為:END該指令的功能是結(jié)束匯編。匯編程序遇到END偽指令后即結(jié)束匯編。處于END之后的程序,匯編程序?qū)⒉惶幚?。三、字?jié)數(shù)據(jù)定義偽指令DB格式為:標(biāo)號:DB 字節(jié)數(shù)據(jù)表功能是從標(biāo)號指定的地址單元開始,在程序存儲器中定義字節(jié)數(shù)據(jù)。四、字?jǐn)?shù)據(jù)定義偽指令DW格式為:標(biāo)號: DW 字?jǐn)?shù)據(jù)表功能是從標(biāo)號指定的地址單元開始,在程序存儲器中定義字?jǐn)?shù)器。五、空間定義偽指令DS格式為:標(biāo)號: DS 表達(dá)式功能是從標(biāo)號指定的地址單元開始,在程序存儲器中保留由表達(dá)式所指定的個(gè)數(shù)的存儲單元作為備用的空間,并都填以零值。六、賦值偽指令EQU格式為:符號名 EQU 表達(dá)式功能是將表達(dá)式的值或特定的某個(gè)匯編符號定義為一個(gè)指定的符號名。七、為地址符號定義偽指令 BIT格式為:符號名 BIT 為地址表達(dá)式功能是將位地址賦給指定的符號名。42 主要指令的介紹MOV direct, #data;其功能是把立即數(shù)data 送入direct 存儲單元中; MOV A, derect;其功能是把direct 存儲單元中的值送入累加器A 中; ADD A,#data;其功能是把立即數(shù)和累加器A 中的值相加,并把兩數(shù)之和保留在累加器A 中; INC Ri;這是一條加1 指令,用于使源地址為Ri 中的值的RAM 單元中的值加1; DIV AB;這是除法指令,其功能是把累加器A 中的8 位無符號數(shù)除以寄存器B 中的8 位無符號數(shù),所得商的整數(shù)部分存放在累加器A 中,余數(shù)保留在B 中; CJNE A,#data,rel;其功能是把累加器A 的值和立即數(shù)data 進(jìn)行比較:若累加器A 中的值和立即數(shù)相等,則程序不發(fā)生轉(zhuǎn)移,繼續(xù)執(zhí)行原程序,若累加器A 中的值和立即數(shù)不相等,則程序發(fā)生轉(zhuǎn)移; DJNZ direct,rel;其功能是先把direct 中的值減1,然后判斷direct 中的值是否為零,若不為零,則程序發(fā)生轉(zhuǎn)移,若為零則程序不轉(zhuǎn)移,繼續(xù)執(zhí)行; LCALL addr16;其為程序調(diào)用指令,一般為調(diào)用子程序; SWAP A ;其功能是把累加器A 中的高4 位和低4 位相互交換; ORL A,Ri;其功能是把累加器A 中的值和源地址為Ri 中的值的RAM 單元中的值進(jìn)行邏輯或運(yùn)算,并把所得結(jié)果存入累加器A 中;43 幾個(gè)主要的子程序(附錄1)第五章 結(jié)論本課題“基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)” 要求有基本的時(shí)鐘顯示, 輸入控制部分由按鍵輸入來實(shí)現(xiàn),可以實(shí)現(xiàn)校時(shí)和一些輔助功能的切換, 顯示部分就用數(shù)碼管LED 來顯示,鬧鐘開啟的話定時(shí)時(shí)間一到就發(fā)出一段音樂響聲,還有倒計(jì)時(shí)和秒表的功能。通過上述的所做硬件和軟件的設(shè)計(jì)工作,其要求功能可以實(shí)現(xiàn),設(shè)計(jì)的任務(wù)業(yè)基本完成。在本次畢業(yè)設(shè)計(jì)的過程中,從查找資料開始,到整個(gè)系統(tǒng)整體方案的確定,到最后論文的撰寫,基本上都是由我自己一個(gè)人獨(dú)立完成的。雖然最后的整個(gè)系統(tǒng)還是比較簡單,但畢竟也算是一個(gè)完整的單片機(jī)最小系統(tǒng),而我所做的一切工作都是圍繞著系統(tǒng)開發(fā)的這一中心來進(jìn)行的, 也是我第一次完成一項(xiàng)設(shè)計(jì)性的工作,也讓我學(xué)到了很多的經(jīng)驗(yàn),收獲也頗多。51 畢業(yè)設(shè)計(jì)所做的工作(1)系統(tǒng)硬件電路的設(shè)計(jì); (2)用匯編語言編寫程序,實(shí)現(xiàn)計(jì)時(shí)顯示和其他功能52 系統(tǒng)存在問題及改進(jìn)方案由于自身水平有限,考慮問題也不是很全面,在整個(gè)系統(tǒng)的設(shè)計(jì)當(dāng)中難免會有疏漏之處,最后的整個(gè)系統(tǒng)還不是很完善,有時(shí)候運(yùn)行不是很穩(wěn)定致謝在整個(gè)畢業(yè)設(shè)計(jì)的過程中,我的指導(dǎo)老師周江濤老師也給了我很大的幫助, 在這里我首先對周老師表示感謝,還有就是在編寫的也有同學(xué)也給我很大的幫助并且解決了一些關(guān)鍵的細(xì)節(jié)問題我在這里對他也表示十分的感謝。最后我對所有曾經(jīng)幫助過我的老師和同學(xué)們也表示衷心的感謝!參考文獻(xiàn):1 胡漢才.單片機(jī)原理及其接口技術(shù). 北京:清華大學(xué)出版社, 2001.6 ,56-60; 80-113; 120-124 2 張振榮、晉明武、王毅平.80C51單片機(jī)原理及實(shí)用技術(shù). 北京:人民郵電出版社,2000.8 1-5 3 求是科技、斳達(dá).單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航. 北京:人民郵電出版社,2003.10 2-6 4 何立民.單片機(jī)應(yīng)用技術(shù)選編(10).北京:北京航空航天大學(xué)出版社,2004.3 5 張洪潤,易濤.單片機(jī)應(yīng)用技術(shù)教程.北京:清華大學(xué)出版社,2003.12 6 趙曉安、耿恒山、楊鵬.80C51 單片機(jī)原理及應(yīng)用. 天津:天津大學(xué)出版社,2001.3 7 高鋒.單片微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及應(yīng)用技術(shù). 北京:機(jī)械工業(yè)出版社,2004.4 8 蔣力培、曹建樹、付小美.單片微機(jī)系統(tǒng)實(shí)用教程.北京:機(jī)械工業(yè)出版社,2004.2 9 鄧紅、張?jiān)?單片機(jī)實(shí)驗(yàn)與應(yīng)用設(shè)計(jì)教程. 北京:冶金工業(yè)出版社,2004.5 附錄1:程序1.校時(shí)循環(huán)程序LOOP: JB P0.0,N2 ;k1(秒)按了?不是則跳至N2 檢查P0.1 LCALL DELAY ;消除抖動MOV A,2CH ;將秒寄存器的值載入A ADD A,#01 ;A 的值加1 DA A ;做十進(jìn)位調(diào)整MOV 2CH,A ;將A 的值存入秒寄存器CJNE A,#60H,N1 ;是否等于60 秒?不是則跳至N1 MOV 2CH,#00 ;是則清除秒寄存器為0 N1: JNB P0.0,$ ;k1(秒)放開了? LCALL DELAY ;消除抖動N2: JB P0.1,N4 ;k2(分)按下了?不是則跳至N4 檢;查k3 LCALL DELAY ;消除抖動MOV A,2BH ;將分寄存器的值載入A ADD A,#01 ;A 的值加1 DA A ;做十進(jìn)位調(diào)整MOV 2BH,A ;將A 的值存入分寄存器CJNE A,#60H,N3 ;是否等于60 分?不是則跳至N1 MOV 2BH,#00 ;是則清除分寄存器的值為0 N3: JNB P0.1,$ ;k2(分)放開? LCALL DELAY ;消除抖動N4: JB P0.2,LOOP ;k3(時(shí))按下?不是則跳至LOOP LCALL DELAY ;消除抖動MOV A,2AH ;將時(shí)寄存器的值載入A ADD A,#01 ;A 的值加1 DA A ;做十進(jìn)位調(diào)整MOV 2AH,A ;將A 的值存入時(shí)寄存器CJNE A,#24H,N5 ;是否等于24 小時(shí)?不是則跳至N5 MOV 2AH,#00 ;是則清除時(shí)寄存器的值為0 N5: JNB P0.2,$ ;k3(時(shí))放開了? LCALL DELAY ;消除抖動JMP LOOP ;跳回循環(huán)2. 計(jì)時(shí)子程序CLOCK: MOV A,2CH ;(2CH)為秒寄存器ADD A,#1 ;加1 秒DA A ;做十進(jìn)制調(diào)整MOV 2CH,A ;存入秒寄存器CJNE A,#60H,X4 ;是否超過60 秒?不是則跳至X4 MOV 2CH,#00 ;是則清除為0 MOV A,2BH ;(2BH)為分寄存器ADD A,#1 ;加1 分DA A ;做十進(jìn)制調(diào)整MOV 2BH,A ;存入分寄存器CJNE A,#60H,X4 ;是否超過60 分?不是則跳至X4 MOV 2BH,#00 ;是則清除為0 MOV A,2AH ;(2AH)為時(shí)寄存器ADD A,#1 ;加1 小時(shí)DA A ;做十進(jìn)制調(diào)整MOV 2AH,A ;存入時(shí)寄存器CJNE A,#24H,X4 ;是否超過24 小時(shí)?不是則跳至X4 MOV 2AH,#00 ;是則清除為0 X4: RET ; 計(jì)時(shí)子程序返回3. 掃描和顯示子程序SCAN: MOV R0,#28H ;28H 為掃描指針I(yè)NC R0 ;掃描指針加1 CJNE R0,#6,X3 ;掃描完6 個(gè)顯示器?不是則跳至X3 MOV R0,#0 ;是則掃描指針為0 X3: MOV A,R0 ;掃描指針載入A ADD A,#20H ;A 加常數(shù)20H(顯示寄存器地址)=個(gè)時(shí)間顯示區(qū);地址MOV R1,A ;存入R1=各時(shí)間顯示地址MOV A,R0 ;掃描指針存入A SWAP A ;將A 高低4 位交換(P1 高4 位為掃描值,低4 ;位為顯示數(shù)據(jù)值) ORL A,R1 ;掃描值+顯示值MOV P1,A ;輸出至P1 RET ;掃描子程序返回DISP: MOV R1, #20H ;20H)為顯示寄存器,R1=20H MOV A, 2CH ;將秒寄存器的值存入A MOV B, #10H ;設(shè)置B 累加器的值為10H DIV AB ; A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入B MOV R1, B ;將B 的值存入(20H) INC R1 ;R1=21H MOV R1,A ;將A 的值存入(21H) INC R1 ;R1=22H MOV A, 2BH ;將分寄存器的值存入A MOV B, #10H ;設(shè)置B 累加器的值為10H DIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入BMOV R1, B ;將B 的值存入(22H) INC R1 ;R1=23H MOV R1, A ;將A 的值存入(23H) INC R1 ;R1=24H MOV A, 2AH ;將時(shí)寄存器的值存入A MOV B, #10H ;設(shè)置B 累加器的值為10H DIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入B MOV R1, B ;將B 的值存入(24H) INC R1 ;R1=25H MOV R1, A ;將A 的值存入(25H) RET ;顯示子程序返回4. 中斷子程序TIM0: MOV TH0,#0F0H ;重設(shè)計(jì)時(shí)初值MOV TL0,#60H PUSH ACC ;將A 的值暫存于堆棧PUSH PSW ;將PSW 的值暫存于堆棧DJNZ R4,X2 ;計(jì)時(shí)1 秒MOV R4,#250 ;重裝中斷此數(shù)LCALL CLOCK ;調(diào)用計(jì)時(shí)子程序CLOCK LCALL DISP ;調(diào)用顯示子程序X2: LCALL SCAN ;調(diào)用掃描子程序POP PSW ;至堆棧取回PSW 的值POP ACC ;至堆棧取回ACC 的值RETI ;中斷返回附錄2:電路圖系統(tǒng)整體電路圖第 24 頁 共 29 頁- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 單片機(jī) 多功能 數(shù)字 設(shè)計(jì)
鏈接地址:http://www.szxfmmzy.com/p-6653266.html