八路多功能智力競(jìng)賽搶答器_第1頁(yè)
八路多功能智力競(jìng)賽搶答器_第2頁(yè)
八路多功能智力競(jìng)賽搶答器_第3頁(yè)
八路多功能智力競(jìng)賽搶答器_第4頁(yè)
八路多功能智力競(jìng)賽搶答器_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、八路多功能智力競(jìng)賽搶答器 摘要:摘要:現(xiàn)在開展的競(jìng)賽搶答活動(dòng)越來(lái)越多,而多數(shù)比賽中都采用搶答器進(jìn)行, 本設(shè)計(jì)正是以單片機(jī)AT89C51為核心,來(lái)實(shí)現(xiàn)八路搶答和時(shí)鐘顯示功能的。搶 答器在程序控制下完成以下功能:搶答有效高頻鈴聲并顯示組別,進(jìn)入倒計(jì)時(shí) 狀態(tài),搶答無(wú)效報(bào)警并閃爍顯示組別,同時(shí)具有計(jì)分功能,答對(duì)加分,答錯(cuò)減 分。 關(guān)鍵詞:搶答 單片機(jī) 倒計(jì)時(shí) 記分 Multi-purpose Intellective Selector for Competition of Eight Groups Abstract:More and more vie to answer first actives a

2、re developed. In most of the competitions vie for answer machine will be used. The design uses the single chip to realize the function of multi-purpose intellective selector and the clocks display. The selector has those functions: if the player vies to answer first successfully, there will be high

3、frequency and display the size of the group. At the same time, it will come into the estate of count down. However, if the player vies to answer first unsuccessfully, it will be given an alarm and display the size of the group sparklingly. Simultaneity, this vie for answer machine have the function

4、of registering the point, if the groups answer is right, this group will be awarded marks. Contrarily, he will be reduced marks. Keywords: Vie for Answer Signal Chip Microcomputer Count Down Recording Score 目目 錄錄 1 1 緒論緒論.3 3 1.1 課題的意義 .3 1.2 搶答器研究的現(xiàn)狀 .3 1.3 搶答器的功能要求 .4 1.4 搶答器總體介紹 .4 2 2 核心元件核心元件 A

5、T89C51AT89C51 介紹介紹.6 6 2.1 AT89C51 芯片主要性能參數(shù).6 2.2 功能特性概述 .6 3 3 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì).7 7 3.1 總體原理圖 .7 3.2 AT89C51 工作外圍電路.8 3.2.1 供電電源 .8 3.2.2 時(shí)鐘頻率 .8 3.2.3 復(fù)位 .9 4 4 基本原理及關(guān)鍵技術(shù)基本原理及關(guān)鍵技術(shù).9 9 4.1 基本原理 .9 4.2 電路設(shè)計(jì)總體框圖 .10 4.3 關(guān)鍵技術(shù) .11 4.3.1 鍵盤掃描 .11 4.3.2 顯示 .12 4.3.3 發(fā)聲 .13 5 5 程序設(shè)計(jì)程序設(shè)計(jì).1515 5.1 程序介紹 .15 5.2

6、主要程序分析 .15 5.2.1 程序總體設(shè)計(jì)框圖 .15 5.2.2 搶答時(shí)間調(diào)整與查分模塊 .16 5.2.3 答題時(shí)間調(diào)整與預(yù)加減分設(shè)置模塊 .17 5.2.4 倒計(jì)時(shí)程序與加減分?jǐn)?shù)模塊 .18 6 6 設(shè)計(jì)總結(jié)設(shè)計(jì)總結(jié).2020 6.1 設(shè)計(jì)過(guò)程出現(xiàn)問(wèn)題及解決 .20 6.2 系統(tǒng)存在不足 .20 6.3 設(shè)計(jì)心得 .20 致致 謝謝.2222 參考文獻(xiàn)參考文獻(xiàn).2323 附錄附錄 1 1 主要元器件引腳功能主要元器件引腳功能 .2424 附錄附錄 2 2 元件列表元件列表 .2626 附錄附錄 3 3 程序代碼程序代碼 .2727 1 緒論 1.1 課題的意義 隨著我國(guó)經(jīng)濟(jì)和文化事業(yè)

7、的發(fā)展,現(xiàn)在人們消遣休閑時(shí)間的方式也越來(lái)越 多,如參加各種業(yè)余活動(dòng)、社團(tuán)等等,其中參加各種知識(shí)競(jìng)賽也是一種很好的 消遣方式,既娛樂(lè)了自己又對(duì)各種知識(shí)有了了解,而且如法律,環(huán)境等知識(shí)競(jìng) 賽是提高人們認(rèn)識(shí)的一個(gè)很好的途徑。現(xiàn)在開展的競(jìng)賽搶答活動(dòng)越來(lái)越多,而 在大多數(shù)比賽當(dāng)中都是采用搶答器進(jìn)行搶答的,雖然市面上的搶答器功能較為 齊全,但價(jià)錢也相對(duì)較貴,在一些小型的比賽當(dāng)中難以普及,這就給廣大的普 通知識(shí)競(jìng)賽愛(ài)好者帶來(lái)了不便,特別是在像學(xué)校這樣開展活動(dòng)比較頻繁的場(chǎng)所 更是需要一款這樣的搶答器,本設(shè)計(jì)正是一款專為此而設(shè)計(jì)且非常實(shí)用的多功 能多路的搶答器。 本設(shè)計(jì)的核心是使用 AT89C51 單片機(jī)來(lái)對(duì)信

