電腦鐘的設(shè)計與制作_第1頁
電腦鐘的設(shè)計與制作_第2頁
電腦鐘的設(shè)計與制作_第3頁
電腦鐘的設(shè)計與制作_第4頁
電腦鐘的設(shè)計與制作_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、長治職業(yè)技術(shù)學(xué)院信息工程系畢業(yè)設(shè)計說明書設(shè)計課題名稱 電腦鐘的設(shè)計與制作 專業(yè)班級 09 電氣大專班 學(xué)生姓名 任 韶 杰 指導(dǎo)教師 史 曙 光 2011年 6月19日畢業(yè)設(shè)計任務(wù)書專業(yè): 電氣自動化技術(shù) 班級:09電氣大專班設(shè) 計 課 題電腦鐘的設(shè)計與制作指 導(dǎo) 教 師史曙光學(xué)生姓名任韶杰設(shè)計起止時間2011年5月3日-2011年6月19日共五周畢業(yè)設(shè)計的目的與任務(wù)通過畢業(yè)設(shè)計將前面所學(xué)知識融會貫通,鍛煉獨立設(shè)計、制作和調(diào)試應(yīng)用系統(tǒng)的能力,深入領(lǐng)會單片機應(yīng)用系統(tǒng)的軟、硬件調(diào)試方法和系統(tǒng)研制開發(fā)過程。進(jìn)一步熟悉單片機特性,掌握單片機硬件系統(tǒng)結(jié)構(gòu),軟件對硬件的控制功能,熟練掌握MCS-51單片機

2、指令系統(tǒng)的應(yīng)用及程序設(shè)計、開發(fā)環(huán)境。畢業(yè)設(shè)計報告內(nèi)容要求要求利用單片機設(shè)計制作電腦鐘。具體指標(biāo)如下:1、自動計時,由6位LED顯示器顯示時、分、秒。2、具備校準(zhǔn)功能,可以直接由09數(shù)字鍵設(shè)置當(dāng)前時間。3、具備定時啟鬧功能。4、一天時差不超過1鈔鐘。擬定的工作進(jìn)度(以周為單位)1、第一周確定課題,收集資料;2、第二周初步確定控制方案;3、第三至六周完成設(shè)計任務(wù)書要求的設(shè)計內(nèi)容;4、第七周完成畢業(yè)設(shè)計說明書的編寫工作。任務(wù)下達(dá)人(簽字):史曙光 日期:2011年5月3日任務(wù)接受人(簽字):任韶杰 日期:2011年5月3日信息工程系畢業(yè)設(shè)計綜合評價表指導(dǎo)教師對設(shè)計及說明書的評語指導(dǎo)教師簽字: 年 月

3、 日 畢業(yè)設(shè)計指導(dǎo)小組意見畢業(yè)設(shè)計指導(dǎo)小組組長簽字: 年 月 日畢業(yè)設(shè)計及答辯評語答辯小組組長簽字: 年 月 日備注畢業(yè)設(shè)計成績答辯小組組長簽字年 月 日目錄摘 要1第一章 概 述21.1 單片機的發(fā)展21.2 單片機的應(yīng)用3第二章 總體方案42.1計時方案42.2鍵盤/顯示方案5第三章 顯示電路介紹63.1數(shù)碼管簡介63.2 數(shù)碼管工作原理63.3顯示種類63.4 數(shù)碼管字形編碼7第四章 硬件設(shè)計84.1電路原理圖84.2系統(tǒng)工作流程8第五章 軟件設(shè)計115.1系統(tǒng)資源分配115.2軟件流程11第六章 畢業(yè)設(shè)計心得體會26摘 要時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科

