版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 智力競賽搶答器</b></p><p> 摘要 </p><p> 設(shè)計(jì)要求:1) 能容許2-8組進(jìn)行搶答。2) 能顯示搶答組號(hào)。3) 各組記分,并能記分顯示。4) 比賽結(jié)束時(shí),能發(fā)出報(bào)警聲。</p><
2、p><b> 硬件系統(tǒng)設(shè)計(jì)</b></p><p> 1)控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作.</p><p> 2)硬件組成及所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚(yáng)聲器。元件為:晶振X1、電容C1、C
3、2、C3、 電阻RP1。P3.0和P3.1由裁判控制,分別是搶答停止和開始鍵。P1.0-P1.7是8組搶答的輸入口,P2.0--P2.3口為數(shù)碼管的段選口,位選口用的是P0.0--P0.6口輸出,外部中斷0、1和P3.3,P3.4為搶答記時(shí)調(diào)整口,實(shí)現(xiàn)的對(duì)個(gè)隊(duì)進(jìn)行計(jì)時(shí),并且加減調(diào)整,外部中斷0,1實(shí)現(xiàn)了答題時(shí)間調(diào)整.P3.4 P3.5分別實(shí)現(xiàn)了時(shí)間的加一和減一.P3.6為蜂鳴器的控制口。</p><p>
4、 控制系統(tǒng)防真用到了偉福軟件, 集成調(diào)試環(huán)境,集成了編緝器、編譯器、調(diào)試器,支持軟件模擬,支持項(xiàng)目管理功能強(qiáng)大的觀察窗口,支持所有的數(shù)據(jù)類型。樹狀結(jié)構(gòu)顯示,一目了然,支持ASM(匯編)、C語言,多語言多模塊源程序混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯(cuò)誤指令定位。功能很強(qiáng)大。</p><p> 系統(tǒng)仿真還用到了PROTUCE軟件,可通過仿真可以完全顯示出所設(shè)計(jì)系統(tǒng)的功能,對(duì)于程序的調(diào)試等有很大的幫助.<
5、;/p><p><b> 目錄</b></p><p> 1 概述.................................................................................................... . ..............3</p><p> 2 系統(tǒng)總體方案及硬件
6、計(jì)............................................................................4</p><p> 2.1控制系統(tǒng)及所需元件組成..........................................................................4</p><p> 2.2實(shí)驗(yàn)原理
7、.......................................................................................................4</p><p> 3 軟件設(shè)計(jì).......................................................................................
8、..................8.</p><p> 4 Proteus軟件仿真.......................................................................................12</p><p> 4.1偉福軟件.............................................
9、.........................................................12</p><p> 4.2在Proteus軟件............................................................................................12</p><p> 5心得體會(huì)...
10、........................................................................................................19</p><p> 參考文獻(xiàn).......................................................................................
11、.........................20</p><p> 附1:源程序代碼.............................................................................................21</p><p> 附2:計(jì)算器模擬系統(tǒng)電圖................................
12、.........................................30</p><p><b> 1 概述</b></p><p> 《單片機(jī)原理及應(yīng)用技術(shù)》是一門技術(shù)性,應(yīng)用性、實(shí)踐性很強(qiáng)的學(xué)科。課程設(shè)計(jì)是學(xué)好本門課程的又一重要實(shí)踐性教學(xué)環(huán)節(jié),課程設(shè)計(jì)的目的和任務(wù)就是</p><p> 配合單片機(jī)的教學(xué)和平時(shí)實(shí)驗(yàn),以達(dá)到
13、鞏固消化課程的內(nèi)容,進(jìn)一步加強(qiáng)綜合應(yīng)用能力及單片機(jī)應(yīng)用系統(tǒng)開發(fā)和設(shè)計(jì)能力的訓(xùn)練,啟發(fā)創(chuàng)新思維,使之具有獨(dú)立單片機(jī)產(chǎn)品和科研的基本技能,是以培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)的過程,是知識(shí)轉(zhuǎn)化為能力和能力轉(zhuǎn)化為工程素質(zhì)的重要階段。在實(shí)際生活中有好多地方都用到了單片機(jī),因此學(xué)習(xí)好這門課程有著十分重要的意義。</p><p> 要求的模擬的搶答器:1) 能容許2-8組進(jìn)行搶答。2) 能顯示搶答組號(hào)。3) 各組記分,并能記分顯示
14、。4) 比賽結(jié)束時(shí),能發(fā)出報(bào)警聲。</p><p><b> 硬件系統(tǒng)設(shè)計(jì)</b></p><p> 1)控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作.</p><p> 2)硬件組成及所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電
15、路、上拉電阻、數(shù)碼管、按鈕及揚(yáng)聲器。元件為:晶振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.3,P3.4為搶答記時(shí)調(diào)整口,實(shí)現(xiàn)的對(duì)個(gè)隊(duì)進(jìn)行計(jì)時(shí),并且加減調(diào)整,外部中斷0,1實(shí)現(xiàn)了答題時(shí)間調(diào)整.P3.4 P3.5分別實(shí)現(xiàn)了時(shí)間的加一和減一.P3
16、.6為蜂鳴器的控制口。</p><p> 控制系統(tǒng)防真用到了偉福軟件, 集成調(diào)試環(huán)境,集成了編緝器、編譯器、調(diào)試器,支持軟件模擬,支持項(xiàng)目管理功能強(qiáng)大的觀察窗口,支持所有的數(shù)據(jù)類型。樹狀結(jié)構(gòu)顯示,一目了然,支持ASM(匯編)、C語言,多語言多模塊源程序混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯(cuò)誤指令定位。功能很強(qiáng)大。</p><p> 系統(tǒng)仿真還用到了PROTUCE軟件,可通過仿真可
17、以完全顯示出所設(shè)計(jì)系統(tǒng)的功能,對(duì)于程序的調(diào)試等有很大的幫助.</p><p> 2系統(tǒng)總體方案及硬件計(jì)</p><p> 1:控制系統(tǒng)及所需元件 </p><p> 控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作.</p><p> 所需元件:該
18、系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚(yáng)聲器。元件為:晶振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.3,P3.4為搶答記時(shí)調(diào)整口,實(shí)現(xiàn)的對(duì)個(gè)隊(duì)進(jìn)行計(jì)時(shí),并且加減調(diào)整,外部中斷0,1實(shí)現(xiàn)了答題時(shí)間調(diào)整.P3
19、.4 P3.5分別實(shí)現(xiàn)了時(shí)間的加一和減一.P3.6為蜂鳴器的控制口。</p><p><b> 2:實(shí)驗(yàn)原理 </b></p><p> 智力競賽搶答器用單片機(jī)來設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過軟件編程來完成, 采用單片機(jī)AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。該智力競
20、賽搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。</p><p> AT89C51單片機(jī)由微處理器,存儲(chǔ)器,I/O口以及特殊功能寄存器SFR等部分構(gòu)成。其存儲(chǔ)器在物理上設(shè)計(jì)成程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)獨(dú)立的空間,片內(nèi)程序存儲(chǔ)器的容量為4KB,片內(nèi)數(shù)據(jù)存儲(chǔ)器為128個(gè)字節(jié)。89C51單片機(jī)有4個(gè)8位的并行I/O口:P0口,P1口,P2口和P3口。各個(gè)接口均由接口鎖存器,輸出驅(qū)動(dòng)器,和輸入緩沖器組成。P1口
21、是唯一的單功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí),P0可作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> AT89C51的
22、管腳圖:</p><p> 外部振蕩電路單片機(jī)必須在AT89C51的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元。外部振蕩電路見圖一</p><p><b> ?。▓D一)</b></p><p> 外部中斷和內(nèi)部中斷并存,單片機(jī)有硬件復(fù)位端,只要輸入持續(xù)4個(gè)機(jī)器周期的高電
23、平即可實(shí)現(xiàn)復(fù)位。硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,應(yīng)為本設(shè)計(jì)功能中有倒計(jì)時(shí)時(shí)間的記憶功能,所以不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位。只能用軟復(fù)位。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程。</p><p> 復(fù)位電路采用圖二所示:</p><p> 外部還接有蜂鳴器(由于缺少驅(qū)動(dòng)器,發(fā)生器不響,所以,用綠燈換了)用來發(fā)出報(bào)警音,其圖形如下:
24、</p><p> 采用七段碼7SEG-MPX4-CC 顯示,它是共陰極的由高電平點(diǎn)亮。圖形如下:</p><p> 采用八個(gè)BUTTON按鈕作為搶答的選擇按鍵如圖所示:</p><p><b> 3軟件系統(tǒng)設(shè)計(jì)</b></p><p> 智力競賽搶答器要求有計(jì)時(shí)記憶功能,一次時(shí)間設(shè)置完, 復(fù)位后不需重新進(jìn)行時(shí)
25、間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機(jī)將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼.</p><p> 當(dāng)搶答完畢時(shí),會(huì)在數(shù)碼管上顯示搶答者數(shù)字號(hào)碼提示以表示搶答成功.同時(shí)顯示其分?jǐn)?shù),分?jǐn)?shù)的加減可由裁判手動(dòng)進(jìn)行. 采用獨(dú)立式鍵盤,可實(shí)現(xiàn)8路搶答. </p><p> 在顯示時(shí)使用的是七段數(shù)碼管顯示在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法. 并通過查表法 將其在數(shù)碼管上顯示出來,其中P
26、1口為字型碼輸入端,P2口低6位為字選段輸入端.通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。軟件去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到開始。采用倒計(jì)時(shí)程序,使其具有倒計(jì)時(shí)功能?;卮鸬褂?jì)時(shí)30秒。搶答時(shí)間5秒。采用發(fā)聲警報(bào)(由于發(fā)生器不響,所以,用綠燈換了),起到報(bào)警作用。</p><p> 1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按"搶答時(shí)間調(diào)節(jié)"鍵或"答題時(shí)間
27、調(diào)節(jié)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"-1s"鍵,時(shí)間LED上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為0s~99s, 0s時(shí)再減1s會(huì)跳到99,99s時(shí)再加1s會(huì)變到0s。</p><p> 主持人按"搶答開始"鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)30s搶答時(shí)間),如有選
28、手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)60s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。倒數(shù)時(shí)間到小于5s會(huì)每秒響一下提示音。</p><p> 如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按"停止"按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進(jìn)入下次搶答計(jì)時(shí)。 </p><p> 4、如果主持人未按&
29、quot;搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號(hào)數(shù)并響個(gè)不停,直到按下"停止" 鍵為止。</p><p> 5、P3.0為開始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2搶答時(shí)間調(diào)整結(jié),P3.3回答時(shí)間調(diào)整,P3.4為時(shí)間加1調(diào)整,P3.5為時(shí)間減1調(diào)整。</p&
30、gt;<p> 下面是部分功能程序(附部分說明):</p><p> ;=====查詢程序=====</p><p> START: MOV R5,#0BH</p><p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY;未
31、開始搶答時(shí)候顯示FFF</p><p> JB P3.0,NEXT;ddddddd</p><p> ACALL DELAY</p><p> JB P3.0,NEXT;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p> ACALL BARK;按鍵發(fā)聲</p><p&g
32、t;<b> MOV A,R1</b></p><p> MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答</p><p> MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)</p><p&
33、gt; MOV R3,#0AH;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE
34、3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p> JNB P1.6,FALSE7</p><p> JNB P1.7,FALSE8</p><p> AJMP S
35、TART</p><p> ;=====INT0(搶答時(shí)間R1調(diào)整程序)=====</p><p> INT0SUB:MOV A,R1</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b
36、></p><p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY;先在兩個(gè)時(shí)間LED上顯示R1</p><p> JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO</p><p> JN
37、B P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO</p><p> JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p><p> CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99
38、,R1就置0,重新加起。</p><p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1</p><p> ACALL DELAY1</p><p> AJMP INT0
39、SUB</p><p> DEC0: MOV A,R1</p><p> JZ SETR1;如果R1為0, R1就置99,</p><p><b> DEC R1</b></p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p>&
40、lt;p> SETR1: MOV R1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p> ;=====讀搶答按鍵數(shù)據(jù)口程序=====</p><p> ;由于在讀搶答數(shù)據(jù)口的時(shí)候,單片機(jī)首
41、先進(jìn)入倒計(jì)時(shí)程序,再調(diào)用顯示程序,最后才檢測(cè)按鍵口</p><p> ;然而在檢測(cè)按鍵口時(shí)動(dòng)態(tài)掃描要調(diào)用三次(4ms)延時(shí)程序.這樣就會(huì)導(dǎo)致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號(hào)優(yōu)先最高.8號(hào)最低.</p><p> ;故采用在延時(shí)子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性</p><p> AAAA1: MOV A,P1</p><p>
42、 CJNE A,#0FFH,AA1 ;當(dāng)不全為1時(shí)的數(shù)據(jù)為有效數(shù)據(jù)</p><p> AA0: MOV 36H,A ;將有效數(shù)據(jù)送到36H暫存</p><p> AJMP LOOP2</p><p> AA1: DEC R7 </p><p><b> A
43、JMP AA0</b></p><p> ;=====發(fā)聲程序=====</p><p> BARK: SETB RING</p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p> CLR RING;按鍵發(fā)聲</p><p&g
44、t;<b> RET</b></p><p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6;
45、RING標(biāo)志位為1時(shí)候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音</p><p> OUT: RETI</p><p> ;=====T1溢出中斷(計(jì)時(shí)程序)=====</p><p> T1INT: MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p><b&g
46、t; INC R0</b></p><p><b> RETI</b></p><p><b> END</b></p><p><b> 4 系統(tǒng)仿真</b></p><p><b> 1:偉福軟件</b></p>&
47、lt;p> 用到了偉福軟件, 集成調(diào)試環(huán)境,集成了編緝器、編譯器、調(diào)試器,支持軟件模擬,支持項(xiàng)目管理功能強(qiáng)大的觀察窗口,支持所有的數(shù)據(jù)類型。樹狀結(jié)構(gòu)顯示,一目了然,支持ASM(匯編)、C語言,多語言多模塊源程序混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯(cuò)誤指令定位。功能很強(qiáng)大。用于對(duì)程序的調(diào)試和編輯。</p><p><b> 其界面如下:</b></p><p
48、> 2:PROTUCE軟件</p><p> 系統(tǒng)仿真還用到了PROTUCE軟件,可通過仿真可以完全顯示出所設(shè)計(jì)系統(tǒng)的功能,對(duì)于程序的調(diào)試等有很大的幫助.</p><p> 系統(tǒng)仿真時(shí)首先要在使用偉福編譯器,把所寫的程序進(jìn)行編譯,同時(shí)在仿真器里設(shè)置生成HEX文件,編譯無錯(cuò)誤時(shí)進(jìn)行PROTUCE仿真。首先要新建一個(gè)文檔是DNS型的找出需要的器件,可以使用搜索功能。接著把各個(gè)器件放
49、到合適的位置都要放到藍(lán)色框內(nèi)。然后根據(jù)自己的設(shè)計(jì)要求連線。等所有的元件都連接完成后可以把,偉福編譯生成的無錯(cuò)誤文件加載到AT89C51中,方法是,右鍵點(diǎn)中器件</p><p> 然后在用左鍵點(diǎn)擊,出來一個(gè)對(duì)話框在program file后選擇要添加文件,文件要求必須是HEX文件。然后可以點(diǎn)擊運(yùn)行觀察現(xiàn)象,看與自己設(shè)置的符合否,如果不相符在查找錯(cuò)誤進(jìn)行修改,一般的錯(cuò)誤都是程序中的,所以要認(rèn)真的讀取程序的每一個(gè)部分
50、</p><p> 作好的PROTUCE圖:</p><p> 六號(hào)搶答到時(shí)時(shí)的顯示圖:</p><p> 使用加法調(diào)整時(shí)的圖:</p><p><b> 減法調(diào)整圖:</b></p><p> 倒計(jì)時(shí)到30秒時(shí)的顯示圖:</p><p> 倒計(jì)時(shí)還有5秒時(shí)的報(bào)
51、警顯示圖:</p><p><b> 提示燈會(huì)呈閃亮狀:</b></p><p><b> 5心得體會(huì)</b></p><p> 單片機(jī)課程設(shè)計(jì)是一門很實(shí)用,很難的設(shè)計(jì)。這個(gè)設(shè)計(jì)用到了單片機(jī),電路等方面的知識(shí),通過這次課程設(shè)計(jì),使我對(duì)單片機(jī)及其附屬電路有了一定的了解,對(duì)課本上的知識(shí)有了近一步的掌握,也深刻明白了自己的
52、不足。</p><p> 完成本次課程設(shè)計(jì)的過程,是一個(gè)從無到有的過程,經(jīng)歷了興奮、自信、失落、奮發(fā)、所悟、完成幾個(gè)過程。剛做做課程設(shè)計(jì)時(shí),仔細(xì)閱讀設(shè)計(jì)的題目和要求,以為沒什么困難的,所用的知識(shí)書上都有??墒钱?dāng)我動(dòng)手開始做的時(shí)候,才發(fā)現(xiàn)其中的算法,設(shè)計(jì)是那么繁瑣。經(jīng)過一天的努力,毫無結(jié)果。失落的心情油然而生。于是,再到圖書館和網(wǎng)上查找資料,在經(jīng)過借鑒很多類似的資料,文獻(xiàn)后,總算是有點(diǎn)眉目了。埋頭苦干的過程是痛苦
53、的,尤其是在思考算法和程序框架時(shí),迷茫,煩躁,特別是當(dāng)苦思出來一個(gè)結(jié)果,又被自己推翻,心痛的無法言繪。在痛苦中掙扎,建立,推翻,參考別人的思路,建立,再次在推翻,在這不斷循環(huán)中,終于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知領(lǐng)域”的困難。但當(dāng)課程設(shè)計(jì)完成時(shí),那感覺是甜蜜的,沒有耕耘,哪來得收獲的喜悅,不懂付出怎么能知道回報(bào)的快樂,一分耕耘一分收獲,有付出才會(huì)有回報(bào),就在這樣的痛與快樂的交換中,我學(xué)到了知識(shí), 學(xué)到了做人
54、的道理。</p><p> 通過這短短一周的實(shí)踐,我感覺到自己從課本上學(xué)到的理論知識(shí)和實(shí)踐仍有</p><p> 很大的差距。最少很多元器件根本不知道有什么功效,在仿真儀器中是什么代碼。有的知識(shí),自己感覺已經(jīng)掌握得差不多了,但是實(shí)際操作起來就有問題出現(xiàn)了。我遇到了不少問題,花費(fèi)了很多的時(shí)間。這讓我重新反思我們的學(xué)習(xí),深刻領(lǐng)悟</p><p> 到我們這個(gè)專業(yè)動(dòng)
55、手,實(shí)踐的重要性。理論不經(jīng)過實(shí)踐考驗(yàn),是沒法實(shí)施的,就像我們編的程序,很多方面考慮的都不夠,幾乎沒有涉及到實(shí)際應(yīng)用時(shí)的防范方法措施。</p><p> 這次的課程設(shè)計(jì),讓我學(xué)到了很多書本上學(xué)不到的東西,學(xué)到了實(shí)際應(yīng)用時(shí),是取用成本的最小化,做設(shè)計(jì)不僅要考慮大的方面,小的方面也必須做到完美。最大的收獲是:對(duì)鍵盤,顯示器,C51語言(雖然最后還是用匯編語言編寫的,但是,我也試著學(xué)用了C51)的應(yīng)用有了深刻的了解。
56、</p><p><b> 6參考文獻(xiàn)</b></p><p> 中國礦業(yè)大學(xué)出版社《單片機(jī)原理及應(yīng)用技術(shù)》 主編 余發(fā)山</p><p> 國防工業(yè)出版社《單片微型計(jì)算機(jī)接口技術(shù)及其應(yīng)用》 主編 張淑清等</p><p> 北京航空航天大學(xué)出版社《單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)》 李光飛 樓然苗 胡佳文
57、謝象佐 編著</p><p><b> 附1:源程序代碼</b></p><p> OK EQU 20H;搶答開始標(biāo)志位</p><p> RING EQU 22H;響鈴標(biāo)志位</p><p><b> ORG 0000H</b></p><p><b>
58、 AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP INT0SUB</p><p><b> ORG 000BH</b></p><p> AJMP T0INT</p><p><b>
59、; ORG 0013H</b></p><p> AJMP INT1SUB</p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p><b> ORG 0040H</b></p><p> MAIN:
60、 MOV R1,#30;初設(shè)搶答時(shí)間為30s</p><p> MOV R2,#60;初設(shè)答題時(shí)間為60s</p><p> MOV TMOD,#11H;設(shè)置未定時(shí)器/模式1</p><p> MOV TH0,#0F0H</p><p> MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖</p><p>
61、 MOV TH1,#3CH</p><p> MOV TL1,#0B0H;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p><p><b> SETB ET1</b></p>
62、;<p><b> SETB EX0</b></p><p> SETB EX1;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b> CLR OK</b></p><p><b> CLR RING</b></p><p><b&
63、gt; SETB TR1</b></p><p> SETB TR0;一開始就運(yùn)行定時(shí)器,以開始顯示FFF.如果想重新計(jì)數(shù),重置TH1/TL1就可以了</p><p> ;=====查詢程序=====</p><p> START: MOV R5,#0BH</p><p> MOV R4,#0BH</p>
64、<p> MOV R3,#0BH</p><p> ACALL DISPLAY;未開始搶答時(shí)候顯示FFF</p><p> JB P3.0,NEXT;ddddddd</p><p> ACALL DELAY</p><p> JB P3.0,NEXT;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非
65、法搶答查詢</p><p> ACALL BARK;按鍵發(fā)聲</p><p><b> MOV A,R1</b></p><p> MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答</p><
66、p> MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)</p><p> MOV R3,#0AH;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p>&
67、lt;p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p> JNB P1.6,FALSE7</
68、p><p> JNB P1.7,FALSE8</p><p> AJMP START</p><p> ;=====非法搶答處理程序=====</p><p> FALSE1: MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: MOV R3
69、,#02H</p><p> AJMP ERROR</p><p> FALSE3: MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: MOV R3,#04H</p><p> AJMP ERROR</p><p> FALSE5: M
70、OV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: MOV R3,#07H</p><p> AJMP ERROR</p><p> FALS
71、E8: MOV R3,#08H</p><p> AJMP ERROR</p><p> ;=====INT0(搶答時(shí)間R1調(diào)整程序)=====</p><p> INT0SUB:MOV A,R1</p><p> MOV B,#0AH</p><p><b> DIV AB</b>&l
72、t;/p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY;先在兩個(gè)時(shí)間LED上顯示R1</p><p> JNB P3.4,INC0;
73、P3.4為+1s鍵,如按下跳到INCO</p><p> JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO</p><p> JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p>&l
74、t;p> CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1</p><p>
75、ACALL DELAY1</p><p> AJMP INT0SUB</p><p> DEC0: MOV A,R1</p><p> JZ SETR1;如果R1為0, R1就置99,</p><p><b> DEC R1</b></p><p> ACALL DELAY1<
76、/p><p> AJMP INT0SUB</p><p> SETR1: MOV R1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p> ;=====INT1(回答時(shí)間R2調(diào)
77、整程序)=====</p><p> INT1SUB:MOV A,R2</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B&
78、lt;/b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY</p><p> JNB P3.4,INC1</p><p> JNB P3.5,DEC1</p><p> JNB P3.1,BACK1</p><p> AJMP INT1
79、SUB</p><p> INC1: MOV A,R2</p><p> CJNE A,#63H,ADD1</p><p> MOV R2,#00H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> ADD1: INC
80、R2</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> DEC1: MOV A,R2</p><p><b> JZ SETR2</b></p><p><b> DEC R2</b></p>
81、<p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> SETR2: MOV R2,#63H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> BACK1: RETI </p>&
82、lt;p> ;=====倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=====</p><p> REPEAT:MOV A,R2 ;使用錦囊時(shí)重新計(jì)時(shí)</p><p><b> MOV R6,A</b></p><p><b> CLR RING </b></p><p>
83、 COUNT: MOV R0,#00H;重置定時(shí)器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H;重置定時(shí)器</p><p> RECOUNT:MOV A,R6;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6</p><p> MOV B,#0AH</p>
84、<p> DIV AB;除十分出個(gè)位/十位</p><p> MOV 30H,A;十位存于(30H)</p><p> MOV 31H,B;個(gè)位存于(31H)</p><p> MOV R5,30H;取十位</p><p> MOV R4,31H;取個(gè)位</p><p><b> MO
85、V A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER;大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p><b> MOV A,R0</b></p><p> CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行</p>&
86、lt;p><b> CLR RING </b></p><p> AJMP CHECK</p><p> FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p><b
87、> MOV A,R6</b></p><p> JZ QUIT;計(jì)時(shí)完畢</p><p> MOV R0,#00H</p><p> DEC R6;一秒標(biāo)志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p><p&g
88、t; CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查"停/顯示"</p><p> DEC R6;計(jì)時(shí)一秒R6自動(dòng)減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT;如按下停止鍵退出</p><p> JNB OK,CHECKK
89、;只在回答倒計(jì)時(shí)才有效</p><p> AJMP NEXTT</p><p> CHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊</p><p> NEXTT: ACALL DISPLAY</p><p> JB OK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)
90、</p><p> AJMP RECOUNT</p><p><b> ACCOUT:</b></p><p><b> MOV A,36H</b></p><p> JNB ACC.0,TRUE1</p><p> JNB ACC.1,TRUE2</p>
91、;<p> JNB ACC.2,TRUE3</p><p> JNB ACC.3,TRUE4</p><p> JNB ACC.4,TRUE5</p><p> JNB ACC.5,TRUE6</p><p> JNB ACC.6,TZ1</p><p> JNB ACC.7,TZ2</
92、p><p> AJMP RECOUNT</p><p> TZ1:JMP TRUE7</p><p> TZ2:JMP TRUE8 </p><p> QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b><
93、;/p><p> AJMP START</p><p> ;=====正常搶答處理程序=====</p><p> TRUE1: ACALL BARK</p><p><b> MOV A,R2</b></p><p> MOV R6,A;搶答時(shí)間R2送R6</p><p
94、> MOV R3,#01H</p><p> CLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答</p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b>
95、 MOV R6,A</b></p><p> MOV R3,#02H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK</p><p><b> MOV A,R2</b
96、></p><p><b> MOV R6,A</b></p><p> MOV R3,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE4:ACALL BARK</p>
97、<p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p
98、> TRUE5:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#05H</p><p><b> CLR OK</b></p><
99、;p> AJMP COUNT</p><p> TRUE6: ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#06H</p><p><b&
100、gt; CLR OK</b></p><p> AJMP COUNT</p><p> TRUE7:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV
101、 R3,#07H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE8:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A&
102、lt;/b></p><p> MOV R3,#08H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> ;=====犯規(guī)搶答程序=====</p><p> ERROR: MOV R0,#00H</p>&l
103、t;p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#06H,FLASH;0.3s向下運(yùn)行->滅并停響</p><p>
104、;<b> CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH;三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#0CH,CHECK
105、1;下面是0.8s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p><p> MOV R3,34H;取回號(hào)數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH;顯
106、示FF和號(hào)數(shù)</p><p> AJMP CHECK1</p><p> CHECK1: JNB P3.1,QUIT1</p><p> ACALL DISPLAY</p><p><b> AJMP HERE</b></p><p> QUIT1: CLR RING</p>
107、;<p><b> CLR OK</b></p><p> AJMP START</p><p> ;=====顯示程序=====</p><p> DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b>
108、MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p> MOV DPTR,#DAT2</p&g
109、t;<p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p>
110、<b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p><b> RE
111、T</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H </p><p> ;"滅","1","2","3","4","5","6","7
112、","8","9","滅","F"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H</p><p> ;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅</p><p> ;====加減時(shí)
113、間延時(shí)(起到不會(huì)按下就加N個(gè)數(shù))======</p><p> DELAY1: MOV 35H,#08H</p><p> LOOP0: ACALL DISPLAY</p><p> DJNZ 35H,LOOP0</p><p><b> RET</b></p><p> ;=====
114、延時(shí)4236個(gè)機(jī)器周期(去抖動(dòng)用到)=====</p><p> DELAY: MOV 32H,#12H</p><p> LOOP: MOV 33H,#0AFH</p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP</p><p><b>
115、; RET</b></p><p> ;=====延時(shí)4236個(gè)機(jī)器周期(顯示用到)=====</p><p> DELAY2: MOV 32H,#43H</p><p> LOOP3: MOV 33H,#1EH</p><p> MOV A,R7 ;每隔60~70個(gè)機(jī)器周期讀一次P1口,全為1
116、時(shí)為無效數(shù)據(jù),繼續(xù)讀,有一個(gè)不為1時(shí),轉(zhuǎn)到正常搶答處理</p><p> JNZ AAAA1 ;沒讀到有效數(shù)據(jù)時(shí)繼續(xù)轉(zhuǎn)到AAAA1</p><p> LOOP2: DJNZ 33H,LOOP2</p><p> DJNZ 32H,LOOP3</p><p><b> RET</b></p
117、><p> ;=====讀搶答按鍵數(shù)據(jù)口程序=====</p><p> ;由于在讀搶答數(shù)據(jù)口的時(shí)候,單片機(jī)首先進(jìn)入倒計(jì)時(shí)程序,再調(diào)用顯示程序,最后才檢測(cè)按鍵口</p><p> ;然而在檢測(cè)按鍵口時(shí)動(dòng)態(tài)掃描要調(diào)用三次(4ms)延時(shí)程序.這樣就會(huì)導(dǎo)致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號(hào)優(yōu)先最高.8號(hào)最低.</p><p> ;故采用在延時(shí)子程序中加
118、了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性</p><p> AAAA1: MOV A,P1</p><p> CJNE A,#0FFH,AA1 ;當(dāng)不全為1時(shí)的數(shù)據(jù)為有效數(shù)據(jù)</p><p> AA0: MOV 36H,A ;將有效數(shù)據(jù)送到36H暫存</p><p> AJMP LOOP2
119、</p><p> AA1: DEC R7 </p><p><b> AJMP AA0</b></p><p> ;=====發(fā)聲程序=====</p><p> BARK: SETB RING</p><p> ACALL DELAY1</p>
120、<p> ACALL DELAY1</p><p> CLR RING;按鍵發(fā)聲</p><p><b> RET</b></p><p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MO
121、V TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6;RING標(biāo)志位為1時(shí)候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音</p><p> OUT: RETI</p><p> ;=====T1溢出中斷(計(jì)時(shí)程序)=====</p><p> T1INT
122、: MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p><b> INC R0</b></p><p><b> RETI</b></p><p><b> END</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)智力競賽搶答器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--八路智力競賽搶答器
- 智力競賽搶答器課程設(shè)計(jì)
- 智力競賽搶答器畢業(yè)論文
- 課程設(shè)計(jì)---智力競賽搶答器
- 智力競賽搶答器課程設(shè)計(jì)
- 智力競賽搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---智力競賽搶答器
- 智力競賽搶答器課程設(shè)計(jì)報(bào)告
- 智力搶答器課程設(shè)計(jì)--智力競賽搶答裝置的設(shè)計(jì)
- 課程設(shè)計(jì)---智力競賽搶答器設(shè)計(jì)
- 智力搶答器單片機(jī)課程設(shè)計(jì)
- 智力搶答器單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--智力搶答器
- 聲光顯示智力競賽搶答器畢業(yè)設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)---智力競賽搶答器
- 模電課程設(shè)計(jì)---智力競賽搶答器
- 數(shù)電課程設(shè)計(jì)--智力競賽搶答器
- 智力競賽搶答器__數(shù)字邏輯課程設(shè)計(jì)
- 課程設(shè)計(jì)----8路智力競賽搶答器
評(píng)論
0/150
提交評(píng)論