8、號(hào)進(jìn)行鎖存、顯示等功能。搶 答器在程序控制下工作,在比賽當(dāng)中有按鍵被按下,在程序的控制下就可以判 斷是那個(gè)按鍵被按下,并對(duì)該按鍵進(jìn)行鎖定,同時(shí)輸出是那一位選手搶答成功。 當(dāng)完成了一次搶答的時(shí)候,主持人可以通過(guò)控制鍵對(duì)上一次的搶答結(jié)果進(jìn)行記 分,之后使程序回到初始狀態(tài)并同時(shí)開始下一輪的搶答。 此搶答器電路設(shè)計(jì)原理簡(jiǎn)單、功耗低、穩(wěn)定性好、反應(yīng)速度快和安裝方便。 在條件的允許下還可以進(jìn)行擴(kuò)展成 16 路。由于實(shí)現(xiàn)此搶答器所需的硬件只是一 塊 AT89C51 單片機(jī)芯片、六個(gè)數(shù)碼管和一些按鍵等,所以成本比較低,適用于 許多場(chǎng)合。 1.2 搶答器研究的現(xiàn)狀 1設(shè)計(jì)的不專業(yè)化; 2成本的高端化; 3功能的

9、單一化; 4操作的復(fù)雜化; 5研究目的不明確性; 6消費(fèi)者的需求強(qiáng)烈性。 1.3 搶答器的功能要求 1可實(shí)現(xiàn)調(diào)整顯示當(dāng)前時(shí)間; 2能允許 8 路搶答或可以擴(kuò)展為 16 位; 3顯示搶答組號(hào)及搶答組分?jǐn)?shù); 4報(bào)警閃爍顯示犯規(guī)組號(hào); 5限時(shí)搶答,限時(shí)答題; 6后 5S 倒計(jì)時(shí)每秒聲音提示與報(bào)警; 7查詢組號(hào)分?jǐn)?shù)、對(duì)答題結(jié)果進(jìn)行加減指定分?jǐn)?shù); 8實(shí)現(xiàn)時(shí)鐘和搶答器功能相互切換。 1.4 搶答器總體介紹 1接通電源后,顯示時(shí)間,調(diào)節(jié)時(shí)鐘調(diào)節(jié)按鍵可以設(shè)定為當(dāng)前時(shí)間,按功 能轉(zhuǎn)換鍵進(jìn)入搶答器功能,同時(shí)也可以進(jìn)入時(shí)鐘顯示狀態(tài)。 2如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按搶答時(shí)間調(diào)節(jié)“鍵”或“答題時(shí) 間調(diào)節(jié)”鍵進(jìn)入調(diào)節(jié)

10、狀態(tài),此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如 想加一秒按一下加 1s鍵,如果想減一秒按一下-1s鍵,時(shí)間 LED 上會(huì)顯示改 變后的時(shí)間,調(diào)整范圍為 0s99s, 0s 時(shí)再減 1s 會(huì)跳到 99,99s 時(shí)再加 1s 會(huì)變 到 0s,調(diào)節(jié)完成后按確認(rèn)鍵。 3如果想對(duì)下一個(gè)題目的答題結(jié)果加減一定分?jǐn)?shù),按“答題分?jǐn)?shù)調(diào)節(jié)鍵” ,此時(shí)可以分別調(diào)節(jié)下一個(gè)題目答對(duì)加的分?jǐn)?shù),以及答錯(cuò)要扣除的分?jǐn)?shù),然后 按確認(rèn)鍵。 4主持人按開始鍵后,會(huì)有一聲提示,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè) 15s 搶答時(shí)間)狀態(tài),如有選手搶答,會(huì)有一聲提示音,同時(shí)顯示其組號(hào)和當(dāng) 前分?jǐn)?shù),立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè) 10s 搶答時(shí)間)

11、 ,不進(jìn)行搶答查詢,所以只 有第一個(gè)按搶答的選手有效。倒記時(shí)的后 5s 內(nèi)每秒鐘會(huì)有一聲提示。 5如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按停止按鍵,系統(tǒng)會(huì)自 動(dòng)進(jìn)入記錄選手分?jǐn)?shù)狀態(tài),等待主持人給選手加減指定的分?jǐn)?shù),同時(shí)顯示答題 后選手的分?jǐn)?shù)。然后按“確定”鍵,等待主持人再次按開始鍵進(jìn)入下次搶答 計(jì)時(shí)。 6如果主持人未按搶答開始鍵,而有人按了搶答按鍵,屬于犯規(guī)搶答, LED 會(huì)不斷閃爍犯規(guī)組號(hào)數(shù)并響個(gè)不停,直到按下停止 鍵為止。 7初設(shè)每位選手的分?jǐn)?shù)為 5,在選手答題時(shí)會(huì)在顯示倒計(jì)時(shí)的同時(shí)顯示其 分?jǐn)?shù),按“加分”或“減分”鍵對(duì)其答題結(jié)果給予指定的分?jǐn)?shù),按“確定”鍵 后,可進(jìn)入等待下次搶答狀態(tài)。

12、 8如果想查詢選手的分?jǐn)?shù),先進(jìn)入查分狀態(tài),然后每位選手按自己的搶答 鍵,將顯示選手的號(hào)數(shù)和分?jǐn)?shù),最后按“確定”鍵退出。 9P3.0 為開始搶答,P3.1 為停止或確認(rèn),p1.0-p1.7 為八路搶答器輸入端口, 數(shù)碼管段選 P0 口,位選 P2 口低 6 位,蜂鳴器輸出為 P3.6 口。P3.2 搶答時(shí)間調(diào) 整和查分,P3.3 回答時(shí)間調(diào)整及加、減分?jǐn)?shù)調(diào)節(jié),P3.4 為時(shí)間加 1 調(diào)整,P3.5 為時(shí)間減 1 調(diào)整。P3.7 為時(shí)鐘功能與搶答器功能相互轉(zhuǎn)換鍵,P3.1、P3.4、P3.5 分別作為時(shí)、分、秒的調(diào)整鍵,P3.0 為時(shí)間調(diào)整確認(rèn)鍵。 2 核心元件 AT89C51 介紹 在本設(shè)計(jì)中使

