版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄1.設計內容及要求 21.1設計任務 21.2設計要求 21.3設計方案 22.搶答器硬件設計 32.1時鐘頻率電路的設計 32.2復位電路 42.3顯示電路的設計 42.4選手搶答按鍵電路的設計 52.5主持人按鍵電路設計 63.搶答器的程序流程 63.1正常搶答流程 73.2搶答時間調整 83.3答題時間調整流程 94.搶答器制作調試問題 114.1在仿真中出現(xiàn)的問題 114.2在實際電路制作中出現(xiàn)的問題 115.仿真測試效果 125.1初始及復位顯示 125.2正常搶答顯示 125.3犯規(guī)顯示 135.4搶答時間調節(jié) 146.硬件電路功能顯示 156.1電路初始化顯示 156.2正常搶答顯示 156.3搶答犯規(guī)顯示 166.4復位鍵顯示 167.實訓總結 178.參考文獻 17附錄: 188路搶答器源程序 181.設計內容及要求1.1設計任務8路智力競賽搶答器1.2設計要求(1)利用單片機設計并制作智力競賽搶答器。(2)設計一個6路或以上的搶答器;(3)有主持人按鍵,只有主持人按鍵按下之后,才允許選手搶答,否則視為犯規(guī),犯規(guī)時有對應指示燈亮;(4)設定搶答時間限制,超過時間若無人搶答則該題作廢,并用發(fā)光二極管閃爍報警;搶答限制時間用數(shù)碼管倒計時顯示;(6)有復位按鈕,出現(xiàn)犯規(guī)或超時后可復位。1.3設計方案1、當主持人按下開始鍵,開始搶答,初始倒計時30秒開始倒計時,選手搶答成功,進入60秒答題倒計時;2、如果在主持人按下開始鍵前按下?lián)尨鸢粹o,搶答犯規(guī),顯示器顯示犯規(guī)選手號碼,倒計時和選手號碼顯示閃爍;3、主持人可以通過,按"搶答時間調節(jié)"鍵或"答題時間調節(jié)"鍵進入調節(jié)狀態(tài),此時會顯示初始的搶答時間或回答時間,如想加一秒按一下"時間+"鍵,如果想減一秒按一下"時間-"鍵,時間LED上會顯示改變后的時間,調整范圍為0s~99s,0s時再減1s會跳到99,99s時再加1s會變到0s。4、P3.0為開始搶答,P3.1為復位,p1.0-p1.7為八路搶答輸入數(shù)碼管段選P0口,位選P2口低3位。P3.2搶答時間調整整,P3.3回答時間調整,P3.4為時間加1調整,P3.5為時間減1調整。2.搶答器硬件設計本設計基于AT89S52單片機AT89S52的引腳圖AT89C52芯片引腳圖2.1時鐘頻率電路的設計單片機必須在時鐘的驅動下才能工作.在單片機內部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內部的各個單元,決定單片機的工作速度。圖2-2外部振蕩源電路一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調。C1,C2的典型值為30PF。單片機在工作時,由內部振蕩器產(chǎn)生或由外直接輸入的送至內部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12μs。2.2復位電路單片機的第9腳RST為硬件復位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復位,復位后單片機的各狀態(tài)都恢復到初始化狀態(tài),其電路圖如圖4所示:值得注意的是,在設計當中使用到了硬件復位和軟件復位兩種功能,由上面的硬件復位后的各狀態(tài)可知寄存器及存儲器的值都恢復到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現(xiàn)的前提條件就是不能對單片機進行硬件復位,所以設定了軟復位功能。軟復位實際上就是當程序執(zhí)行完畢之后,將程序指針通過一條跳轉指令讓它跳轉到程序執(zhí)行的起始地址。2.3顯示電路的設計電路采用的是CAJ5461BH4位數(shù)碼管顯示,4數(shù)碼管實物及接線如圖所示:2.4選手搶答按鍵電路的設計選手搶答按鍵選用的是以P1口為輸入,電路圖如圖所示:2.5主持人按鍵電路設計支持人按鍵電路選用P3口為輸入,支持人按鍵“開始”鍵接P3.0,“復位”鍵接P3.1,“修改搶答時間”接P3.2,“修改答題時間”接P3.3,“時間+”接P3.4,“時間-”接P3.5,電路圖如圖所示:3.搶答器的程序流程本設計采用P3.2、P3.3分別接搶答時間調節(jié)和答題時間調節(jié)按鈕,即通過外部中斷0、外部中斷1分別控制搶答、答題時間的調整。因此,設計的軟件部分可分為工作模塊、外部中斷0模塊、外部中斷1模塊。對流程圖的分析,也分三部分來介紹。3.1正常搶答流程初始化部分:包括對定時計數(shù)器的工作方式、初始化數(shù)值的設置,還包括對搶答時間與答題時間的預設,另外,還應對外部中斷0、外部中斷1進行開放。開始開始初始化初始化開始鍵沒按下開始鍵按下開始鍵沒按下開始鍵按下犯規(guī)搶答器倒計時犯規(guī)搶答器倒計時按下復位鍵按下復位鍵倒計時時間為0有人搶答?有人搶答?回答倒計時回答倒計時回答倒計時為0回答倒計時為03.2搶答時間調整搶答時間調整的流程圖見下圖INT0中斷INT0中斷Y顯示當前搶答時間P3.4按下?P3.5按下?搶答時間加1sNYN結果為100結果置0N結果為0s?結果置100搶答時間減1sYYN按P3.2中斷返回NYP3.2對應鍵的按下,便進入INT0中斷過程。通過不斷對P3.4(加1s)和P3.5(減1s)進行不斷的查詢,來對搶答時間進行調整:發(fā)現(xiàn)P3.4按下,就對原搶答時間加1s,發(fā)現(xiàn)P3.5下,就對原搶答時間減1s并調用顯示程序。根據(jù)設計要求,當加至99s時,若再加1s,則時間變?yōu)?;當減至0s后,若再減一秒,時間變?yōu)?9s。因此,流程中應該對當前時間于99s或0s比較,再作出相應處理。另外,在中斷過程中還需要不時對停止按鈕進行查詢,一旦發(fā)現(xiàn)其按下,立即中斷返回。由于本中斷過程在返回前一直是循環(huán)執(zhí)行的,因此,只需要在每次循環(huán)末查詢一次即可,如流程圖所示3.3答題時間調整流程與搶答時間調整類似,一旦因P3.3對應的按鈕按下,便進入INT1中斷過程。通過不斷對P3.4(加1s)和P3.5(減1s)進行不斷的查詢,來對搶答時間進行調整:發(fā)現(xiàn)P3.4按下,就對原搶答時間加1s,發(fā)現(xiàn)P3.5下,就對原搶答時間減1s并調用顯示程序。當加至99s時,若再加1s,則時間變?yōu)?;當減至0s后,若再減一秒,時間變?yōu)?9s。因此,流程中應該對當前時間于99s或0s比較,再作出相應處理。
INT1中斷INT1中斷Y顯示當前答題時間P3.4按下?P3.5按下?答題時間加1sNYN結果為100s?結果置0N結果為0s?結果置100答題時間減1sYYN停止鍵按下?中斷返回NY4.搶答器制作調試問題4.1在仿真中出現(xiàn)的問題(1)電路接好后將16進制文件寫入單片機內,在數(shù)碼管顯示中,顯示的是亂碼。解決方法:1、檢查程序中的字型碼是否是共陽極顯示的字型碼,將共陰極字型碼改為共陽極字型碼;2、檢查電路圖,查看4位數(shù)碼管顯示是不是共陽極顯示,將共陰極更改為共陽極顯示(2)數(shù)碼管顯示的數(shù)字出現(xiàn)抖動解決方法:在顯示程序中更改顯示延時時間,加長顯示的延時時間(3)在調節(jié)搶答時間或調節(jié)答題時間是按一次按鍵顯示器上的數(shù)字會跳動多次解決方法:在按鍵去抖動程序中加長去抖動的延時時間4.2在實際電路制作中出現(xiàn)的問題(1)電路焊接完成將16進制程序燒寫進單片機后,電路板不能正常工作,數(shù)碼管沒顯示。解決方法:檢查電路,確認單片機最小系統(tǒng)是否正確及4位數(shù)碼管與單片機接線是否正確,用萬用表檢查各管腳間是否短路,排除短路的現(xiàn)象。(2)最小系統(tǒng)正確及各線路中沒有短路接線,數(shù)碼管全亮,但正確的顯示沒用顯示。解決方法:在顯示程序中加入將個顯示器清零的程序5.仿真測試效果5.1初始及復位顯示單片機初始顯示及復位顯示5.2正常搶答顯示(1)主持人按下開始鍵,數(shù)碼管顯示倒計時搶答倒計時(2)選手搶答成功,數(shù)碼管顯示選手號碼及答題倒計時4號選手搶答選手號碼及答題倒計時顯示5.3犯規(guī)顯示支持人沒按下開始鍵,選手搶答犯規(guī)。數(shù)碼管顯示選手號碼并閃爍4號選手搶答犯規(guī)顯示犯規(guī)顯示5.4搶答時間調節(jié)支持人按下“復位鍵”P3.1,按下“修改搶答時間”P3.2,選擇調節(jié)搶答時間,按“時間+”P3.4和“時間-”P3.5,進行搶答時間的調節(jié);主持人要修改答題時間,按下“復位鍵”P3.1,按下“修改答題時間”P3.3,選擇調節(jié)搶答時間,按“時間+”P3.4和“時間-”P3.5,進行答題時間時間的調節(jié),顯示如圖所示:搶答時間加7秒顯示答題時間修改顯示6.硬件電路功能顯示6.1電路初始化顯示電路初始時數(shù)碼管顯示PPP6.2正常搶答顯示1、當主持人按下開始按鍵后,數(shù)碼管顯示30秒倒計時2、選手搶答成功,數(shù)碼管顯示選手號碼,并顯示答題時間倒計時6.3搶答犯規(guī)顯示主持人開始按鍵沒按下,選手按下?lián)尨疰I后犯規(guī),數(shù)碼管顯示犯規(guī)選手號碼,倒計時顯示處顯示PP6.4復位鍵顯示當支持人按下復位鍵,數(shù)碼管顯示初始值,顯示PPP7.實訓總結在為期兩個周的單片機實訓中,通過完成所選的實訓題目,我們將課本中的所學到知識應用到制作中,加深了我們對課本知識的理解,在實訓中遇到的許多問題,通過查閱資料和老師的講解我們對單片機的應用又更進一層,在制作實際電路的過程中,不僅鍛煉了我們的的動手能力,通過對AT89S52單片機的應用使我們加深了對單片機的認識,將課本上的知識以實際生活中的應用相結合,在制作搶答器的過程中我們遇到了許多的問題,在試過許多解決方案后,沒有解決問題,也想過放棄,但還是堅持了下來。在你解決一個問題,結果出來后,就會非常的興奮。在實訓中學到的東西對我們以后的生活學習也有很大的幫助在我們的生活中無亂多大的困難擋住我們前進的路,我們都不能放棄,世上沒有解決不了的困難,之遙我們堅持下來,成功就在手中。8.參考文獻[1]胡建主編.《單片機原理及接口技術實踐教程》.北京:機械工業(yè)出版社.2004[2]何立民.《MCS-51系列單片機應用系統(tǒng)設計》.北京:北京航空航天大學出版社.1990[3]潘永雄.《新編單片機原理與應用》.西安:西安電子科技大學出版社.2003[4]張迎新.《單片微型計算機原理、應用及接口技術》(第2版).國防工業(yè)出版社.2004[5]蘇平.《單片機原理與接口技術》.電子工業(yè)出版社.2003附錄:8路搶答器源程序 OK EQU 20H;搶答開始標志位? ORG 0000H AJMP MAIN ORG 0003H AJMP INT_0 ORG 000BH AJMP T0INT ORG 0013H AJMP INT_1 ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#30;初設搶答時間為30s MOV R2,#50 MOV TMOD,#11H;設置未定時器/模式1 MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1;允許四個中斷,T0/T1/INT0/INT1 CLR OK SETB TR1 SETB TR0;START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未開始搶答時候顯示000 JB P3.0,NEXT; ACALL DELAY JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 MOV A,R1 MOV R6,A;送R1->R6,因為R1中保存了搶答時間 SETB OK;搶答標志位,用于COUNT只程序中判斷是否查詢搶答 MOV R7,#01H;讀搶答鍵數(shù)據(jù)信號標志,這里表示只讀一次有用信號 MOV R3,#0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面NEXT: JNB P1.0,K1 JNB P1.1,K2 JNB P1.2,K3 JNB P1.3,K4 JNB P1.4,K5 JNB P1.5,K6 JNB P1.6,K7 JNB P1.7,K8 AJMP START;=====非法搶答處理程序=====K1: MOV R3,#01H AJMP FANGUIK2: MOV R3,#02H AJMP FANGUIK3: MOV R3,#03H AJMP FANGUIK4: MOV R3,#04H AJMP FANGUIK5: MOV R3,#05H AJMP FANGUIK6: MOV R3,#06H AJMP FANGUIK7: MOV R3,#07H AJMP FANGUIK8: MOV R3,#08H AJMP FANGUI/*=====INT0(搶答時間R1調整程序)=====*/INT_0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;先在兩個時間LED上顯示R1 JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO AJMP INT_0INC0: MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT_0ADD0: INC R1 ACALL DELAY1 AJMP INT_0DEC0: MOV A,R1 JZ SETR1;如果R1為0,R1就置99, DEC R1 ACALL DELAY1 AJMP INT_0SETR1: MOV R1,#63H ACALL DELAY1 AJMP INT_0BACK0: RETI/*=====INT1(回答時間R2調整程序)=====*/INT_1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT_1INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT_1ADD1: INC R2 ACALL DELAY1 AJMP INT_1DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT_1SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT_1BACK1: RETI/*=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====*/REPEAT: MOV A,R2;使用設定始潯重新計時 MOV R6,ACOUNT: MOV R0,#00H;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時器RECOUNT: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向下運行 AJMP CHECKFULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計 MOV A,R6 JZ QUIT;計時完畢 MOV R0,#00H DEC R6;一秒標志減1 AJMP CHECKLARGER:MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示" DEC R6;計時一秒R6自動減1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止鍵退出 JNB OK,CHECKK;只在回答倒計時才有效 AJMP NEXTTCHECKK: JNB P3.0,REPEAT;判斷是否使用錦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNTACCOUT: MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNTTZ1: JMP TRUE7TZ2: JMP TRUE8QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序 AJMP START/*=====正常搶答處理程序=====*/TRUE1: MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2: MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3: MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4: MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT/* =====犯規(guī)搶答程序=====*/FANGUI: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH;0.3s向下運行->滅并停響 MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計 MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MOV R4,#0BH;顯示FF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年盂縣招教考試備考題庫附答案解析
- 2025年鄭州輕工業(yè)大學馬克思主義基本原理概論期末考試模擬題附答案解析(必刷)
- 2024年銅陵縣招教考試備考題庫帶答案解析
- 2025年太原科技大學馬克思主義基本原理概論期末考試模擬題含答案解析(奪冠)
- 2025年泉州幼兒師范高等專科學校馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 2024年石家莊工商職業(yè)學院馬克思主義基本原理概論期末考試題附答案解析
- 2024年重慶旅游職業(yè)學院馬克思主義基本原理概論期末考試題附答案解析
- 2025年六盤水職業(yè)技術學院單招職業(yè)技能考試模擬測試卷帶答案解析
- 2025年鎮(zhèn)巴縣幼兒園教師招教考試備考題庫及答案解析(必刷)
- 2025年天津輕工職業(yè)技術學院馬克思主義基本原理概論期末考試模擬題含答案解析(必刷)
- 2026廣東東莞市厚街鎮(zhèn)第一次招聘編外聘用人員12人考試備考試題及答案解析
- 2026年智能燃氣報警器項目營銷方案
- 中科宇航招聘筆試題庫2026
- 醫(yī)院物資采購流程及管理規(guī)范手冊
- 2026年低空管控系統(tǒng)項目投資計劃書
- 預制空心板梁架設專項施工方案
- 護理職業(yè)素養(yǎng)與形象
- 農(nóng)村供水題庫及答案
- 足球隊組成介紹
- 地震公路交通設施損壞事件應急預案
- 溝通管理溝通計劃表
評論
0/150
提交評論