我的單片機設(shè)計_第1頁
我的單片機設(shè)計_第2頁
我的單片機設(shè)計_第3頁
我的單片機設(shè)計_第4頁
我的單片機設(shè)計_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)單片機原理及接口技術(shù)課程設(shè)計說明書學(xué) 號: 0120207課 程 設(shè) 計題 目基于51單片機的多路搶答器的設(shè)計學(xué) 院物流工程學(xué)院專 業(yè)物流工程班 級物流1102姓 名姓名同 組 者指導(dǎo)教師袁兵2013年12月28日課程設(shè)計任務(wù)書學(xué)生姓名: 穆 專業(yè)班級: 物流102 指導(dǎo)教師: 袁 工作單位: 物流工程學(xué)院 題 目: 基于51單片機的多路搶答器初始條件:1. Protues 7 professional的ISIS 7 professional和ARES 7 professional軟件2. Keil uvision4軟件 3.單片機的相關(guān)資料指導(dǎo)書要求完成的主要任務(wù): (包括課程設(shè)

2、計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)任務(wù):設(shè)計一款多路搶答器1、基本要求(1)設(shè)計一個六路或以上的搶答器(2)設(shè)計一個搶答器控制器開關(guān)(開始搶答后才允許搶答者搶答),供主持人用。 (3)設(shè)計搶答時間限制,超出時間后,該題作廢;(4)設(shè)計答題時間(5)數(shù)字LED顯示當(dāng)前答題者號數(shù)。(6)其他功能。 時間安排:十六周到十七周設(shè)計,十八周答辯 指導(dǎo)教師簽名: 年 月 日 系主任(或責(zé)任教師)簽名: 年 月 日本科生課程設(shè)計成績評定表姓 名 姓名性 別男專業(yè)、班級物流工程學(xué)院行政1102班課程設(shè)計題目:基于51單片機的多路搶答器的設(shè)計課程設(shè)計答辯或質(zhì)疑記錄:成績評定依據(jù):1 選題合理、目的

3、明確 10分2 設(shè)計方案正確,具有可行性、創(chuàng)新性 20分3 設(shè)計結(jié)果 20分4 態(tài)度認(rèn)真、學(xué)習(xí)刻苦、遵守紀(jì)律 15分5 設(shè)計報告的規(guī)范化、參考文獻充分(不少于5篇) 10分6 答辯 25分最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導(dǎo)教師簽字: 年 月 日目錄1 總體任務(wù)2 1.1 設(shè)計目的21.2 設(shè)計內(nèi)容和要求21.3 設(shè)計思路22 .搶答器的系統(tǒng)概述2 2.1 系統(tǒng)的主要功能22.2 搶答器的工作流程42.3 搶答器的工作過程62.4 搶答器的優(yōu)點及組成63.系統(tǒng)的硬件設(shè)計83.1 總體原理圖83.2 時鐘頻率電路的設(shè)計83.3 復(fù)位電路的設(shè)計93.4 顯示電路的設(shè)計93.5 鍵盤

4、掃描電路的設(shè)計103.6 發(fā)聲系統(tǒng)113.7 系統(tǒng)復(fù)位114. 軟件設(shè)計134.1 主程序系統(tǒng)結(jié)構(gòu)圖134.2軟件任務(wù)分析144.3 程序流程圖144.4主要程序分析及源程序15參考文獻35附錄37源程序37摘  要 本系統(tǒng)采用模塊化設(shè)計多路搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個搶答按鈕。主持人有開始和結(jié)束、復(fù)位鍵。在后臺主持人可以修改,搶答時間和選手回答問題的時間設(shè)置,原始狀態(tài)下?lián)尨饡r間為15s,回答問題時間為10s。通過加鍵和減鍵修改上述時間,改完后結(jié)束鍵確定。新時間開始有效,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示搶答時間倒計時和選手號,在最后五秒揚

5、聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號,揚聲器持續(xù)發(fā)生。主持人可按鍵結(jié)束,新一輪搶答開始。關(guān)鍵字: 搶答電路;定時電路;報警電路;時序控制;復(fù)位鍵1 總體任務(wù)1.1設(shè)計目的 1、通過單片機課程設(shè)計,熟練掌握匯編語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。 2、通過多路搶答器的設(shè)計,掌握定時/計數(shù)器、單片機的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。1.2設(shè)計內(nèi)容和要求 內(nèi)容:設(shè)計一個多路搶答器 要求:(1)設(shè)計一個六路或以上的搶答器。 (2)設(shè)計一個搶答器控制器開關(guān)(開始搶答后才允許搶答者搶 答),供 主持人用

