基于51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第1頁
基于51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第2頁
基于51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第3頁
基于51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第4頁
基于51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 單片機(jī)原理及接口課程設(shè)計(jì)報(bào)告 題 目: 時(shí)鐘系統(tǒng)設(shè)計(jì) 姓 名: 專 業(yè): 電信 班 級(jí): 1 學(xué) 號(hào): 20131 指導(dǎo)教師: 信息工程學(xué)院二0一六年一月時(shí)鐘系統(tǒng)設(shè)計(jì)摘要:本系統(tǒng)是基于AT89C51單片機(jī)的具有準(zhǔn)點(diǎn)報(bào)時(shí)、調(diào)時(shí)、以及可設(shè)鬧鐘功能的簡單數(shù)字時(shí)鐘系統(tǒng)的設(shè)計(jì)。以AT89C51為核心控制器,系統(tǒng)分為時(shí)鐘模塊、顯示模塊、按鍵模塊及鬧鐘模塊。系統(tǒng)以單片機(jī)內(nèi)部定時(shí)器作為時(shí)鐘模塊的主要控制模塊,通過頻率計(jì)數(shù)實(shí)現(xiàn)計(jì)時(shí)功能,采用了8位數(shù)碼管來顯示時(shí)間,采用獨(dú)立按鍵做為時(shí)間調(diào)時(shí)以及鬧鐘設(shè)置按鍵,采用蜂鳴器作為報(bào)時(shí)鬧鐘系統(tǒng)。通過Keil軟件C語言程序的編寫、編譯、調(diào)試以及硬件單片機(jī)的連接,實(shí)現(xiàn)了時(shí)間顯

2、示(24小時(shí)制)、鬧鐘設(shè)置、時(shí)間調(diào)試以及準(zhǔn)點(diǎn)報(bào)時(shí),可復(fù)位的功能,并運(yùn)行了該電路的程序,得出了符合實(shí)驗(yàn)設(shè)計(jì)要求的結(jié)果。關(guān)鍵字:數(shù)字時(shí)鐘;AT89C51;數(shù)碼管;C語言;鬧鐘;調(diào)時(shí)1 系統(tǒng)設(shè)計(jì)內(nèi)容1.1 前言隨著近年來科技的進(jìn)步,單片機(jī)在近十年也取得了飛速的發(fā)展。目前,單片機(jī)已經(jīng)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域

3、的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師?,F(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以MCS-51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國臺(tái)灣的WinBond系列單片機(jī)。以8031為核心的單片機(jī)占據(jù)了半壁江山,在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。數(shù)字電子時(shí)鐘作為單片機(jī)基礎(chǔ)學(xué)習(xí)的一個(gè)重要的典型,是很多初學(xué)的學(xué)習(xí)單片機(jī)的很好的例子,是對(duì)單片機(jī)的定時(shí)器的一個(gè)重要的應(yīng)用。可以說,學(xué)習(xí)

4、單片機(jī)的兩個(gè)重點(diǎn)就是中斷和定時(shí)器,學(xué)會(huì)了數(shù)字時(shí)鐘的編程就是對(duì)單片機(jī)學(xué)習(xí)的一個(gè)很好的綜合應(yīng)用。1.2 設(shè)計(jì)要求應(yīng)用知識(shí):I/O口應(yīng)用、數(shù)碼顯示、定時(shí)/計(jì)數(shù)器、中斷?;疽螅涸O(shè)計(jì)一時(shí)鐘系統(tǒng),系統(tǒng)具有時(shí)鐘功能,能準(zhǔn)確顯示時(shí)、分、秒。系統(tǒng)還應(yīng)具有校正功能:能夠修改當(dāng)前的時(shí)間。擴(kuò)展部分:具備設(shè)定鬧鐘和定時(shí)鬧鐘響功能。1.3 設(shè)計(jì)思路通過軟件程序的編程,硬件電路的調(diào)試,實(shí)現(xiàn)了簡單時(shí)鐘系統(tǒng)的設(shè)定,使得該系統(tǒng)具有正常走時(shí),能夠正確的顯示時(shí)、分、秒;能夠進(jìn)行調(diào)時(shí),修改當(dāng)前的時(shí)間,并且能夠設(shè)定鬧鐘,使鬧鐘能夠定時(shí)響。首先是時(shí)間的調(diào)試:若要進(jìn)行正常的時(shí)間調(diào)試需要有進(jìn)入時(shí)間的調(diào)時(shí)試狀態(tài)按鍵以及調(diào)試是加或者是減的按鍵

5、,即每個(gè)狀態(tài)要3個(gè)按鍵,共有時(shí)、分、秒三個(gè)狀態(tài),這樣就一共需要9個(gè)按鍵,這樣的編程太過復(fù)雜,硬件需要的按鍵也比較多??紤]到,可通過同一個(gè)按鍵來控制定時(shí)器的走與停,以及通過按鍵的次數(shù)來控制所進(jìn)入的調(diào)試狀態(tài)是時(shí)、分還是秒。當(dāng)調(diào)試進(jìn)入某一狀態(tài)時(shí),需要分別通過兩個(gè)按鍵來控制時(shí)間的加與減,而此時(shí)的加與減的按鍵相當(dāng)于是局部變量,可以在三個(gè)狀態(tài)中分別使用。這樣一共就只需要3個(gè)按鍵,大大節(jié)省了硬件并且簡化了軟件的編程。設(shè)3個(gè)按鍵分別為key1、key2和key3,設(shè)計(jì)為當(dāng)按鍵key1被按下時(shí),停止走時(shí),進(jìn)入調(diào)時(shí)狀態(tài),當(dāng)key1被按下1次,進(jìn)行秒的調(diào)整;當(dāng)key1被按下2次,進(jìn)行分的調(diào)整,當(dāng)key1被按下3次,

