可編程作息時(shí)間控制器設(shè)計(jì)(單片機(jī))_第1頁
可編程作息時(shí)間控制器設(shè)計(jì)(單片機(jī))_第2頁
可編程作息時(shí)間控制器設(shè)計(jì)(單片機(jī))_第3頁
可編程作息時(shí)間控制器設(shè)計(jì)(單片機(jī))_第4頁
可編程作息時(shí)間控制器設(shè)計(jì)(單片機(jī))_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 20132014學(xué)年 第2學(xué)期 單片機(jī)原理與應(yīng)用課 程 設(shè) 計(jì) 報(bào) 告 學(xué) 校: 北華航天工業(yè)學(xué)院題 目: 可編程作息時(shí)間控制器設(shè)計(jì) 專 業(yè): 惺惺惜惺惺 班 級: Bxxxxx 姓 名: xxxxx 學(xué) 號: 惺惺惜惺惺信息學(xué)、指導(dǎo)教師: xx 電子工程系2013年6月14日可編程作息時(shí)間控制器設(shè)計(jì)任務(wù)書課題名稱可編程作息時(shí)間控制器設(shè)計(jì)指導(dǎo)教師xx 執(zhí)行時(shí)間20132014學(xué)年第一學(xué)期 第16周學(xué)生姓名學(xué)號承擔(dān)任務(wù)ZzzZxxxx設(shè)計(jì)目的1、掌握匯編語言的基本結(jié)構(gòu)及應(yīng)用;2、掌握各個(gè)部分功能的設(shè)計(jì)及應(yīng)用;3、學(xué)會使用protues軟件進(jìn)行電路仿真。設(shè)計(jì)要求1、 按照給定的時(shí)間模擬控制實(shí)現(xiàn)上

2、下課打鈴、燈光控制(屏幕顯示);2、 具有各日期和時(shí)鐘顯示。摘 要本課題是應(yīng)用AT89C52為核心控制器件的作息時(shí)間控制鐘,由鍵盤、聲音輸出模塊、電源轉(zhuǎn)換模塊和存儲模塊四部分組成。它利用AT89C52的定時(shí)/計(jì)數(shù)器來計(jì)算時(shí)間,并用存儲器記錄數(shù)據(jù),保證了系統(tǒng)的可靠性。AT89C52單片機(jī)是整個(gè)設(shè)計(jì)的核心控制器件,根據(jù)從鍵盤接受的數(shù)據(jù)控制整個(gè)設(shè)計(jì)的工作流程。整體性好,人性化強(qiáng),可靠性高,實(shí)現(xiàn)了對時(shí)間控制的智能化,擺脫了傳統(tǒng)由人來控制時(shí)間的長短的不便,可對一些以24小時(shí)為周期的開關(guān)量進(jìn)行自動控制。如上下課打鈴及擴(kuò)音設(shè)備的開與關(guān)。采用AT89C52單片機(jī)來實(shí)現(xiàn)對上述開關(guān)量的控制,設(shè)有8位數(shù)碼管、可以實(shí)

3、時(shí)顯示時(shí)間、系統(tǒng)還設(shè)有輸入鍵盤,用以修改實(shí)時(shí)實(shí)時(shí)時(shí)鐘,體現(xiàn)了系統(tǒng)簡單、工作穩(wěn)定可靠、價(jià)廉、控制時(shí)間精確及系統(tǒng)體積小等特點(diǎn)。首先設(shè)計(jì)各個(gè)模塊的屏幕顯示,其次是各個(gè)模塊需要調(diào)用的小程序,有PC機(jī)的日期和時(shí)鐘,響鈴聲音,按鍵,屏幕顯示以及延時(shí)的調(diào)用等等,最后是將各個(gè)功能模塊與其中需要的小程序通過正確的匯編語言組建起來。這樣便完成了源文件的建立。再通過.ASM源文件生成的.EXE可執(zhí)行文件進(jìn)行仿真。該仿真可以模擬實(shí)現(xiàn):與PC機(jī)日期時(shí)鐘保持一致的顯示功能,仿照已設(shè)定的響鈴時(shí)間進(jìn)行打鈴功能,根據(jù)已設(shè)定的早晚作息時(shí)間燈光控制的功能,鍵盤輸入修正響鈴時(shí)間,隨時(shí)手動按鍵實(shí)現(xiàn)響鈴的功能。目 錄摘 要- 2 -目

