2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  一 緒論</b></p><p>  《單片機(jī)原理及應(yīng)用技術(shù)》是一門技術(shù)性,應(yīng)用性、實踐性很強(qiáng)的學(xué)科。課程設(shè)計是學(xué)好本門課程的又一重要實踐性教學(xué)環(huán)節(jié),課程設(shè)計的目的和任務(wù)就是配合單片機(jī)的教學(xué)和平時實驗,以達(dá)到鞏固消化課程的內(nèi)容,進(jìn)一步加強(qiáng)綜合應(yīng)用能力及單片機(jī)應(yīng)用系統(tǒng)開發(fā)和設(shè)計能力的訓(xùn)練,啟發(fā)創(chuàng)新思維,使之具有獨立單片機(jī)產(chǎn)品和科研的基本技能,是以培養(yǎng)學(xué)生綜合運(yùn)

2、用所學(xué)知識的過程,是知識轉(zhuǎn)化為能力和能力轉(zhuǎn)化為工程素質(zhì)的重要階段。在實際生活中有好多地方都用到了單片機(jī),因此學(xué)習(xí)好這門課程有著十分重要的意義。</p><p>  隨著科學(xué)技術(shù)的不斷發(fā)展,促使人們學(xué)科學(xué)、學(xué)技術(shù)、學(xué)知識的手段多種多樣。搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。搶答器是為智力競賽參賽者答題時進(jìn)行搶答而設(shè)計的一種優(yōu)先判決器電路,廣泛應(yīng)用于各種知識競賽、文娛活動等場合。能夠?qū)崿F(xiàn)搶答器功能的

3、方式有多種,可以采用前期的模擬電路、數(shù)字電路或模擬與數(shù)字電路相結(jié)合的方式,但這種方式制作過程復(fù)雜,而且準(zhǔn)確性與可靠性不高,成品面積大,安裝、維護(hù)困難。本節(jié)介紹一種利用51單片機(jī)作為核心部件進(jìn)行邏輯控制及信號產(chǎn)生的八路搶答器。近年來,隨著單片機(jī)檔次的不斷提高,功能的不斷完善,其應(yīng)用日趨成熟、應(yīng)用領(lǐng)域日趨擴(kuò)大,特別是工業(yè)測控、尖端武器和日用家電等領(lǐng)域更是因為有了單片機(jī)而生輝增色。單片機(jī)應(yīng)用技術(shù)已成為一項新的工程應(yīng)用技術(shù)。本次課程設(shè)計我們做的

4、是八路搶答器,我們采用AT89C51單片機(jī)實現(xiàn)搶答功能,性能更穩(wěn)定,更易操作調(diào)試。</p><p>  目前大多數(shù)搶答器均使用單片機(jī)及外圍接口實現(xiàn),基于單片機(jī)的智力競賽搶答器系統(tǒng)框圖如下圖所示。</p><p><b>  1.2設(shè)計目的</b></p><p>  通過設(shè)計學(xué)習(xí)單片機(jī)最小系統(tǒng)的基本設(shè)計方法,掌握單片機(jī)應(yīng)用系統(tǒng)的開發(fā)調(diào)試過程。&

5、lt;/p><p> ?。?)學(xué)習(xí)單片機(jī)開發(fā)工具功能、特點和使用方法。</p><p>  (2)學(xué)會單片機(jī)控制系統(tǒng)程序的編制和編制和調(diào)試方法。</p><p>  (3)設(shè)計單片機(jī)搶答器硬件電路,繪制出電路原理圖。</p><p> ?。?)編制并調(diào)試出鍵盤掃描程序和顯示驅(qū)動程序。</p><p>  (5)掌握單片機(jī)定

6、時器的基本用法,編制出定時器的中斷程序。</p><p>  二 設(shè)計任務(wù)和要求</p><p><b>  2.1基本要求</b></p><p>  智力競賽搶答器的設(shè)計</p><p>  設(shè)計一個供8 名選手參加比賽的智力競賽搶答器,要求:</p><p>  (1)每名選手有一個搶答

7、按鈕,按鈕的編號與選手的編號相對應(yīng);</p><p> ?。?)搶答器具有第一個搶答信號的鑒別和數(shù)據(jù)鎖存、顯示的功能。搶答開始后,若有選手按搶答按鈕,則該選手指示燈亮,并在數(shù)碼管上顯示相應(yīng)編號,揚(yáng)聲器發(fā)出音響提示。同時,電路應(yīng)具備自鎖功能,禁止其他選手再搶答,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清0 為止;</p><p>  (3)搶答器具有計分、顯示功能。預(yù)置分?jǐn)?shù)可由主持人設(shè)定,并