6、進(jìn)行時(shí)的調(diào)整;當(dāng)key1被按下4次,停止調(diào)時(shí),繼續(xù)進(jìn)行走時(shí)。在key1被按下4次以下的情況下,若按下key2鍵,則進(jìn)行時(shí)間加,若按下key3,則進(jìn)行時(shí)間減。其次是鬧鐘設(shè)定:基于時(shí)間調(diào)試的設(shè)置思路,同樣將進(jìn)入鬧鐘狀態(tài)以及鬧鐘設(shè)定的按鍵分開,考慮到此時(shí)鬧鐘設(shè)置時(shí),數(shù)碼管的顯示問題以及定時(shí)器的走時(shí)問題,故將進(jìn)入鬧鐘的設(shè)定狀態(tài)和時(shí)設(shè)定、分設(shè)定的按鍵分開,而分和時(shí)的設(shè)定又都需要時(shí)間的加和減,即各需要兩個(gè)按鍵,再加上進(jìn)入鬧鐘設(shè)定狀態(tài)的一個(gè)按鍵,共需要5個(gè)按鍵來實(shí)現(xiàn)鬧鐘的設(shè)定。設(shè)這5個(gè)按鍵分別為key0、key4、key5、key6和key7,其中,key0為進(jìn)入鬧鐘狀態(tài)按鍵,key4和key6分別為分鐘設(shè)

7、定的加和減的按鍵,key5和key7分別為時(shí)設(shè)定的加和減設(shè)定的按鍵。依照思路可設(shè)定為當(dāng)key0一直被按住的情況下,此時(shí)進(jìn)入鬧鐘設(shè)定狀態(tài),但是定時(shí)器仍然在工作。在key0一直被按住的情況下,若key4或key5被按下,則分別進(jìn)行分和時(shí)的累加狀態(tài);若key6和key7被按下,則分別進(jìn)行分和時(shí)的減狀態(tài),當(dāng)放開key0時(shí),繼續(xù)進(jìn)行走時(shí)。若想再次進(jìn)行鬧鐘的設(shè)定,重復(fù)上述的步驟,不過當(dāng)再次按下按鍵key0時(shí),則顯示上次設(shè)置的鬧鐘時(shí)間。2 系統(tǒng)方案設(shè)計(jì)2.1 方案論證(1)、核心控制模塊方案一:采用FPGA作為核心控制模塊。由于FPGA具有強(qiáng)大的資源,使用方便靈活,易于進(jìn)行功能擴(kuò)展,特別是結(jié)合了EDA,可以