13、用的是 AT89C51 單片機(jī),它是一種低電壓低功耗的高性能 8 位單片機(jī),它采用了 CMOS 工藝和 ATMEL 公司的高密度非易失性存儲(chǔ)器 (NURAM)技術(shù),而且輸出引腳和指令系統(tǒng)完全與 MS-51 單片機(jī)兼容。 2.1 AT89C51 芯片主要性能參數(shù) 14k 字節(jié)可重擦寫 Flash 閃速存儲(chǔ)器(可經(jīng)受 1000 次的寫入/擦除周期) 2全靜態(tài)工作,0Hz 24MHz 3三級(jí)加密程序存儲(chǔ)器 41288 字節(jié)內(nèi)部 RAM 56 個(gè)中斷源、4 個(gè)中斷優(yōu)先級(jí)、4 個(gè) 8 位 I/O 口 62 個(gè) 16 位定時(shí)/計(jì)數(shù)器 T0、 T1 標(biāo)準(zhǔn) 80C51 和增加的 T2 捕獲和比較 7存儲(chǔ)器尋址

14、范圍:64K 字節(jié) ROM 和 64K 字節(jié) RAM 8電源控制模式:時(shí)鐘可停止和恢復(fù),空閑模式,掉電模式 9 2 個(gè)工作頻率范圍 10 時(shí)鐘模式時(shí)為 0 到 20MHz,12 時(shí)鐘模式時(shí)為 0 到 33MHz 11雙數(shù)據(jù)指針 12可編程串行 UART 通道、編程時(shí)鐘輸出 13掉電模式可通過(guò)外部中斷喚醒 2.2 功能特性概述 AT89C51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié) Flash 閃速存儲(chǔ)器,128 字節(jié)內(nèi)部 RAM,32 個(gè) I/O 口線,兩個(gè) 16 位定時(shí)/計(jì)數(shù)器,一個(gè) 5 向量?jī)杉?jí)中斷結(jié)構(gòu),一 個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51 可降至 0Hz 的 靜態(tài)邏輯

15、操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止 CPU 的工 作,但允許 RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式 保存 RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè) 硬件復(fù)位。 3 系統(tǒng)硬件設(shè)計(jì) 3.1 總體原理圖 此設(shè)計(jì)的主要部分為單片機(jī)最小系統(tǒng),設(shè)計(jì)的總體原理圖如圖 3.1 所示,P3.0 為開始搶答,P3.1 為停止或確認(rèn),p1.0-p1.7 為八路搶答輸入,數(shù)碼管段選 P0 口,位選 P2 口低 6 位,蜂鳴器輸出為 P3.6 口,P3.2 搶答時(shí)間調(diào)整,P3.3 回答 時(shí)間調(diào)整,P3.4 為時(shí)間加 1 調(diào)整,P3.5 為時(shí)間減 1 調(diào)

16、整。 EA /VP 31 X1 19 X2 18 RE SET 9 RD 17 WR 16 INT 0 12 INT 1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSE N 29 AL E/P 30 TX D 11 RX D 10 U1 AT 89S51 P31 P31 C130p F G

17、N D P30 C230p F VC C S11 R14 1K S12 S10 2 位位位位位位位 1 2 3 4 5 6 J2 D1 02 S13 P30 S14 GN D 1 2 3 4 5 6 7 8 J1 S15 VC C S16 R13 1K S17 S10 1 位位位位 S18 D1 01 S21 S22 S23 S24 S1 位位 GN D GN D Y1 12M GN D + C3 22u F R1 4.7 K GN D U2 BU ZZER VC C VC C GN D R15 1K VC C R16 1K Q4 PN P R2 1K R3 1K R4 1K R5 1K R6

18、 1K R7 1K R8 1K R9 1K VC C 圖 3.1 設(shè)計(jì)總體原理圖 3.2 AT89C51 工作外圍電路 3.2.1 供電電源 AT89C51 單片機(jī)為+5v 直流供電,如圖 3.2 所示,普通電源通過(guò) 7805 穩(wěn)壓 管后將 9V 電壓轉(zhuǎn)換成+5V,會(huì)有 1A 的直流穩(wěn)定電壓輸出。 Vin 1 GND 2 Vo ut 3 U1780 5 1uF 1 2 J1 位位 +10u F GN D GN D GN D GN D 位位VC C 圖 3.2 5V 直流供電 3.2.2 時(shí)鐘頻率 單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路, 只需要外接一個(gè)振蕩源就能產(chǎn)生一

19、定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元, 決定單片機(jī)的工作速度,圖 3.3 為外部振蕩源電路。 C1 30p F C2 30p F Y112M GN D Rf Rs PDAT 89C5 2 VC C 位位位位位位位 圖 3.3 外部振蕩源電路 一般選用石英晶體振蕩器。此電路在加電大約延遲 10MS 后振蕩器起振,在 XTAL2 引腳產(chǎn)生幅度為 3V 左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振 的頻率確定。電路中兩個(gè)電容 C1,C2 的作用有兩個(gè):一是幫助振蕩器起振; 二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2 的典型值為 30PF。 單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏

20、輯 單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。起大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用 fosc 表示。如時(shí)鐘頻率為 12MHz,即 fosc=12MHz,則時(shí)鐘周期為 1/12s。 3.2.3 復(fù)位 單片機(jī)的第 9 腳 RST 為硬件復(fù)位端,當(dāng)振蕩器起振以后,在 RST 引腳上輸 入 2 個(gè)周期以上的高電平,器件便進(jìn)入復(fù)位狀態(tài),此時(shí) ALE、PSEN、P0、P1、P2、P3 輸出高電平,RST 上輸入返回低電平以后,便 退出復(fù)位狀態(tài)開始工作。其電路圖如圖 3.4 所示: R C +5V 89C 52 Vss RST C 2OO 位 R +5V 89C 52 RST Vss (a) 上電自動(dòng)復(fù)位 (b)上電復(fù)

21、位和人工開關(guān)復(fù)位 圖 3.4 89C52 等單片機(jī)的復(fù)位電路 值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上 面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,而前面 的功能介紹中提到了倒計(jì)時(shí)時(shí)間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不 能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序 執(zhí)行完畢之后,將程序指針通過(guò)一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。 4 基本原理及關(guān)鍵技術(shù) 4.1 基本原理 整個(gè)流程過(guò)程主要四大塊:時(shí)間顯示部分、計(jì)時(shí)部分、預(yù)置部分、控制部 分。電源用+5V,AT89C51 為主控制器,當(dāng)主持人按下復(fù)位鍵后,定時(shí)器開始 計(jì)

