單片機(jī)畢業(yè)設(shè)計(jì)完整版_第1頁
單片機(jī)畢業(yè)設(shè)計(jì)完整版_第2頁
單片機(jī)畢業(yè)設(shè)計(jì)完整版_第3頁
單片機(jī)畢業(yè)設(shè)計(jì)完整版_第4頁
單片機(jī)畢業(yè)設(shè)計(jì)完整版_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 安徽工業(yè)大學(xué)繼續(xù)學(xué)院單片機(jī)原理期末課程設(shè)計(jì) 題 目: 單片機(jī)計(jì)時(shí)時(shí)鐘設(shè)計(jì)與制作 專 業(yè): 電氣工程及其自動(dòng)化 班 級(jí): 14 電 升 姓 名: 夏 云 飛 學(xué) 號(hào):指導(dǎo)老師: 賀 容 波 成 績: ( 2015.12 )目 錄 一、緒論 .11.1單片機(jī)簡介 .1二、硬件系統(tǒng)設(shè)計(jì)方案32.1 時(shí)鐘電路的設(shè)計(jì) 3 2.2復(fù)位電路的設(shè)計(jì)42.3 數(shù)碼顯示電路的設(shè)計(jì) 52.4按鍵電路的設(shè)計(jì)72.5 蜂鳴器電路的設(shè)計(jì) 82.6接線圖 9三、軟件系統(tǒng)設(shè)計(jì)方案3.1 模塊化設(shè)計(jì)方案103.2 主程序的設(shè)計(jì)113.3 LED動(dòng)態(tài)顯示程序的設(shè)計(jì)143.4 計(jì)時(shí)程序模塊的設(shè)計(jì) 173.5 鍵盤程序的設(shè)計(jì)193

2、.6 蜂鳴器程序的設(shè)計(jì) 223.7整個(gè)程序 23四、總結(jié)總結(jié)與致謝28參考文獻(xiàn)29使用說明29一 緒論1.1單片機(jī)簡介1.1.1單片機(jī)的產(chǎn)生計(jì)算機(jī)的發(fā)展經(jīng)歷了從電子管到大規(guī)模集成電路等幾個(gè)發(fā)展階段,隨著大規(guī)模集成電路技術(shù)的發(fā)展,使計(jì)算機(jī)向性能穩(wěn)定可靠、微型化、廉價(jià)方向發(fā)展,從而出現(xiàn)了單片微型計(jì)算機(jī)。 所謂單片微型計(jì)算機(jī),是指將組成微型計(jì)算機(jī)的基本功能部件,如中央處理器CPU、存儲(chǔ)器ROM和RAM、輸入/輸出(I/O)接口電路等集成在一塊集成電路芯片上的微型計(jì)算機(jī),簡稱單片機(jī)??傮w來講,單片機(jī)可以用以下“表達(dá)式”來表示: 單片機(jī)=CPU+ROM+RAM+I/O+功能部件1.1.2單片機(jī)的特點(diǎn)隨著

3、現(xiàn)代科技的發(fā)展,單片機(jī)的集成度越來越高,CPU的位數(shù)也越來越高,已能將所有主要部件都集成在一塊芯片上,使其應(yīng)用模式多、范圍廣,并具有以下特點(diǎn): 體積小,功耗低,價(jià)格便宜,重量輕,易于產(chǎn)品化。 控制功能強(qiáng),運(yùn)行速度快,能針對性地解決從簡單到復(fù)雜的各類控制問題,滿足工業(yè)控制要求,并有很強(qiáng)的位處理和接口邏輯操作等多種功能。 抗干擾能力強(qiáng),適用溫度范圍寬。由于許多功能部件集成在芯片內(nèi)部,受外界影響小,故可靠性高。 雖然單片機(jī)內(nèi)存儲(chǔ)器的容量不可能很大,但存儲(chǔ)器和I/O接口都易于擴(kuò)展。 可以方便的實(shí)現(xiàn)多機(jī)和分布式控制。1.1.3單片機(jī)的應(yīng)用單片機(jī)的應(yīng)用具有面廣量大的特點(diǎn),目前它廣泛的應(yīng)用于國民經(jīng)濟(jì)各個(gè)領(lǐng)域