8、達(dá)到很高的效率。此方案邏輯雖然簡單一點(diǎn),但是一塊FPGA的價(jià)格很高,對(duì)于做數(shù)字鐘來說有一點(diǎn)浪費(fèi),而且FPGA比較難掌握,本設(shè)計(jì)中不作過多研究,也不采用此方案。;方案二:采用AT89C51作為核心控制模塊。此方案中AT89C51單片機(jī)的入門學(xué)習(xí)相對(duì)交容易,易于理解,外圍電路比較簡單,成本比較低,此系統(tǒng)控制靈活能很好地滿足本課題的基本要求和擴(kuò)展要求,因此選用該方案。(2)、顯示模塊方案一:采用LCD1602液晶顯示屏,液晶極其省電,但是使用有溫度范圍限制,且因是反光式的,在外界光線很明亮的情況下很容易看不清楚。數(shù)碼管是LED發(fā)光的效果,液晶是分子偏轉(zhuǎn)引起的暗影效果,顯示不是很清晰。方案二:采用LE

9、D數(shù)碼管顯示,數(shù)碼管在低電壓小電流的驅(qū)動(dòng)下就能夠發(fā)光,發(fā)光響應(yīng)時(shí)間短,高頻性好,單色性好,亮度高,顯示相對(duì)而言比較清晰。而且體積小,重量輕,抗沖擊性能好,壽命長,成本低。 (3)、按鍵模塊方案一:采用矩陣按鍵,矩陣按鍵需要通過掃描控制和譯碼,設(shè)計(jì)時(shí)需要有數(shù)值移位寄存器對(duì)已有數(shù)值進(jìn)行存儲(chǔ)和調(diào)用。軟件程序設(shè)計(jì)比較繁瑣,硬件連接復(fù)雜。方案二:采用獨(dú)立按鍵。單片機(jī)仿真板上有專用獨(dú)立按鍵,連接方便,使用簡單。且易于軟件編程,適合本系統(tǒng)的設(shè)計(jì)。2.2 設(shè)計(jì)原理本系統(tǒng)數(shù)字時(shí)鐘設(shè)計(jì)原理主要利用AT89C51單片機(jī),由單片機(jī)的P0口控制數(shù)碼管的位顯示,P2口控制數(shù)碼管的段顯示,P3口與按鍵相接用于時(shí)間的校正以及

10、鬧鐘的設(shè)定。設(shè)計(jì)的主要方面有計(jì)時(shí)原理,中斷及定時(shí)器原理以及調(diào)時(shí)方式、按鍵的消抖。整個(gè)系統(tǒng)工作時(shí),秒信號(hào)產(chǎn)生器是整個(gè)系統(tǒng)的時(shí)基信號(hào),它直接決定計(jì)時(shí)系統(tǒng)的精度,將標(biāo)準(zhǔn)秒信號(hào)送入“秒計(jì)數(shù)器”,“秒計(jì)數(shù)器”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個(gè)“分脈沖”信號(hào),該信號(hào)將作為“分計(jì)數(shù)器”的時(shí)鐘脈沖?!胺钟?jì)數(shù)器”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個(gè)“時(shí)脈沖”信號(hào),該信號(hào)將被送到“時(shí)計(jì)數(shù)器”?!皶r(shí)計(jì)數(shù)器”采用24進(jìn)制計(jì)時(shí)器,可實(shí)現(xiàn)對(duì)一天24小時(shí)的累計(jì)。顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出,通過六個(gè)七段LED顯示器顯示出來。校時(shí)電路是直接加一個(gè)脈沖信號(hào)到時(shí)計(jì)數(shù)器或者分計(jì)數(shù)器或者秒計(jì)數(shù)器來對(duì)“