22、時(shí),切換在搶答器功能的狀態(tài)下,如果在搶答時(shí)間內(nèi)沒(méi)有人搶答則為棄權(quán), 如果有人按鍵定時(shí)器停止計(jì)時(shí),自動(dòng)進(jìn)入答題倒計(jì)時(shí)狀態(tài),同時(shí)顯示組別和對(duì) 應(yīng)分?jǐn)?shù)并發(fā)出高頻鈴聲,如果答對(duì)主持人按鍵加給定分?jǐn)?shù),答錯(cuò)則減給定分?jǐn)?shù), 然后按復(fù)位鍵開始下一輪搶答。具體分析如下: 1 采用內(nèi)部定時(shí)器定時(shí),定時(shí)調(diào)用動(dòng)態(tài)顯示程序,實(shí)現(xiàn)時(shí)間的顯示; 2 采用獨(dú)立式鍵盤,可實(shí)現(xiàn) 8 路搶答,稍微改動(dòng)也可實(shí)現(xiàn) 16 路搶答; 3 可實(shí)行搶答時(shí)間和回答問(wèn)題時(shí)間加 1,減 1 的調(diào)整,調(diào)整范圍為 0S-99S 的調(diào)整; 4 有查分、記分功能,未搶答時(shí)且在查分狀態(tài)下,按每位組的搶答按鍵, 可顯示組號(hào)及其分?jǐn)?shù),搶答完畢后,同時(shí)顯示選手目前

23、的分?jǐn)?shù),主持人 可以對(duì)選手本次搶答情況進(jìn)行加減分?jǐn)?shù)。 5 有記時(shí)、記分的記憶功能,一次倒計(jì)時(shí)時(shí)間、加減分?jǐn)?shù)設(shè)置完,如果不 需更改,復(fù)位后不需重新進(jìn)行設(shè)定; 6 其掃描顯示基本原理為:通過(guò)鍵盤掃描輸出按鍵信息,再通過(guò)單片機(jī)將它 轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼; 7 非常規(guī)報(bào)警為:為主控制端未起動(dòng)時(shí)對(duì)其他按鍵端進(jìn)行監(jiān)控; 8 按鍵端的提示為:當(dāng)搶答完畢時(shí),會(huì)在數(shù)碼管上顯示搶答者號(hào)碼提示以 表示搶答成功; 9 其中倒計(jì)時(shí)功能基本原理為:通過(guò)鍵盤設(shè)定時(shí)間 ,將顯示時(shí)間數(shù)值逐一 遞減,直到零,完成設(shè)定時(shí)間的倒計(jì)時(shí)。 4.2 電路設(shè)計(jì)總體框圖 八路多功能智力競(jìng)賽搶答器設(shè)計(jì)電路主要包括主持人控制電路、選手

24、搶答 電路、報(bào)警與顯示電路。其總體框圖如圖 4.1 所示: 圖 4.1 搶答器總體框圖 4.3 關(guān)鍵技術(shù) 4.3.1 鍵盤掃描 在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤(圖 4.2)及矩陣鍵盤(圖 4.3): S0 S1 S2 S3 S4 S5 S6 S7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 圖 4.2 獨(dú)立鍵盤 S1S2S3S4 S5S6S7S8 S9S10S11S12 S13S14S15S16 P1.4 P1.5 P1.6 P1.7 4.7K 4.7K 4.7K 4.7K VC C P1.0P1.1P1.2P13 圖 4.3 矩陣鍵盤 它們各有

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

26、.2 顯示 通常情況下顯示方法一般包括兩種:一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。 其中靜態(tài)顯示的優(yōu)點(diǎn)是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器 的亮度大,程序編寫簡(jiǎn)單,但缺點(diǎn)是占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示 穩(wěn)定性沒(méi)靜態(tài)好,程序編寫復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。 在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的了動(dòng)態(tài)顯示的方法(電路如圖 4.4 所示) , 并通過(guò)查表法將其在數(shù)碼管上顯示出來(lái),其中 P0 口為字型碼輸入端,P2 口低 6 位為字選段輸入端。在這里我們通過(guò)查表將字型碼送給 7 段數(shù)碼管顯示的數(shù) 字,數(shù)碼管顯示原理如下: MOV A,R5 MOVC A,A+DPTR ;查字型碼

27、MOV P2,#01H ;送位選碼 MOV P0,A ;送字型碼 ACALL DELAY ;調(diào)延時(shí),去閃爍 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 1 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 2 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 3 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 4 1

28、2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 5 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 6 1 2 3 4 5 6 7 8 P0 Q1 PN P Q2 PN P Q3 PN P Q4 PN P Q5 PN P Q6 PN P R1 4.7 K R2 4.7 K R3 4.7 K R4 4.7 K R5 4.7 K R6 4.7 K GN DGN DGN DGN DGN DGN D 1 2 3 4 5 6 J2 圖 4.4 動(dòng)態(tài)顯示電路 在七段數(shù)碼管

29、顯示中可分為共陽(yáng)極和共陰極兩種類型,本設(shè)計(jì)中采用共陰數(shù) 碼管,當(dāng)數(shù)碼管共陰極接地時(shí),如想數(shù)碼管的 a 段亮,則向 a 段送“1” ,反之 送“0” 。 4.3.3 發(fā)聲 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單 處機(jī)某個(gè)口線的高電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波, 接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高” 、 “低”電平 的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。 發(fā)聲電路如圖 4.5 所示,該電路由一個(gè)作為驅(qū)動(dòng)作用的三極管,一個(gè)電阻和 一個(gè)喇叭組成。 GN D U2 BU ZZER VC C R15 1K R1