4、學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),這就要求人們不斷設(shè)計出新型時鐘?,F(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工

5、作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法。第一章 概 述1.1 單片機的發(fā)展1971年微處理器研制成功不久,就出現(xiàn)了單片微型計算機即單片機,但最早的單片機是1位的,處理能力有限。單片機的發(fā)展可分為4個階段: 第一階段(1974-1976):單片機初級階段。因為受工藝限制,單片機采用單片的形式而且功能比較簡單。例如

6、美國仙童公司生產(chǎn)的F8單片機,實際上只包括了8位CPU、64個字節(jié)的RAM和2個并行接口。 第二階段(1976-1978):低性能單片機階段。以INTEL公司制造的MCS-48系列單片機為代表,該系列單片機片內(nèi)集成有8位CPU、8位定時器/計數(shù)器、并行I/O接口、RAM和ROM等。但是最大的缺點就是無串行接口,中斷處理比較簡單而且片內(nèi)RAM和ROM容量較小且尋址范圍不大于4KB。第三階段(1978-1983):高性能單片機階段。這個階段推出的單片機普遍帶有串行接口,多級中斷系統(tǒng),16位定時器/計數(shù)器,片內(nèi)ROM、RAM容量加大,且尋址范圍可達(dá)64KB,有的片內(nèi)還帶有A/D轉(zhuǎn)換器。這類單片機的典

7、型代表是INTEL公司的MCS-51系列的8051、Motorola公司的6801和ZILOG公司的Z8等。由于這類單片機的性能價格比高,所以直到現(xiàn)在仍被廣泛使用,是目前應(yīng)用數(shù)量最多的單片機。 第四階段(1983年至今):8位單片機鞏固發(fā)展以16位單片機、32位單片機推出階段。此階段的主要特征是:一方面發(fā)展16位單片機、32位單片機及專用型單片機;另一方面不斷完善8位高檔單片機,改善其結(jié)構(gòu),增加其片內(nèi)器件,以滿足不同用戶的需要。16位單片機的典型產(chǎn)品,如早期Intel公司生產(chǎn)的MCS-96系列單片機,片內(nèi)帶有多通道10位逐次逼近比較式A/D轉(zhuǎn)換器和高速輸入/輸出部件,實時處理的能力很強;再如近

8、幾年IT公司推出的MSP430系列微功耗的16位單片,更是降低了功耗,可采用1.8-3.6V電壓供電,并集成了更豐富的片內(nèi)資源。而32位單片機除了具有更高的集成度外,其晶振已達(dá)20MHZ,這使32位單片機的數(shù)據(jù)處理速度比16位單片機增快許多,性能比8位、16位單片機更加優(yōu)越,也能處理較復(fù)雜的圖形和聲音數(shù)據(jù)。1.2 單片機的應(yīng)用工業(yè)自動化:在自動化技術(shù)中,無論是過程控制技術(shù)、數(shù)據(jù)采集技術(shù)還是測控技術(shù),都離不開單片機。在工業(yè)自動化的領(lǐng)域中,機電一體化將發(fā)揮愈來愈重要的作用,在這種集機械、為電子和計算機技術(shù)為一體的綜合技術(shù)中,工業(yè)自動化也發(fā)展到了一個新的高度,出現(xiàn)了無人工廠、機械人作業(yè)、網(wǎng)絡(luò)化工廠等

9、,不僅將人從繁重的、重復(fù)的和危險的工業(yè)現(xiàn)場解放了出來,還大大的提高了工作效率,降低了生產(chǎn)成本。智能儀器儀表:目前對儀器儀表的自動化和智能化要求越來越高。在自動化測量儀器儀表中,單片機應(yīng)用十分普及單片機的使用有助于提高儀器儀表的精度和準(zhǔn)確度,簡化結(jié)構(gòu),減小體積,易于攜帶和使用,加速儀器儀表向數(shù)字化、智能化和多功能方面發(fā)展。消費類電子產(chǎn)品:該應(yīng)用主要應(yīng)用在家電領(lǐng)域。目前家電領(lǐng)域的一個重要發(fā)展趨勢是不斷提高其智能化程度。例如,電子游戲機、照相機、電冰箱、電視機、微波爐、手機、洗衣機、空調(diào)、IC卡、汽車電子設(shè)備等。在這些電子產(chǎn)品中應(yīng)用單片機后,其功能和性能大大提高、并實現(xiàn)了智能化、最優(yōu)化控制。通信方面

10、:較高檔的單片機都具有通信接口,因此為單片機在通信設(shè)備中的應(yīng)用創(chuàng)造了很好的條件。例如,在微波通信、短波通信、載波通信、光纖通信、程控交換等通信設(shè)備和儀器中都能找到單片機的應(yīng)用。武器裝備:在現(xiàn)代化的武器裝備中,如飛機、軍艦、坦克、導(dǎo)彈、魚雷制導(dǎo)、智能武器裝備、航天飛機導(dǎo)航系統(tǒng),都有單片機在其中發(fā)揮重要作用。終端及外部設(shè)備控制:計算機網(wǎng)絡(luò)終端設(shè)備,如銀行終端、以及計算機外部設(shè)備如打印機、硬盤驅(qū)動器、繪圖機、傳真機、復(fù)印機等,在這些設(shè)備中都使用了單片機。近年來隨著科技的飛速發(fā)展,同時帶動自動控制系統(tǒng)日新月異更新,單片機的應(yīng)用正在不斷地走向深入。第二章 總體方案2.1計時方案方案一:采用實時時鐘芯片。

11、針對計算機系統(tǒng)對實時時鐘功能的普遍要求,各大芯片生產(chǎn)廠家陸續(xù)推出了一系列的實時集成電路,如DS1287、DS12887、DS1320等。這些實時時鐘芯片具備年、月、日、時、分、秒計時功能,計時數(shù)據(jù)的更新每秒自動進(jìn)行一次,不需要程序干預(yù)。計算機可以通過中斷或查詢方式讀取計時數(shù)據(jù)并進(jìn)行顯示,因此計時功能的實現(xiàn)無需占用CPU的時間,程序簡單。此外,實時時鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計時功能:具有可編程方波輸出功能,可用作實時測控系統(tǒng)的采樣信號等;有的實時時鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長期保存但有時也需要變更的數(shù)據(jù)。由于功能完善,精度高,軟件程序設(shè)計相對簡單,且計時不

12、用占用CPU時間,因此,在工業(yè)實時測控系統(tǒng)中多采樣用這一類專用芯片來實現(xiàn)實時時鐘功能。方案二:軟件控制。當(dāng)今單片機廠商琳瑯滿目,產(chǎn)品性能各異。常用的單片機有很多種:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、臺灣Winbond(華邦)W78系列、荷蘭Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韓國三星公司的KS57C系列4位單片機、臺灣義隆的EM-78系列等。我們最終選用了ATMEL公司的AT89C51單片機。AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位

13、單片機,片內(nèi)含8Kbytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和256bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8051產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和FLASH存儲單元,功能強大AT89C51單片機適用于許多較為復(fù)雜控制應(yīng)用場合。所以我們最終選用AT89C51單片機。利用MCS-51內(nèi)部的定時、計數(shù)器進(jìn)行中斷定時,配合軟件延時實現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本,切可以使我們在定時/計數(shù)器的使用、中斷及程序設(shè)計方面得到鍛煉與提高,因此本系統(tǒng)將采用軟件方法實現(xiàn)計時。2.2鍵盤/顯示方

14、案對于實時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常有兩種顯示方式:動態(tài)顯示和靜態(tài)顯示。方案一:串口擴展,LED靜態(tài)顯示。如圖2.1(a)所示,該方案占用接口資源少,采用串口傳輸實現(xiàn)靜態(tài)顯示,顯示亮度有保證,但硬件開銷大,電路復(fù)雜,信息刷新速度慢,比較適用于并行口資源較少的場合。 方案二:8155擴展,LED動態(tài)顯示。如圖2.1(b)所示,該方案硬件連接簡單,但動態(tài)掃描的顯示方式需要占用CPU較多的時間,在單片機沒有太多實時測控任務(wù)的情況下可以采用。串行口8031P1口移位寄存器LED1移位寄存器LED24×4鍵盤(a) 靜態(tài)顯示框圖80318155鍵盤顯示接口LED顯示4×

15、;4鍵盤(b) 動態(tài)顯示框圖圖2.1 顯示方式框圖本系統(tǒng)選擇動態(tài)顯示方式。第三章 顯示電路介紹3.1數(shù)碼管簡介數(shù)碼管由8個發(fā)光二極管(以下簡稱字段)構(gòu)成,通過不同的組合可用來顯示數(shù)字0 9、字符A F及小數(shù)點“·”。數(shù)碼管的外形結(jié)構(gòu)如圖3.1(a)所示。數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu),分別如圖3.1(b)和圖3.1(c)所示。(a) 外型結(jié)構(gòu);(b) 共陰極;(c)共陽極圖3.1 數(shù)碼管結(jié)構(gòu)圖3.2 數(shù)碼管工作原理由于我們采用的是共陰極數(shù)碼管所以介紹共陰極數(shù)碼管的工作原理如下。共陰極數(shù)碼管的8個發(fā)光二極管的陰極(二極管負(fù)端)連接在一起。通常,公共陰極接低電平(一般接地),其它管腳