6、。 (3)設(shè)計搶答時間限制,超出時間后,該題作廢。 (4)設(shè)計答題時間。 (5)數(shù)字LED顯示當(dāng)前答題者號數(shù)。 (6)其他功能。1.3 設(shè)計思路 1.先熟悉實驗原理,了解搶答器的工作過程,組成搶答器需要的組件。 2.了解各個硬件的工作原理。 3.繪制電路原理圖,編寫程序,并進行仿真,基本實現(xiàn)搶答器的功能。2 搶答器的系統(tǒng)概述2.1 系統(tǒng)的主要功能 本系統(tǒng)是借用單片機采用模塊化設(shè)計的多路搶答器。參賽者分系統(tǒng)設(shè)有:搶答按紐、計時顯示、提示功能等;主控分系統(tǒng)有:開始與結(jié)束控制按鈕、時限設(shè)定、各種 主 控 制 器LED顯示聲生器鍵盤顯示時鐘頻率復(fù)位電路相關(guān)顯示調(diào)控功能等。圖2-1 系統(tǒng)主要功能模塊 系

7、統(tǒng)的主要功能模塊方框圖如2-1所示。本系統(tǒng)采用模塊化設(shè)計智能搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個搶答按鈕。主持人有開始和結(jié)束復(fù)位鍵。在后臺主持人可以修改,搶答時間和選手回答問題的時間設(shè)置,原始狀態(tài)下?lián)尨饡r間為15s,回答問題時間為20s。通過加鍵和減鍵修改上述時間,改完后結(jié)束鍵確定。新時間開始有效,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示搶答時間倒計時和選手號,在最后五秒揚聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號,揚聲器持續(xù)發(fā)生。主持人可按鍵結(jié)束,新一輪搶答開始。注意:1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無

8、效。 2、搶答限定時間和回答問題的時間可是在199s設(shè)定。 3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示。 4、搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)自動復(fù)位。 5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。2.2 搶答器的工作流程搶答器的基本工作原理:在搶答競賽時,有多個信號同時或不同時送入主電路中,搶答器內(nèi)部的寄存器工作,并識別、記錄第一個號碼,同時內(nèi)部的定時器開始工作,記錄有關(guān)時間并產(chǎn)生超時信號。在整個搶答器工作過程中,顯示電路、語音電路等還要根據(jù)現(xiàn)場的實際情況向外電路輸出相應(yīng)信號。搶答器的工作流程分為、系統(tǒng)復(fù)位、正常流程、違例流程等幾部分,如圖2-2所示,下面分別

9、予以介紹。加載程序運 行行開始開始數(shù)碼管顯示FFF開始搶答按時間倒計時開始前選手搶按顯示違例選手號碼并伴有語音報警倒計時結(jié)束,超時有選手搶按顯示FFF顯示選手號碼,倒計時時間,語音報警,答題時間倒計時若超過答題時間,則數(shù)碼管顯示FFF答題完畢根據(jù)選手表,則由主持人減分圖2-2 搶答器工作流程圖2.3 搶答器的工作過程1、如果想調(diào)節(jié)搶答時間或答題時間,按"加一"鍵或"減一"鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"減1s"鍵,時間LED上會顯示改變后的

10、時間,調(diào)整范圍為099s, 0s時再減1s會跳到99,99s時再加1s會變到0s。2、主持人按"搶答開始"鍵,會有提示音,并立刻進入搶答倒計時(預(yù)設(shè)15s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進入回答倒計時(預(yù)設(shè)10s搶答時間),不進行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。3、如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統(tǒng)會自動進入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進入下次搶答計時。4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)

11、搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下"停止" 鍵為止。2.4 搶答器的優(yōu)點及組成在知識比賽中,特別是做搶答題目的時候,在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用單片機系統(tǒng)來設(shè)計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒,也可分辨出哪組優(yōu)先答題。單片機搶答器設(shè)計及工作原理,以及它的實際用途。系統(tǒng)工作原理本系統(tǒng)采用AT89C51單片機作為核心。控制系統(tǒng)的四個模塊分別為:存儲模塊、顯示模塊、語音模塊、搶答開關(guān)模塊。該搶答器系統(tǒng)通過開關(guān)電路六個按鍵輸入搶答信號;