30、6 1K Q4 PN PP3.6 圖 4.5 發(fā)聲電路 5 程序設(shè)計(jì) 5.1 程序介紹 1時(shí)間顯示與搶答狀態(tài)切換由按鍵 P3.7 控制,P3.7=1 時(shí),執(zhí)行時(shí)間顯示, P3.7=0 時(shí)進(jìn)入搶答器狀態(tài),不再顯示時(shí)間,進(jìn)入此狀態(tài)標(biāo)志為:數(shù)碼管顯示字 符“FFFFFF” 。 2倒計(jì)時(shí)時(shí)間儲(chǔ)存:將初始的時(shí)間存在寄存器 R1,R2 中,如需對(duì)搶答時(shí) 間和答題時(shí)間進(jìn)行調(diào)整,則通過(guò)按鍵進(jìn)入外中斷程序,分別對(duì)其進(jìn)行調(diào)整,然 后再將數(shù)據(jù)存于 R1,R2 中。 3選手號(hào)顯示:當(dāng)有選手按鍵按下時(shí),程序進(jìn)行鍵盤掃描,鎖定第一個(gè)按 鍵的選手,并將其組號(hào)送于 53H,同時(shí)調(diào)用顯示程序顯示該組號(hào)。 4加減分程序:先預(yù)置每

31、位選手初始分?jǐn)?shù)為 5 分,分別存于 41H48H, 一次成功搶答結(jié)束后,調(diào)用原來(lái)分?jǐn)?shù),再通過(guò)按鍵對(duì)其搶答結(jié)果進(jìn)行加減合適 的分?jǐn)?shù),并存在對(duì)應(yīng)的地址空間內(nèi)。 5報(bào)警:對(duì) P3.6 端口不斷取反使蜂鳴器發(fā)出一定頻率的聲音。 5.2 主要程序分析 5.2.1 程序總體設(shè)計(jì)框圖 整個(gè)程序設(shè)計(jì)主要在于按鍵控制,程序掃描判斷相關(guān)功能按鍵是否閉合來(lái) 執(zhí)行相對(duì)應(yīng)的程序模塊,本電路設(shè)計(jì)的總體程序框圖為圖 5.1 所示: 圖 5.1 總體程序框圖 5.2.2 搶答時(shí)間調(diào)整與查分模塊 初設(shè)搶答時(shí)間為 15S,根據(jù)題目類型可以調(diào)整搶答時(shí)間,搶答時(shí)間的調(diào)整是 采用外中斷 0,當(dāng) P3.2=0 時(shí),進(jìn)入外中斷程序,通過(guò)加

32、減按鍵分別進(jìn)行加 1 或 減 1,然后將最后的數(shù)據(jù)存入 R1 中。時(shí)間調(diào)整確認(rèn)后,可以查詢每組目前的分 數(shù),每組按下自己的搶答鍵后將會(huì)把對(duì)應(yīng)組號(hào)和分?jǐn)?shù)分別送入數(shù)碼管顯示,即 可查看其分?jǐn)?shù)。該過(guò)程的程序框圖如圖 5.2 所示。 圖 5.2 搶答時(shí)間調(diào)整與查分框圖 5.2.3 答題時(shí)間調(diào)整與預(yù)加減分設(shè)置模塊 搶答器初設(shè)答題時(shí)間為 10S,根據(jù)題目的難易程度可以調(diào)整該時(shí)間,搶答時(shí) 間采用外中斷 1,調(diào)整程序與搶答時(shí)間調(diào)整相似。時(shí)間調(diào)整后,進(jìn)入欲加減分 數(shù)設(shè)置,初設(shè)加減分?jǐn)?shù)都為 1,再次利用按鍵進(jìn)行設(shè)置,每次按鍵按下,對(duì)應(yīng) 的數(shù)據(jù)將會(huì)加 1。這一設(shè)置過(guò)程的如圖 5.3 所示。 圖 5.3 答題時(shí)間調(diào)整

33、與預(yù)加減分設(shè)置框圖 5.2.4 倒計(jì)時(shí)程序與加減分?jǐn)?shù)模塊 當(dāng)搶答開始鍵 P3.0=0 時(shí),進(jìn)入搶答倒計(jì)時(shí)狀態(tài),將倒計(jì)時(shí)時(shí)間存入寄存器 R6,當(dāng) R65 時(shí),每 1S 調(diào)用一次報(bào)警程序,如果在倒計(jì)時(shí)的時(shí)間內(nèi)有搶答組 別鍵按下,判斷組別后,顯示組號(hào)及當(dāng)前分?jǐn)?shù),鎖定其他按鍵,再次進(jìn)入倒計(jì) 時(shí)狀態(tài)。答題結(jié)束后,根據(jù)答題情況,加減預(yù)設(shè)分?jǐn)?shù),然后退出進(jìn)入下一輪搶 答狀態(tài)。 程序分析過(guò)程如圖 5.4 所示。 圖 5.4 倒計(jì)時(shí)程序與加減分?jǐn)?shù)模塊 6 設(shè)計(jì)總結(jié) 6.1 設(shè)計(jì)過(guò)程出現(xiàn)問(wèn)題及解決 在整體的設(shè)計(jì)過(guò)程中硬件電路的設(shè)計(jì)比較成熟,花費(fèi)時(shí)間較少,主要的設(shè) 計(jì)在于軟件設(shè)計(jì)上,遇到的問(wèn)題及解決方法有: 1使用條

34、件轉(zhuǎn)移指令,如:JNB bit,rel,編譯時(shí)不能進(jìn)行,出現(xiàn)跳出范圍 錯(cuò)誤,該錯(cuò)誤是由于該指令的轉(zhuǎn)移范圍為 256 字節(jié)(-128+127B) ,而無(wú)條件 轉(zhuǎn)移指令的轉(zhuǎn)移范圍相對(duì)條件轉(zhuǎn)移指令要大的多,如:AJMP addr11 指令的轉(zhuǎn) 移范圍在 2K 字節(jié)范圍內(nèi),指令 LJMP addr16 的轉(zhuǎn)移范圍為 64KB。這樣通過(guò)適 當(dāng)?shù)恼Z(yǔ)句轉(zhuǎn)換使用無(wú)條件轉(zhuǎn)移指令就避免了轉(zhuǎn)移跳出范圍的現(xiàn)象。 2單片機(jī)的兩個(gè)定時(shí)器分別用于響鈴程序和計(jì)時(shí)程序,所以實(shí)時(shí)時(shí)間顯示 和倒計(jì)時(shí)時(shí)間只能使用同一個(gè)定時(shí)方式,設(shè)計(jì)中卻需要成品工作在不同的狀態(tài) 時(shí),實(shí)時(shí)時(shí)間不能中斷,即在搶答工作結(jié)束后不需要再次調(diào)整時(shí)間。對(duì)于這一 問(wèn)