8、顯示在每名選手的計</p><p>  分牌上,選手答對加10 分,答錯扣10 分;</p><p> ?。?)搶答器具有定時搶答的功能。一次搶答的時間由主持人設(shè)定,在主持人發(fā)出搶答</p><p>  指令后,定時器立即進(jìn)行減計時,并在顯示器上顯示,同時揚(yáng)聲器發(fā)出短暫聲響,</p><p>  聲響時間持續(xù)0.5s 左右;</p>

9、;<p> ?。?)選手在設(shè)定的時間內(nèi)進(jìn)行搶答,搶答有效,定時器停止工作,顯示器顯示選手編</p><p>  號和搶答時刻的時間,并保持到主持人將系統(tǒng)清0 為止;</p><p> ?。?)如果定時搶答的時間已到,卻沒有選手搶答時,本次搶答無效,系統(tǒng)進(jìn)行短暫的</p><p>  報警,并禁止選手超時后搶答,定時顯示器上顯示00;</p>

10、<p>  (7)搶答器具有犯規(guī)提示功能。對提前搶答和超時搶答的選手,揚(yáng)聲器發(fā)出報警信號,</p><p>  并在顯示器上顯示其編號。</p><p><b>  三 設(shè)計方案</b></p><p><b>  3.1方案論證</b></p><p>  智力競賽搶答器用單片機(jī)

11、來設(shè)計制作完成,由于其功能的實現(xiàn)主要通過軟件編程來完成, 采用單片機(jī)AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。該智力競賽搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。</p><p>  3.2硬件設(shè)計方案 </p><p>  設(shè)計根據(jù)課程設(shè)計要求可以大概構(gòu)思出硬件電路圖:發(fā)光二極管與單片機(jī)的 P

12、1.0——P1.7 口相連接;P3.2 口與蜂鳴器相連接;</p><p>  用以 AT89C51 為核心的單片機(jī)控制方案,通過相應(yīng)的程序,并通過按鍵來進(jìn)行電平 識別,再由單片機(jī)輸出相應(yīng)的程序,并將相應(yīng)數(shù)值通過數(shù)碼來顯示。用單片機(jī)來制作的 搶答器,硬件電路主要是用8279鍵盤顯示接口電路,極大地減輕了單片機(jī)的負(fù)荷。</p><p>  3.3 軟件設(shè)計方案</p><

13、p>  1)鍵盤掃描及鎖存功能的實現(xiàn) </p><p>  方案一: 利用外部中斷法,將鍵盤接至外部中斷P3.2或P3.1,當(dāng)有鍵盤按下后,進(jìn)入中斷程序,用軟件編寫進(jìn)行相關(guān)操作來控制各個按鍵怎樣按下。對于這種方法,當(dāng)要鎖存電路時,在中斷程序中關(guān)中斷即可實現(xiàn)鎖存功能。 </p><p>  方案二:采用讀鍵值函數(shù)掃描法,建一個讀鍵值函數(shù),每當(dāng)要查詢鍵盤時調(diào)用此函數(shù),讀取一次鍵值,由于

14、程序是循環(huán)執(zhí)行的,這樣即使本次調(diào)用此函數(shù)沒有讀取到鍵值,但循環(huán)執(zhí)行,調(diào)用讀鍵值函數(shù)很快,相當(dāng)于在掃描鍵盤。對于此種方案,當(dāng)讀取以為選手鍵值后,設(shè)定一個標(biāo)志值,使在下次循環(huán)程序執(zhí)行到此處時,先查詢此標(biāo)志是否已被設(shè)置,一旦設(shè)置,則跳過此段讀取鍵值函數(shù),直接進(jìn)行下一步處理。實現(xiàn)了鎖存電路的功能。</p><p>  顯然,方案一雖然看上去思路明了,但由于根據(jù)按下鍵值不同,相應(yīng)處理不一樣,所以中斷執(zhí)行程序會很復(fù)雜,甚是麻

15、煩。而方案二只需要根據(jù)讀鍵值函數(shù)返回值不同,直接在主程序中用選擇語句來分路執(zhí)行即可,因此選擇方案二。</p><p><b>  定時功能的實現(xiàn)</b></p><p>  采用定時器T0中斷實現(xiàn)定時功能,設(shè)初值為50毫秒。循環(huán)20次就減一秒,知道秒數(shù)為零后執(zhí)行相應(yīng)報警操作。</p><p><b>  數(shù)碼管的顯示 </b&g