4、,對技術(shù)改造和產(chǎn)品的更新起著重要作用。主要表現(xiàn)在以下幾個(gè)方面: 單片機(jī)在智能化儀器、儀表中的應(yīng)用:由于單片機(jī)有計(jì)算機(jī)的功能,它不僅能完成測量,還既有數(shù)據(jù)處理、溫度控制等功能,易于實(shí)現(xiàn)儀器、儀表的數(shù)字化和智能化。 單片機(jī)在實(shí)時(shí)控制中的應(yīng)用:單片機(jī)可以用于各種不太復(fù)雜的實(shí)時(shí)控制系統(tǒng)中,如一般性的溫度控制、液面控制、電鍍順序控制等。將測量技術(shù)、自動(dòng)控制技術(shù)和單片機(jī)技術(shù)相結(jié)合,充分發(fā)揮單片機(jī)的數(shù)據(jù)處理和實(shí)時(shí)控制功能,使系統(tǒng)工作于最佳狀態(tài)。 單片機(jī)在機(jī)電一體化中的應(yīng)用:單片機(jī)有利于機(jī)電一體化技術(shù)的發(fā)展,已廣泛應(yīng)用于數(shù)控機(jī)床、醫(yī)療設(shè)備、汽車設(shè)備等。 單片機(jī)在多機(jī)系統(tǒng)中的應(yīng)用:單片機(jī)在多機(jī)系統(tǒng)中的應(yīng)用是將來

5、單片機(jī)發(fā)展的主要模式,它可以提高單片機(jī)的可靠性,使系統(tǒng)運(yùn)行速度更快。 單片機(jī)在計(jì)算機(jī)外圍設(shè)備中的應(yīng)用:單片機(jī)廣泛應(yīng)用于打印機(jī)、繪圖機(jī)等多種計(jì)算機(jī)的外圍設(shè)備,特別是用于智能終端,可大大減輕主機(jī)負(fù)擔(dān),提高系統(tǒng)的運(yùn)行速度。 單片機(jī)在家用電器中的應(yīng)用:單片具有體積小、重量輕、價(jià)格便宜等特點(diǎn),所以家電產(chǎn)品中配上微電腦后,使其身價(jià)百倍,功能更強(qiáng),使用方便,靈活,深得用戶歡迎。 單片機(jī)在通信中的應(yīng)用:單片機(jī)廣泛應(yīng)用于移動(dòng)通信領(lǐng)域,使移動(dòng)電話的功能更強(qiáng)大,操作更方便。二 硬件系統(tǒng)設(shè)計(jì)方案2.1 時(shí)鐘電路的設(shè)計(jì)如圖2-1所示。單片機(jī)工作的時(shí)間基準(zhǔn)是由時(shí)鐘電路提供的。在單片機(jī)的XTAL1和XTAL2兩個(gè)引腳間,接

6、一只晶振及兩只電容就構(gòu)成了單片機(jī)的時(shí)鐘電路,如圖1所示。電路中的器件選擇可以通過計(jì)算和實(shí)驗(yàn)確定,也可以參考一些典型電路的參數(shù)。電路中,電容器C1和C2對振蕩器頻率有微調(diào)作用,通常的取值范圍30±10pF;石英晶體選擇6MHZ或12MHZ都可以。其結(jié)果只是機(jī)器周期時(shí)間不同,影響計(jì)數(shù)器的計(jì)數(shù)初值。圖2-1 時(shí)鐘電路的設(shè)計(jì)2. 2 復(fù)位電路的設(shè)計(jì)如圖2-2所示。單片機(jī)的RET引腳為主機(jī)提供一個(gè)外部復(fù)位信號(hào)輸入端口。復(fù)位信號(hào)是高電平有效,高電平有效的持續(xù)時(shí)間應(yīng)為2個(gè)機(jī)器周期以上。復(fù)位以后,單片機(jī)內(nèi)各部件恢復(fù)到初始狀態(tài),單片機(jī)從ROM的0000H開始執(zhí)行程序。單片機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手