12、利用存儲程序來完成軟件的設(shè)計;利用一個數(shù)碼管來完成顯示功能。工作時,用按鍵通過開關(guān)電路輸入各路的搶答信號,經(jīng)單片機的處理,輸出控制信號,控制數(shù)碼管和語音芯片工作。在數(shù)碼管上顯示哪一組先答題,并通過語音系統(tǒng)讀出第N組請答題,從而實現(xiàn)整個搶答過程。3系統(tǒng)的硬件設(shè)計3.1 總體原理圖圖3-1系統(tǒng)原理圖 P1.0為開始搶答,P1.7為停止,P1.1-P1.6為六路搶答輸入,數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2為時間加1調(diào)整,P3.3為時間減1調(diào)整。3.2 時鐘頻率電路的設(shè)計單片機必須在時鐘的驅(qū)動下才能工作.在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定

13、的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。圖3-2為外部振蕩源電路一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調(diào)。C1,C2的典型值為30PF。單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12µs。3.3 復(fù)位電路的

14、設(shè)計 單片機的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,復(fù)位后單片機的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖3-3所示:圖3-3復(fù)位電路 值得注意的是,在設(shè)計當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現(xiàn)的前提條件就是不能對單片機進行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。3.4 顯示電路的設(shè)計顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提

15、供盡可能豐富的信息,全靠軟件來解決。在七段數(shù)碼管顯示中可分為共陽極和共陰極兩種類型極。以共陰為例,要想a段亮,向a段送1就是,返之送0,共陽剛好相反。3-4 顯示電路3.5 鍵盤掃描電路的設(shè)計鍵盤是人與微機系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計方法也可以在文獻和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計的立場上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現(xiàn)象。在單片機應(yīng)用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。圖3-5獨立鍵盤它們各有自己的特點,其

16、中獨立鍵盤硬件電路簡單,而且在程序設(shè)計上也不復(fù)雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時重復(fù)掃描法,延時法的原理為:因為“毛刺”脈沖一般持續(xù)時間短,約為幾ms,而我們按鍵的時間一般遠(yuǎn)遠(yuǎn)大于這個時間,所以當(dāng)單片機檢測到有按鍵動靜后再延時一段時間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。鍵盤抖動的軟件處理:按鍵的觸點在閉合和斷開時均

17、會產(chǎn)生抖動,這是觸點的邏輯電平是不穩(wěn)定的,如不妥善處理,將會引起按鍵命令的錯誤執(zhí)行或重復(fù)執(zhí)行。現(xiàn)在一般均用軟件延時的方法來避開抖動階段,這一延時過程一般大于5ms,例如取10-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺程序)或鍵盤中斷(外部中斷)子程序中,則該延時子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時中斷子程序中,就可省去專門的延時子程序,利用兩次定時中斷的時間間隔來完成抖動處理。3.6 發(fā)聲系統(tǒng)聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控

18、制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。如圖3.6:3.6 發(fā)聲系統(tǒng)3.7 系統(tǒng)復(fù)位使CPU進入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時間的高電位才能實現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個事實卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令

19、來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行。對各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有復(fù)位時系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動”和“熱啟動”。 “冷啟動”時,系統(tǒng)的狀態(tài)全部無效,進行徹底的初始化操作;而“熱啟動”時,對系統(tǒng)的當(dāng)前狀態(tài)進行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運行時,必須是“冷啟動”,為了使系統(tǒng)能正確決定采用何種啟動方式,常用上電標(biāo)志來區(qū)分,如圖3-7所示。復(fù)位關(guān)中斷,設(shè)定堆棧 上電標(biāo)志冷啟自檢,全面初始化熱啟動恢復(fù)被破壞的信息建立上

20、電標(biāo)開始運轉(zhuǎn)圖3-7系統(tǒng)復(fù)位策略圖4 軟件設(shè)計4.1 主程序系統(tǒng)結(jié)構(gòu)圖系統(tǒng)初始化模塊按鍵模塊非法搶答模塊正確搶答模塊調(diào)整搶答時間調(diào)整回答時間模塊數(shù)碼顯示模塊圖4-1軟件系統(tǒng)結(jié)構(gòu)圖4.2軟件任務(wù)分析軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計基本定型后,也就基本上決定下來了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質(zhì)性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有

21、特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。軟件任務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)崟r性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷(如掉電中斷

22、)。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。4.3 程序流程圖在本設(shè)計中包括了以下八個主要的程序:主程序;非法搶答序;搶答時間調(diào)整程序;回答時間調(diào)整程序;倒計時程序;正常搶答處理程序;犯規(guī)處理程序;顯示及發(fā)聲程序。主流程圖4-2所示:圖 4-2程序設(shè)計流程圖4.4主要程序分析及源程序主程序:ORG 0040HMAIN: MOV R1,#0FH MOV R2,#0AHMOV TMOD,#11H MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EA SET

23、B ET0 SETB ET1 SETB EX0 SETB EX1CLR OK CLR RING SETB TR1 SETB TR0非法搶答處理程序:FALSE1: ACALL BARK MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,#05H AJMP ERRORFALSE6: ACALL BARK MO