4、錄- 4 -第一章 緒論- 5 -1.1 課題研究的目的與意義- 5 -1.2 研究內(nèi)容及采用方法- 5 -1.2.1 主要研究內(nèi)容- 5 -1.2.2 主要采用方法- 5 -1.3 課題的研究原理- 6 -第2章 可編程作息時(shí)間控制器的方案設(shè)計(jì)- 7 -2.1 總體方案組成框圖及設(shè)計(jì)流程圖- 7 -2.2 具體步驟實(shí)施- 9 -2.2.1 日期和時(shí)鐘顯示功能的設(shè)計(jì)- 9 -2.2.2 上下課打鈴功能的設(shè)計(jì)- 11 -2.2.3 燈光顯示功能的設(shè)計(jì)- 14 -2.2.4 修改響鈴時(shí)間功能的設(shè)計(jì)- 14 -2.2.5 模擬手動控制功能的設(shè)計(jì)- 15 -第3章 可編程作息時(shí)間控制器的protues

5、仿真- 17 -3.1 仿真結(jié)果- 17 -3.2性能及誤差分析- 19 -附 錄- 20 -參 考 文 獻(xiàn)- 27 -第一章 緒論1.1 課題研究的目的與意義20世紀(jì)末,電子技術(shù)得到了飛速的發(fā)展。在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透到了社會的各個(gè)領(lǐng)域,有力的推動和提高了社會生產(chǎn)力的發(fā)展與信息化程度,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提升,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。時(shí)間對于人來說總是那么珍貴,工作的忙碌性和繁雜讓人容易忘記當(dāng)前時(shí)間。然而遇到重大事情的時(shí)候,一旦忘記時(shí)間,就會給自己或他人造成更大的麻煩。對于學(xué)校來說作息時(shí)間尤為重要。如今,在電子計(jì)算機(jī)基礎(chǔ)上發(fā)展而來的可編程作息時(shí)間控制器,它可以利用電

6、子計(jì)算機(jī)的內(nèi)部時(shí)間,通過程序判斷處理,完成對作息時(shí)間的精確控制,并且由于是程序控制,所以可通過改變程序而進(jìn)而靈活改變作息時(shí)間,同時(shí)可以實(shí)時(shí)顯示時(shí)間,并實(shí)現(xiàn)打鈴功能??删幊虝r(shí)間控制器可實(shí)現(xiàn)對時(shí)間控制的智能化,擺脫由人控制時(shí)間的長短不同的不便,并且可以在必要時(shí)人工切入控制,完美的滿足作息時(shí)間控制。1.2 研究內(nèi)容及采用方法1.2.1 主要研究內(nèi)容用C語言編寫作息時(shí)間控制程序,按照給定的時(shí)間模擬控制,上下課打鈴、燈光控制(屏幕顯示),并且具備日期和時(shí)鐘顯示。給定的時(shí)間可修改,可模擬手動控制,用揚(yáng)聲器模擬打鈴。1.2.2 主要采用方法通過匯編語言編程,先在數(shù)據(jù)段中開幾段緩沖區(qū),以存放需要顯示的提示信息

7、以及存儲PC機(jī)內(nèi)部時(shí)鐘日期等等,調(diào)用子程序的清屏部分來顯示已經(jīng)設(shè)定好的屏幕部分,再調(diào)用DOS的日期及時(shí)鐘調(diào)用功能,讀取PC機(jī)內(nèi)部日期和時(shí)鐘,并將數(shù)據(jù)存入顯示緩沖區(qū),然后調(diào)用時(shí)間和日期顯示功能,把程序設(shè)計(jì)成用刷新的方式來不斷獲取系統(tǒng)時(shí)間,這樣就有了一秒一秒走動的日期時(shí)鐘顯示,在此過程需要用到延時(shí)程序,所以把延時(shí)程序單獨(dú)做成一個(gè)子程序,然后在需要的時(shí)候調(diào)用它,使得時(shí)間顯示程序更加精煉,此時(shí)日期和時(shí)鐘顯示功能已經(jīng)完成;而后設(shè)計(jì)燈光控制(屏幕顯示),采用比較跳轉(zhuǎn)的方式即可,當(dāng)?shù)竭_(dá)設(shè)定的時(shí)間區(qū)域時(shí)通過比較來判斷是亮燈還是滅燈;隨后是上下課打鈴的模擬,需要調(diào)用DOS顯示功能,將設(shè)定好的時(shí)間在屏幕上顯示出來