7、工復(fù)位兩種。圖2是51系列單片機(jī)常用的上電復(fù)位和手動(dòng)復(fù)位的組合電路,只要VCC上升時(shí)間不超過1ms,它們都能很好地工作。阻容器件的參考值為,R1=200,R2=1K,C3=22uF。圖2-2 復(fù)位電路的設(shè)計(jì)2. 3 數(shù)碼顯示電路的設(shè)計(jì)如圖2-3所示。單片機(jī)應(yīng)用系統(tǒng)中,通常都需要進(jìn)行人機(jī)對話。這包括人對應(yīng)用系統(tǒng)的狀態(tài)干預(yù)與數(shù)據(jù)輸入,以及應(yīng)用系統(tǒng)向人們顯示運(yùn)行結(jié)果等。顯示器、鍵盤電路就是用來完成人機(jī)對話活動(dòng)的人機(jī)通道。LED顯示器的驅(qū)動(dòng)是一個(gè)非常重要的問題,由系統(tǒng)硬件設(shè)計(jì)框圖可知,顯示電路由LED顯示器、段驅(qū)動(dòng)電路和位驅(qū)動(dòng)電路組成。如果驅(qū)動(dòng)電路能力差,即負(fù)載能力不夠時(shí),顯示器亮度就低,而且驅(qū)動(dòng)電路

8、長期在超負(fù)荷下運(yùn)行容易損壞。因此,在實(shí)際使用中必須接入LED驅(qū)動(dòng)電路。LED顯示器的顯示控制方式分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種,因此在選擇LED驅(qū)動(dòng)器時(shí),一定要先確定顯示方式。靜態(tài)顯示方式就是在任意時(shí)刻,所有顯示器都按照各自接收的字型碼同時(shí)顯示對應(yīng)的字符。靜態(tài)顯示方式要求每位LED顯示器的公共端必須接地(對共陰極LED),或接高電平(對共陽極LED),而每位LED顯示器都由一個(gè)具有鎖存功能的8位端口去控制。這里所指的8位端口可以直接采用并行I/O接口,也可以采用擴(kuò)展的串行輸入/并行輸出移位寄存器。動(dòng)態(tài)顯示是單片機(jī)應(yīng)用系統(tǒng)中最常用的顯示方式之一。它是把所有顯示器的同名字端互相并聯(lián)在一起,并把它們接到

9、字形口上。為了防止各個(gè)顯示器同時(shí)顯示出相同的字符,每個(gè)顯示器的公共端還要受另一組信號(hào)控制,即把它們接到字位口上。這樣,對于一組LED數(shù)碼顯示器需要由兩組信號(hào)控制:一組是字形口輸出的字形碼,用來控制顯示什么用的字符;另一組是字位口輸出的字位碼,用來控制將字符顯示在第幾位顯示器上。在這兩組信號(hào)的控制下,使各位顯示器依次從左至右輪流點(diǎn)亮一遍,過一段時(shí)間再輪流點(diǎn)亮一遍,如此不斷重復(fù)。雖然在任一時(shí)刻只有一位顯示器被點(diǎn)亮,但由于顯示器具有余輝效應(yīng),而人眼又具有視覺惰性,所以看起來與全部顯示器持續(xù)點(diǎn)亮效果完全一樣。若選擇靜態(tài)顯示,則LED驅(qū)動(dòng)器的選擇較為簡單,只要驅(qū)動(dòng)器的驅(qū)動(dòng)能力與顯示器電流相匹配即可。而且