11、時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對(duì)調(diào)整。在本設(shè)計(jì)中,24小時(shí)時(shí)鐘顯示、秒表的設(shè)計(jì)和顯示都是依靠單片機(jī)中的定時(shí)器完成。使用定時(shí)器T0產(chǎn)生1s的中斷,在中斷程序中完成每一秒數(shù)字的變化,并在主程序中動(dòng)態(tài)顯示該字符。典型的8051單片機(jī)有5個(gè)中斷源(外部中斷0、1,內(nèi)部定時(shí)器中斷0、1,串口中斷),具有兩個(gè)中斷優(yōu)先級(jí)。與中斷系統(tǒng)有關(guān)的特殊功能寄存器有中斷允許寄存器IE、中斷優(yōu)先級(jí)控制寄存器IP、中斷控制寄存器TCON和SCON中有關(guān)位。MCS51單片機(jī)基本的中斷系統(tǒng)結(jié)構(gòu)如下圖所示。 圖2-1 MCS51的中斷系統(tǒng)MCS51的CPU對(duì)中斷源的開放或屏蔽,即每一個(gè)中斷源是否被允許中斷,是由內(nèi)部的中斷允許

12、寄存器IE(地址A8H)控制的。IE中具體各位的意義如下所示:EA:CPU的中斷開放標(biāo)志。 EA 1,CPU開放中斷;EA 0,CPU屏蔽所有的中斷申請(qǐng)。EX0:外部中斷0中斷允許位。 EX0 1,允許中斷;EX0 0,禁止中斷。ET0:T0的溢出中斷允許位。ET0 1,允許T0中斷;ET0 0,禁止T0中斷。EX1:外部中斷1中斷允許位。EX1 1,允許外部中斷1中斷;EX1 0,禁止外部中斷1中斷。ET1:定時(shí)器計(jì)數(shù)器 T1的溢出中斷允許位。ET1 1,允許T1中斷;ET1 0禁止T1中斷。ES:串行口中斷允許位。ES 1,允許串行口中斷;ES 0禁止串行口中斷。 中斷優(yōu)先級(jí)管理寄存器IP

13、(地址8BH):MCS51有兩個(gè)中斷優(yōu)先級(jí),一個(gè)正在被執(zhí)行的低優(yōu)先級(jí)中斷服務(wù)程序能被高優(yōu)先級(jí)中斷所中斷,但不能被另一個(gè)同級(jí)的或低優(yōu)先級(jí)中斷源所中斷。CPU的查詢順序是:外部中斷0,定時(shí)器T0中斷,外部中斷1,定時(shí)器T1中斷,串行口中斷(先外部后內(nèi)部,先0后1)。中斷服務(wù)函數(shù)的格式如下所示:void 函數(shù)名(void) interrupt n using m 函數(shù)體語句 其中,interrupt和using是為編寫C51中斷服務(wù)程序而引入的關(guān)鍵字,interrupt表示該函數(shù)是一個(gè)中斷服務(wù)函數(shù),interrupt后的整數(shù)n表示該中斷服務(wù)函數(shù)是對(duì)應(yīng)哪一個(gè)中斷源。每個(gè)中斷源都有系統(tǒng)指定的中斷編號(hào):表

14、1 中斷編號(hào)表中斷源外部中斷0定時(shí)器中斷T0外部中斷1定時(shí)器中斷T1串行口中斷中斷編號(hào)0123451單片機(jī)有三個(gè)內(nèi)部中斷,16位定時(shí)器計(jì)數(shù)器T0、T1的溢出中斷源和串行口的發(fā)送/接收中斷。對(duì)T0和T1中斷,當(dāng)定時(shí)計(jì)數(shù)回0溢出時(shí),由硬件自動(dòng)置位TCON中的TF0或TF1中斷請(qǐng)求標(biāo)志位。定時(shí)/計(jì)數(shù)器實(shí)際上是一個(gè)加1計(jì)數(shù)器,它可以工作于定時(shí)方式,也可以工作于計(jì)數(shù)方式。兩種工作方式實(shí)際上都是對(duì)脈沖計(jì)數(shù),只不過所計(jì)脈沖來源不同。定時(shí)器的脈沖是由51單片機(jī)的內(nèi)振蕩器經(jīng)過12分頻后產(chǎn)生的,故當(dāng)單片工作于定時(shí)狀態(tài)時(shí),計(jì)數(shù)脈沖的最高頻率為f=fosc/12。51單片機(jī)的寄存器有方式控制寄存器TMOD;加法計(jì)數(shù)寄