8、,然后調(diào)用PC機(jī)內(nèi)部時(shí)鐘,判斷時(shí)鐘與給定時(shí)間是否相同,進(jìn)而判斷是否響鈴,若響鈴則調(diào)用設(shè)定好的響鈴程序,并實(shí)現(xiàn)屏幕模擬顯示;給定時(shí)間修改是調(diào)用鍵盤I/O中斷功能號,獲取鍵值的方法來進(jìn)入,先確定應(yīng)該修改哪個(gè)響鈴,再將新的響鈴時(shí)間數(shù)據(jù)存入要修改時(shí)鐘的緩沖區(qū),并將其覆蓋來實(shí)現(xiàn);模擬手動控制、用揚(yáng)聲器模擬打鈴,同樣采用調(diào)用鍵盤I/O中斷功能號,獲取鍵值的方法,判斷是否與設(shè)定的手動按鍵相同,若相同則進(jìn)入手動控制,進(jìn)入后調(diào)用響鈴程序,而后自動退出響鈴,開始其他響應(yīng)功能。1.3 課題的研究原理將定時(shí)鬧鐘改造為4路可調(diào)鬧鐘,從而實(shí)現(xiàn)打鈴等功能。當(dāng)四路鬧鐘中的任一路到時(shí),均會點(diǎn)亮燈、打鈴。如有需求,可對程序進(jìn)行調(diào)

9、整,增加鬧鐘的路數(shù),及到時(shí)后的處理方式第2章 可編程作息時(shí)間控制器的方案設(shè)計(jì)2.1 總體方案組成框圖及設(shè)計(jì)流程圖時(shí)間作息控制的主體電路應(yīng)包括秒信號發(fā)生器、時(shí)間顯示電路按鍵電路、供電電源以及鬧鈴指示電路等幾部分。時(shí)間作息控制的系統(tǒng)組成框圖如圖2-1-1所示:復(fù)位、時(shí)鐘等電路電源供電電路聲光指示電路LED顯示電路按鈕電路AT89C52圖2-1-1時(shí)間作息控制的系統(tǒng)組成框圖圖2-1-2介紹了作息時(shí)間控制器的大致設(shè)計(jì)思路開始系統(tǒng)日期時(shí)間并且轉(zhuǎn)二進(jìn)制為ACSII碼將日期時(shí)間存入顯示器緩沖區(qū)結(jié)束燈光控制顯示顯示日期、時(shí)間和界面響鈴設(shè)定和修正時(shí)間調(diào)用清屏程序按下Esc?手動控制否 是圖2-1-2 方案實(shí)施流

10、程圖2.2 具體步驟實(shí)施2.2.1 日期和時(shí)鐘顯示功能的設(shè)計(jì)2.2.1.1日期和時(shí)鐘顯示流程圖 數(shù)據(jù)段存儲顯示時(shí)間提示開辟存儲日期時(shí)間緩沖區(qū) 代碼段中調(diào)用日期二進(jìn)制轉(zhuǎn)換為ASCII碼存儲緩沖區(qū)調(diào)用時(shí)間二進(jìn)制轉(zhuǎn)換為ASCII碼存儲緩沖區(qū)調(diào)用界面和日期時(shí)鐘顯示圖2-2-1是時(shí)鐘和日期設(shè)計(jì)的大體思路,先在數(shù)據(jù)段中開辟存儲日期時(shí)間等的緩沖區(qū),便于后續(xù)程序的使用,再調(diào)日期和時(shí)鐘的DOS功能調(diào)用中的顯示功能,將數(shù)據(jù)由二進(jìn)制轉(zhuǎn)換為ASCII碼,存儲并顯示。圖2-2-1 日期和時(shí)鐘顯示流程圖2.2.1.2日期和時(shí)鐘設(shè)計(jì)步驟分析該模塊設(shè)計(jì)中,先在數(shù)據(jù)段開了兩段緩沖區(qū),以存儲顯示日期和時(shí)間的提示Time is以及