10、只須考慮段的驅(qū)動(dòng),因?yàn)楣碴枠O接+5V,而共陰極接地,所以位的驅(qū)動(dòng)不需要考慮。動(dòng)態(tài)顯示則不同,由于一位數(shù)據(jù)的顯示是由段選和位選信號(hào)共同配合完成的,因此,要同時(shí)考慮段和位的驅(qū)動(dòng)能力,而且段的驅(qū)動(dòng)能力決定位的驅(qū)動(dòng)能力。在應(yīng)用系統(tǒng)中,設(shè)計(jì)要求不同,使用的LED顯示器的位數(shù)也不同,因此廠家就生產(chǎn)了位數(shù)、尺寸、型號(hào)不同的LED顯示器供選擇。在本設(shè)計(jì)中,選擇4位一體的時(shí)鐘型LED顯示器,簡稱“4-LED”,前兩位顯示“天數(shù)”的十位和個(gè)位,中間兩位顯示“小時(shí)”的十位和個(gè)位,后兩位顯示“分”的十位和個(gè)位。4-LED顯示器的引腳如圖3所示,是一個(gè)共陰極接法的6位時(shí)鐘型LED顯示器。其中a、b、c、d、e、f、g為

11、6位LED各段的公共引出端。D1、D2、D3、D4、D5、D6分別是每一位的共陰極輸出端,dp是小數(shù)點(diǎn)引出端。4LED 圖2-3 數(shù)碼顯示電路的設(shè)計(jì)2. 4 按鍵電路的設(shè)計(jì) 如圖2-4所示,在倒計(jì)時(shí)時(shí)鐘應(yīng)用系統(tǒng)工作時(shí)按鈕應(yīng)具備隨時(shí)對當(dāng)前時(shí)間進(jìn)行調(diào)整的功能。要實(shí)現(xiàn)此功能,可以接入鍵盤輸入電路。鍵盤結(jié)構(gòu)的選擇: 在單片機(jī)組成的測控系統(tǒng)及智能化儀器中,用得最多的是非編碼鍵盤。鍵盤結(jié)構(gòu)可以分為獨(dú)立式鍵盤和矩陣式兩類。在本例中只需要3個(gè)按鍵,因此選擇獨(dú)立式鍵盤。如圖4,電路由按鍵和三個(gè)電阻組成,按鍵分別命名為day+1、hour+1和minute+1鍵,按鍵可以采用輕觸開關(guān),電阻采用1K的。鍵盤與單片機(jī)

12、的接口電路設(shè)計(jì):如圖2-4所示,將鍵盤直接與單片機(jī)的P2口連接。用P2.2、P2.1、P2.0引腳分別與day+1、hour+1、minute+1相連。三個(gè)按鍵功能的設(shè)計(jì)思路如下:Day+1鍵功能:設(shè)置當(dāng)前時(shí)間離奧運(yùn)會(huì)舉行時(shí)間的間隔,即天數(shù)。Hour+1鍵功能:設(shè)置當(dāng)前的時(shí)間,即當(dāng)電子時(shí)鐘的時(shí)間有誤差時(shí),需要隨時(shí)對它進(jìn)行調(diào)整。Minute+1鍵功能:與hour+1鍵的功能一致,將時(shí)間達(dá)到更精確,以至分秒一圖2-4 按鍵電路的設(shè)計(jì)2.5 蜂鳴器電路的設(shè)計(jì)如圖2-5所示。設(shè)計(jì)要求定時(shí)時(shí)間到時(shí)要有聲音提醒信號(hào)產(chǎn)生,可選擇一只蜂鳴器來實(shí)現(xiàn)這一功能。壓電式蜂鳴器工作時(shí)約需10mA的驅(qū)動(dòng)電流,并設(shè)計(jì)一個(gè)相