35、題可以將兩者用不同的寄存器存儲(chǔ)時(shí)間,同時(shí)調(diào)用不同的顯示程序來(lái)實(shí)現(xiàn)。 6.2 系統(tǒng)存在不足 1在一次搶答過(guò)程中,當(dāng)出現(xiàn)超前違規(guī)搶答時(shí),只能處理違規(guī)搶答信號(hào), 而對(duì)沒(méi)有違規(guī)的有效搶答信號(hào)不能進(jìn)行處理,因而使該次搶答過(guò)程變?yōu)闊o(wú)效。 2當(dāng)有多個(gè)違規(guī)搶答時(shí),普通搶答器或采用優(yōu)先編碼電路選擇其中一個(gè), 或利用搶答電路電子元件的“競(jìng)爭(zhēng)”選擇其中一個(gè)。對(duì)于后者由于搶答電路制 作完畢后電子元件被固定。各路搶答信號(hào)的“競(jìng)爭(zhēng)”能力也被固定,因而本質(zhì) 上也有優(yōu)先權(quán)。只能“抓住”其中一個(gè)而出現(xiàn)“漏洞” 。 6.3 設(shè)計(jì)心得 經(jīng)過(guò)這幾周的努力,設(shè)計(jì)終于圓滿結(jié)束。在這次設(shè)計(jì)中我感受到平時(shí)多學(xué) 習(xí),多看資料的重要性。設(shè)計(jì)的本

36、身并不太難,只是知識(shí)的廣度與深度不夠。 通過(guò)查閱資料,學(xué)習(xí)到了許多知識(shí),同時(shí)讓我感受到了,書本上的理論知識(shí)和 實(shí)際應(yīng)用還是有許多的差別,有些知識(shí)是要通過(guò)實(shí)踐在能領(lǐng)會(huì)到的。對(duì)于單片 機(jī)的設(shè)計(jì)總體上硬件部分比較簡(jiǎn)單,主要解決的就是軟件部分的設(shè)計(jì),如果說(shuō) 有了一個(gè)較完整的程序讓我畫電路是件簡(jiǎn)單的事,但反過(guò)來(lái)就不是件容易的事 情了。因而程序的設(shè)計(jì)是一個(gè)設(shè)計(jì)的主題,它反映了一個(gè)人解決問(wèn)題的思路, 這才是最重要的東西。 我在設(shè)計(jì)的過(guò)程中查閱了不同書籍中完成同一功能的子程序,通過(guò)比較選 擇最適合的程序。整個(gè)設(shè)計(jì)通過(guò)軟件與硬件的調(diào)試與仿真,使我懂得了學(xué)習(xí)的 重要性,這對(duì)我以后的學(xué)習(xí)和工作將會(huì)有很大的幫助。 致

37、 謝 本文從課題的選定到系統(tǒng)設(shè)計(jì)方案的確立,我的導(dǎo)師都一直地、不斷地給 予我指導(dǎo)和幫助。在真正的設(shè)計(jì)過(guò)程中不時(shí)地問(wèn)我有哪些困難,引導(dǎo)我順利地 去解決。在我遇到苦難時(shí),他能夠用簡(jiǎn)短的語(yǔ)句讓我明白問(wèn)題的所在。在論文 的撰寫上也給了我好多的意見(jiàn)。他廣博的知識(shí)面和豐富的實(shí)踐經(jīng)驗(yàn),使我十分 佩服,這也將激勵(lì)我在今后的工作和學(xué)習(xí)中不斷的進(jìn)取。在此,向您表示由衷 地感謝和真誠(chéng)的敬意。 同時(shí),還感謝在整個(gè)過(guò)程中曾經(jīng)幫助過(guò)我、支持我的老師、同學(xué)。謝謝你 們對(duì)我的幫助與支持。 參考文獻(xiàn) 1張友德 主編.MCS-51單片微型機(jī)原、應(yīng)用與實(shí)驗(yàn). 第四版.復(fù)旦大學(xué)出版社. 2003. 2薛鈞義 武自芳 主編.微機(jī)控制系

38、統(tǒng)及其應(yīng)用. 第一版.西安交通大學(xué)出版社. 2002 3陳光東 主編. 單片微型機(jī)原理. 第一版.華中科技大學(xué)出版社.2003 附錄 1 主要元器件引腳功能 1、AT89C52 引腳圖 2、AT89C51 主要引腳功能 VCC:供電電壓。 GND:接地。 P0 口:P0 口為一個(gè) 8 位漏級(jí)開路雙向 I/O 口,每腳可吸收 8TTL 門電流。 當(dāng) P1 口的管腳第一次寫 1 時(shí),被定義為高阻輸入。P0 能夠用于外部程序數(shù)據(jù) 存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在 FIASH 編程時(shí),P0 口作為原 碼輸入口,當(dāng) FIASH 進(jìn)行校驗(yàn)時(shí),P0 輸出原碼,此時(shí) P0 外部必須被拉高。 P1

39、口:P1 口是一個(gè)內(nèi)部提供上拉電阻的 8 位雙向 I/O 口,P1 口緩沖器能 接收輸出 4TTL 門電流。P1 口管腳寫入 1 后,被內(nèi)部上拉為高,可用作輸入, P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在 FLASH 編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。 P2 口:P2 口為一個(gè)內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收, 輸出 4 個(gè) TTL 門電流,當(dāng) P2 口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且 作為輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。這是由 于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或 16 位地址