15、存器TH0、TH1 (高八位),TL0、TL1 (低八位);定時(shí)/計(jì)數(shù)到標(biāo)志TF0、TF1(中斷控制寄存器TCON);定時(shí)/計(jì)數(shù)器啟??刂莆籘R0、TR1(TCON);定時(shí)/計(jì)數(shù)器中斷允許位ET0、ET1(中斷允許寄存IE);定時(shí)/計(jì)數(shù)器中斷優(yōu)先級(jí)控制位PT0、PT1(中斷優(yōu)IP)。在定時(shí)器工作前,必須將控制命令寫入定時(shí)器的控制寄存器,即進(jìn)行初始化。TMOD的低四位為T0的方式字,高四位為T1的方式字。TMOD不能位尋址,必須整體賦值。TMOD各位的含義如下:1. 工作方式選擇位M1、M0 :M1、M0的狀態(tài)決定定時(shí)器的工作方式:表2 工作方式選擇表M1M0功能說明00工作方式0(13位方式)

16、01工作方式1(16位方式)10工作方式2(8位自動(dòng)裝入計(jì)數(shù)初值方式)11工作方式3(T0為兩個(gè)8位方式)2. 定時(shí)和計(jì)數(shù)方式選擇位C/T。當(dāng)C/T=1時(shí)為計(jì)數(shù)方式;C/T=0時(shí)為定時(shí)方式。3. 門控位GATE。GATE與TR0、TR1配合決定定時(shí)/計(jì)數(shù)器的啟停。當(dāng)GATE = 0時(shí),軟啟動(dòng)。定時(shí)器/計(jì)數(shù)器的啟停只受定時(shí)器運(yùn)行控制位(TR0、TR1)的控制。當(dāng)GATE = 1時(shí),軟硬啟動(dòng)。定時(shí)器/計(jì)數(shù)器的啟停除受TR0、 TR1控制外,還受外部引腳(INT0、 INT1)輸入電平的控制(為高)。即TR0和INT0控制T0的運(yùn)行,TR1和INT1控制T1的運(yùn)行。MCS51的定時(shí)器有方式0、方式1

17、、方式2和方式3這4種工作方式。以方式1為例,當(dāng)M1M0=01時(shí),定時(shí)/計(jì)數(shù)器工作在方式1。MCS-51單片機(jī)定時(shí)計(jì)數(shù)器在方式1時(shí)的工作原理如下圖所示:圖2-1 計(jì)數(shù)/定時(shí)器圖當(dāng)C/T=0時(shí),工作在定時(shí)器狀態(tài),由振蕩器經(jīng)12分頻后輸入,否則由T1端輸入。在定時(shí)時(shí),對(duì)工作頻率的12分頻進(jìn)行計(jì)數(shù),先記入TL后記入TH,直到溢出為止,根據(jù)TL、TH內(nèi)的初值不同可以定出不同的時(shí)間;在計(jì)數(shù)工作方式時(shí),對(duì)T0(T1)引腳的輸入脈沖進(jìn)行計(jì)數(shù),將計(jì)數(shù)值記入TL、TH。當(dāng)定時(shí)/計(jì)數(shù)溢出時(shí),會(huì)引起中斷。計(jì)數(shù)初值與定時(shí)時(shí)間的關(guān)系為:T = 12×(T_all a)/fosc定時(shí)間隔為T,計(jì)數(shù)初值為a。所以

18、有計(jì)數(shù)初值a =T×fosc/12,THx = a / 256,TLx = a % 256。定時(shí)器均有一個(gè)最大定時(shí)時(shí)間,對(duì)于長時(shí)間的定時(shí)需要,可以將定時(shí)間隔為固定的較小時(shí)間,通過另設(shè)一全局變量ah1用于計(jì)數(shù),累加固定的較小定時(shí)時(shí)間來進(jìn)行。使用MCS51單片機(jī)的定時(shí)/計(jì)數(shù)器的步驟是:1設(shè)定TMOD,確定:工作狀態(tài)(用作定時(shí)器/計(jì)數(shù)器);工作方式;控制方式。2設(shè)置合適的計(jì)數(shù)初值,以產(chǎn)生期望的定時(shí)間隔。由于定時(shí)/計(jì)數(shù)器在方式0、方式1和方式2時(shí)的最大計(jì)數(shù)間隔取決于使用的晶振頻率fosc,如下表所示,當(dāng)需要的定時(shí)間隔較大時(shí),要采用適當(dāng)?shù)姆椒?,即將定時(shí)間隔分段處理。 3確定定時(shí)/計(jì)數(shù)器工作于查