11、從PC機(jī)讀到的日期和時(shí)間。而后是調(diào)用DOS的日期功能,其功能號是2ah,日期分別存于cx,dx中,在該設(shè)計(jì)中調(diào)用出來的日期時(shí)間均是二進(jìn)制數(shù),如果要在界面中顯示必須要轉(zhuǎn)換成ASCII碼。每一次數(shù)制轉(zhuǎn)換后均要將轉(zhuǎn)換后的數(shù)據(jù)存儲于數(shù)據(jù)段開辟的存儲緩沖區(qū)tbuf內(nèi),接下來便可調(diào)用DOS的的9號顯示功能,只需將提示信息、日期及時(shí)間的存儲緩沖區(qū)的偏移地址賦予dx,再使用DOS功能,調(diào)用9號的顯示功能即可。這樣,日期和時(shí)間的第一次顯示時(shí)間完成,由于PC機(jī)的日期時(shí)間一直在變化,所以需要不斷調(diào)用PC機(jī)的顯示時(shí)間并顯示,因此需要再回轉(zhuǎn)至最初的調(diào)用日期程序,這樣,顯示日期時(shí)間的功能才真正完成。下面是針對數(shù)制轉(zhuǎn)換和日

12、期時(shí)間的顯示做的更為細(xì)致的解讀。 (1) 數(shù)制轉(zhuǎn)換通常在計(jì)算機(jī)當(dāng)中,從鍵盤輸入的十進(jìn)制數(shù)的每一位數(shù)碼或者是向CRT輸出的十進(jìn)制的每一位數(shù),均是以它的ASCII碼表示的。而在機(jī)器中的一個(gè)十進(jìn)制數(shù),是以相應(yīng)的二進(jìn)制數(shù)存放或者是以BCD碼的形式存放。因此,如果我們想將PC機(jī)中讀取的日期時(shí)間顯示到.EXE的界面中,必須將從中讀取的二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼。本設(shè)計(jì)是先將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),再將十進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼的,使其在屏幕上顯示出來。由于調(diào)用該小程序段的顯示數(shù)值都是十位數(shù)或個(gè)位數(shù),所以該段小程序的設(shè)計(jì)思路是使用減法,統(tǒng)計(jì)需要轉(zhuǎn)換的數(shù)值中有多少10、1,即為十進(jìn)制數(shù)中的十、個(gè)位上的數(shù),然后

13、將十進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼輸出。首先,在數(shù)據(jù)段中已經(jīng)設(shè)計(jì)好了被減數(shù),即const內(nèi)的數(shù)據(jù),用需要數(shù)據(jù)轉(zhuǎn)換的數(shù)據(jù)已經(jīng)在之前的數(shù)據(jù)中賦值給了ax,使用sub ax,si語句實(shí)現(xiàn)上述的減法,若不夠減,則需要重復(fù)減,并累計(jì)次數(shù),直至不夠減為止,累計(jì)的次數(shù)即為該數(shù)據(jù)十位數(shù)的數(shù)值,此時(shí)仍舊通過or dI,30h語句轉(zhuǎn)換為ASCII碼,并將轉(zhuǎn)換后的數(shù)據(jù)都存儲于bx中。(2)日期時(shí)鐘顯示功能 9號DOS功能調(diào)用可實(shí)現(xiàn)日期時(shí)鐘顯示功能,由于需要在.EXE界面顯示提示信息mess1中的相關(guān)內(nèi)容,因此調(diào)用BIOS功能,置光標(biāo)于0行0列,將ah賦值2即可置光標(biāo),dh的賦值表示行,dI的賦值表示列,使用Iea dx,