16、t;</p><p>  方案一:采用靜態(tài)顯示,是指當(dāng)數(shù)碼管顯示某一字符時,七段數(shù)碼管的對應(yīng)段的發(fā) 光二極管被選中,在這種顯示方式下,每段 LED 都對應(yīng)一個單片機(jī)口線。 </p><p>  方案二:采用動態(tài)顯示,對于多位數(shù)碼管顯示時,每一位數(shù)碼管輪流顯示,當(dāng)顯示間隔時間較短時人眼就分辨不出是動態(tài)顯示,而是每一位都是一直都在顯示。 </p><p>  比較二者,

17、靜態(tài)顯示主要的優(yōu)點是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下 顯示器的亮度大,系統(tǒng)運(yùn)行過程中,在需要更新顯示內(nèi)容時,CPU 才去執(zhí)行顯示更新子 程序,這樣既節(jié)約了 CPU 的時間,又提高了 CPU 的工作效率。其不足之處是在需要用于 顯示的數(shù)碼管較多時占用硬件資源較多,每個 LED 數(shù)碼管需要獨占 8 條輸出線。隨著顯示器位數(shù)的增加,需要的 I/O 口線也將增加。動態(tài)顯示器的優(yōu)點是節(jié)省硬件資源,成本 較低,但是要保證顯示器正常顯示,C

18、PU 必需每隔一段時間執(zhí)行一次顯示子程序,占用 CPU 大量時間,降低了 CPU 的工作效率,同時顯示亮度較靜態(tài)顯示器低。 通過以上分析,結(jié)合本課題只提供八位數(shù)碼管,所以采用方案二。</p><p>  4)搶答信號指示燈 </p><p>  對于這八位 LED 燈的閃爍可以通過軟件程序的編寫, 當(dāng)P1管腳送出電平高低控制其滅亮。</p><p><b>

19、;  3.2設(shè)計原理</b></p><p>  搶答器的工作原理是采用單片機(jī)最小系統(tǒng),用程序查詢方式采用動態(tài)顯示組號。主持人按下開始搶答鍵才可以搶答。主持人沒有按下開始搶答按紐,有人搶答則搶答違規(guī),報警并顯示組號,主持人按下開始搶答開關(guān)重新?lián)尨?。主持人按下開始搶答按紐后,數(shù)碼管30秒倒計時搶答,30秒內(nèi)有人搶答,則蜂鳴器響聲提示并顯示他的組號,并且 開始60秒倒計時(60秒內(nèi)必須回答完問題),最后五

20、秒倒計時警報。單片機(jī)最小系統(tǒng)、搶答按鍵模塊(四位并行數(shù)碼顯示)、顯示模塊、顯示驅(qū)動模塊、搶答開關(guān)模塊、蜂鳴器音頻輸出模塊。</p><p>  四硬件系統(tǒng)說明與電路原理圖</p><p>  4.1控制系統(tǒng)及所需元件 </p><p>  控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲器接口電路、鍵盤顯示接口電路組成。其中單片機(jī)AT89C51和8279是系統(tǒng)工作的核心,它們主要

21、負(fù)責(zé)控制各個部分協(xié)調(diào)工作和電路的主要功能。</p><p>  1.AT89C51單片機(jī)由微處理器,存儲器,I/O口以及特殊功能寄存器SFR等部分構(gòu)成。其存儲器在物理上設(shè)計成程序存儲器和數(shù)據(jù)存儲器兩個獨立的空間,片內(nèi)程序存儲器的容量為4KB,片內(nèi)數(shù)據(jù)存儲器為128個字節(jié)。89C51單片機(jī)有4個8位的并行I/O口:P0口,P1口,P2口和P3口。各個接口均由接口鎖存器,輸出驅(qū)動器,和輸入緩沖器組成。P1口是唯一的單

22、功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序存儲器和數(shù)據(jù)存儲器擴(kuò)展時,P0可作為分時復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時為閃爍編程和編程校驗接收一些控制信號。</p><p>  本次實驗中P1.0-P1.

23、7同于控制八位選手對應(yīng)的指示燈亮或滅。P3.2用蜂鳴器的控制口 。 </p><p>  2. 8279可按其功能分為:鍵盤功能塊、顯示功能塊、控制功能塊;</p><p>  與CPU接口功能塊控制功能塊包括控制和定時寄存器,定時和控制,掃描計數(shù)器三部分,它主要用來控制鍵盤和顯示功能塊工作.   </p><p>  控制和定時寄存器:用于存貯來