19、詢方式還是中斷方式,若工作于中斷方式,則在初始化時(shí)開放定時(shí)/計(jì)數(shù)器的中斷及總中斷:ET0 = 1;EA = 1;還需要編寫中斷服務(wù)函數(shù):void T0_srv(void) interrupt 1 using 1TL0 = a % 256; TH0 = a / 256; 中斷服務(wù)程序段 4啟動(dòng)定時(shí)器:TR0(TR1)= 1。時(shí)間調(diào)整有多種方式。一、可以直接進(jìn)入相關(guān)狀態(tài)進(jìn)行有關(guān)操作,二、將調(diào)整分兩步,先進(jìn)入狀態(tài),然后執(zhí)行操作,這兩步分別由兩個(gè)鍵控制。方式一,比較直接,設(shè)計(jì)思想也比較簡單,但是,這種方式存在操作時(shí)間和控制鍵數(shù)目的矛盾。如果用比較少的鍵,那么可能會(huì)在進(jìn)入狀態(tài)后處于數(shù)據(jù)調(diào)整等待狀態(tài),這樣

20、會(huì)影響到顯示的掃描速度。當(dāng)然在這種方式下,還可以使用多個(gè)狀態(tài)鍵,每個(gè)狀態(tài)鍵,完成一個(gè)對(duì)應(yīng)數(shù)據(jù)的調(diào)整。如果采用二的方式,就不會(huì)出現(xiàn)這種情況。因?yàn)闋顟B(tài)的調(diào)整,與狀態(tài)的操作可以分別由兩個(gè)鍵控制,其狀態(tài)的調(diào)整數(shù)可以多達(dá)256個(gè)(理論上),操作的完成是這樣的,一鍵控制狀態(tài)的調(diào)整,一鍵控制數(shù)據(jù)的調(diào)整。以上兩種方式的實(shí)現(xiàn)都可以采用查詢和中斷的方式。兩種方式必須注意的問題是兩者進(jìn)行相關(guān)操作的過程不能太長否則會(huì)影響顯示的掃描?;诒鞠到y(tǒng)的設(shè)置:將時(shí)間調(diào)整分為狀態(tài)調(diào)整和數(shù)據(jù)調(diào)整兩部分,每次進(jìn)入中斷只執(zhí)行一次操作,然后返回,這樣,就不必讓中斷處于調(diào)整等待狀態(tài),可以使中斷的耗時(shí)很小。將定時(shí)器中斷的優(yōu)先級(jí)設(shè)置為最高級(jí),

21、那么中斷的方式和查詢的方式一樣不會(huì)影響到時(shí)鐘的記數(shù)。通常的按鍵所用開關(guān)為機(jī)械彈性開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消抖。按鍵消抖的方式有硬件和軟件消抖,本系統(tǒng)采用軟件消抖。軟件消抖有定時(shí)器定時(shí),和利用延時(shí)子程序的方式。一,定時(shí)器定時(shí)消抖可以不影響顯示模塊掃描速度,其實(shí)現(xiàn)方法是:設(shè)置標(biāo)志位,在定時(shí)器中斷中將其置位,然后在程序中查詢。將其中斷優(yōu)先級(jí)設(shè)置為低于時(shí)鐘定時(shí)中斷,那么它就可以完全不影響時(shí)鐘定時(shí)。二,在采用延時(shí)子程序時(shí),如果顯示

22、模塊的掃描速度本來就不是很快,此時(shí)可能會(huì)影響到顯示的效果,一般情況下,每秒的掃描次數(shù)不應(yīng)小于50次,否則,數(shù)碼的顯示會(huì)出現(xiàn)閃爍的情況。因此,延時(shí)子程序的延時(shí)時(shí)間應(yīng)該小于20毫秒,如果采用定時(shí)器定時(shí)的方式,延時(shí)時(shí)間不影響時(shí)鐘。如果,設(shè)計(jì)時(shí)采用的是中斷的方式來完成有關(guān)操作,同樣可以采用軟件的方式來消抖,其處理思想是:中斷不能連續(xù)執(zhí)行,兩次之間有一定的時(shí)間間隔。2.3 整體設(shè)計(jì)框圖AT89C51芯片時(shí)鐘模塊按鍵模塊顯示模塊蜂鳴器模塊調(diào)時(shí)功能時(shí)間顯示鬧鐘功能3 硬件設(shè)計(jì)硬件電路的設(shè)計(jì)包括核心時(shí)間控制模塊、顯示模塊、按鍵模塊,以及鬧鐘的蜂鳴器模塊。3.1 顯示模塊通過外部連線,將P0線接到J16,使得P