14、messI語句,將messI的偏移地址賦予dx,使用mov ah,9和int 21h語句完成DOS的9號功能調(diào)用,這樣.EXE界面就出現(xiàn)了mess 1中的相關(guān)內(nèi)容;再使用BIOS功能調(diào)用,將光標(biāo)置于17行21列顯示日期時(shí)間的提示信息time is,方法與上述介紹的相同,最后即可將光標(biāo)置于17行37列,顯示PC機(jī)的日期和時(shí)間。2.2.2 上下課打鈴功能的設(shè)計(jì)2.2.2.1上下課打鈴設(shè)計(jì)流程圖如圖是上下課打鈴設(shè)計(jì)的大體思路,先于數(shù)據(jù)段設(shè)存儲緩沖區(qū),存儲設(shè)定的響鈴時(shí)間,將響鈴時(shí)間由二進(jìn)制換成ASCII代碼,調(diào)用DOS的顯示功能,顯示響鈴時(shí)間,再調(diào)PC機(jī)時(shí)間與設(shè)定的響鈴時(shí)間比較,相同時(shí)響鈴,不同時(shí)跳轉(zhuǎn)

15、。數(shù)據(jù)段設(shè)存儲緩沖區(qū)響鈴時(shí)間數(shù)值轉(zhuǎn)換界面顯示響鈴時(shí)間設(shè)PC機(jī)時(shí)間與響鈴比較時(shí)間相等?響鈴否 是圖2-2-2 上下課打鈴設(shè)計(jì)流程圖 2.2.2.2上下課打鈴設(shè)計(jì)步驟分析本部分設(shè)計(jì)中,先在數(shù)據(jù)段開辟了四段緩沖區(qū),分別是bel響鈴提示信息,tbufl響鈴時(shí)間存儲區(qū),timeh設(shè)定好的響鈴時(shí)間中小時(shí)的存儲區(qū),timem設(shè)定好的響鈴時(shí)間中的分鐘存儲區(qū),進(jìn)入代碼段后,便開始將timeh和timem中設(shè)定好的響鈴時(shí)間由二進(jìn)制數(shù)轉(zhuǎn)換成ASCII代碼,并將轉(zhuǎn)換后的信息存于tbufl,對于數(shù)制轉(zhuǎn)換的內(nèi)容上文中已有介紹,這里便不再重復(fù)了。這是tbufl中已經(jīng)包含我最初設(shè)定的二十個(gè)響鈴時(shí)間,使用DOS功能調(diào)用中的9號

16、顯示功能即可將上述二十個(gè)響鈴時(shí)間顯示在界面上。隨后需要調(diào)用PC機(jī)的時(shí)間與我設(shè)定的時(shí)間進(jìn)行比較,若相等則響鈴,響鈴后返回,若時(shí)間不等同樣也返回,去重復(fù)上述的顯示、調(diào)用以及比較的過程。接下來我會針對PC機(jī)時(shí)間與我設(shè)定的時(shí)間比較的程序和響鈴程序做較為細(xì)致的分析,以使該設(shè)計(jì)更加清晰明了。(1)PC機(jī)時(shí)間與設(shè)定響鈴時(shí)間比較首先我將存儲響鈴時(shí)間的timeh和timem的偏移地址分別賦給了si和di,隨后使用DOS功能調(diào)用語句中的mov ah,2ch以及int 21h來完成PC機(jī)時(shí)間的讀取,對于PC機(jī)時(shí)間的讀取,系統(tǒng)自動將小時(shí)、分鐘分別存于ch、cl中。接下來便開始比較,先假設(shè)設(shè)定的響鈴均已比較完,緩沖區(qū)后

17、區(qū)時(shí)間為空,則應(yīng)當(dāng)先將PC機(jī)時(shí)間與設(shè)定好的響鈴時(shí)間比較,若相同則跳轉(zhuǎn)響鈴程序,若不相等則繼續(xù)進(jìn)行比較直至將設(shè)定好的響鈴時(shí)間均比較完畢,然后進(jìn)行后續(xù)工作。(2)響鈴功能設(shè)計(jì)分析IBM PC機(jī)系列計(jì)算機(jī)的發(fā)聲系統(tǒng)主要由定時(shí)器/計(jì)數(shù)器8253/8254芯片來提高音頻信號,最后通過并行接口芯片8255的PB端口控制驅(qū)動電路使系統(tǒng)的揚(yáng)聲器發(fā)聲。8253/8254芯片共有3個(gè)獨(dú)立的計(jì)數(shù)通道,其中2號通道分配給系統(tǒng)的揚(yáng)聲器頻率控制,它的I/.O端口地址為42H,8253/8254的工作方式與音頻頻率均由8253/8254的控制寄存器(I/O端口地址42H)控制。而且8253/8254有6種工作方式,對于揚(yáng)聲