24、自CPU的編程命令,CPU對8279編程以確定鍵盤與顯示器工作方式和其它工作條件時,先把命令控制數(shù)據(jù)放到數(shù)據(jù)總線上,然后使A0=1,WR=0CS=0,并在WR 上升沿把命令鍵存在控制和定時寄存器中,并經(jīng)譯碼,建立適當(dāng)?shù)墓δ?</p><p>  定時和控制:它含基本的定時計數(shù)器,第一個計數(shù)器是一個分頻系數(shù)為2-31的前置定時器, 分頻系數(shù)可由程序預(yù)置,使內(nèi)部頻率為100KHz,從而能給出5.1ms鍵盤掃描時間和1

25、0.3ms反跳時間,其它計數(shù)器將此基本頻率分頻后,提供適當(dāng)?shù)陌存I掃描.行掃描.</p><p>  鍵盤陣列掃描.以及顯示器掃描次數(shù).掃描計數(shù)器:掃描計數(shù)器有兩種工作方式,在編碼工作方式時,計數(shù)器提供一種二進(jìn)制計數(shù), 通過管腳SL0-SL3輸出后經(jīng)外部譯碼才能提供給鍵盤和顯示器的掃描作用,在譯碼工作方式時,掃描計數(shù)器對最低二位進(jìn)行譯碼,SL0-SL3輸出4選1的譯碼信號,作為顯示器和鍵盤的譯碼掃描.</p&

26、gt;<p>  鍵盤功能塊包括:返回緩沖器,鍵盤反跳及控制,8x8 FIFO傳感器RAM,FIFO/傳感器RAM狀態(tài). </p><p><b>  蜂鳴器</b></p><p>  當(dāng)至P3.2低電平有效。</p><p>  8279鍵盤及顯示電路</p><p><b>  發(fā)光二極管電

27、路</b></p><p>  晶振的頻率為12MHZ,提供89C51的時鐘脈沖使89C51工作,在此次課程設(shè)計電路中當(dāng)一個問題結(jié)束主持人后按下復(fù)位開關(guān)后進(jìn)行下一題的準(zhǔn)備。</p><p><b>  6.系統(tǒng)電路原理圖</b></p><p><b>  五 軟件系統(tǒng)設(shè)計</b></p>&l

28、t;p>  智力競賽搶答器要求有計時記憶功能,一次時間設(shè)置完, 復(fù)位后不需重新進(jìn)行時間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機(jī)將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼.</p><p>  當(dāng)搶答完畢時,會在數(shù)碼管上顯示搶答者數(shù)字號碼提示以表示搶答成功.同時顯示其分?jǐn)?shù),分?jǐn)?shù)的加減可由裁判手動進(jìn)行. 采用2*8式鍵盤,可實現(xiàn)8路搶答. 在顯示時使用的是七段數(shù)碼管顯示在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法.

29、 并通過查表法 將其在數(shù)碼管上顯示出來,硬件去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到開始。采用倒計時程序,使其具有倒計時功能?;卮鸬褂嫊r90秒。搶答時間30秒。采用發(fā)聲警報起到報警作用。</p><p>  1、如果想調(diào)節(jié)選手分?jǐn)?shù),則按"A(加分)"鍵或"B(減分)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時會顯示當(dāng)前選手的分?jǐn)?shù)值,同時LED上同步顯示剩余的時間。<

30、;/p><p>  2.主持人按"搶答開始"鍵,會有提示音,并立刻進(jìn)入搶答倒計時(預(yù)設(shè)30s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)與分?jǐn)?shù)并立刻進(jìn)入回答倒計時(預(yù)設(shè)90s搶答時間),此時封鎖其他選手按鍵,即不進(jìn)行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于10s會每秒響一下提示音。</p><p>  3.如倒計時期間,主持人想停止倒計時可以隨時按&

31、quot;F(復(fù)位)"鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進(jìn)入下次搶答計時。 </p><p>  4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上顯示犯規(guī)選手編號,對應(yīng)犯規(guī)選手面前的燈會亮,直到按下"停止" 鍵為止。</p><p>  5、p1.0-p1.7為八路搶答者的顯示燈