23、0口控制數(shù)碼管的位顯示,將P2線接到J12,使得P2口控制數(shù)碼管的段顯示。圖3-1 數(shù)碼管顯示原理圖3.2 按鍵模塊使用8路獨(dú)立按鍵,通過改變排線連接,可以實(shí)現(xiàn)按鈕的普通輸入和中斷輸入通過外部接線,將P3口與JP5相連,實(shí)現(xiàn)由P3口控制時(shí)間調(diào)試和鬧鐘設(shè)定的按鈕連接。圖3-2 按鍵原理圖3.3 蜂鳴器模塊通過單片機(jī)的內(nèi)部設(shè)定,將P1.5口作為蜂鳴器的控制端口,通過跳帽連接J8口,使得蜂鳴器可以工作,再由軟件程序編寫,使得蜂鳴器能夠在特定的時(shí)刻響。圖3-3 蜂鳴器原理圖3.4 核心控制以及時(shí)間控制模塊圖3-4 復(fù)位電路圖圖3-5晶振連接圖圖3-6 P0口外接上拉電阻圖圖3-7 單片機(jī)核心控制模塊原

24、理圖4 軟件及編程分析4.1 主程序流程圖如下所示經(jīng)過思路總結(jié)以及分析整個(gè)時(shí)鐘系統(tǒng)的硬件與軟件需求,可畫出程序流程圖如圖4-1所示:主程序初始化按鍵掃描鬧鐘設(shè)定正常走時(shí)時(shí)間調(diào)試有按鍵?鬧鐘按鍵?設(shè)定完畢YNYN圖4-1 程序設(shè)計(jì)流程圖4.2 軟件編程及分析本系統(tǒng)的編程環(huán)境為keil uvision2,依照流程圖編寫程序并進(jìn)行程序的編譯,燒錄軟件使用PZISP將程序燒錄進(jìn)硬件中,軟件得編譯結(jié)果及燒錄結(jié)果分別如圖4-1,4-2所示:圖4-2 編譯結(jié)果圖圖4-3 燒錄結(jié)果圖編寫具體程序見附錄所示,以下給出部分主要程序的分析說明:(1)、按鍵消抖按鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次。為確保CPU對(duì)鍵的一次

25、閉合僅作一次處理,必須去除鍵抖動(dòng)。抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為5ms10ms,通過delay函數(shù)的延時(shí)作用,在按鍵被按下時(shí),延時(shí)一段時(shí)間,確定按鍵是否真的被按下,如果是就執(zhí)行程序,達(dá)到了消除按鍵的抖動(dòng)的目的,程序如下:if(key1=0)/按鍵被按下delay(10);/延時(shí)if(key1=0)/判斷按鍵是否被按下while(!key1);/進(jìn)一步確認(rèn)按鍵被按下(2)、初始化程序開中斷并選擇定時(shí)器void init()TMOD=0x01;/選擇定時(shí)器工作方式為1TH0=(65536-50000)/256;/寫入計(jì)數(shù)初值,設(shè)定t=50msTL0=(65536-50000)%256;

26、EA=1;/開總中斷ET0=1;/允許定時(shí)器中斷TR0=1;/啟動(dòng)定時(shí)器(3)、中斷程序中斷程序采用定時(shí)器0,在中斷程序中進(jìn)行顯示時(shí)間的準(zhǔn)點(diǎn)走時(shí),以及實(shí)現(xiàn)準(zhǔn)點(diǎn)報(bào)時(shí)的功能。void timer0() interrupt 1/中斷、定時(shí)器0、準(zhǔn)點(diǎn)報(bào)時(shí)TH0=(65536-50000)/256;/工作方式1,定時(shí)時(shí)間為50msTL0=(65536-50000)%256;aa+;if(aa=20)/每20次為1saa=0;/aa清零s+;/秒加1if(s=60)/判斷秒是否為60s=0;/秒清零m+;/秒為60后,秒清零,分加1if(m=60)/判斷分是否為60 m=0;/分清零h+;/分為60后,分