16、接段驅(qū)動電路輸出端。當(dāng)某段驅(qū)動電路的輸出端為高電平時,則該端所連接的字段導(dǎo)通并點亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。3.3顯示種類靜態(tài)顯示靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個數(shù)碼管的8個字段分別與一個8位I/O口地址相連,I/O口只要有段碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時間少

17、,編程簡單,顯示便于監(jiān)測和控制,但其占用的接口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場合。 動態(tài)顯示動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示,必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼。依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符。雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示

18、間隔足夠短就可以給人以同時顯示的感覺。采用動態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示方式簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時,CPU要依次掃描,占用CPU較多的時間。3.4 數(shù)碼管字形編碼要使數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應(yīng)的字形編碼。共陰極LED顯示字型碼如表3-1所示:顯示字符共陰極顯示字符共陰極03FH96FH106HA77H25BHB7CH34FHC39H466HD5EH56DHE79H67DHF71H707H87FH表3-1 LED顯示字型碼表第四章 硬件設(shè)計4.1電路原理圖電腦鐘電路的核心是89C51單片機,其內(nèi)部帶有4KB的FLASHR

19、OM,無須外擴展存儲器;電腦時鐘沒有大量的運算和暫存數(shù)據(jù),現(xiàn)有的128B片內(nèi)RAM已能滿足要求,也不必擴展片外RAM。系統(tǒng)配備6位LED顯示和4×3鍵盤,采用8155作為鍵盤/顯示接口電路。利用8155的A口作為6位LED顯示的位選接口,其中PA0PA5分別對應(yīng)位LED0LED5,B口則作為段選口,C口的3位為鍵盤輸入口,對應(yīng)02行,A口同時用作鍵盤的列掃描口。由于采用共陰極數(shù)碼管,因此口輸出低電平選中相應(yīng)的位,而B口輸出高電平點亮相應(yīng)的段。P1.0接蜂鳴器,低電平驅(qū)動蜂鳴器鳴叫啟鬧。由圖4.1可見,8155的地址分配如下:由控制寄存器:8000H,定義為PORTA口:8001H,定