13、應(yīng)的驅(qū)動(dòng)及控制電路。電路設(shè)計(jì)如圖5所示,蜂鳴器作為三極管VT1的集電極負(fù)載,當(dāng)VT1導(dǎo)通時(shí),蜂鳴器發(fā)出鳴叫聲音,VT1截止時(shí),蜂鳴器不發(fā)聲。蜂鳴器電路與單片機(jī)的接口:VT1的基極接到單片機(jī)P2口的P2.3引腳,P2.3引腳作為輸出口使用。當(dāng)P2.3=0時(shí),VT1導(dǎo)通時(shí),使蜂鳴器的兩個(gè)引腳間獲得將近5V的直流電壓,蜂鳴器中有電流通過,而產(chǎn)生蜂鳴音。當(dāng)P2.3=1時(shí),VT1截止,蜂鳴器的兩引腳間的直流電壓接近于0V,蜂鳴器不發(fā)聲。圖2-5 蜂鳴器電路的設(shè)計(jì)2.6 接線圖三 軟件系統(tǒng)設(shè)計(jì)方案3.1模塊化的方案進(jìn)行應(yīng)用軟件設(shè)計(jì)時(shí)可采用模塊化程序設(shè)計(jì)方法,其優(yōu)點(diǎn)是:每個(gè)模塊的程序結(jié)構(gòu)簡單,任務(wù)明確,易于

14、編寫、調(diào)試和修改。程序可讀性好,對程序的修改可局部進(jìn)行,其他部分可以保持不變,便于功能擴(kuò)充。對于使用頻繁的子程序可以建立子程序庫,便于多個(gè)模塊調(diào)用。便于分工合作,多個(gè)人同時(shí)進(jìn)行程序的編寫和調(diào)試工作,加快軟件研制進(jìn)度。設(shè)計(jì)方案及框圖:如圖2-6所示。根據(jù)設(shè)計(jì)要求,首先要確定軟件設(shè)計(jì)方案,即確定該軟件應(yīng)該完成哪些功能;其次是規(guī)劃為了完成這些功能需要分成多少個(gè)功能模塊,以及每一個(gè)程序模塊的具體任務(wù)是什么。劃分模塊時(shí)應(yīng)遵循下述原則:每個(gè)模塊應(yīng)具有獨(dú)立的功能,能產(chǎn)生一個(gè)明確的結(jié)果。模塊之間的控制參數(shù)應(yīng)盡量簡單,數(shù)據(jù)參數(shù)應(yīng)盡量少。模塊長度適中。根據(jù)模塊的劃分原則,將該程序劃分成6個(gè)模塊。主程序數(shù)碼管動(dòng)態(tài)掃

15、描模塊當(dāng)前時(shí)間倒計(jì)時(shí)模塊當(dāng)前時(shí)間調(diào)整模塊蜂鳴器自動(dòng)報(bào)時(shí)模塊數(shù)字轉(zhuǎn)換模塊圖2-6 整體設(shè)計(jì)框圖3.2 主程序的設(shè)計(jì)主程序的內(nèi)容一般包括:主程序的起始地址,中斷服務(wù)程序的起始地址,有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序調(diào)用等等。程序的起始地址MCS-51系列單片機(jī)復(fù)位后,(PC)=0000H,而0003H002BH分別為各中斷源的入口地址。所以,編程時(shí)應(yīng)在0000H處寫一跳轉(zhuǎn)指令。主程序的初始化內(nèi)容所謂初始化,是對將要用到MCS51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始化工作狀態(tài)設(shè)定。MCS51系列單片機(jī)復(fù)位后,特殊功能寄存器IE,IP的內(nèi)容均為00H,所以應(yīng)對IE,IP進(jìn)行初始化編程,以開放C

16、PU中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級(jí)等。開始主程序設(shè)計(jì)框圖啟動(dòng)定時(shí)器設(shè)置初始常數(shù)置定時(shí)器模式及工作方式讀取小時(shí)值轉(zhuǎn)換成顯示數(shù)據(jù)顯示數(shù)據(jù)送緩沖讀取分鐘值轉(zhuǎn)換成顯示數(shù)據(jù)顯示數(shù)據(jù)送緩沖調(diào)用顯示子程序主程序清單:ALB_SET BIT P3.2 ;調(diào)節(jié)鬧鐘控制器M_SET BIT P3.3 ;分鐘控制位H_SET BIT P3.4 ;小時(shí)控制位SECOND EQU 30H ;秒計(jì)數(shù)器MINUTE EQU 31H ;分鐘計(jì)數(shù)器HOUR EQU 32H ;小時(shí)計(jì)數(shù)器TCNT EQU 34H ;50毫秒計(jì)數(shù)器ALB_M EQU 35HALB_H EQU 36H;- ORG 0000H SJMP ST