32、,蜂鳴器輸出為P3.2口。</p><p><b>  5.1 系統(tǒng)流程圖</b></p><p>  搶答成功流程圖 中斷服務(wù)流程圖</p><p><b>  5.2程序代碼</b></p><p>  #include<reg51.h></p>

33、<p>  #include<absacc.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define D8279

34、 XBYTE[0x5EFF] //8279 數(shù)據(jù)口地址</p><p>  #define C8279 XBYTE[0x5FFF] //8279 狀態(tài)/命令口地址</p><p>  sbit beep=P3^2; //蜂鳴器</p><p>  sbit l1=P1^0;//8個發(fā)光二極管</p><p>  sbit l

35、2=P1^1;</p><p>  sbit l3=P1^2;</p><p>  sbit l4=P1^3;</p><p>  sbit l5=P1^4;</p><p>  sbit l6=P1^5;</p><p>  sbit l7=P1^6;</p><p>  sbit l8=P1

36、^7;</p><p>  uchar code ledseg[] = {0xc0,0xf9,0xa4,0xb0,0x99,</p><p>  0x92,0x82,0xf8,0x80,0x90,</p><p>  0x88,0x83,0xc6,0xa1,0x86,</p><p>  0x8e,0x8c,0xc1,0x89,0xc7,&

37、lt;/p><p>  0xbf,0x91,0x00,0xff};//LED顯示常數(shù)表</p><p>  uchar xuanshou,second,count;//</p><p>  uchar score1,score2,score3,score4,score5,score6,score7,score8,score,xianshi;//選手1~8的分?jǐn)?shù)</

38、p><p>  uint t,m,n,a1,a2,a3,a4,a5,a6,a7,a8,i;</p><p>  uchar idata huanchong[5]={0,0,0,0,0};//顯示緩沖shijian,fenshu,xuanshou</p><p>  bit bdata kbz; ///anjiabniaoszhii</p><p&g

39、t;  void delay(uint z);</p><p>  void Timer();</p><p>  void disled(void);</p><p>  void dis();</p><p>  void init();</p><p>  uchar getkey();</p>&

40、lt;p>  void delay(uint z) //延時函數(shù)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  {for(y=110;y>0;y--);}

41、</p><p><b>  }</b></p><p>  uchar getkey() //讀鍵值函數(shù)</p><p><b>  {</b></p><p>  uchar key;</p><p>  if((C8279&0x07)==0x00)</p

42、><p>  {kbz=0;} //無鍵按下,置標(biāo)志</p><p><b>  else</b></p><p><b>  { kbz=1;</b></p><p>  C8279=0x40; //讀FIFO RAM命令</p><p>  key=D8279

43、;</p><p>  key=(key&0x0f); //取鍵盤數(shù)據(jù)4?位</p><p>  return(key);</p><p><b>  } </b></p><p><b>  }</b></p><p>  void tim(void) int

44、errupt 1 using 1 //為定時中斷TR0</p><p><b>  {</b></p><p>  TH0=0x3c; //重新賦值</p><p><b>  TL0=0xb0;</b></p><p><b>  count++;</b></p&g

45、t;<p>  if(count==20) //20*50ms=1秒</p><p><b>  {</b></p><p><b>  count=0;</b></p><p>  second--; //秒減1</p><p>  if(second<=10&&

46、;m==1){beep=1;delay(500);beep=0;}</p><p><b>  }</b></p><p>  if(getkey()==0x0f){TR0=0;xuanshou=0;t=0;beep=1;score=0;second=29;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=

47、1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;m=1;n=1;}</p><p><b>  }</b></p><p>  void disled(void) //將緩沖區(qū)值顯示出來 </p><p>  { C8279=0x92;</p&

48、gt;<p>  for(i=0;i<5;i++)</p><p>  { xianshi=huanchong[i];</p><p>  D8279=ledseg[xianshi];}</p><p><b>  }</b></p><p>  //-----顯示處理-----</p>