18、器發(fā)聲總是選用方式3,因此為了讓發(fā)生器工作,需要通過mov al,0b6h和out 43h,al來完成音頻頻率的設(shè)置,通過mov al,03h及out 61h,al來開揚(yáng)聲器,實(shí)現(xiàn)響鈴。2.2.3 燈光顯示功能的設(shè)計(jì)2.2.4 修改響鈴時(shí)間功能的設(shè)計(jì)2.2.4.1 修改響鈴時(shí)間設(shè)計(jì)流程圖圖2-2-3介紹了本模塊的大體思路,首先在數(shù)據(jù)段設(shè)置存儲時(shí)間的緩沖區(qū),其次是調(diào)用鍵盤輸入功能,算的修改響鈴的個(gè)數(shù)和修改的起始位置,最后輸入的時(shí)間替代原時(shí)間完成修改響鈴時(shí)間的功能。數(shù)據(jù)段設(shè)有存儲時(shí)間緩沖區(qū)調(diào)用鍵盤輸入功能計(jì)算修改幾個(gè)響鈴鍵盤輸入時(shí)間代替原時(shí)間計(jì)算從第幾個(gè)開始修改 圖2-2-3 修給響鈴時(shí)間設(shè)計(jì)流程

19、圖2.2.4.2 修改響鈴時(shí)間設(shè)計(jì)步驟分析在本模塊設(shè)計(jì)中,首先需要在數(shù)據(jù)段中開辟出修正提示信息和存儲時(shí)間的緩沖區(qū),當(dāng)接收到手控修正響鈴時(shí)間的信號時(shí),調(diào)用鍵盤輸入功能,該功能將掃描到的鍵盤信息均存儲于緩沖區(qū)內(nèi),第一位為緩沖區(qū)位數(shù),第二位為字符個(gè)數(shù),將字符個(gè)數(shù)除以6即可得到修正響鈴的時(shí)間個(gè)數(shù)。由于鍵盤輸入的前兩位數(shù)字的意義是沖第幾個(gè)響鈴初開始修正,因此需要將前兩位數(shù)由ASCII碼轉(zhuǎn)換成十進(jìn)制數(shù),將轉(zhuǎn)換得到的數(shù)據(jù)存儲,對于鍵盤輸入時(shí)間替代原響鈴時(shí)間功能的實(shí)現(xiàn),需要根據(jù)前面得到的數(shù)據(jù),先跳轉(zhuǎn)至修正響鈴時(shí)間的地址處,然后將鍵盤輸入的響鈴時(shí)間覆蓋原時(shí)間,直至完成上述得到修正響鈴的個(gè)數(shù)為止。在模塊的設(shè)計(jì)中計(jì)

20、算修改幾個(gè)響鈴和應(yīng)從第幾個(gè)開始修改這兩個(gè)小部分較為關(guān)鍵,下面是其更為詳細(xì)的介紹。(1)計(jì)算修改幾個(gè)響鈴調(diào)用鍵盤輸入功能,字符串存入緩沖區(qū),第一位為緩沖區(qū)位數(shù),第二位為字符個(gè)數(shù),自第三位開始存儲輸入字符串,取緩沖區(qū)內(nèi)第二個(gè)數(shù)值將其存于ax中,由于鍵盤輸入的數(shù)據(jù)均為00,00這種形式,所以每兩個(gè)響鈴時(shí)間均隔五個(gè)字符,因此mov cx,06h和div cx兩語句即可得到修改響鈴時(shí)間的個(gè)數(shù)。(2)計(jì)算從第幾個(gè)開始修改調(diào)出鍵盤輸入的前兩位數(shù)字即可但由于鍵盤掃描的數(shù)字是以ASCII碼形式表示,而計(jì)算機(jī)中以二進(jìn)制數(shù)形成存儲,因此需要通過sub dh,30h這種類似的語句進(jìn)行數(shù)字轉(zhuǎn)換,并通過地址循環(huán)遞加的方式