17、ART ORG 000BH LJMP INT_T0;- ORG 0050HSTART: MOV DPTR,#TABLE MOV ALB_M,#01 MOV ALB_H,#01 MOV HOUR,#0 ;初始化 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0 MOV TMOD,#01H MOV TH0,#(65536-50000)/256 ;定時(shí)50毫秒 取整數(shù)-TH0 MOV TL0,#(65536-50000)MOD 256 ;模運(yùn)算 取尾數(shù)-TL0 MOV IE,#82H SETB TR03.3 LED動(dòng)態(tài)顯示的設(shè)計(jì)在采用動(dòng)態(tài)掃描顯示方式時(shí),要使得LED顯示

18、得比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率。當(dāng)掃描頻率在70HZ左右時(shí),能夠產(chǎn)生足夠的圖形和較好的顯示效果。一般可以采用間隔10ms對LED進(jìn)行動(dòng)態(tài)掃描一次,每一位LED的顯示時(shí)間為1ms。本例中,采用軟件定時(shí)并用的方式,即通過軟件延時(shí)程序?qū)崿F(xiàn)1ms的定時(shí)。LED程序清單:DISPLAY:MOV P1,#01111111B CJNE R4,#00AH,X1 MOV P1,#11111111BX1: MOV A,MINUTE ;顯示分鐘 MOV B,#10 DIV AB CLR P2.3 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.3 MOV A

19、,B CLR P2.2 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.2 MOV A,HOUR ;顯示小時(shí) MOV B,#10 DIV AB CLR P2.5 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.5 MOV A,B CLR P2.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.4 RETDISPLAY1: MOV A,ALB_M ;顯示分鐘 MOV B,#10 DIV AB CLR P2.3 MOVC A,A+DPTR MOV P0,A LCALL DELAY S

20、ETB P2.3 MOV A,B CLR P2.2 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.2 MOV A,ALB_H ;顯示小時(shí) MOV B,#10 DIV AB CLR P2.5 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.5 MOV A,B CLR P2.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.4 RETTABLE: DB 40H,79H,24H,30H,19H DB 12H,02H,78H,00H,10H;-DELAY: MOV R6,#10D1:

21、MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RETb1: mov a,alb_m cjne a,minute,rt mov a,alb_h cjne a,hour,rt call beep_blrt:reti3.4 計(jì)時(shí)程序的設(shè)計(jì)倒計(jì)時(shí)時(shí)鐘系統(tǒng)的主要任務(wù)是:采用單片機(jī)為核心器件24小時(shí)后天數(shù)減一,并用LED顯示器將它顯示出來。計(jì)算定時(shí)器T0的計(jì)數(shù)初值 定時(shí)時(shí)間 100us 計(jì)數(shù)初值 = = = 100 機(jī)器周期時(shí)間 1us 計(jì)數(shù)初值 = 256 100 = 156計(jì)時(shí)程序設(shè)計(jì)框圖: INT_T0: MOV TH0,#(65536-50000)/256計(jì)時(shí)程序清單: MOV

22、 TL0,#(65536-50000)MOD 256 INC TCNT ;累計(jì)50毫秒 MOV A,TCNT MOV R4,TCNT CJNE A,#20,RETUNE ;計(jì)時(shí)1秒 INC SECOND MOV TCNT,#0 MOV A,SECOND CJNE A,#60,RETUNE mov p2,#11111111b INC MINUTE MOV SECOND,#0 MOV A,MINUTE CJNE A,#60,RETUNE INC HOUR MOV MINUTE,#0 MOV A,HOUR CJNE A,#24,RETUNE MOV HOUR,#0 MOV MINUTE,#0 MOV