20、義為PORTAB口:8002H,定義為PORTBC口:8003H,定義為PORTC如果使用本書配備的實驗板實現(xiàn)該電腦鐘,需將8511地址改變?yōu)榭刂萍拇嫫鳎?400HA口:4401HB口:4402HC口:4403H并通過引出的P1口外接一個蜂鳴器電路,或是用P1口上的發(fā)光二極管模擬鬧鐘功能。需要指出的是,實驗板使用的是8031芯片,使用外擴程序存儲器EPROM2764,因此其EA腳必須接地。原理圖如圖4.1所示。4.2系統(tǒng)工作流程本電腦鐘具備以下功能:(1) 時鐘顯示:6位LED從左到右依次顯示時、分、秒,才用24小時計時(2) 鍵盤功能:采用4×3鍵盤,包括:圖4.1原理圖09 數(shù)字

21、鍵,鍵號為00H09HC/R鍵 時間設(shè)定/啟動計時,鍵號為0AHALM鍵鬧鐘設(shè)置/啟鬧/停鬧鍵,鍵號為0BH其工作流程如下:(1) 時間顯示:上電后,系統(tǒng)自動進(jìn)入時鐘顯示,從00:00:00開始計時,此時可以設(shè)定當(dāng)前時間。(2) 時間調(diào)整:按下C/R鍵,系統(tǒng)停止計時,進(jìn)入時間設(shè)定狀態(tài),系統(tǒng)保持原有顯示,等待鍵入當(dāng)前時間。按下09數(shù)字鍵可以順序設(shè)置時、分、秒,并在相應(yīng)LED管上顯示設(shè)置值,直至6位設(shè)置完畢。系統(tǒng)將自動由設(shè)定后的時間開始計時顯示。(3) 鬧鐘設(shè)置/啟鬧/停鬧:ALM鍵,系統(tǒng)繼續(xù)計時,顯示00:00:00,進(jìn)入鬧鐘設(shè)置狀態(tài),等待鍵入啟鬧時間。按下09數(shù)字鍵可以順序進(jìn)行相應(yīng)的時間設(shè)置,

22、并在相應(yīng)LED管上顯示設(shè)置值,直至6位設(shè)置完畢。這將啟動定時啟鬧功能,并恢復(fù)時間顯示。定時時間到,蜂鳴器鳴叫,直至重新按下ALM鍵停鬧,并取消鬧鐘設(shè)置。第五章 軟件設(shè)計5.1系統(tǒng)資源分配為方便閱讀程序,先對系統(tǒng)的資源分配加以說明。(1)定時器:定時器0用作時鐘定時,按方式1工作,每隔100ms溢出中斷一次。(2)片內(nèi)RAM及標(biāo)志位的分配與定義見表5-1。地址功能名稱初始化值30H35H顯示緩沖區(qū),小時、分、秒(高位在前)DISP0DISP500H3CH3FH計時緩沖區(qū),時、分、秒、100msHOUR,MIN,SEC,MSEC00H40H42H鬧鐘值寄存區(qū),時、分、秒AHOUR,AMIN,ASE