27、清零,時(shí)加1if(h=24) /若時(shí)為24,時(shí)清零h=0;5 實(shí)驗(yàn)結(jié)果圖硬件的位選、段選,以及按鍵的連線如下所示:圖5-1 正常走時(shí)圖當(dāng)按下按鍵0,并且一直按著時(shí),進(jìn)入鬧鐘的設(shè)定狀態(tài),開始的時(shí)候顯示為000000圖5-2 進(jìn)入鬧鐘編輯狀態(tài)圖6 結(jié)論在此次的課程設(shè)計(jì)中,我了解到了自己能力的不足之處,在編程和調(diào)試的過程中,我體會(huì)到了自己所學(xué)的知識(shí)是遠(yuǎn)遠(yuǎn)的不夠,需要學(xué)習(xí)的方面還有很多。通過資料的收集和文件的檢索,我找到了設(shè)計(jì)過程中出現(xiàn)的問題及問題的解決方法,從而算是較為順利的完成了此次課程設(shè)計(jì)的任務(wù)。此次的課程設(shè)計(jì)使我學(xué)到了很多新的,課堂上無法學(xué)到的知識(shí),同時(shí)也加深了課堂上學(xué)到的知識(shí),并且增強(qiáng)了自己

28、理論聯(lián)系實(shí)際的操作能力。我取得了一些寶貴的經(jīng)驗(yàn),比如,理論必須和實(shí)際結(jié)合才能承購,知識(shí)必須通過應(yīng)用才能實(shí)現(xiàn)其價(jià)值。我還提高了自己的動(dòng)手能力,為將來的學(xué)習(xí)和工作奠定了良好的基礎(chǔ)。參考文獻(xiàn):1余發(fā)山.王福忠.單片機(jī)原理及應(yīng)用技術(shù)M.徐州:中國礦業(yè)大學(xué)出版社.2008.10-1002鐘睿.MCS-51.單片機(jī)原理及應(yīng)用開發(fā)技術(shù)M.北京:中國鐵道出版社.2006.20-303彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例:基于8051+Proteus仿真J.電子工業(yè)出版社4張靖武,周靈彬.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真J.電子工業(yè)5郭天祥.新概念51單片機(jī)C語言教程入門,提高,開發(fā),拓展全攻略M.北京:

29、電子工業(yè)出版社附錄:實(shí)驗(yàn)程序18#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit Bueer=P15;sbit key1=P31;sbit key2=P32;sbit key3=P33;sbit key4=P34;sbit key5=P35;sbit key6=P36;sbit key7=P37;sbit key0=P30;uchar aa,h,m,s,

30、n,i,sec,min,hour;void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void display() if(key0=1) P2=0xfe; P0=tables%10; delay(1); P2=0xfd; P0=tables/10; delay(1); P2=0xfb; P0=0x40; delay(1); P2=0xf7; P0=tablem%10; delay(1); P2=0xef; P0=tablem/10; delay(1); P2=0xdf; P0=0x40; delay(1);

31、P2=0xbf; P0=tableh%10; delay(1); P2=0x7f; P0=tableh/10; delay(1); void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa+; if(aa=20) aa=0; s+; if(s=60) s=0; m+; if(m=60) m=0; h+; if(h=24) h=0; void keyscan() if(key1=0) delay(10); if(key1=0) while(!key1); n+; TR0=0; if(n=1) P2=0xfe; P0=tables%10; delay(1); P2=0xfd; P0=tables/10; delay(1); if(n=2) P2=0xf7; P0=tablem%10; delay(1); P2=0xef; P0=tablem/10; delay(1); if(n=3) P2=0xbf; P0=tableh%10; delay(1); P2=0x7f; P0=tableh/10; delay(1); if(n=4) TR0=1; n=0; if(n!=0) if(k

溫馨提示

  • 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)論