21、,找到需要修正響鈴時(shí)間的地址。2.2.5 模擬手動控制功能的設(shè)計(jì)2.2.5.1 模擬手動控制設(shè)計(jì)流程圖圖2-2-4介紹了本模塊設(shè)計(jì)的大體思路,調(diào)用鍵盤I/O中斷功能號1,進(jìn)行鍵盤掃描,判斷當(dāng)掃描到Esc時(shí),退出界面顯示,為S或s實(shí)現(xiàn)響鈴功能,即手動控制響鈴。為C或c時(shí),跳轉(zhuǎn)至修改響鈴時(shí)間的程序段。開始掃描鍵值修改響鈴時(shí)間響鈴?fù)顺鰹镋sc為C或c為S或s是 否是 否否是圖2-2-4模擬手動控制設(shè)計(jì)流程圖2.2.5.2 模擬手動控制設(shè)計(jì)步驟分析模擬手動控制主要實(shí)現(xiàn)的功能是只要按下鍵盤的S或s鍵,便開始響鈴,因此在設(shè)計(jì)時(shí)先要調(diào)用鍵盤I/O中斷功能號1,獲取鍵值到AL,然后將鍵值A(chǔ)L與lbh作比較,通

22、過cmp al,lbh和jz quit判斷是否按下Esc鍵,若是,則跳出.EXE的界面,若不是,則將鍵值A(chǔ)L與S、s分別作比較,通過cmp al,S以及cmp al,s和jz shou判斷是否按下S或s鍵,若是跳轉(zhuǎn)至響鈴位置,即實(shí)現(xiàn)手動控制響鈴的功能,若不是再通過cmp al, C以及cmp al,c和jz correct判斷是否按下C或c鍵,若是則跳轉(zhuǎn)至修改響鈴時(shí)間的位置。第3章 可編程作息時(shí)間控制器的protues仿真3.1 仿真結(jié)果當(dāng)K1被按下一次后,“小時(shí)”顯示的數(shù)碼管就閃爍,其他位就沒有變化,閃爍就說明可以對該位上進(jìn)行“小時(shí)”上調(diào)整;當(dāng)K1被按下兩次后,“分鐘”顯示的數(shù)碼閃爍并可以調(diào)

23、整;當(dāng)K1被按下三次后,“秒”顯示的數(shù)碼閃爍并可以調(diào)整。K2,K3分別作為調(diào)整時(shí)間時(shí)前進(jìn)和后退操作。P2最后接的引腳到LED發(fā)光二極管上,當(dāng)按鍵被按下時(shí),該發(fā)光二級管就會被點(diǎn)亮。P3上接了一個(gè)喇叭和開關(guān),當(dāng)一定時(shí)間到了時(shí),喇叭就會發(fā)聲,開關(guān)可以控制喇叭發(fā)聲。3.2性能及誤差分析該作息時(shí)間控制器有四個(gè)按鍵: K1, K2,K3。初始加電時(shí)數(shù)碼管顯示時(shí)鐘計(jì)數(shù)初值并運(yùn)行。按K1鍵進(jìn)行校時(shí),可以分別按K2和K3鍵進(jìn)行對時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間。時(shí)鐘正常顯示運(yùn)行狀態(tài)時(shí),按K2鍵顯示閃爍并進(jìn)行定時(shí)時(shí)間設(shè)置,按K1鍵和K3進(jìn)行分和時(shí)的定時(shí)時(shí)間設(shè)定。該電路顯示的誤差主要由晶振自身的誤差所造成,晶