23、CFFH50H7FH堆棧區(qū)PSW.5計時允許位(1:禁止,0:允許)F00PSW.1鬧鐘標(biāo)志位(1:正在響鬧,2:未響鬧)F10表5-1電子鐘控制軟件片內(nèi)RAM及標(biāo)志位分配表5.2軟件流程根據(jù)上述工程流程,軟件設(shè)計可分為以下幾個功能模塊:(1) 主程序:初始化與鍵盤監(jiān)控。(2) 計時:為定時器0中斷服務(wù)子程序,完成刷新計時緩沖區(qū)的功能。(3) 時間設(shè)置與鬧鐘設(shè)置:由鍵盤輸入設(shè)置當(dāng)前時間與定時啟鬧時間。(4) 顯示:完成6位動態(tài)顯示。(5) 鍵盤掃描:判斷是否有鍵按下,并求取鍵號。(6) 定時比較:判斷啟鬧時間到否?如時間到,則啟動蜂鳴器鳴叫。(7) 其它輔助功能子程序,如鍵盤設(shè)置、拆字、合字、

24、時間合法性檢測等。下面分模塊進(jìn)行軟件設(shè)計:(1)主程序模塊MAIN:流程圖如圖5.1所示。NYYYN開始定義堆棧區(qū)8155、定時器0、數(shù)據(jù)緩沖區(qū)、鬧鐘標(biāo)志位初始化是C/R鍵調(diào)用定時比較程序停鬧清零鬧鐘標(biāo)志請用鍵掃描子程序是ALM鍵鬧鐘標(biāo)志位=1地址指針指向鬧鐘值寄存區(qū)調(diào)用時間設(shè)置/鬧鐘定時程序地址指針指向計時緩沖區(qū)圖5.1 主程序流程圖(2)計時程序模塊CLOCK:流程圖如圖5.2所示。如前所述,系統(tǒng)定時采用定時器與軟件循環(huán)相結(jié)合的方法。定時器0每隔100ms溢出中斷一次,則循環(huán)中斷10次延時時間為1s,上述過程重復(fù)60次為1分,分計時60次為1小時,小時計時24次則時間重新回到00:00:0

25、0:。設(shè)系統(tǒng)使用6MHz的晶振,定時器0工作在方式1,則100ms定時對應(yīng)的定時器初值可由下式計算得到:定時時間=(216-定時器0初值)×(12/fosc)時間校正重裝定時器0初值循環(huán)次數(shù)減1滿10次秒單位加160秒到秒單位清零分單位加160分到分單位清零小時單位加1小時單位清零24小時到打、到恢復(fù)現(xiàn)場返回保護(hù)現(xiàn)場因此,定時器0初值=3CB0H,即TH0=3CH,TL0=0B0H當(dāng)系統(tǒng)使用其它頻率的晶振時,可以由上式計算相應(yīng)的定時器0初值,也可以改變定時時間。例如當(dāng)系統(tǒng)晶振為12MHz時,同樣的初值對應(yīng)的定時時間為50ms,則循環(huán)中斷次數(shù)為20次時,延時時間為1s.這里有兩個問題需

26、要特別重視。NNNYY第一,定時器溢出產(chǎn)生中斷請求,CPU并不一定立即響應(yīng)中斷,而可能需要延遲一個中斷響應(yīng)時間之后才能響應(yīng)中斷,中斷響應(yīng)時間大約38個機器周期。顯然,這將在定時時間中加入額外的延時時間,導(dǎo)致計時誤差。為了保證計時精度,必須采取措施經(jīng)行補償。我們采用增大重裝的定時器0初值的方法來減少定時器0定時時間。具體應(yīng)調(diào)整為多大,一般需要通過調(diào)試來確定。經(jīng)測試,定時器0重裝初值設(shè)為3CB7H3CBFH可以滿足精度要求。Y第二,時間是按十進(jìn)制遞增,而MCS-51單片機只有二進(jìn)制加法指令,因此用加法指令計時必須進(jìn)行二十進(jìn)制轉(zhuǎn)換。N(3)時間設(shè)置程序和鬧鐘定時程序模塊MODIFY:流程圖如圖5.3