40、外部數(shù)據(jù)存儲(chǔ)器 進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉 優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2 口輸出其特殊功能寄存器 的內(nèi)容。P2 口在 FLASH 編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3 口:P3 口管腳是 8 個(gè)帶內(nèi)部上拉電阻的雙向 I/O 口,可接收輸出 4 個(gè) TTL 門電流。當(dāng) P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。 作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的 緣故。 P3 口也可作為 AT89C51 的一些特殊功能口,如下所示: P3.0 RXD(串行輸入口) P3.1 TX

41、D(串行輸出口) P3.2 /INT0(外部中斷 0) P3.3 /INT1(外部中斷 1) P3.4 T0(記時(shí)器 0 外部輸入) P3.5 T1(記時(shí)器 1 外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持 RST 腳兩個(gè)機(jī)器周期的高電 平時(shí)間。 /EA/VPP:當(dāng)/EA 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H- FFFFH) ,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式 1 時(shí),/EA 將內(nèi)部鎖定為 RESET;當(dāng)/EA 端保持高電平時(shí),

42、此間內(nèi)部程序存儲(chǔ)器。在 FLASH 編程期間,此 引腳也用于施加 12V 編程電源(VPP) 。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。 3、七段數(shù)碼管引腳圖 (a)外觀圖(b)等效電路 附錄 2 元件列表 AT89C51 1 片 12M 晶振 1 個(gè) 9V 變壓器 1 個(gè) L7805 1 個(gè) 4700F 電解電容 2 個(gè) 001F 瓷片電容 2 個(gè) 30PF 瓷片電容 2 個(gè) 1K 排阻 1 個(gè) 按鍵 15 個(gè) 4.7K 電阻 9 個(gè) 1K 電阻 5 個(gè) 7 段 LED 數(shù)碼管 6 個(gè) 電源開關(guān) 1 個(gè) 附錄 3 程序代碼 OK EQU

43、 20H;搶答開始標(biāo)志位 RING EQU 22H;響鈴標(biāo)志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040 ;=初始化程序= MAIN: MOV R1,#0FH;初設(shè)搶答時(shí)間為 15s MOV R2,#0AH;初設(shè)答題時(shí)間為 10s MOV TMOD,#11H;設(shè)置未定時(shí)器/模式 1 MOV TH0,#0ECH MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖 MOV TH1,#3CH MOV TL1,#

44、0B0H;50ms 為一次溢出中斷 MOV IE,#88H;允許四個(gè)中斷,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一開始就運(yùn)行定時(shí)器,以開始顯示 FFF.如果想重新計(jì)數(shù),重置 TH1/TL1 MOV 4AH,#00H MOV R6,#8 ;初設(shè) 8 位選手的分?jǐn)?shù)為 5 分 MOV R0,#41H MOV A,#5 CL1: MOV R0,A INC R0 DJNZ R6 ,CL1 MOV R3,#1 ;初設(shè)每次答題加 1 分 MOV R4,#1 ;初設(shè)每次答題減 1 分 MOV R5,#0 MOV 50H,#0 ;50H55H 存放搶

45、答顯示內(nèi)容 MOV 51H,#0 MOV 52H,#0 MOV 53H,#0 MOV 54H,#0 MOV 55H,#0 MOV 60H,#0 ;60H65H 存放實(shí)時(shí)時(shí)間顯示內(nèi)容 MOV 61H,#0 MOV 62H,#0 MOV 63H,#0 MOV 64H,#0 MOV 64H,#0 MOV 66H,#0 ;存儲(chǔ)秒 MOV 67H,#0 ;存儲(chǔ)分 MOV 68H,#0 ;存儲(chǔ)時(shí) ACALL DISPLAY2 ;=時(shí)間顯示程序= JS: CLR RING SETB TR1 MOV R5,#0 MOV TH1,#3CH MOV TL1,#0B0H X1:JB P3.7,PLAY ;P3.7=

46、0,進(jìn)入搶答狀態(tài),P3.7=1 為實(shí)時(shí)是時(shí)間顯示 LJMP START PLAY: JNB P3.0,JISHI ACALL DISPLAY2 AJMP X1 ;=時(shí)間調(diào)整程序= JISHI: CLR TR1 ACALL DISPLAY2 JNB P3.1,SHI JNB P3.4,FEN JNB P3.5,MIAO JNB P3.0,$+6 LJMP JS AJMP JISHI SHI: INC 68H MOV A,68H CJNE A,#24,X2 MOV 68H,#0 MOV A,#0 X2: MOV B,#0AH DIV AB MOV 60H,A MOV 61H,B ACALL DEL

47、AY2 AJMP JISHI FEN: INC 67H MOV A,67H CJNE A,#60,X3 MOV 67H,#0 MOV A,#0 X3: MOV B,#0AH DIV AB MOV 62H,A MOV 63H,B ACALL DELAY2 AJMP JISHI MIAO: INC 66H MOV A,66H CJNE A,#60,X4 MOV 66H,#0 MOV A,#0 X4: MOV B,#0AH DIV AB MOV 64H,A MOV 65H,B ACALL DELAY2 AJMP JISHI ;=搶答查詢程序= START: MOV IE,#8FH MOV 50H,#

48、0BH MOV 51H,#0BH MOV 52H,#0BH MOV 53H,#0BH MOV 54H,#0BH MOV 55H,#0BH ACALL DISPLAY;未開始搶答時(shí)候顯示 FFFFFF ACALL DISPLAY2 JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖動(dòng),如果開始鍵按下就向下執(zhí)行,否者跳到非法 搶答查詢 ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送 R1-R6,因?yàn)?R1 中保存了搶答時(shí)間 SETB OK;搶答標(biāo)志位,用于 COUNT 只程序中判斷是否查詢搶答 MOV 52H,#0AH;搶答只