24、V R3,#06H AJMP ERROR搶答時間調(diào)整程序:;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.2,INC0;P3.2為+1s鍵,如按下跳到INCO JNB P3.3,DEC0;P3.3為-1s鍵,如按下跳到DECO JNB P1.7,BACK0;P1.7為確定鍵,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,

25、重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1為0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI回答時間調(diào)整程序:;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH

26、 ACALL DISPLAY JNB P3.2,INC1 JNB P3.3,DEC1 JNB P1.7,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI倒計時程序:COUNT:

27、 MOV R0,#0000 MOV TH1,#3CH MOV TL1,#0B0HRECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6 MOV B,#0AH DIV AB;除十分出個位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;個位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取個位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s會提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下運行 CLR RING AJMP CHECKFULL

28、: CJNE A,#14H,CHECK;下面系1s的情況,響并顯示號數(shù)并清R0,重新計時 SETB RING MOV A,R6 JZ QUIT;計時完畢 MOV R0,#00H DEC R6;一秒標(biāo)志減1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示" DEC R6;計時一秒R6自動減1 MOV R0,#00HCHECK: JNB P1.7,QUIT;如按下停止鍵退出 ACALL DISPLAY JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù) AJMP RE

29、COUNTACCOUT:JNB P1.1,TRUE1 JNB P1.2,TRUE2 JNB P1.3,TRUE3 JNB P1.4,TRUE4 JNB P1.5,TRUE5 JNB P1.6,TRUE6 AJMP RECOUNTQUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序 CLR RING AJMP START正常搶答處理程序:TRUE1: ACALL BARK;按鍵發(fā)聲 MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK;

30、 MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#06H CLR OK

31、AJMP COUNT犯規(guī)搶答程序:ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下運行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1FLASH: CJNE A,#14H,CHECK1;下面系1s的情況,響并顯示號數(shù)并清R0,重新計 SETB RING MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MO

32、V R4,#0BH;顯示FF和號數(shù) AJMP CHECK1CHECK1: JNB P1.7,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START顯示程序:DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出, MOV A,R5 MOVC A,A+DPTR MOV P2,#01H MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R4 MOVC A,A+DPTR MOV P2,#02H MOV P0,A ACALL DELAY MOV

33、A,R3 MOVC A,A+DPTR MOV P2,#04H MOV P0,A ACALL DELAY RETDAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;"滅","1","2","3","4","5","6","7","8","9","滅","F"DAT2:DB 3fh,06h,5bh,4f

34、h,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一個為零,其他與上相同,因為十位如果為零顯示熄滅發(fā)聲程序BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按鍵發(fā)聲 RET5.課程設(shè)計總結(jié)本文研究與設(shè)計多路搶答器采用了通用的電子元器件,利用AT89C51單片機及外圍接口實現(xiàn)搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。計分接收的單片機部分利用匯編語言編寫。設(shè)計時,首先通過在線編程,然后具體安裝,仿真,完全實現(xiàn)了設(shè)計功能。本設(shè)計中,

35、利用常規(guī)的單片機掃描識別的方法。通過硬件電路的具體應(yīng)用和系統(tǒng)的仿真研究得出,本設(shè)計不僅安裝簡單、成本低,更重要的是工作性能穩(wěn)定,是一個實用、創(chuàng)新型的工程設(shè)計。由于采用匯編語言設(shè)計電路,所以本設(shè)計在編程成功后,硬件電路基本上不需要調(diào)試就可正常使用。即使在設(shè)計完畢交給用戶使用后,對系統(tǒng)的功能改進或升級也只是通過改寫程序來完成,極大地方便了用戶或設(shè)計者對電路更新?;仡^再看看該設(shè)計,還可以將設(shè)計的擴展功能增強:1、可以設(shè)計聲控裝置,在主持人說開始時,系統(tǒng)自動完成清零并開始計時的功能。2、在主持人讀題的過程中,禁止搶答,可以在主持人控制的開關(guān)上另接一個與圖2一樣的電路,即可實現(xiàn)“違規(guī)者可見”的功能,即在