24、振的誤差約為0. 00010. 000001。在軟件的編程過程中所產(chǎn)生的誤差比較小,另外在中斷的過程中,只會在第一次計(jì)時(shí)時(shí)產(chǎn)生時(shí)間的偏移,而它所產(chǎn)生累計(jì)誤差很小,可以忽略。綜合以上分析,本次設(shè)計(jì)時(shí)鐘誤差較小,能得到比較理想結(jié)果,性能穩(wěn)定。課程設(shè)計(jì)體會在整個(gè)設(shè)計(jì)過程中,充分發(fā)揮人的主觀能動性,自主學(xué)習(xí),學(xué)到了許多沒學(xué)到的知識。這次課程設(shè)計(jì)的制作過程是我的一次再學(xué)習(xí),再提高的過程。在課程設(shè)計(jì)中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識。我從資料的收集中,掌握了很多單片機(jī)、LED數(shù)碼管的知識,讓我對我所學(xué)過的知識有所鞏固和提高,并且讓我對當(dāng)今單片機(jī)、LED的最新發(fā)展技術(shù)有所了解。在整個(gè)過程中,我學(xué)到了新知識

25、,增長了見識。在今后的日子里,我仍然要不斷地充實(shí)自己,爭取在所學(xué)領(lǐng)域有所作為。腳踏實(shí)地,認(rèn)真嚴(yán)謹(jǐn),實(shí)事求是的學(xué)習(xí)態(tài)度,不怕困難、堅(jiān)持不懈、吃苦耐勞的精神是我在這次設(shè)計(jì)中最大的收益。我想這是一次意志的磨練,是對我實(shí)際能力的一次提升,也會對我未來的學(xué)習(xí)和工作有很大的幫助。在此次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我的耐心,做什么事都在有耐心。此次課程設(shè)計(jì)中學(xué)了很多很多東西,這是最重要的。參考文獻(xiàn):1 胡輝編著. 單片機(jī)原理與應(yīng)用 華北水利水電出版社,2008.源程序:#include<reg52.h>#define uint unsigned in

26、t #define uchar unsigned charuchar num=0; /記錄按鍵KEY1的次數(shù)的變量uchar temp=0; /記錄定時(shí)器0中斷次數(shù)的變量uchar count=0; /記錄定時(shí)器1中斷次數(shù)的變量uchar aa,i,j;uchar hour,min,sec;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit _led=P27;sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit SPK=P30;sbit K1=P37;void d

27、elay(uint z);/延時(shí)函數(shù)void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa);/顯示函數(shù)void read_key();/讀按鍵函數(shù)void led();/void Alarm(uchar t);/* 主函數(shù) */void main()P2=0xff;hour=6;min=29;sec=50;TMOD=0x11; /同時(shí)控制定時(shí)器T1和T0采用模式1工作(16位計(jì)數(shù)器)TH0=(65536-50000)/256; TL0=(65536-50000)%256;TH1=(65536-50000)/2

28、56;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1; /運(yùn)行控制位TR1=1;SPK=0; while(1) if(hour=6)&(min=30)&(sec=0)|(hour=8)&(min=00)&(sec=0)|(hour=9)&(min=50)&(sec=0)|(hour=10)&(min=00)&(sec=0)|(hour=11)&(min=50)&(sec=0)|(hour=14)&(min=00)&(sec=0)|(hour=15)&

29、(min=50)&(sec=0)|(hour=16)&(min=00)&(sec=0)|(hour=17)&(min=50)&(sec=0)|(hour=23)&(min=00)&(sec=0) if(K1=1) Alarm(90); Alarm(120); Alarm(90); Alarm(120); read_key();if(temp>=20) temp=0; sec+; if(sec>=60) sec=0; min+; if(min>=60) min=0; hour+; if(hour>=24) hour=

30、0; if(count<=15) display(tablehour/10,tablehour%10,tablemin/10, tablemin%10,tablesec/10,tablesec%10,0xff);if(count>15) display(tablehour/10,tablehour%10,tablemin/10, tablemin%10,tablesec/10,tablesec%10,0x00); /* 顯示函數(shù) */void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa) if(n

31、um=0) P1=0x24&aa; P0=0xbf; delay(2);else P1=0x24; P0=0xbf; delay(2); if(num=1) P1=0x01&aa; P0=a; delay(2);else P1=0x01; P0=a; delay(2); /hour if(num=1) P1=0x02&aa; P0=b; delay(2);else P1=0x02; P0=b; delay(2); /hour if(num=2) P1=0x08&aa; P0=c; delay(2);else P1=0x08; P0=c; delay(2); /min if(num=2) P1=0x10&aa; P0=d; delay(2);else P1=0x10; P0=d; delay(2); /min if(num=3)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論