49、<p>  void dis()</p><p>  { huanchong[4]=xuanshou;//shijian gewei</p><p>  huanchong[3]=score/10;//shijian shiwei</p><p>  huanchong[2]=score%10;//fenshi gewei</p><

50、;p>  huanchong[1]=second/10;//fenshu shiwei</p><p>  huanchong[0]=second%10;//xuanshouhao</p><p><b>  disled();</b></p><p><b>  }</b></p><p>

51、  void init() //初始化函數(shù)</p><p><b>  { t=0;</b></p><p><b>  beep=1;</b></p><p>  xuanshou=0;</p><p><b>  score=0;</b></p>&l

52、t;p>  second=29;</p><p>  score1=10;score2=10;score3=10;score4=10;score5=10;score6=10;score7=10;score8=10;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3

53、=1;l4=1;l5=1;l6=1;l7=1;l8=1;</p><p><b>  n=1;m=1;</b></p><p>  C8279=0xDC; //清除 LED 顯示</p><p><b>  delay(1);</b></p><p>  TMOD|=0x01;</p&

54、gt;<p>  TH0=0x3c; //初值55536,計數(shù)10000次,每次1US,總計10ms</p><p><b>  TL0=0xb0;</b></p><p>  IE=0x82; //這里是中斷優(yōu)先級控制EA=1(開總中斷),ET0=1(定時器0允許中斷),這里用定時器0來定時</p><p>  C8279=

55、0x02; //置8279工作方式////youduaua//shuru</p><p>  C8279=0x34; //置鍵盤掃描速率 </p><p><b>  PX1=1;</b></p><p><b>  PT0=1;</b></p><p><b>  

56、ET1=1;</b></p><p>  xianshi=0;</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  init();//初始化,</p><

57、;p><b>  while(1)</b></p><p>  { if(getkey()==0x0f)//查詢是否有犯規(guī)按鍵</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(200);beep=1;score=0;second=29;m=1;n=1; </p><p>  a1=1;a2=1

58、;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();</p><p>  } </p><p>  if(getkey()==0x01&&n==1) {xuanshou=1;sco

59、re=score1;dis();l1=0;beep=0;}</p><p>  else if(getkey()==0x02&&n==1) {xuanshou=2;score=score2;dis();l2=0;beep=0;}</p><p>  else if(getkey()==0x03&&n==1) {xuanshou=3;score=score

60、3;dis();l3=0;beep=0;}</p><p>  else if(getkey()==0x04&&n==1) {xuanshou=4;score=score4;dis();l4=0;beep=0;}</p><p>  else if(getkey()==0x05&&n==1) {xuanshou=5;score=score5;dis();

61、l5=0;beep=0;}</p><p>  else if(getkey()==0x06&&n==1) {xuanshou=6;score=score6;dis();l6=0;beep=0;}</p><p>  else if(getkey()==0x07&&n==1) {xuanshou=7;score=score7;dis();l7=0;bee

62、p=0;}</p><p>  else if(getkey()==0x08&&n==1) {xuanshou=8;score=score8;dis();l8=0;beep=0;}</p><p>  else if(getkey()==0x0e) {beep=0;delay(200);beep=1;TR0=1; m=0;n=0;}//若有開始鍵,則初始化&

63、lt;/p><p><b>  if(n==0)</b></p><p><b>  { </b></p><p>  if(m==0)dis();</p><p>  if(second==0) { t=0;</p><p>  beep=1;delay(500);beep

64、=0;//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1</p><p><b>  dis();</b></p><p>  if(getkey()==0x0f){TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;//

65、是否有復(fù)位鍵</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();}</p><p><b>  }</b></p><p>  if(m==0)//m等于零即

66、處于搶答狀態(tài),查詢選手鍵</p><p><b>  {</b></p><p>  if(getkey()==0x01) t=1;</p><p>  else if(getkey()==0x02) t=2;</p><p>  else if(getkey()==0x03) t=3;</p>

67、<p>  else if(getkey()==0x04) t=4;</p><p>  else if(getkey()==0x05) t=5;</p><p>  else if(getkey()==0x06) t=6;</p><p>  else if(getkey()==0x07) t=7;</p><p>  else

68、if(getkey()==0x08) t=8;</p><p>  else if(getkey()==0x0f){TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><

69、;p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();} </p><p><b>  }</b></p><p><b>  while(t)</b></p><p>  { if(getkey()==0x0f){xuanshou=0;TR0=0;i=0;t=0;be

70、ep=0;delay(200);beep=1;score=0;second=29;m=1;n=1;//</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); }</p><p>  if(m==0) //開

71、關(guān),保證程序只執(zhí)行一次</p><p><b>  {</b></p><p><b>  switch(t)</b></p><p><b>  {</b></p><p>  case 1:{TR0=0;xuanshou=1;second=0;beep=0;delay(50

72、0);beep=1;</p><p>  a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l1=0;second=89;TR0=1;break;}//跳出循環(huán)}</p><p>  case 2:{TR0=0;xuanshou=2;second=0;beep=0;delay(500);beep=1;</p><p>  a2

73、=0;a1=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l2=0;second=89;TR0=1;break;}</p><p>  case 3:{TR0=0;xuanshou=3;second=0;beep=0;delay(500);beep=1;</p><p>  a3=0;a1=1;a2=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l

74、3=0;second=89;TR0=1;break;}</p><p>  case 4:{TR0=0;xuanshou=4;second=0;beep=0;delay(500);beep=1;</p><p>  a4=0;a1=1;a2=1;a3=1;a5=1;a6=1;a7=1;a8=1;m=1;l4=0;second=89;TR0=1;break;}</p><

75、;p>  case 5:{TR0=0;xuanshou=5;second=0;beep=0;delay(500);beep=1;</p><p>  a5=0;a1=1;a2=1;a3=1;a4=1;a6=1;a7=1;a8=1;m=1;l5=0;second=89;TR0=1;break;}</p><p>  case 6:{TR0=0;xuanshou=6;second=0;

76、beep=0;delay(500);beep=1;</p><p>  a6=0;a1=1;a2=1;a3=1;a4=1;a5=1;a7=1;a8=1;m=1;l6=0;second=89;TR0=1;break;}</p><p>  case 7:{TR0=0;xuanshou=7;second=0;beep=0;delay(500);beep=1;</p><p&

77、gt;  a7=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a8=1;m=1;l7=0;second=89;TR0=1;break;}</p><p>  case 8:{TR0=0;xuanshou=8;second=0;beep=0;delay(500);beep=1;</p><p>  a8=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7

78、=1;m=1;l8=0;second=89;TR0=1;break;}</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(a1==0) //選手1的分?jǐn)?shù)</p><p><b>  { dis();</b></p

79、><p>  if(second==0){//定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f){TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>

80、;  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();</p><p><b>  } </b></p><p><b>  }</b></p><p>

81、  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score1+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score1-=1;}</p><p>  score=score1;</p><p><b>  dis(); <

82、;/b></p><p><b>  }</b></p><p>  else if(a2==0)</p><p><b>  { dis();</b></p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中

83、斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f)//若此時再按下開始鍵,響鈴提示,定時30s,</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1

84、;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();</p><p><b>  } </b></p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=