27、所示。Y圖5.2 計時程序流程圖將鍵盤輸入的6位時間值合并為3位壓縮BCD碼(時、分、秒)送入及時緩沖區(qū)和鬧鐘寄存區(qū),作為當(dāng)前及時起始時間和鬧鐘計時時間。該該模塊的入口為計時緩沖區(qū)或鬧鐘值寄存取得首地址,置入R1忠程序調(diào)用一個鍵盤設(shè)置子程序KEYIN(如圖5.4所示將鍵入的6 位時間值送入鍵盤設(shè)置緩沖區(qū),然后用合字子程序COMB將鍵盤設(shè)置緩沖區(qū)中的6位BCD碼合并為3位壓縮BCD碼,送入計時緩沖區(qū)或鬧鐘值寄存區(qū)。該程序同時作為時間之合法性檢測程序,若鍵盤輸入的小時值大于23,分和秒值大于59,則不合法,將取消保護(hù)現(xiàn)場調(diào)用鍵盤設(shè)置子程序ACALL KEYIN調(diào)用合字程序ACALL COMB恢復(fù)現(xiàn)

28、場返回圖5.3 時間設(shè)置/鬧鐘定時流程圖圖5.4 鍵盤設(shè)置子程序流程圖YN保護(hù)現(xiàn)場調(diào)用鍵盤掃描程序ACALL KEYSCAN顯示緩沖區(qū)首地址送R0鍵盤輸入次數(shù)送R7鍵號送R0顯示緩沖區(qū)地址加1INC R0循環(huán)次數(shù)減1循環(huán)次數(shù)到恢復(fù)現(xiàn)場返回YY掃描鍵盤有鍵按下NN調(diào)用顯示程序調(diào)用定時比較程序有鍵按下求取鍵號返回調(diào)用顯示程序調(diào)用定時比較程序調(diào)用顯示程序調(diào)用定時比較程序圖5.5 鍵盤掃描流程圖本次設(shè)置,清零重新開始計時。 (4)鍵盤掃描程序模塊KEYSCAN流程圖如圖5.5所示。判斷是否有鍵按下,無鍵按下則循環(huán)等待;有鍵按下則求取鍵號并將鍵號送入A累加器返回。程序中的去抖延時和循環(huán)等待延時都用DIS

29、PLAY子程序來代替,從而保證隨時刷新顯示。(5) 顯示程序模塊DISPLAY:流程圖如圖5.5所示。將顯示緩沖區(qū)中的6位BCD碼用動態(tài)掃描方式顯示。為此,必須首先將3字節(jié)計時緩沖區(qū)中的時、分、秒壓縮BCD碼拆分為6字節(jié)(時、分、秒的十位、個位分別占有一字節(jié))BCD這一功能由拆字子程序SEPA來實現(xiàn)。需要注意的是,當(dāng)按下時間或鬧鐘設(shè)置鍵后,在6位設(shè)置完成之前,應(yīng)顯示鍵入的數(shù)據(jù),而不顯示當(dāng)前時間。為此,我們設(shè)置了一個計時顯示允許標(biāo)志位F0,在時間/鬧鐘設(shè)置期間F0=1,不調(diào)用SEPA,即調(diào)用SEPA 刷新顯示緩沖區(qū)的前提條件是F0=0。圖5.6 顯示流程圖保護(hù)現(xiàn)場允許顯示計時時間動態(tài)掃描顯示返回

30、調(diào)用拆字程序NY(6)定時比較程序模塊ALARM:流程圖如圖5.7所示。將當(dāng)前時間(計時緩沖區(qū)的值)與預(yù)設(shè)的啟鬧時間(鬧鐘設(shè)置寄存區(qū)的值)比較,二者完全相同時,啟動蜂鳴器鳴叫,并置位鬧鐘標(biāo)志位。返回后,待重新按下ALM鍵停鬧,并清零鬧鐘標(biāo)志。保護(hù)現(xiàn)場恢復(fù)現(xiàn)場鬧鐘值與計時值秒單位相等鬧鐘值與計時值分單位相等啟鬧鬧鐘標(biāo)志置位鬧鐘值與計時值小時單位相等圖5.7 定時比較流程圖返回NNNYYY(7)拆字程序SEPA與合字程序COMB:如前所述,拆字程序的功能是將3字節(jié)計時緩沖區(qū)中的時、分、秒壓縮BCD碼拆分為6字節(jié)(時、分、秒的個位、十位分別占有一字節(jié))位壓縮BCD碼送入計時緩沖區(qū)或鬧鐘值寄存區(qū),同時

31、檢測時間值得合法性。下面給出各模塊的源程序。;*主程序*ORG 0000HAJMP MAINORG 000BHAJMP CLOCKORG 0030HPORT EQU 8000HPORTA EQU 8001HPORTB EQU 8002HPORTC EQU 8003HDISP0 EQU 30HDISP1 EQU 31HDISP2EQU 32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CHMINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMINEQU41HASECEQU42HF1BITPSW.1MAIN:MOVSP,#50H;設(shè)

32、置堆棧區(qū)MOVXDPTR,#PORTMOVA,#03HMOVXDPTR,A;8155初始化CLRF1;清零鬧鐘標(biāo)志位CLRF0;允許計時顯示MOVAHOUR,#0FFHMOVAMIN,#0FFHMOVASEC,#0FFHMOVR7,#10HMOVR0,#DISP0CLRALOOP:MOVRO,AINCR0DINZR7,LOOP;設(shè)置初值MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CH;定時器0初始化,定時時間100msSETBTR0;啟動定時器SETBEASETBET0;開中斷BEGIN:ACALLALARM;調(diào)用定時比較ACALLKEYSCAN;調(diào)用鍵盤掃描CJNEA,

33、#0AH,NEXT1;是CLRRET鍵否CLRTR0;是則暫時停止計時MOV R1,#HOUR;地址指針指向計時緩沖區(qū)首地址AJMP MODNEXT1:CJNEA,#0BH,BEGIN;是ALARM鍵否JB F1,NEXT2;鬧鐘正在鬧響否MOV R1,#AHOUR;地址指針指向鬧鐘值寄存區(qū)首地址MOD:SETBF0 ;置位時間設(shè)置/鬧鐘定時標(biāo)志,禁止顯示計時時間ACALLMODIFY ;調(diào)用時間設(shè)置/鬧鐘定時程序SETBTR0 ;重新開始計時AJMPBEGINNEXT2:SETBP1.0;鬧鐘正在響鬧,停鬧 CLRF1;清零鬧鐘標(biāo)志 AJMPBEGIN;*時間設(shè)置/鬧鐘定時模塊MODIFY*

34、MODIFY: ACALL KEYIN ;調(diào)用鍵盤設(shè)置子程序ACALL COMB ;調(diào)用合字子程序 RET鍵盤設(shè)置子程序KEYIN:KEYIN: PUSH PSW PUSH ACC SETB RS1 ;保護(hù)現(xiàn)場 MOV R0,#DISP0 ;R0指向顯示緩存區(qū)首地址 MOV R7,#06H ;設(shè)置鍵盤輸入次數(shù)L1: CLR RS1 ACALL KEYSCAN ;調(diào)用鍵盤掃描程序取按下的鍵號 SETB RS1 CJNE A,#0AH, L2 ;鍵入數(shù)合法性檢測(是否大于9)L2: JNC L1 ;大于9,重新輸入 MOV R0,A ;鍵號送顯示緩沖區(qū) INC R0 DINZ R7,L1 ;6位時

35、間輸入完否,未完繼續(xù),否則返回 POP ACC POP PSW CLR RS1 ;恢復(fù)現(xiàn)場 ERT;*鍵盤掃描 子程序KEYSCAN*KEYSCAN: ACALL TEST ;判斷按鍵是否按下子程序TEST JNZ REMOV;有鍵按下調(diào)消抖延時 ACALL DISPLAY ACALL ALARM AJMP KEYSCAN;無鍵按下繼續(xù)判斷是否按鍵REMOV: ACALL DISPLAY;調(diào)用顯示子程序延時消抖 ACALL ALARM ACALL TEST;再判是否有鍵按下 JNZ LIST;有鍵按下轉(zhuǎn)逐列掃描 ACALL DISPLAY ACALL ALARM AJMP KEYSCAN;無按

36、鍵按下繼續(xù)判斷是否按鍵LIST: MOV R2, #OFEH;首列掃描字送R2 MOV R3, #00H;首列鍵號送R3LINE0:MOV DPTR, #PORTA ;DPTR指針指向8155的A口 MOV A, R2;首列掃描字送R2 MOVX DPTR, A;首列掃描字送8155的A口 MOV DPTR, #PORTC;DPTR指針指向8155的C口 MOVX A, DPTR ;讀入C口地行狀態(tài) JB ACC.0, LINE1;第0行鍵無鍵按下轉(zhuǎn)第1行 MOV A, #00H ;第0行有鍵按下,行首鍵號送A AJMP TRYK;求鍵號LINE1: JB ACC.1, LINE2 ;第1行鍵

37、無鍵按下,轉(zhuǎn)第2行 MOV A, #04H ;第1行有鍵按下,行首鍵號送A AJMP TRYK ;求鍵號LINE2: JB ACC.2, NEXT ;第2行鍵無鍵按下,轉(zhuǎn)第3行 MOV A, #08H ;第2行有鍵按下,行首鍵號送A AJMP TRYK ;求鍵號NEXT: INC R3 ;掃描下一列 MOV A, R2 ;列掃描字送A JNB ACC.3, EXIT;4列掃描完,重新進(jìn)行下一輪掃描 RL A ;4列未掃描完,掃描字左移掃描下一列 MOV R2, A ;掃描字送A AJMP LINE0 ;轉(zhuǎn)向掃描下一列EXIT: AJMP KEYSCAN ;等待下一次按鍵TRYK: ADD A,

38、 R3 ;按公式計算鍵碼,求得鍵號 PUSH ACC ;鍵號入棧保護(hù)LETK: ACALL TEST ;等待按鍵釋放 JNZ LETK ;按鍵未釋放,繼續(xù)等待 POP ACC ;按鍵釋放,鍵號出棧 RET ;鍵盤掃描結(jié)束,返回TEST: MOV DPTR, #PORTA ;DPTR指針指向8155的A口 MOV A, #00H MOVX DPTR, A;全掃描字00H送8155的A口 MOV DPTR, #PORTC ;DPTR指針指向8155的C口 MOVX A, DPTR;讀入C口行狀態(tài) CPL A;A取反,以高電平表示有鍵按下 ANL A, #07H;屏蔽高5位 RET;*顯示子程序DI

39、SPLAY*DISPLAY: JB F0, DISP ;允許時間顯示標(biāo)志F0=1轉(zhuǎn)DISP ACALL SEPA ;否則調(diào)用SEPA刷新顯示緩沖區(qū)DISP: PUSH PSW ;動態(tài)掃描顯示子程序 PUSH ACC SETB RS0 MOV DPTR, #PORTA MOV A, #0FFH MOVX DPTR, A;關(guān)顯示 MOV R0,#DISP0 MOV R7, #00H MOV R6, #06H MOV R5,#0FEHDIS1: MOV DPTR, #TAB MOV A, R0 MOVC A, A+DPTR MOV DPTR, #PORTB MOVX DPTR, A MOV DPTR

40、, #PORTA MOV A, R5 MOVX DPTR, AHRE: DJNZ R7, HERE INC R0 MOV A, R5 DJNZ R6, DIS1 CLR RS0 POP ACC POP PAW RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH, 6FH,77H,7CH,39H,5EH,79H,71H ;共陰極字形碼表;*合字子程序COMB*COMB: MOV R0, #DISP1 ;R0指向顯示緩沖區(qū)小時低位 ACALL COMB1 ;合字 CJNE A, #24H,CHK ;小時大于24否CHK: JNC EXIT1 ;大于2

41、4則取消本次設(shè)置,推出 MOV R1, A ;否則小時送計時緩沖區(qū)/鬧鐘值寄存區(qū)小時單元 INC R1 MOV R0,#DISP3 ;R0指向顯示緩沖區(qū)分低位 ACALL COMB1 CJNE A, #60H, CHK1CHK1:JNC EXIT1 MOV R1, A INC R1 MOV R0,#DISP5 ;R0指向顯示緩沖區(qū)秒低位 ACALL COMB1 CJNE A, #60H, CHK2CHK2:JNC EXIT1 MOV R1,A RETEXIT1: AJMP MAIN ;輸入不合法退出,重新清零計時COMB1: MOV A, R0 ANL A, #0FH ;取出低位 MOV 43

42、H, A ;暫存于43H單元 DEC R0 ;指向高位 MOV A, R0 ANL A, #0FH SWAP A ;高位送高4位 ORL A, 43H ;高低位合并 RET;*拆字子程序SEPA* SEPA: PUSH PSW PUSH ACC SETB RS0 MOV R0,#DISP5 ;指向顯示緩沖區(qū)秒低位 MOV A, SEC ACALL SEPA1 MOV A,MIN ACALL SEPA1 MOV A, HOUR ACALL SEPA1 POP ACC POP PSW CLR RS0 RETSEPA1: MOV 44H, A ;暫存44H ANL A, #0FH ;取出低位 MOV R0, A ;送顯示緩沖區(qū)低位 DEC R0 ;指向顯示緩沖區(qū)高位 MOV A, 44H ANL A, #0F0H ;取出高位 SWAP A ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論