23、 SECOND,#0 MOV TCNT,#0RETUNE: RETI 3.5 鍵盤程序的設(shè)計(jì) 鍵盤子程序是由KEY子程序組成,此子程序的功能是實(shí)現(xiàn)對當(dāng)前時(shí)間的調(diào)整和輸入倒計(jì)時(shí)時(shí)間。 KEY子程序的功能是對當(dāng)前時(shí)間進(jìn)行調(diào)整。 在程序中,將倒計(jì)天數(shù)以及時(shí)鐘的小時(shí)位、分鐘位分別進(jìn)行調(diào)整。 按鍵去抖動(dòng)的處理。由于機(jī)械觸點(diǎn)的彈性作用,在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為510ms。而按鍵穩(wěn)定閉合時(shí)間的長短則是由操作人員的按鍵動(dòng)作決定的,一般為零點(diǎn)幾秒至數(shù)秒。鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次,為了確保CPU對鍵的一次閉合僅作一次處理,鍵抖動(dòng)可用硬件或軟件兩種方法

24、消除。本例中采用軟件方法。鍵盤程序清單:;判斷是否有控制鍵按下,是哪一個(gè)鍵按下 A1: ;調(diào)用顯示子程序 lcall b1 JNB ALB_SET,S4 LCALL DISPLAY JNB M_SET,S2 JNB H_SET,S3 LJMP A1S2: LCALL DELAY JB M_SET,A1 K1: INC MINUTE ;分鐘值加1 MOV A,MINUTE CJNE A,#60,J1 ;判斷是否加到60分 MOV MINUTE,#0 LJMP K2S3: LCALL DELAY JB H_SET,A1 K2: INC HOUR ;小時(shí)值加1 MOV A,HOUR CJNE A,#

25、24,J2 ;判斷是否加到24小時(shí) MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 LJMP A1S4: LCALL DISPLAY1 JNB M_SET,S5 JNB H_SET,S6 LJMP A1S5: LCALL DELAY JB M_SET, A1 INC ALB_M MOV A,ALB_M CJNE A,#60,J3 MOV ALB_M,#0 LJMP K3S6: LCALL DELAY JB H_SET,A1K3: INC ALB_H MOV A,ALB_H CJNE A,#24,J4 MOV ALB_H,#0 MOV ALB_M,#0 LJMP

26、A1;-;等待按鍵抬起J1: JB M_SET,A1 LCALL DISPLAY SJMP J1J2: JB H_SET,A1 LCALL DISPLAY SJMP J2 J3: JB M_SET,S4 LCALL DISPLAY1 SJMP J3J4: JB H_SET,S4 LCALL DISPLAY1 SJMP J43.6 蜂鳴器程序的設(shè)計(jì)當(dāng)前時(shí)間和鬧鐘設(shè)置時(shí)間相等后,會(huì)激活蜂鳴器程序產(chǎn)生高頻間接性的振動(dòng),從而產(chǎn)生“嘟嘟”的鬧聲。蜂鳴器程序清單:BEEP_BL: MOV R6,#100 BL1: CALL BL2 CPL p2.1 DJNZ R6,BL1 MOV R5,#100 CALL

27、 DELAY2 RET BL2: MOV R7,#180 BL3: NOP DJNZ R7,BL3 RETDELAY2: ;延時(shí)R5×10MS MOV R6,#10 call display1 BL4: MOV R7,#10 BL5: DJNZ R7,BL5 DJNZ R6,BL4 DJNZ R5,DELAY2 RET END3.7 整個(gè)程序清單ALB_SET BIT P3.2 ;鬧鐘調(diào)節(jié)控制位M_SET BIT P3.3 ;分鐘控制位H_SET BIT P3.4 ;小時(shí)控制位SECOND EQU 30H ;秒計(jì)數(shù)器MINUTE EQU 31H ;分鐘計(jì)數(shù)器HOUR EQU 32H

