基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)
《基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)(29頁珍藏版)》請(qǐng)?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ī)簡(jiǎn)介1 1.1.1單片機(jī)的特點(diǎn)1 1.1.2 單片機(jī)的應(yīng)用 1 第二章 總體方案設(shè)計(jì) 2.1 系統(tǒng)分析3 2.2 單片機(jī)的選擇4 第三章 系統(tǒng)硬件設(shè)計(jì) 3.1 硬件系統(tǒng)設(shè)計(jì)5 3.2單片機(jī)結(jié)構(gòu)及其引腳6 3.2.1 端口線7 3.2.2 電源線7 3.2.3 控制線7 3.3 定時(shí)器/計(jì)數(shù)器8 3.3.1 MCS-51對(duì)內(nèi)部定時(shí)器/計(jì)數(shù)器的控制8 3.3.2 工作方式8 3.4 晶振和復(fù)位電路11 3.4.1 晶振電路11 3.4.2 復(fù)位電路11 3.5 校時(shí)(功能切換)電路13 3.6 LED顯示電路13 3.6.1 LED顯示的基本原理13 3.7 音頻驅(qū)動(dòng)14 3.8 系統(tǒng)整體電路14 第四章 軟件設(shè)計(jì) 4.1 匯編語言的構(gòu)成15 4.1.1 匯編語言的格式15 4.1.2 常用偽指令16 4.2 主要指令的介紹17 4.3 幾個(gè)主要的子程序17 第五章 結(jié)論 5.1畢業(yè)設(shè)計(jì)所做的工作18 5.2 系統(tǒng)存在問題及改進(jìn)方案18 致謝19 參考文獻(xiàn)20 附錄120 附錄223 電路圖24 第一章 單片機(jī) 1.1 單片機(jī)簡(jiǎn)介 在一片集成電路芯片上集成微處理器、存儲(chǔ)器、I/O接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)。 單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。 單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲(chǔ)器件,不同的是它的這些部件性能都相對(duì)我們的家用電腦弱很多,不過價(jià)錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影!......它主要是作為控制部分的核心部件。 它是一種在線式實(shí)時(shí)控制計(jì)算機(jī),在線式就是現(xiàn)場(chǎng)控制,需要的是有較強(qiáng)的抗干擾能力,較低的成本,這也是和離線式計(jì)算機(jī)的(比如家用PC)的主要區(qū)別。 單片機(jī)是靠程序的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大力氣才能做到的,有些則是花大力氣也很難做到的。一個(gè)不是很復(fù)雜的功能要是用美國(guó)50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國(guó)70年代成功投放市場(chǎng)的系列單片機(jī),結(jié)果就會(huì)有天壤之別!只因?yàn)閱纹瑱C(jī)的通過你編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性! 1.1.1 單片機(jī)的特點(diǎn) 一、 控制性能和可靠性能高 單片機(jī)是為滿足工業(yè)控制而設(shè)計(jì)的,所以實(shí)時(shí)控制功能特別強(qiáng),其CPU可以對(duì)I/O端口直接進(jìn)行操作,位操作能力更是其他計(jì)算機(jī)無法比擬的。另外,由于CPU 、存儲(chǔ)器I/O接口集成在同一芯片內(nèi),各部件間的連接緊湊,數(shù)據(jù)在傳送時(shí)受干擾的影響較小,且不易受環(huán)境條件的影響,所以單片機(jī)可靠性非常高。 二、體積小、價(jià)格低、易于產(chǎn)品化 每片單片機(jī)芯片即是一臺(tái)完整的微型計(jì)算機(jī),對(duì)于批量大的專用場(chǎng)合,一方面可以在眾多的單片機(jī)品種間進(jìn)行匹配選擇,同時(shí)還可以專門進(jìn)行芯片設(shè)計(jì),使芯片功能與應(yīng)用具有良好的對(duì)應(yīng)關(guān)系。在單片機(jī)產(chǎn)品的引腳封裝方面,有的單片機(jī)引腳已減少到8個(gè)或更少,從而使應(yīng)用系統(tǒng)的印制板減小、接插件減少、安裝簡(jiǎn)單方便。 1.1.2 單片機(jī)的應(yīng)用 1.在智能儀器儀表上的應(yīng)用 單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于 儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、 厚度、角度、長(zhǎng)度、硬度、元素、壓力等物理量的測(cè)量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智 能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測(cè)量設(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)成二級(jí)控制系統(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ī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動(dòng)電話,集群移動(dòng)通信,無線電對(duì)講機(jī)等。 5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用 單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。 此外,單片機(jī)在工商,金融,科研、教育,國(guó)防航空航天等領(lǐng)域都有著十分廣泛的用途。 第二章 總體方案設(shè)計(jì) 2.1 系統(tǒng)分析 基于單片機(jī)系統(tǒng)的數(shù)字鐘的基本結(jié)構(gòu)如下圖 所示。從圖中可以看出, 對(duì)于一個(gè)最簡(jiǎn)單的數(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è)簡(jiǎn)單的單片機(jī)系統(tǒng),該系統(tǒng)由輸入脈沖電路、單片機(jī)、晶振和復(fù)位電路、LED 顯示電路幾大部分組成。當(dāng)中除了單片機(jī)是集成的IC 芯片,而其它的幾個(gè)部分則需根據(jù)應(yīng)用要求而自行設(shè)計(jì)。 單片機(jī)又分為帶有片內(nèi)存儲(chǔ)器和不帶片內(nèi)存儲(chǔ)器兩種,由片內(nèi)存儲(chǔ)器的容量十分有限,往往都比較小,在一些簡(jiǎn)單的系統(tǒng)應(yīng)用里可能會(huì)綽綽有余,要是設(shè)計(jì)的是稍為復(fù)雜一點(diǎn)的系統(tǒng)就會(huì)顯得捉襟見肘,此時(shí)就需要對(duì)存儲(chǔ)器進(jìn)行片外的擴(kuò)展,到底選用哪一種芯片則由用戶根據(jù)需要和成本來進(jìn)行衡量和選定。 對(duì)于本設(shè)計(jì)系統(tǒng)而言,選擇帶有片內(nèi)RAM 和ROM 的MSC-8051/8752 已經(jīng)足夠應(yīng)付對(duì)所有數(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ǎn)化硬件結(jié)構(gòu)。但必須注意,由軟件執(zhí)行硬件的功能,其響應(yīng)時(shí)間比直接使用硬件要長(zhǎng),且占用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)算器和控制器)、存儲(chǔ)器、I/O口以及特殊功能寄存器SFR(圖中加黑方框和相應(yīng)的標(biāo)識(shí)符表示)等構(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口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。 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讀選通信號(hào)。 3. RST/VPD:復(fù)位/備用電源。 ① ST(Reset)功能:復(fù)位信號(hào)輸入端。 ② 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對(duì)內(nèi)部定時(shí)器/計(jì)數(shù)器的控制 80C51單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式,TXON用于控制其啟動(dòng)和中斷申請(qǐng) 。 一、工作方式寄存器TMOD 工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低4位用于T0,高4位用于T1 GATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TRO或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作:GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引角INTO或INT1也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。 即此時(shí)定時(shí)器的啟動(dòng)條件,加上了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 方式0 13位定時(shí)/計(jì)數(shù)器 01 方式1 16位定時(shí)/計(jì)數(shù)器 10 方式2 8位自動(dòng)重裝定時(shí)/計(jì)數(shù)器 11 方式3 T0分成兩個(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è)置。 二、 控制寄存器TCON TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。 TF1(TCON.7):定時(shí)/計(jì)數(shù)器T1益處中斷請(qǐng)求標(biāo)志位。定時(shí)/計(jì)數(shù)器T1計(jì)數(shù)益處時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢TF1的狀態(tài)。所以,TF1可用作查詢測(cè)試的標(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ù)器的啟動(dòng)與停止。 TF0(TCON.5):定時(shí)/計(jì)數(shù)器T0益處中斷請(qǐng)求標(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)志位不同外,其他操作完全相同。為了簡(jiǎn)化敘述,下面以定時(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ā)出中斷請(qǐng)求。 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。即初值在8191~0范圍時(shí),計(jì)數(shù)范圍為1~8192。另外,定時(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引腳的高電平啟動(dòng)計(jì)數(shù),INT0引腳的低電平停止計(jì)數(shù)。這種方式可以用來測(cè)量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。即初值在65535~0范圍時(shí),計(jì)數(shù)范圍為1~65536。 三、 方式2 當(dāng)M1M0為10時(shí),定時(shí)/計(jì)數(shù)器工作方式2。 方式2為自動(dòng)重裝初值的8位計(jì)數(shù)方式。TH0為8位初值寄存器。當(dāng)TL0寄滿溢出時(shí),由硬件使TF0置1,向CPU發(fā)出中斷請(qǐng)求,并將TH0中的計(jì)數(shù)初值自動(dòng)送入TL0。TL0從初值重新進(jìn)行加1計(jì)數(shù)。周而復(fù)始,直至TR0=0才會(huì)停止。計(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。即初值在255~0范圍時(shí),計(jì)數(shù)范圍為1~256。 由于工作方式2時(shí)省去了用戶軟件中重裝常數(shù)的程序,所以特別適合于用作較精確的脈沖信號(hào)發(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ā)出中斷請(qǐng)求。而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ā)出中斷請(qǐng)求信號(hào)。方式設(shè)定后,T1將自動(dòng)運(yùn)行,如果要停止工作,只需將其定義為方式3即可。 在單片機(jī)的串行通信應(yīng)用中,T1常作為串行接口波特率發(fā)生器,且工作于方式2。這時(shí)將T0設(shè)置成方式3,可以使單片機(jī)的定時(shí)/計(jì)數(shù)器資源得到充分利用。 3.4晶振和復(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ù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。 3.5校時(shí)(功能切換)電路 校時(shí)電路,同時(shí)也是功能切換電路,一般都是由按鍵的輸入來完成,而在單片機(jī)的內(nèi)部執(zhí)行的過程中對(duì)按鍵的響應(yīng)又可以分為查詢和中斷兩種方式,采用查詢的方式按鍵的連線通??梢越拥酵ㄓ肐/O 口(P0.0-P2.7)的任意一個(gè)口上面(P3 口一般作為第二種控制功能來使用),而采用中斷的方式則按鍵的連線只能連到/INT0(P3.2)或是/INT1(P3.3)上面去。本設(shè)計(jì)系統(tǒng)采用的是查詢方式,其電路圖如下圖所示。 3.6 LED顯示電路 在單片機(jī)系統(tǒng)中,LED 數(shù)碼管顯示是反映系統(tǒng)輸出和操縱輸入的有效器件。數(shù)碼管具備數(shù)字接口,可以很方便地和單片機(jī)系統(tǒng)連接;數(shù)碼管的體積小、重量輕,并且功耗低,是一種理想的顯示單片機(jī)數(shù)據(jù)輸出的器件。 3.6.1 LED顯示的基本原理 用單片機(jī)驅(qū)動(dòng)LED 數(shù)碼管有很多種方法,按顯示分,有靜態(tài)顯示和動(dòng)態(tài)顯示,按譯碼方式可分為硬件和軟件譯碼。 靜態(tài)顯示是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后不再控制LED,直到下次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的CPU 時(shí)間少。動(dòng)態(tài)顯示要CPU 時(shí)刻對(duì)顯示器件進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用CPU 時(shí)間多。 這兩種顯示方式各有利弊:靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的CPU 時(shí)間,但每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動(dòng)電路,使用的電路硬件較多;動(dòng)態(tài)顯示雖然有閃爍感,占用的CPU 時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。 3.7 音頻驅(qū)動(dòng) 在本設(shè)計(jì)系統(tǒng)中有定時(shí)鬧鐘的功能,在鬧鐘功能啟動(dòng)并且定時(shí)時(shí)間到的時(shí)候會(huì)自動(dòng)啟動(dòng),喇叭可以發(fā)出一段音樂的鈴聲。由于單片機(jī)的I/O 輸出口的驅(qū)動(dòng)能力不足以驅(qū)動(dòng)喇叭發(fā)出足夠大的聲音,所以要用一片功率放大芯片(LM386)來作為外部的驅(qū)動(dòng)。 3.8 系統(tǒng)整體電路(附錄2) 第四章 軟件設(shè)計(jì) 4.1匯編語言的構(gòu)成 4.1.1匯編語言的格式 80C51單片機(jī)匯編語言的語句行由四個(gè)字段組成,匯編程序能對(duì)這種格式正確地進(jìn)行識(shí)別。這四個(gè)字段的格式為: [標(biāo)號(hào):]操作碼 [操作數(shù)][;注釋] 括號(hào)內(nèi)的部分可以根據(jù)實(shí)際情況取舍。每個(gè)字段之間要用分隔符分隔,可以用作分隔符分隔,可以用作分隔符的符號(hào)有空格、冒號(hào)、逗號(hào)、分號(hào)等。如: LOOP:MOV A,#7FH;A←7FH 一、標(biāo)號(hào) 標(biāo)號(hào)是語句地址的標(biāo)志符號(hào),用于引導(dǎo)對(duì)該語句的非順序訪問。有關(guān)標(biāo)號(hào)的規(guī)定為: (1)標(biāo)號(hào)由1~8個(gè)ASCII字符組成。第一個(gè)字符必須是字母,其余字符可以是字母、數(shù)字或其他特定字符; (2)不能使用該匯編語言已經(jīng)定義了的符號(hào)作為標(biāo)號(hào)。如指令助記符、寄存器符號(hào)名稱等; (3)標(biāo)號(hào)后邊必須跟冒號(hào)。 二、操作碼 操作碼用語規(guī)定語句執(zhí)行的操作。它是匯編語句中唯一不能空缺的部分。它用指令助記符表示。 三、操作數(shù) 操作數(shù)用于給指令的操作提供數(shù)據(jù)或地址。在一條匯編語句中操作數(shù)可能是空缺的,也可能包括一項(xiàng),還可能包括兩項(xiàng)或三項(xiàng)。各操作數(shù)間以逗號(hào)分隔。操作數(shù)字段的內(nèi)容可能包括以下幾種情況: (1)工作寄存器名 (2)特殊功能寄存器名 (3)標(biāo)號(hào)名 (4)常數(shù) (5)符號(hào)“$”,表示程序計(jì)數(shù)器PC的當(dāng)前值 (6)表達(dá)式 四、注釋 注釋不屬于匯編語句的功能部分,它只是對(duì)語句的說明。注釋字段可以增加程序的可讀性,有助于編程人員的閱讀和維護(hù)。注釋字段必須以分號(hào)“;”開頭,長(zhǎng)度不限,當(dāng)一行書寫不下時(shí),可以換行接著書寫,但換行時(shí)應(yīng)注意在開頭使用分號(hào)“;”。 五、數(shù)據(jù)的表示形式 80C51匯編語言的數(shù)據(jù)可以與以下幾種表示形式: (1)二進(jìn)制數(shù),末尾以字母B標(biāo)識(shí)。 (2)十進(jìn)制數(shù),末尾以字母D標(biāo)識(shí)或?qū)⒆帜窪省略。 (3)十六進(jìn)制數(shù),末尾以字母H標(biāo)識(shí)。 (4)ASCII碼,以單引號(hào)括起來標(biāo)識(shí)。 4.1.2常用偽指令 偽指令是匯編程序能夠識(shí)別并對(duì)匯編過程進(jìn)行某種控制的匯編命令。常用的有以下幾種: 一、起始地址設(shè)定偽指令ORG 格式為: ORG 表達(dá)式 該指令的功能是向匯編程序說明下面緊接的程序段或數(shù)據(jù)段存在的起始地址。表達(dá)式通常為十六進(jìn)制地址,也可以是已定義的標(biāo)號(hào)地址。 在每一個(gè)匯編語言源程序的開始,都要設(shè)置一條ORG偽指令來指定該程序在存儲(chǔ)器中存放的起始位置。若省略O(shè)RG偽指令,則該程序段從000H單元開始存放。在一個(gè)源程序中,可以多次使用ORG偽指令規(guī)定不同程序段或數(shù)據(jù)段存放的起始地址,但要求地址值由小到大依序排列。不允許空間重疊。 二、匯編結(jié)束偽指令END 格式為: END 該指令的功能是結(jié)束匯編。 匯編程序遇到END偽指令后即結(jié)束匯編。處于END之后的程序,匯編程序?qū)⒉惶幚怼? 三、字節(jié)數(shù)據(jù)定義偽指令DB 格式為: [標(biāo)號(hào):]DB 字節(jié)數(shù)據(jù)表 功能是從標(biāo)號(hào)指定的地址單元開始,在程序存儲(chǔ)器中定義字節(jié)數(shù)據(jù)。 四、字?jǐn)?shù)據(jù)定義偽指令DW 格式為: [標(biāo)號(hào):] DW 字?jǐn)?shù)據(jù)表 功能是從標(biāo)號(hào)指定的地址單元開始,在程序存儲(chǔ)器中定義字?jǐn)?shù)器。 五、空間定義偽指令DS 格式為: [標(biāo)號(hào):] DS 表達(dá)式 功能是從標(biāo)號(hào)指定的地址單元開始,在程序存儲(chǔ)器中保留由表達(dá)式所指定的個(gè)數(shù)的存儲(chǔ)單元作為備用的空間,并都填以零值。 六、賦值偽指令EQU 格式為: 符號(hào)名 EQU 表達(dá)式 功能是將表達(dá)式的值或特定的某個(gè)匯編符號(hào)定義為一個(gè)指定的符號(hào)名。 七、為地址符號(hào)定義偽指令 BIT 格式為: 符號(hào)名 BIT 為地址表達(dá)式 功能是將位地址賦給指定的符號(hào)名。 4.2 主要指令的介紹 MOV direct, #data;其功能是把立即數(shù)data 送入direct 存儲(chǔ)單元中; MOV A, derect;其功能是把direct 存儲(chǔ)單元中的值送入累加器A 中; ADD A,#data;其功能是把立即數(shù)和累加器A 中的值相加,并把兩數(shù)之和保留在累加器A 中; INC @Ri;這是一條加1 指令,用于使源地址為Ri 中的值的RAM 單元中的值加1; DIV AB;這是除法指令,其功能是把累加器A 中的8 位無符號(hào)數(shù)除以寄存器B 中的8 位無符號(hào)數(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 中; 4.3 幾個(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)還是比較簡(jiǎn)單,但畢竟也算是一個(gè)完整的單片機(jī)最小系統(tǒng),而我所做的一切工作都是圍繞著系統(tǒng)開發(fā)的這一中心來進(jìn)行的, 也是我第一次完成一項(xiàng)設(shè)計(jì)性的工作,也讓我學(xué)到了很多的經(jīng)驗(yàn),收獲也頗多。 5.1 畢業(yè)設(shè)計(jì)所做的工作 (1)系統(tǒng)硬件電路的設(shè)計(jì); (2)用匯編語言編寫程序,實(shí)現(xiàn)計(jì)時(shí)顯示和其他功能 5.2 系統(tǒng)存在問題及改進(jìn)方案 由于自身水平有限,考慮問題也不是很全面,在整個(gè)系統(tǒng)的設(shè)計(jì)當(dāng)中難免會(huì)有疏漏之處,最后的整個(gè)系統(tǒng)還不是很完善,有時(shí)候運(yùn)行不是很穩(wěn)定 致謝 在整個(gè)畢業(yè)設(shè)計(jì)的過程中,我的指導(dǎo)老師周江濤老師也給了我很大的幫助, 在這里我首先對(duì)周老師表示感謝,還有就是在編寫的也有同學(xué)也給我很大的幫助并且解決了一些關(guān)鍵的細(xì)節(jié)問題我在這里對(duì)他也表示十分的感謝。 最后我對(duì)所有曾經(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] 張洪潤(rùn),易濤.單片機(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 ;消除抖動(dòng) 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 ;消除抖動(dòng) N2: JB P0.1,N4 ;k2(分)按下了?不是則跳至N4 檢;查k3 LCALL DELAY ;消除抖動(dòng) 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 ;消除抖動(dòng) N4: JB P0.2,LOOP ;k3(時(shí))按下?不是則跳至LOOP LCALL DELAY ;消除抖動(dòng) 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 ;消除抖動(dòng) 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 為掃描指針 INC @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ù))存入B MOV @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.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 單片機(jī) 多功能 數(shù)字 設(shè)計(jì)
鏈接地址:http://kudomayuko.com/p-6653266.html