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