49、顯示計(jì)時(shí),滅號(hào)數(shù) MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH AJMP COUNT;進(jìn)入倒計(jì)時(shí)程序,查詢有效搶答的程序在 COUNT 里面 NEXT: JNB P1.0,FALSE0 JNB P1.1,FALSE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 JNB P1.7,FALSE7 JB P3.7,NO AJMP START NO: LJMP JS ;=非法搶答處理程序= FALSE0: ACALL BARK;按鍵發(fā)聲 MOV 53H,#

50、01H AJMP ERROR FALSE1: ACALL BARK;按鍵發(fā)聲 MOV 53H,#02H AJMP ERROR FALSE2: ACALL BARK MOV 53H,#03H AJMP ERROR FALSE3: ACALL BARK MOV 53H,#04H AJMP ERROR FALSE4: ACALL BARK MOV 53H,#05H AJMP ERROR FALSE5: ACALL BARK MOV 53H,#06H AJMP ERROR FALSE6: ACALL BARK MOV 53H,#07H AJMP ERROR FALSE7: ACALL BARK MOV

51、 53H,#08H AJMP ERROR ;=INT0(搶答時(shí)間 R1 調(diào)整程序,選手分?jǐn)?shù)查詢)= INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B MOV 52H,#0AH MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH ACALL DISPLAY;先在兩個(gè)時(shí)間 LED 上顯示 R1 JNB P3.4,INC0;P3.4 為+1s 鍵,如按下跳到 INCO JNB P3.5,DEC0;P3.5 為-1s 鍵,如按下跳到 DECO JNB P3.1 , INTB0 AJMP INT0SUB INTB0:

52、JNB P3.1, $ INTBB0: ACALL DISPLAY ;JB 占 3 個(gè)字節(jié),LJMP 占 3 個(gè)字節(jié) JB P1.0, $+6 lJMP J0 ;查 1 號(hào)選手分?jǐn)?shù) JB P1.1, $+6 lJMP J1 ;查 2 號(hào)選手分?jǐn)?shù) JB P1.2, $+6 lJMP J2 ;查 3 號(hào)選手分?jǐn)?shù) JB P1.3, $+6 lJMP J3 ;查 4 號(hào)選手分?jǐn)?shù) JB P1.4,$+6 lJMP J4 ;查 5 號(hào)選手分?jǐn)?shù) JB P1.5, $+6 lJMP J5 ;查 6 號(hào)選手分?jǐn)?shù) JB P1.6, $+6 lJMP J6 ;查 7 號(hào)選手分?jǐn)?shù) JB P1.7, $+6 lJMP

53、J7 ;查 8 號(hào)選手分?jǐn)?shù) JB P3.1,$+6 LJMP BACK0;P3.1 為確定鍵,如按下跳到 BACKO AJMP INTBB0 INC0: MOV A,R1 CJNE A,#63H,ADD0 ;如果不是 99,R2 加 1,如果加到 99,R1 就置 0, 重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT0SUB ADD0: INC R1 ACALL DELAY1 AJMP INT0SUB DEC0: MOV A,R1 JZ SETR1;如果 R1 為 0, R1 就置 99, DEC R1 ACALL DELAY1 AJMP INT0SUB SET

54、R1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUB J0: MOV 53H,#01H MOV A,41H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J1: MOV 53H,#02H MOV A,42H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J2: MOV 53H,#03H MOV A,43H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J3: MOV 53H,#04H MOV A,44H MOV

55、 B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J4: MOV 53H,#05H MOV A,45H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J5: MOV 53H,#06H MOV A,46H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 J6: MOV 53H,#07H MOV A,47H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 J7: MOV 53H,#08H MOV A,48H

56、 MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 BACK0: RETI ;-=INT1(回答時(shí)間 R2 調(diào)整程序)= INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B MOV 52H,#0AH MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB p3.1 ,INTB1 AJMP INT1SUB INTB1: JNB P3.1, $ MOV R3,#1 MOV R4,#

57、1 MOV 50H,#0 MOV 51H,#1 MOV 52H,#0 MOV 53H,#1 INTBB1: ACALL DISPLAY JNB P3.4,JIA1 ;指定每次答題加減的分?jǐn)?shù) JNB P3.5,JIAN1 JNB P3.1,BACK1 AJMP INTBB1 INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1: INC R2 ACALL DELAY1 AJMP INT1SUB DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1S

58、UB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB JIA1: INC R3 MOV A,R3 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B ACALL DELAY1 AJMP INTBB1 JIAN1: INC R4 MOV A,R4 MOV B,#0AH DIV AB MOV 52H,A MOV 53H,B ACALL DELAY1 AJMP INTBB1 BACK1: RETI ;=.倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到此程序)= COUNT: MOV R7,#00H;重置定時(shí)器中斷次數(shù) MOV TH1,#3C

59、H MOV TL1,#0B0H;重置定時(shí)器 MOV 52H,#0 RECOUNT:MOV A,R6 ;R6 保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答 ;時(shí)間或回答時(shí)間給 R6 MOV B,#0AH DIV AB;除十分出個(gè)位/十位 MOV 50H,A;取十位 MOV 51H,B;取個(gè)位 MOV A,R6 CJNE A,#07H,$+3 JNC LARGER;大于 5s 跳到 LARGER,小于等于 5s 會(huì)提醒 MOV A,R7 CJNE A,#0AH,FULL;1s 中 0.5s 向下運(yùn)行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK;下面系 1s 的情況,

60、響并顯示號(hào)數(shù)并清 R0,重新計(jì) SETB RING MOV A,R6 JZ QUIT;計(jì)時(shí)完畢 MOV R7,#00H DEC R6;一秒標(biāo)志減 1 AJMP CHECK LARGER: MOV A,R7 CJNE A,#14H,CHECK;如果 1s 向下運(yùn)行,否者跳到查停/顯示 DEC R6;計(jì)時(shí)一秒 R6 自動(dòng)減 1 MOV R7,#00H CHECK: JNB P3.1,QUIT1;如按下停止鍵退出 ACALL DISPLAY JB OK,ACCOUT; 是否為搶答倒計(jì)時(shí),如是則查詢搶答,否則跳過(guò)查詢繼 續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNT ACCOUT: JB P1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論