版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 PAGE23 / NUMPAGES28HUBEIUNIVERSITY OF EDUCATION高等教育自學考試畢業(yè)設(shè)計(論文)題目基于單機片的數(shù)據(jù)顯示搶答器設(shè)計 專業(yè)班級學號指導教師、職稱所屬助學單位2011年12月20日目 錄目錄字體摘要英文摘要緒論1 系統(tǒng)設(shè)計容11.1 系統(tǒng)設(shè)計根據(jù)11.2 設(shè)計任務(wù)和要求11.3設(shè)計目的12硬件設(shè)計22.1 單片機控制原理22.2 搶答器的原理32.2.1原理與電路總框圖32.3 功能模塊電路42.3.1 晶振復(fù)位與開始搶答電路52.3.2 選手搶答鍵(矩陣式鍵盤)62.3.3顯示與顯示驅(qū)動電路62.3.4蜂鳴器音頻輸出電路73軟件設(shè)計83.1程序設(shè)計
2、83.1.1 系統(tǒng)流程圖93.1.2 顯示搶答違規(guī)流程圖103.1.3 搶答成功流程圖103.2 程序代碼114系統(tǒng)功能說明194.1 系統(tǒng)的調(diào)試介紹194.2軟件調(diào)試過程19致21參考文獻22摘要很多人都搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個單位,如果專門購一臺搶答器雖然在經(jīng)濟上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和與時性就會影響活動的開展,因此設(shè)計了本搶答器。本設(shè)計是以八路搶答為基本理念。考慮到依需設(shè)定限時回答的功能,利用AT89C51單片機與外圍接口實現(xiàn)的
3、搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。關(guān)鍵詞: 單片機;搶答器; AT89C51 AbstractMany people are scare-answering device as a tool, has been widely applied in all kinds of intelligence and knowledge competition situation. But vies to implement use frequency is quite low, and some e
4、ither make complicated or low reliability. As a unit, if specialized purchased a vies to implement whereas economically may inherit, but every year the number of little use for long-term storage, often make (electronics) vies is damaged, again the purchase of trouble and timeliness will affect activ
5、ities, so this contest was designed device. This design is 8 vies for basic ideas. Considering according to need to set limit to answer function, using AT89C51 and periphery interface implementation of scare-answering system, of the microcontroller timer/counter timing and numeration principle, soft
6、ware and hardware organically, and makes the system can correctly to the time, at the same time making digital tube can properly shows the time. Keywords:Microcontroller; Scare-answering device; AT89C51緒 論單片機作為計算機的一個重要分支,其應(yīng)用圍很廣,發(fā)展很快,它已成為現(xiàn)代電子技術(shù)、計算機應(yīng)用、網(wǎng)絡(luò)、通信、自動控制與計量測試、數(shù)據(jù)采集與信號處理等技術(shù)中日益普與的一項新興技術(shù),應(yīng)用圍十分廣泛。從
7、事單片機應(yīng)用與開發(fā),不僅為將來可能從事該方面的開發(fā)打下基礎(chǔ),另一方面,由于單片機作為微型計算機的一種,麻雀雖小,五臟俱全,可以把它當作微型計算機的一個簡化模型來看待,學習單片機可以加深對微型計算機工作原理的理解,更加清楚計算機的脈絡(luò)。同時,提供了一個實際應(yīng)用手段。21世紀,是一個信息技術(shù)飛速發(fā)展的時代,智力競賽是一種形式比較活潑的教育方式,是人們休閑娛樂生活的一部分。這些競賽一方面充實了人們的娛樂生活,另一方面也提高了人們努力汲取相關(guān)領(lǐng)域的知識的興趣。智力競賽,也就是幾個參賽選手之間在規(guī)定的時間,規(guī)定的地點進行相互競爭的比賽。搶答是各種競賽常用的一種形式。在搶答賽中,往往要有主持人宣布搶答的開
8、始,還要確定是哪個選手搶到了答題權(quán),具體答題的時間有時也要設(shè)定。這些如果僅憑主持人的主觀判斷,很容易出現(xiàn)誤判的情況。因此,在競賽中,搶答器就扮演了一個非常重要的角色。1 系統(tǒng)設(shè)計容1.1系統(tǒng)設(shè)計依據(jù)搶答器由計數(shù)器、寄存器、集成定時器和譯碼顯示等組合、時序電路組成??煞譃閾尨痣娐?,定時電路,報警電路等幾個單元部分。每個單元電路分別可以處理一些搶答競賽中的基本問題。本次課程設(shè)計設(shè)計的是一個多路定時搶答器,是多于兩位選手參賽的一個搶答器,具有鎖存和顯示功能。同時由主持人控制系統(tǒng)的清零和搶答的開始。搶答開始后,若有任何一名選手按動搶答按鈕,搶答器就會顯示該選手編號直至系統(tǒng)被主持人清零,并有揚聲器發(fā)出提
9、示,同時其他人再搶答就無效了。此次設(shè)計的搶答器還有自動定時功能,主持人可以設(shè)定選手答題的時間。當主持人啟動“開始”鍵后,定時器會自動減計時,這個會顯示在顯示器上。選手只有在搶答時間搶答才有效,若在答題時間沒有選手答題,時間到時,報警電路就會發(fā)出警報亮燈并且禁止搶答。1.2設(shè)計任務(wù)和要求設(shè)計一個八路搶答器要求:(1)設(shè)計出硬件電路; (2)設(shè)計出軟件編程方法,并寫出源代碼;(3)用PROTEUS進行仿真;(4)論文格式要符合學院的統(tǒng)一規(guī)定,結(jié)構(gòu)要合符邏輯,表達要得體。1.3 設(shè)計目的通過設(shè)計學習單片機最小系統(tǒng)的基本設(shè)計方法,掌握單片機應(yīng)用系統(tǒng)的開發(fā)調(diào)試過程。(1)學習單片機開發(fā)工具功能、特點和使
10、用方法。(2)學會單片機控制系統(tǒng)程序的編制和調(diào)試方法。(3)設(shè)計單片機搶答器硬件電路,繪制出電路原理圖。(4)編制并調(diào)試出鍵盤掃描程序和顯示驅(qū)動程序。(5)掌握單片機定時器的基本用法,編制出定時器的中斷程序。2硬件設(shè)計2.1 單片機控制原理單片機(SCM)是單片微型計算機(Single Chip Microcomputer)的簡稱。它是把中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、I/O接口電路、定時/計數(shù)器以與輸入/輸出適配器都集成在一塊芯片上,構(gòu)成一個完整的微型計算機。它的最大優(yōu)點是體積小,可放在儀表部;但存儲量小,輸入/輸出適配器簡單,功能較低。目前,單片機在民用和工業(yè)測控領(lǐng)域
11、得到最廣泛的應(yīng)用,早已深深地融入人們的生活中。簡單的說,用單片機系統(tǒng)來設(shè)計搶答器,實現(xiàn)兩組的搶答時間即使是相差幾微秒,也可分辨出哪組優(yōu)先答題。P0端口(P0.0-P0.7):P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1端口(P1.0-P1.7):P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉
12、為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2端口(P2.0-P2.7):P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳被外部拉低,將輸出電流,這是由于部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程
13、和校驗時接收高八位地址信號和控制信號。P3端口(P3.0-P3.7):P3口管腳是一個帶有部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。2.2 搶答器的原理數(shù)碼管與上拉電阻AT89C51復(fù)位電路搶答器計時時間調(diào)整與語音報警獨立式按鍵鍵盤電子智能搶答計分器在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。為了完成這個任務(wù)設(shè)計時系統(tǒng)能顯示搶答組號、各組計分并能計分顯示以與比賽結(jié)束時能發(fā)出報警聲三個要求;電子智能搶答計分器主要是由硬件
14、部分和軟件部分構(gòu)成,硬件和軟件分開設(shè)計;系統(tǒng)綜框圖如下:圖2.2系統(tǒng)綜框圖2.2.1 原理與電路總框圖所需元件:該系統(tǒng)的核心器件是AT89C51,其外部接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕與揚聲器。元件為:晶體振蕩管X1,電容C1、C2、C3,電阻RP1,P3.0和P3.1有裁判控制分別是搶答停止和開始鍵;P1.0-P1.7是8組搶答的輸入口;P2.0-P2.3口為數(shù)碼管的位選口;段選口用的是P0.0-P0.6口輸出,外部中斷0、1和P3.2,P3.3為搶答記時調(diào)整口,實現(xiàn)的對個隊進行計時,并且加減調(diào)整,外部中斷0,1實現(xiàn)了答題時間調(diào)整。P3.4、P3.5分別實現(xiàn)了時間的加一和減一;P3.6為
15、蜂鳴器控制口。智能搶答器用單片機來設(shè)計制作完成,由于其功能的實現(xiàn)主要通過軟件編程來完成,采用單片機AT89C51,它是低功耗、高性能的CMOS型8位單片機。片帶有4KB的Flash存儲器,并允許在系統(tǒng)改寫或用編程器編程。該智力競賽搶答器的準確度很高,其誤差主要由晶振自身的誤差所造成。AT89C51單片機部由CPU、4KB的FPEROM ,128B的RAM,兩個16位的定時/計數(shù)器T0和T1,4個8位的I/O端P0、P1、P2、P3等組成。單片微機部最核心的部分是CPU。CPU主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運算、邏輯運算以與位操作處理等,CPU按其功
16、能可分為運算器和控制器兩部分??刂破饔沙绦蛴嫈?shù)器PC、指令儲存器、指令譯碼器、實時控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進行譯碼,通過實時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運算調(diào)整電路等組成。圖2.2.1搶答器總原理圖2.3 功能模塊電路本設(shè)計分為硬件設(shè)計和軟件設(shè)計,這兩者相互結(jié)合,不可分離;從時間上看,硬件設(shè)計的絕大部分工作量是在最初階段,到后期往往還要做一些修改。只要技術(shù)準備充分,硬件設(shè)計的大返工是比較少的,軟件設(shè)計的任
17、務(wù)貫徹始終,到中后期基本上都是軟件設(shè)計任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強的芯片不斷出現(xiàn),使硬件電路的集成度越來越高,硬件設(shè)計的工作量在整個項目中的所占的比重逐漸下降。為使硬件電路設(shè)計盡可能合理,應(yīng)注意以下幾方面7:(1) 盡可能采用功能強的芯片,以簡化電路,功能強的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高。(2) 留有設(shè)計余地。在設(shè)計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設(shè)計,如果現(xiàn)在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。(3) 程序空間,選用片程序空間足夠大的單片機
18、,本設(shè)計采用AT89C51單片機。(4) RAM空間,AT89C51部RAM不多,當要增強軟件數(shù)據(jù)處理功能時,往往覺得不足。如果系統(tǒng)配置了外部RAM,則建議多留一些空間。如選用8155作I/O接口,就可以增強256字節(jié)RAM。如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級換代。只要在硬件電路設(shè)計初期考慮到這一點,就應(yīng)該為系統(tǒng)將來升級留足夠的RAM空間,哪怕多設(shè)計一個RAM的插座,暫不插芯片也好。(5) I/O端口:在樣機研制出來后進行現(xiàn)場試用
19、時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計就預(yù)留出一些I/O端口,雖然當時空著沒用,那么用的時候就派上用場了。2.3.1晶振復(fù)位與開始搶答電路晶振的頻率為12MHZ,提供89C51的時鐘脈沖使89C51工作,復(fù)位電路是單片機初始化,使單片機重新開始執(zhí)行程序。當復(fù)位開關(guān)按下RST由低電平變?yōu)楦唠娖?,則程序從頭開始執(zhí)行,在此次課程設(shè)計電路中當一個問題結(jié)束主持人后按下復(fù)位開關(guān)后進行下一題的準備。圖2.3.1 晶振復(fù)位電路圖2.3.1開始搶答電路2.3.2 選手搶答鍵(矩
20、陣式鍵盤)89C51的P1口做一個為選手搶答的輸入按鍵引腳,P1.0至P1.7輪流輸出低電位,給每一個選手編號1至8,當選手按下按鈕時,P1口每個端口的電平變化從P1口輸入,經(jīng)單片機處理后從P0輸出由數(shù)碼管顯示搶答者編號。圖2.3.2 選手搶答電路2.3.3 顯示與顯示驅(qū)動電路此電路包括顯示和驅(qū)動,顯示采用數(shù)碼管,驅(qū)動用P2口, 違規(guī)者編號、搶答30秒倒計時、正常搶答者編號和回答問題時間60秒倒計時,數(shù)碼管采用動態(tài)顯示。驅(qū)動電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當為低電平則能驅(qū)動數(shù)碼管使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。圖2.3.3 顯示
21、與顯示驅(qū)動電路2.3.4蜂鳴器音頻輸出電路圖2.3.4蜂鳴器音頻輸出電路通過控制不同頻率的矩形脈沖來控制蜂鳴器發(fā)聲。此次課程設(shè)計中只需要一些簡單的提示聲音和稍微顯眼的燈控,有搶答違規(guī),開始搶答,搶答時間結(jié)束和回答時間到得提示聲和亮燈提醒。3 軟件設(shè)計3.1程序設(shè)計軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計基本定型后,也就基本上決定下來了9。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質(zhì)性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作
22、者的關(guān)系,在系統(tǒng)軟件中充當組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當一名操作工人比較容易,而當一個廠長就比較難了。軟件任務(wù)分析的另一個容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背
23、景程序)和前臺程序。后臺程序指主程序與其調(diào)用的子程序,這類程序?qū)崟r性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實時性要求較高的容,如定時系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。智力競賽搶答器要求有記憶功能,一次時間設(shè)置完,復(fù)位后不需重新進行時間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼。當搶答完畢時,會在數(shù)碼管上顯示搶答者數(shù)字提示以表示搶答成功,同時顯示其分數(shù),
24、分數(shù)的加減可有裁判手動進行。采取獨立式鍵盤,可以實現(xiàn)8路搶答。在顯示時使用的是七段數(shù)碼管顯示在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法。臂并通過查表發(fā)將其在數(shù)碼管上顯示出來,其中P1口為字型碼輸入端,P2口低6位為字選段輸入端。通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。軟件去抖動,如果“開始鍵”按下就向下執(zhí)行,否則就跳到開始。采用發(fā)聲報警或者采用綠燈,起到報警作用。如果想調(diào)節(jié)搶答時間或答題時間,按搶答時間調(diào)節(jié)鍵或答題時間調(diào)節(jié)鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下加1s鍵,如果想減一秒按一下-1s鍵,時間LED上會顯示改變后的時間,調(diào)整圍為0s99s, 0s時
25、再減1s會跳到99,99s時再加1s會變到0s。 主持人按搶答開始鍵,會有提示音,并立刻進入搶答倒計時(預(yù)設(shè)30s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進入回答倒計時(預(yù)設(shè)60s搶答時間),不進行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。 如倒計時期間,主持人想停止倒計時可以隨時按停止按鍵,系統(tǒng)會自動進入準備狀態(tài),等待主持人按搶答開始進入下次搶答計時。 如果主持人未按搶答開始鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下停止 鍵為止。 3.1.1 系統(tǒng)流程圖調(diào)用搶答者獲得的回答問題子程序60秒到中斷
26、返回開 始初始化讀鍵盤是否有鍵按下中斷條件是否滿足調(diào)用顯示搶答違規(guī)并報警子程序進入中斷程序開中斷并響聲提示設(shè)定定時器值并啟動定時器30秒搶答時間并顯示并顯示調(diào)用讀鍵子程序為延時程序是否有鍵按下圖3.1.1系統(tǒng)流程圖3.1.2顯示搶答違規(guī)流程圖開 始報警一直提示顯示違規(guī)者編號圖3.1.2顯示搶答違規(guī)流程圖3.1.3搶答成功流程圖開 始響聲提示設(shè)置定時器初值并啟動顯示搶答者后30秒倒計時60秒答問題時間到并響聲提示RET圖3.1.3搶答成功流程圖3.2 程序代碼搶答器程序OK EQU 20H;搶答開始標志位RING EQU 22H;響鈴標志位ORG 0000HAJMP MAINORG 0003HA
27、JMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30;初設(shè)搶答時間為30sMOV R2,#60;初設(shè)答題時間為60sMOV TMOD,#11H;設(shè)置未定時器/模式1MOV TH0,#0F0HMOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms為一次溢出中斷SETB EASETB ET0SETB ET1SETB EX0SETB EX1;允許四個中斷,T0/T1/INT0/INT1CLR OKCLR RI
28、NGSETB TR1SETB TR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數(shù),重置TH1/TL1就可以了;=查詢程序=START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY;未開始搶答時候顯示FFF P3.0,NEXT;dddddddACALL DELAY P3.0,NEXT;去抖動,如果開始鍵按下就向下執(zhí)行,否者跳到非法搶答查詢ACALL BARK;按鍵發(fā)聲MOV A,R1MOV R6,A;送R1-R6,因為R1中保存了搶答時間SETB OK;搶答標志位,用于COUNT只程序中判斷是否查詢搶答MOV R7,#01H ;讀搶答鍵
29、數(shù)據(jù)信號標志,這里表示只讀一次有用信號MOV R3,#0AH;搶答只顯示計時,滅號數(shù)AJMP COUNT;進入倒計時程序,查詢有效搶答的程序在COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8AJMP START;=非法搶答處理程序=FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERRORFALSE3: MOV R3,#0
30、3HAJMP ERRORFALSE4: MOV R3,#04HAJMP ERRORFALSE5: MOV R3,#05HAJMP ERRORFALSE6: MOV R3,#06HAJMP ERRORFALSE7: MOV R3,#07HAJMP ERRORFALSE8: MOV R3,#08HAJMP ERROR;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在兩個時間LED上顯示R1JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCOJNB
31、P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECOJNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1;如果R1為0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL D
32、ELAY1AJMP INT0SUBBACK0: RETI;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC1JNB P3.1,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2
33、ACALL DELAY1AJMP INT1SUBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI;=倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=REPEAT:MOV A,R2 ;使用錦囊時重新計時MOV R6,ACLR RINGCOUNT: MOV R0,#00H;重置定時器中斷次數(shù)MOV TH1,#3CHMOV TL1,#0B0H;重置定時器RECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6MOV B,#0AHDIV AB;除十分出個位/十位MOV 30H,A;十位存于(30H)MOV 3
34、1H,B;個位存于(31H)MOV R5,30H;取十位MOV R4,31H;取個位MOV A,R6SUBB A,#07HJNC LARGER;大于5s跳到LARGER,小于等于5s會提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下運行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計SETB RINGMOV A,R6JZ QUIT;計時完畢MOV R0,#00HDEC R6;一秒標志減1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK;如果1s向下運行
35、,否者跳到查停/顯示DEC R6;計時一秒R6自動減1MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止鍵退出JNB OK,CHECKK ;只在回答倒計時才有效AJMP NEXTTCHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊NEXTT: ACALL DISPLAY OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)AJMP RECOUNTACCOUT:MOV A,36HJNB ACC.0,TRUE1JNB ACC.1,TRUE2JNB ACC.2,TRUE3JNB ACC.3,TRUE4JNB ACC.4
36、,TRUE5JNB ACC.5,TRUE6 JNB ACC.6,TZ1JNB ACC.7,TZ2AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT: CLR OK;如果按下了停止鍵執(zhí)行的程序CLR RINGAJMP START;=正常搶答處理程序=TRUE1: ACALL BARKMOV A,R2MOV R6,A;搶答時間R2送R6MOV R3,#01HCLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答AJMP COUNTTRUE2:ACALL BARKMOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:AC
37、ALL BARKMOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BARKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5:ACALL BARKMOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARKMOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BARKMOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8:ACALL
38、BARKMOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;=犯規(guī)搶答程序=ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE: MOV A,R0CJNE A,#06H,FLASH;0.3s向下運行-滅并停響CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0AH;三燈全滅AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計SETB RINGMOV R0,#00HMOV R
39、3,34H;取回號數(shù)MOV R5,#0BHMOV R4,#0BH;顯示FF和號數(shù)AJMP CHECK1CHECK1: JNB P3.1,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP START;=顯示程序=DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAY2MOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV P0,AACAL
40、L DELAY2MOV A,R4MOVC A,A+DPTRMOV P2,#0fbHMOV P0,AACALL DELAY2RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;滅,1,2,3,4,5,6,7,8,9,滅,FDAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一個為零,其他與上一樣,因為十位如果為零顯示熄滅;=加減時間延時(起到不會按下就加N個數(shù))=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0
41、RET;=延時4236個機器周期(去抖動用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=延時4236個機器周期(顯示用到)=DELAY2: MOV 32H,#43HLOOP3: MOV 33H,#1EHMOV A,R7 ;每隔6070個機器周期讀一次P1口,全為1時為無效數(shù)據(jù),繼續(xù)讀,有一個不為1時,轉(zhuǎn)到正常搶答處理JNZ AAAA1 ;沒讀到有效數(shù)據(jù)時繼續(xù)轉(zhuǎn)到AAAA1LOOP2: DJNZ 33H,LOOP2DJNZ 32H,LOOP3RET;=讀搶答按鍵數(shù)據(jù)口程序=;由于在讀
42、搶答數(shù)據(jù)口的時候,單片機首先進入倒計時程序,再調(diào)用顯示程序,最后才檢測按鍵口;然而在檢測按鍵口時動態(tài)掃描要調(diào)用三次(4ms)延時程序.這樣就會導致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號優(yōu)先最高.8號最低.;故采用在延時子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性AAAA1: MOV A,P1CJNE A,#0FFH,AA1 ;當不全為1時的數(shù)據(jù)為有效數(shù)據(jù)AA0: MOV 36H,A ;將有效數(shù)據(jù)送到36H暫存AJMP LOOP2AA1: DEC R7AJMP AA0;=發(fā)聲程序=BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING;按鍵發(fā)聲RET;=TO溢出中斷
43、(響鈴程序)=T0INT: MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUT;CPL P3.6;RING標志位為1時候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音OUT: RETI;=T1溢出中斷(計時程序)=T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND4 調(diào)試功能說明4.1 系統(tǒng)的調(diào)試介紹系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性;軟硬件的配人情況以與是否達到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實用產(chǎn)品。硬件
44、調(diào)試分單元電路調(diào)試和聯(lián)機調(diào)試,單元電路試驗在硬件電路設(shè)計時已經(jīng)進行,這里的調(diào)試只是將其制成印刷電路板后試驗電路是否正確,并排除一些加工工藝性錯誤(如錯線、開路、短路等)。這種調(diào)試可單獨模擬進行,也可通過開發(fā)裝置由軟件配合進行,硬件聯(lián)機調(diào)試則必須在系統(tǒng)軟件的配合下進行。軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機調(diào)試兩個階段。程序的分塊調(diào)試一般在單片機開發(fā)裝置上進行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個特殊的程序段,并連同被調(diào)程序功能塊一起在開發(fā)裝置上運行;也可配合對應(yīng)硬件電路單獨運行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過單步運行或設(shè)置斷點的方法,查出原因并加以改正,直到運
45、行結(jié)果正確為止。這時該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進行調(diào)試。程序聯(lián)機調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個完整程序,在所研制的硬件電路上運行。從而試驗程序整體運行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會有某些支路上的程序、功能塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時,調(diào)試人員應(yīng)創(chuàng)造條件進行模擬調(diào)試。在聯(lián)調(diào)中如發(fā)現(xiàn)硬件問題也應(yīng)與時修正,直到單片機系統(tǒng)的軟件、硬件全部調(diào)試成功為止。系統(tǒng)調(diào)試完成后,還要進行一段時間的試運行,從而檢驗系統(tǒng)的穩(wěn)定性和抗干擾能力,驗證系統(tǒng)功能是否達到設(shè)計要求,是否達到預(yù)期的效果。4.2 軟件調(diào)試過程首先對所用
46、軟件與使用方法介紹如下:1、Keil是德國開發(fā)的一個51單片機開發(fā)軟件平臺,最開始只是一個支持C語言和匯編語言的編譯器軟件。后來隨著開發(fā)人員的不斷努力以與版本的不斷升級,使它已經(jīng)成為了一個重要的單片機開發(fā)平臺,不過KEIL的界面并不是非常復(fù)雜,操作也不是非常困難,很多工程師的開發(fā)的優(yōu)秀程序都是在KEIL的平臺上編寫出來的??梢哉f它是一個比較重要的軟件,熟悉他的人很多很多,用戶群極為龐大,要遠遠超過偉福等廠家軟件用戶群,操作有不懂的地方只要找相關(guān)的書看看,到相關(guān)的單片機技術(shù)論壇問問,很快就可以掌握它的基本使用了。2、 總調(diào),即應(yīng)用軟件的調(diào)試,程序固化,軟、硬件結(jié)合的應(yīng)用系統(tǒng)軟硬件聯(lián)合仿真系統(tǒng)由一個硬件執(zhí)行環(huán)境和一個軟件執(zhí)行環(huán)境組成,通常軟
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色生態(tài)農(nóng)業(yè)產(chǎn)品回購協(xié)議合同模板3篇
- 2025年度安置房租賃合同及配套設(shè)施服務(wù)協(xié)議
- 自動穿串機課程設(shè)計
- 二零二五年度企業(yè)間借款合同延期及債務(wù)重組及債務(wù)轉(zhuǎn)移協(xié)議3篇
- 2025版物業(yè)服務(wù)管理費合同2篇
- 2025年綠色建筑房產(chǎn)交易中介服務(wù)專項合同2篇
- 2025版礦渣粉運輸合同環(huán)保合規(guī)審查范本3篇
- 二零二五年度云計算領(lǐng)域?qū)I(yè)技術(shù)人員勞動合同
- 紅酒開瓶課程設(shè)計
- 2025年新型耐磨木地板代理銷售合同標準版3篇
- 《正態(tài)分布理論及其應(yīng)用研究》4200字(論文)
- GB/T 45086.1-2024車載定位系統(tǒng)技術(shù)要求及試驗方法第1部分:衛(wèi)星定位
- 1古詩文理解性默寫(教師卷)
- 廣東省廣州市越秀區(qū)2021-2022學年九年級上學期期末道德與法治試題(含答案)
- 2024-2025學年六上科學期末綜合檢測卷(含答案)
- 在線教育平臺合作合同助力教育公平
- 電力電子技術(shù)(廣東工業(yè)大學)智慧樹知到期末考試答案章節(jié)答案2024年廣東工業(yè)大學
- 2024年中國移動甘肅公司招聘筆試參考題庫含答案解析
- 機械設(shè)計外文文獻翻譯、中英文翻譯、外文翻譯
- 美標漸開線花鍵計算程序2014.8
- 風動送樣手冊
評論
0/150
提交評論