85、0;delay(100);beep=1;score2+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score2-=1;}</p><p>  score=score2;</p><p>  dis(); </p><p><b&g

86、t;  }</b></p><p>  else if(a3==0)</p><p><b>  { dis();</b></p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p> 

87、 if(getkey()==0x0f)//若此時再按下開始鍵,響鈴提示,定時30s,</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p&g

88、t;  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();</p><p><b>  } </b></p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score3+=1;}<

89、/p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score3-=1;}</p><p>  score=score3;</p><p>  dis(); </p><p><b>  } </b></p><p&g

90、t;  else if(a4==0)</p><p><b>  { dis();</b></p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f)//若此時再按下開始鍵,響鈴提

91、示,定時30s,</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;

92、l7=1;l8=1;dis();} </p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score4+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score4-

93、=1;}</p><p>  score=score4;</p><p>  dis(); </p><p><b>  }</b></p><p>  else if(a5==0)</p><p><b>  { dis();</b></p>

94、;<p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f)//若此時再按下開始鍵,響鈴提示,定時30s,</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1

95、;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();} </p><p><b>  }</b></p><

96、p>  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score5+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score5-=1;}</p><p>  score=score5;</p><p>  dis();

97、 </p><p><b>  }</b></p><p>  else if(a6==0)</p><p><b>  { dis();</b></p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并

98、使n等于1,禁止搶答</p><p>  if(getkey()==0x0f)//若此時再按下開始鍵,響鈴提示,定時30s,</p><p>  {TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6

99、=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();} </p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score6+=1;}</p>&l

100、t;p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score6-=1;}</p><p>  score=score6;</p><p>  dis(); </p><p><b>  }</b></p><p>  else if

101、(a7==0)</p><p><b>  { dis();</b></p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f)</p><p>  {xu

102、anshou=0;TR0=0;i=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();</p>&l

103、t;p><b>  }</b></p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=0;delay(100);beep=1;score7+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);bee