28、;小時(shí)計(jì)數(shù)器TCNT EQU 34H ;50毫秒計(jì)數(shù)器ALB_M EQU 35HALB_H EQU 36H;- ORG 0000H SJMP START ORG 000BH LJMP INT_T0;- ORG 0050HSTART: MOV DPTR,#TABLE MOV ALB_M,#01 MOV ALB_H,#01 MOV HOUR,#0 ;初始化 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0 MOV TMOD,#01H MOV TH0,#(65536-50000)/256 ;定時(shí)50毫秒 取整數(shù)-TH0 MOV TL0,#(65536-50000)MOD

29、 256 ;模運(yùn)算 取尾數(shù)-TL0 MOV IE,#82H SETB TR0;-;判斷是否有控制鍵按下,是哪一個(gè)鍵按下 A1: ;調(diào)用顯示子程序 lcall b1 JNB ALB_SET,S4 LCALL DISPLAY JNB M_SET,S2 JNB H_SET,S3 LJMP A1S2: LCALL DELAY JB M_SET,A1 K1: INC MINUTE ;分鐘值加1 MOV A,MINUTE CJNE A,#60,J1 ;判斷是否加到60分 MOV MINUTE,#0 LJMP K2S3: LCALL DELAY JB H_SET,A1 K2: INC HOUR ;小時(shí)值加1

30、 MOV A,HOUR CJNE A,#24,J2 ;判斷是否加到24小時(shí) MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 LJMP A1S4: LCALL DISPLAY1 JNB M_SET,S5 JNB H_SET,S6 LJMP A1S5: LCALL DELAY JB M_SET, A1 INC ALB_M MOV A,ALB_M CJNE A,#60,J3 MOV ALB_M,#0 LJMP K3S6: LCALL DELAY JB H_SET,A1K3: INC ALB_H MOV A,ALB_H CJNE A,#24,J4 MOV ALB_H,#

31、0 MOV ALB_M,#0 LJMP A1;-;等待按鍵抬起J1: JB M_SET,A1 LCALL DISPLAY SJMP J1J2: JB H_SET,A1 LCALL DISPLAY SJMP J2J3: JB M_SET,S4 LCALL DISPLAY1 SJMP J3J4: JB H_SET,S4 LCALL DISPLAY1 SJMP J4;-;定時(shí)器中斷服務(wù)程序,對秒,分鐘和小時(shí)的計(jì)數(shù)INT_T0: MOV TH0,#(65536-50000)/256 MOV TL0,#(65536-50000)MOD 256 INC TCNT ;累計(jì)50毫秒 MOV A,TCNT MO

32、V R4,TCNT CJNE A,#20,RETUNE ;計(jì)時(shí)1秒 INC SECOND MOV TCNT,#0 MOV A,SECOND CJNE A,#60,RETUNE mov p2,#11111111b INC MINUTE MOV SECOND,#0 MOV A,MINUTE CJNE A,#60,RETUNE INC HOUR MOV MINUTE,#0 MOV A,HOUR CJNE A,#24,RETUNE MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0RETUNE: RETI;-;顯示控制子程序DISPLAY:MOV P

33、1,#01111111B CJNE R4,#00AH,X1 MOV P1,#11111111BX1: MOV A,MINUTE ;顯示分鐘 MOV B,#10 DIV AB CLR P2.3 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.3 MOV A,B CLR P2.2 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.2 MOV A,HOUR ;顯示小時(shí) MOV B,#10 DIV AB CLR P2.5 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.5 MOV A,B C

34、LR P2.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.4 RETDISPLAY1: MOV A,ALB_M ;顯示分鐘 MOV B,#10 DIV AB CLR P2.3 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.3 MOV A,B CLR P2.2 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.2 MOV A,ALB_H ;顯示小時(shí) MOV B,#10 DIV AB CLR P2.5 MOVC A,A+DPTR MOV P0,A LCALL DELAY SETB P2.5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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

提交評論