36、主持人讀題時如果有人違反比賽規(guī)定搶先按動按鈕,顯示器可以顯示是哪個參賽隊搶先,便于作出相應(yīng)的處理。如果提供相應(yīng)的器材及時間上的寬限,一定可以完成上述擴展功能,進一步完善作品。經(jīng)過這兩個星期的努力,在老師和同學(xué)的幫助下終于徹底的做完了畢業(yè)設(shè)計的所有工作。通過這次的畢業(yè)設(shè)計,我能運用已學(xué)的知識解決我在設(shè)計中遇到的問題,使自己的動手能力和思考問題的能力得到了很大的提高。在做設(shè)計的過程中我查閱了很多的資料,并認(rèn)真的閱讀這些與我的設(shè)計相關(guān)的資料,從而我的專業(yè)涵養(yǎng)得到了提高,知識的儲備量也有所增加。在做設(shè)計時,我復(fù)習(xí)了很多專業(yè)課的知識,這使得我的專業(yè)知識在離校之前得到了鞏固。整個設(shè)計通過了軟件和硬件上的調(diào)

37、試、仿真。我想這對于自己以后的學(xué)習(xí)和工作都會有很大的幫助的。在這次設(shè)計中遇到了很多實際性的問題,在實際設(shè)計中才發(fā)現(xiàn),書本上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維。對于單片機設(shè)計,其硬件電路是比較簡單的,主要是解決程序設(shè)計中的問題。而程序設(shè)計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力。它才是一個設(shè)計的靈魂所在。因此在整個設(shè)計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關(guān)鍵的問題所在,這需要對單片機的結(jié)構(gòu)很熟悉。因此可以說單片機的設(shè)計是軟件和硬件的結(jié)合,二者是密不可分的

38、。但是,通過這次設(shè)計我也發(fā)現(xiàn)自己的很多不足之處。在設(shè)計過程中我發(fā)現(xiàn)自己考慮問題很不全面,自己的專業(yè)知識掌握的很不牢固,所掌握的計算機應(yīng)用軟件還不夠多,我希望自己的這些不足之處能在今后的工作和學(xué)習(xí)中得到改善。而且,通過這次設(shè)計,我懂得了學(xué)習(xí)的重要性,學(xué)會了堅持和努力,這將為以后的學(xué)習(xí)做出了最好的榜樣!同時,該設(shè)計也有不足之處,缺少了答題計分等功能。我將會在以后的學(xué)習(xí)中繼續(xù)學(xué)習(xí)。41 武漢理工大學(xué)單片機原理及接口技術(shù)課程設(shè)計說明書參考文獻1叢宏濤,程衛(wèi)群,李紹銘. Multisim8仿真與應(yīng)用實例開發(fā). 北京:清華大學(xué)出版社2007.72 黃冠斌等. 電路基礎(chǔ)(第二版). 武漢: 華中科技大學(xué)出版

39、社, 2000.93 譚浩強. C程序設(shè)計(第二版). 北京: 清華大學(xué)出版社, 1999.124 何立民. 單片機應(yīng)用系統(tǒng)設(shè)計. 北京: 北京航空航天大學(xué)出版社5 梅開鄉(xiāng). 數(shù)字邏輯電路M. 北京: 電子工業(yè)出版社, 2003.86 郭帥. 遠(yuǎn)距離RFID讀卡器設(shè)計J. 中國期刊網(wǎng), 2005.127 王青萍.八路智力競賽搶答器的設(shè)計J.湖北教育學(xué)院學(xué)報.20078 寧志剛,黃智偉,唐慧,胡芬芬.八位數(shù)顯搶答器課程設(shè)計方法研討J.實驗室研究與探索.2009附 錄源程序代碼OK EQU 20H;搶答開始標(biāo)志位 RING EQU 22H;響鈴標(biāo)志位 ORG 0000H AJMP MAIN ORG

40、 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#0FH MOV R2,#0AH MOV TMOD,#11H MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1 CLR OK CLR RING SETB TR1 SETB TR0;=查詢程序=START: MOV

41、R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY JB P1.0,NEXT ACALL DELAY JB P1.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送R1->R6,因為R1中保存了搶答時間 SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答 MOV R3,0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面NEXT: JNB P1.

42、1,FALSE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 AJMP START;=非法搶答處理程序=FALSE1: ACALL BARK MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,

43、#05H AJMP ERRORFALSE6: ACALL BARK MOV R3,#06H AJMP ERROR;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.2,INC0;P3.2為+1s鍵,如按下跳到INCO JNB P3.3,DEC0;P3.3為-1s鍵,如按下跳到DECO JNB P1.7,BACK0;P1.7為確定鍵,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1 CJNE A,#63H,ADD0

44、;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1為0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MO

45、V R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.2,INC1 JNB P3.3,DEC1 JNB P1.7,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI;=倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=COUNT: MOV R0,#0000 MOV TH1,#3CH MOV TL1,#0B0HRECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6 MOV B,#0AH DIV AB;除十分出個位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;個位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取個位 MOV A,R6 SUBB 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論