104、p=1;score7-=1;}</p><p>  score=score7;</p><p>  dis(); </p><p><b>  } </b></p><p>  else if(a8==0)</p><p><b>  { dis();</b&

105、gt;</p><p>  if(second==0) {//30秒定時到</p><p>  TR0=0;n=1;//關(guān)中斷,并使n等于1,禁止搶答</p><p>  if(getkey()==0x0f){TR0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1;</p&

106、gt;<p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis();}</p><p><b>  }</b></p><p>  if(getkey()==0x0a) {beep=0;d

107、elay(100);beep=1;score8+=1;}</p><p>  else if(getkey()==0x0b) {beep=0;delay(100);beep=1;score8-=1;}</p><p>  score=score8;</p><p>  dis(); </p><p><b> 

108、 }</b></p><p>  if(getkey()==0x0f){xuanshou=0;TR0=0;i=0;t=0;beep=0;delay(200);beep=1;score=0;second=29;m=1;n=1;//</p><p>  a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;</p><p>  l

109、1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); }</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

110、></p><p><b>  六 課程設(shè)計總結(jié)</b></p><p>  單片機(jī)課程設(shè)計是一門很實用,很難的設(shè)計。這個設(shè)計用到了單片機(jī),電路等方面的知識,通過這次課程設(shè)計,使我對單片機(jī)及其附屬電路有了一定的了解,對課本上的知識有了近一步的掌握,也深刻明白了自己的不足。</p><p>  完成本次課程設(shè)計的過程,是一個從無到有的過程

111、,經(jīng)歷了興奮、自信、失落、奮發(fā)、所悟、完成幾個過程。剛做做課程設(shè)計時,仔細(xì)閱讀設(shè)計的題目和要求,以為沒什么困難的,所用的知識書上都有。可是當(dāng)我動手開始做的時候,才發(fā)現(xiàn)其中的算法,設(shè)計是那么繁瑣。經(jīng)過一天的努力,毫無結(jié)果。失落的心情油然而生。于是,再到網(wǎng)上查找資料,在經(jīng)過借鑒很多類似的資料,文獻(xiàn)后,總算是有點眉目了。埋頭苦干的過程是痛苦的,尤其是在思考算法和程序框架時,迷茫,煩躁,特別是當(dāng)苦思出來一個結(jié)果,又被自己推翻,心痛的無法言繪。在

112、痛苦中掙扎,建立,推翻,參考別人的思路,建立,再次在推翻,在這不斷循環(huán)中,終于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知領(lǐng)域”的困難。但當(dāng)課程設(shè)計完成時,那感覺是甜蜜的,沒有耕耘,哪來得收獲的喜悅,不懂付出怎么能知道回報的快樂,一分耕耘一分收獲,有付出才會有回報,就在這樣的痛與快樂的交換中,我學(xué)到了知識, 學(xué)到了做人的道理。</p><p>  同時我也感覺到自己從課本上學(xué)到的理論知識和實踐仍有

113、很大的差距。最少很多元器件根本不知道有什么功效,在仿真儀器中是什么代碼。所以在此期間學(xué)會了怎么看書怎么看有用的信息。有的知識,自己感覺已經(jīng)掌握得差不多了,但是實際操作起來就有問題出現(xiàn)了。我遇到了不少問題,花費了很多的時間。這讓我重新反思我們的學(xué)習(xí),深刻領(lǐng)悟到我們這個專業(yè)動手,實踐的重要性。理論不經(jīng)過實踐考驗,是沒法實施的,就像我們編的程序,很多方面考慮的都不夠,幾乎沒有涉及到實際應(yīng)用時的防范方法措施。</p><p&

114、gt;  這次的課程設(shè)計,對我來說最大的收獲是:對設(shè)計大程序時,思路一定要很清新,特別是這種循環(huán)掃描程序,一定要搞清楚本次循環(huán)掃描到某個鍵值后要設(shè)置一定的標(biāo)志,防止下次循環(huán)時重復(fù)掃描鍵盤,同時對8279鍵盤,顯示器,有了一定了解,同時讓我學(xué)會了怎樣在keil軟件中怎么使用C語言。</p><p><b>  七 參考文獻(xiàn)</b></p><p>  王瓊 單片機(jī)原

115、理及應(yīng)用 合肥工業(yè)大學(xué)出版社 08年4月</p><p>  王瓊 單片機(jī)原理及應(yīng)用實驗教程 合肥工業(yè)大學(xué)出版社 05年1月</p><p>  陳濤 單片機(jī)及C51程序設(shè)計 機(jī)械工業(yè)出版社 2011年</p><p>  肖看,李群芳 單片機(jī)原理、接口及應(yīng)用:嵌入式系統(tǒng)技術(shù)基礎(chǔ) </p><p>  清華大學(xué)出版社

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論