基于51單片機的八路搶答器設(shè)計(1)
基于51單片機的八路搶答器設(shè)計(1),基于,51,單片機,八路,搶答,設(shè)計
25
基于單片機的八路搶答器
編號:
單片機課程設(shè)計報告
題 目:八路搶答器設(shè)計制作
院 (系): 電子工程系
專 業(yè): 電子信息工程技術(shù)
學(xué)生姓名:
學(xué) 號:
指導(dǎo)教師單位:
姓 名:
題目類型:¨理論研究 ¨實驗研究 t工程設(shè)計 ¨工程技術(shù)研究 ¨軟件開發(fā)
2013年7月3日
摘 要
隨著社會的不斷進步,電子技術(shù)也飛速的向前發(fā)展.特別是大規(guī)模集成電路的發(fā)展,把我們帶進了電子化時代。電子產(chǎn)品的日益增多,也讓我們的生活越來越方便。特別是計算機的發(fā)展,真可謂是突飛猛進。自從1946年世界上第一臺計算機的誕生以來,還不到六十年的時間,計算機就取得了舉世矚目的成績。特別是在通信領(lǐng)域,實現(xiàn)了信息一體化的時代。作為大學(xué)生的我們,更需要加強實踐能力的培養(yǎng)。課程設(shè)計在一定程度上反映了我們對理論知識的理解程度,是理論與實踐的橋梁。它不僅能鍛煉我們的動手能力,而且能夠培養(yǎng)我們對問題的思考能力以及對知識的進一步了解。當(dāng)你能把你所學(xué)到知識化作為現(xiàn)實的東西時,我們能力就提升到一個新臺階。
很多人都認(rèn)為學(xué)習(xí)是枯燥無味的,有時覺得與現(xiàn)實太遙遠。在學(xué)習(xí)之余,我們?nèi)匀豢梢哉业揭稽c有趣的事情,比如說做一個聲控?zé)襞荨?shù)字鐘等等。生活中我們要找到自己感興趣的東西。這次綜合課程設(shè)計中,我制作了八路搶答器。
搶答器是為智力競賽參賽者答題時進行搶答而設(shè)計的一種優(yōu)先判決器電路,廣泛應(yīng)用于各種知識競賽、文娛活動等場合。能夠?qū)崿F(xiàn)搶答器功能的方式有多種,可以采用前期的模擬電路、數(shù)字電路或模擬與數(shù)字電路相結(jié)合的方式,但這種方式制作過程復(fù)雜,而且準(zhǔn)確性與可靠性不高,成品面積大,安裝、維護困難。本節(jié)介紹一種利用51單片機作為核心部件進行邏輯控制及信號產(chǎn)生的八路搶答器。近年來,隨著單片機檔次的不斷提高,功能的不斷完善,其應(yīng)用日趨成熟、應(yīng)用領(lǐng)域日趨擴大,特別是工業(yè)測控、尖端武器和日用家電等領(lǐng)域更是因為有了單片機而生輝增色。單片機應(yīng)用技術(shù)已成為一項新的工程應(yīng)用技術(shù)。本次課程設(shè)計我們做的是八路搶答器,我們采用STC89C51單片機實現(xiàn)搶答功能,性能更穩(wěn)定,更易操作調(diào)試。
關(guān)鍵詞:多路數(shù)字搶答器 STC89C51 PROTEUS
目 錄
·引 言 4
·緒 論 5
第1章 系統(tǒng)設(shè)計內(nèi)容 5
1.1系統(tǒng)設(shè)計依據(jù) 5
1.2設(shè)計任務(wù)和要求 5
1.3 設(shè)計目的 6
1.4 設(shè)計要點 6
第2章 硬件設(shè)計 7
2.1系統(tǒng)工作介紹 7
2.2 單片機控制原理 7
2.3 搶答器的原理 12
2.4 功能模塊電路 13
2.4.1開始搶答電路 13
2.4.2 選手搶答鍵 13
2.4.3 顯示與顯示驅(qū)動電路 14
2.4.4蜂鳴器音頻輸出電路 14
第3章 軟件設(shè)計 15
3.1程序設(shè)計 15
3.1.1 系統(tǒng)流程圖 15
3.1.2顯示搶答違規(guī)流程圖 16
3.1.3搶答成功流程圖 16
3.2 程序代碼 17
3.2.1 主程序 17
3.2.2 定時器子程序 21
3.2.3 延時子程序 22
3.2.4 顯示子程序 22
第4章 系統(tǒng)調(diào)試 23
第5章 結(jié)論 23
參考文獻資料 24
附錄一:搶答器原理圖 25
附錄二:仿真圖 25
·引 言
隨著電子技術(shù)的飛速發(fā)展,基于單片機的控制系統(tǒng)已經(jīng)廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、電力、電子、智能樓宇等行業(yè)。微型計算機作為嵌入式控制系統(tǒng)的主體與核心,代替了傳統(tǒng)的控制系統(tǒng)的常規(guī)電子線路。同時樓宇智能化的發(fā)展與成熟,也為基于單片機的照明控制系統(tǒng)的普及與應(yīng)用奠定了堅實的基礎(chǔ)。
電子智能搶答器在搶答過程中,為了知道哪一組或哪一位選手先回答問題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用單片機系統(tǒng)來設(shè)計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒也可以分辨出使哪組優(yōu)先回答問題。搶答組數(shù)可以在八組以內(nèi)任意使用,本系統(tǒng)設(shè)計為模塊形式采用九針插頭進行連接,系統(tǒng)工作原理本系統(tǒng)采用AT89C51單片機作為核心??刂葡到y(tǒng)的五個模塊分別為:單片機最小系統(tǒng)、顯示模塊、顯示驅(qū)動模塊、搶答開關(guān)模塊、音樂音頻輸出模塊。
多路數(shù)字搶答器在各種智力競賽中經(jīng)常用到。在各校舉行的各種競賽中我們也經(jīng)??吹接袚尨鸬沫h(huán)節(jié),舉辦方多數(shù)采用讓選手通過舉答題板的方法判斷選手的答題權(quán),這在某種程度上會因為主持人的主觀誤斷造成比賽的不公平性。為解決這個問題,我準(zhǔn)備借本次課程設(shè)計的機會制作一個八路數(shù)顯搶答器。一方面加深我們對所學(xué)習(xí)的知識的了解,鞏固模擬、數(shù)字電路知識,也提升我們解決日常生活中常見問題的能力,掌握一般設(shè)計方法與設(shè)計步驟。積累實際設(shè)計制作經(jīng)驗,為走向更復(fù)雜更實用的應(yīng)用領(lǐng)域奠定基礎(chǔ)??刂葡到y(tǒng)主要由單片機控制電路、存儲器接口電路及顯示電路組成。具體以單片機為系統(tǒng)工作核心,負(fù)責(zé)控制各個部分協(xié)調(diào)工作。在其外圍接上了復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚聲器,其中用到了WAVE軟件,集成調(diào)試環(huán)境,集成編輯器、編譯器、調(diào)試器,支持軟件模擬等。同時也用到了PROTEUS軟件,通過仿真可完全實現(xiàn)對所設(shè)計系統(tǒng)的功能的模擬。
·緒 論
單片機作為計算機的一個重要分支,其應(yīng)用范圍很廣,發(fā)展也很快,它已成為在現(xiàn)代電子技術(shù)、計算機應(yīng)用、網(wǎng)絡(luò)、通信、自動控制與計量測試、數(shù)據(jù)采集與信號處理等技術(shù)中日益普及的一項新興技術(shù),應(yīng)用范圍十分廣泛。對于計算機專業(yè)的學(xué)生來說,即使暫時沒有從事單片機的應(yīng)用與開發(fā),學(xué)習(xí)單片機也有很重要的意義。學(xué)習(xí)它,不僅為將來可能從事該方面的開發(fā)打下基礎(chǔ),另一方面,由于單片機作為微型計算機的一個種類,麻雀雖小,五臟俱全,可以把它當(dāng)作微型計算機的一個簡化模型來看待,學(xué)習(xí)單片機可以加深對微型計算機工作原理的理解,更加清楚計算機的脈絡(luò)。同時,提供了一個實際應(yīng)用手段。21世紀(jì),是一個信息技術(shù)飛速發(fā)展的時代,智力競賽是一種形式比較活潑的教育方式,是人們休閑娛樂生活的一部分。這些競賽一方面充實了人們的娛樂生活,另一方面也提高了人們努力汲取相關(guān)領(lǐng)域的知識的興趣。智力競賽,也就是幾個參賽選手之間在規(guī)定的時間,規(guī)定的地點相互競爭的比賽。
搶答是各種競賽常用的一種形式。在搶答賽中,往往要有主持人宣布搶答的開始,還要確定是哪個選手搶到了答題權(quán),具體答題的時間有時也要設(shè)定。這些如果僅憑主持人的主觀判斷,很容易出現(xiàn)誤判的情況。因此,在競賽中,搶答器就扮演了一個非常重要的角色。
第1章 系統(tǒng)設(shè)計內(nèi)容
1.1系統(tǒng)設(shè)計依據(jù)
搶答器由計數(shù)器、寄存器、集成定時器和譯碼顯示等組合、時序電路組成??煞譃閾尨痣娐罚〞r電路,報警電路等幾個單元部分。每個單元電路分別可以處理一些搶答競賽中的基本問題。
本次課程設(shè)計設(shè)計的是一個多路定時搶答器,是一個多于兩位選手參賽的一個搶答器,具有鎖存和顯示功能。同時有主持人控制系統(tǒng)的清零和搶答的開始。搶答開始后,若有任何一名選手按動搶答按鈕,搶答器就會顯示該選手編號直至系統(tǒng)被主持人清零,并有揚聲器發(fā)出提示,同時其他人再搶答就無效了。這次設(shè)計的搶答器還有自動定時功能,主持人可以設(shè)定選手答題的時間。當(dāng)主持人啟動“開始”鍵后,定時器會自動減計時,這個會顯示在顯示器上。選手只有在搶答時間內(nèi)搶答才有效,若在答題時間內(nèi)沒有選手答題,時間到時,報警電路就會發(fā)出警報亮燈并且禁止搶答。
1.2設(shè)計任務(wù)和要求
以單片機為核心,設(shè)計一個8位競賽搶答器。
1)搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕S0-S7表示。
2)設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。
3)搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。
4)搶答器具有定時搶答功能,且一次搶答的時間由主持人設(shè)定(如30s等)。當(dāng)主持人啟動“開始”按鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)時間為0.5s左右。
5)參賽選手在設(shè)定時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手編號和搶答時間,并保持到主持人將系統(tǒng)清除為止。
6)如果定時時間到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00;
7)設(shè)計出軟件編程方法,并寫出源代碼;
8)用PROTEUS進行仿真;
9)論文格式要符合學(xué)院的統(tǒng)一規(guī)定,結(jié)構(gòu)要合符邏輯,表達要得體。
1.3 設(shè)計目的
通過設(shè)計學(xué)習(xí)單片機最小系統(tǒng)的基本設(shè)計方法,掌握單片機應(yīng)用系統(tǒng)的開發(fā)調(diào)試過程。
(1)學(xué)習(xí)單片機開發(fā)工具功能、特點和使用方法。
(2)學(xué)會單片機控制系統(tǒng)程序的編制和編制和調(diào)試方法。
(3)設(shè)計單片機搶答器硬件電路,繪制出電路原理圖。
(4)編制并調(diào)試出鍵盤掃描程序和顯示驅(qū)動程序。
(5)掌握單片機定時器的基本用法,編制出定時器的中斷程序。
1.4 設(shè)計要點
根據(jù)控制系統(tǒng)的工作原理和執(zhí)行裝置,可以將系統(tǒng)設(shè)計分為硬件和軟件兩大部分。硬件設(shè)計部分,包括編寫電路原理圖、合理選擇元器件、焊接各個元器件,然后對硬件性能進行調(diào)試、測試,以達到設(shè)計要求。軟件設(shè)計部分,首先在設(shè)計之前完成系統(tǒng)總框圖和確定各個功能模塊,然后進行具體設(shè)計,包括各模塊的流程圖,選擇合適的編程語言和軟件應(yīng)用程序,進行編程設(shè)計等;最后是通過軟件對程序進行調(diào)試、測試,以及仿真,以達到性能的最優(yōu)化。
下面是軟硬件設(shè)計方法確定的。軟件設(shè)計的方法與開發(fā)環(huán)境的選取有著直接的關(guān)系,本系統(tǒng)由于是采用51系列單片機,因此使用Keil C語言進行開發(fā)。此編程工具相比匯編語言具有結(jié)構(gòu)化、適用范圍大、可移植性好等特點。本系統(tǒng)軟件設(shè)計采用模塊化系統(tǒng)設(shè)計方法,先編寫各個功能模塊子程序,然后進行組合與調(diào)整,經(jīng)過調(diào)試后,可以進行仿真測試,已達到設(shè)計功能要求。為配合軟件的靈活設(shè)計,硬件電路是采用結(jié)構(gòu)化系統(tǒng)設(shè)計方法,該方法保證設(shè)計電路的標(biāo)準(zhǔn)化、模塊化。硬件電路的設(shè)計最重要的選擇用于控制的單片機,再確定與之配套的外圍芯片,使所設(shè)計的系統(tǒng)既經(jīng)濟又高性能。硬件電路設(shè)計可以在焊接元器件之前畫出詳細電路圖,標(biāo)出芯片的型號、器件參數(shù)值,根據(jù)電路圖在仿真軟件上進行調(diào)試,發(fā)現(xiàn)設(shè)計錯誤時立即修改,高效,準(zhǔn)確地完成硬件設(shè)計。
第2章 硬件設(shè)計
2.1系統(tǒng)工作介紹
本系統(tǒng)采用單片機作為整個控制核心??刂葡到y(tǒng)主要由:顯示模塊、控制模塊、報警模塊、搶答模塊組成。工作時,該系統(tǒng)通過矩陣鍵盤輸入搶答信號,經(jīng)單片機的處理后,輸出控制信號,利用一個4位數(shù)碼管來完成顯示功能并伴隨蜂鳴器報警,用按鍵來讓選手進行搶答,在數(shù)碼管上顯示哪一組先答題,從而實現(xiàn)整個搶答過程。
當(dāng)主持人按下開始鍵時,向單片機P3.2引腳輸入一個低電平信號,表示整個電路開始工作,此時數(shù)碼管前兩位顯示選手編號(無人搶答顯示00),后兩位顯示倒計時剩余時間。若在25秒內(nèi)仍然無人搶答,蜂鳴器在最后5秒發(fā)出連續(xù)報警,提示搶答時間快要結(jié)束;若在30秒內(nèi)有人搶答,并且搶答成功,則將選手編號顯示在數(shù)碼管前兩位上,后兩位顯示搶答剩余時間,同時蜂鳴器發(fā)出一聲報警,提示其他沒有搶答的選手此題已被人搶答成功。若在搶答過程中遇見特殊情況,主持人則可以通過時間加,時間減按鍵來進行時間調(diào)節(jié)。若要開始新的一輪搶答,主持人按下復(fù)位鍵再按開始鍵即可。
此次用單片機控制的搶答器思路簡單明了,可操作性強,可靠性高,擴展功能強,能夠完全實現(xiàn)普通搶答器的基本功能。
圖2-1 單片機搶答器設(shè)計方案
2.2 單片機控制原理
單片機(SCM)是單片微型計算機(Single Chip Microcomputer)的簡稱。它是把中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、I/O接口電路、定時/計數(shù)器以及輸入輸出適配器都集成在一塊芯片上,構(gòu)成一個完整的微型計算機。它的最大優(yōu)點是體積小,可放在儀表內(nèi)部。但存儲量小,輸入輸出適配器簡單,功能較低。目前,單片機在民用和工業(yè)測控領(lǐng)域得到最廣泛的應(yīng)用,早已深深地融入人們的生活中。
簡單的說,用單片機系統(tǒng)來設(shè)計搶答器,實現(xiàn)兩組的搶答時間即使是相差幾微秒,也可分辨出哪組優(yōu)先答題。
P0端口(P0.0-P0.7):P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1端口(P1.0-P1.7):P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2端口(P2.0-P2.7):P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3端口(P3.0-P3.7):
P3口管腳是一個帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。
STC89C51是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35Mhz,6T/12T可選。
圖2-2 STC89C51單片機引腳圖
單片機是美國STC公司最新推出的一種新型51內(nèi)核的單片機。片內(nèi)含有Flash程序存儲器、SRAM、UART、SPI、PWM等模塊。
(一)STC89C51主要功能、性能參數(shù)如下:
(1)內(nèi)置標(biāo)準(zhǔn)51內(nèi)核,機器周期:增強型為6時鐘,普通型為12時鐘;
(2)工作頻率范圍:0~40MHZ,相當(dāng)于普通8051的0~80MHZ;
(3)STC89C51RC對應(yīng)Flash空間:4KB;
(4)內(nèi)部存儲器(RAM):512B;
(5)定時器\計數(shù)器:3個16位;
(6)通用異步通信口(UART)1個;
(7)中斷源:8個;
(8)有ISP(在系統(tǒng)可編程)\IAP(在應(yīng)用可編程),無需專用編程器\仿真器;
(9)通用I\O口:32\36個;
(10)工作電壓:3.8~5.5V;
(11)外形封裝:40腳PDIP、44腳PLCC和PQFP等。
(二)STC89C51單片機的引腳說明:
VCC:供電電壓。
GND:接地。
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時實際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號以完成不同的操作。這是由硬件自動完成的,不需要我們操心,1然后再實行讀引腳操作,否則就可能讀入出錯,為什么看上面的圖,如果不對端口置1端口鎖存器原來的狀態(tài)有可能為0Q端為0Q^為1加到場效應(yīng)管柵極的信號為1,該場效應(yīng)管就導(dǎo)通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1,也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1。若先執(zhí)行置1操作,則可以使場效應(yīng)管截止引腳信號直接加到三態(tài)緩沖器中實現(xiàn)正確的讀入,由于在輸入操作時還必須附加一個準(zhǔn)備動作,所以這類I/O口被稱為準(zhǔn)雙向口。89C51的P0/P1/P2/P3口作為輸入時都是準(zhǔn)雙向口。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。
ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
(三)STC89C51單片機最小系統(tǒng):
最小系統(tǒng)包括單片機及其所需的必要的電源、時鐘、復(fù)位等部件,能使單片機始終處于正常的運行狀態(tài)。電源、時鐘等電路是使單片機能運行的必備條件,可以將最小系統(tǒng)作為應(yīng)用系統(tǒng)的核心部分,通過對其進行存儲器擴展、A/D擴展等,使單片機完成較復(fù)雜的功能。
STC89C51是片內(nèi)有ROM/EPROM的單片機,因此,這種芯片構(gòu)成的最小系統(tǒng)簡單﹑可靠。用STC89C52單片機構(gòu)成最小應(yīng)用系統(tǒng)時,只要將單片機接上時鐘電路和復(fù)位電路即可,結(jié)構(gòu)如圖2-3所示,由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。
時鐘電路
復(fù)位電路
51系列單片機
I/O
接口
時鐘電路
復(fù)位電路
STC89C51單片機
I/O口
圖2-3 單片機最小系統(tǒng)原理框圖
(1) 時鐘電路
STC89C51單片機的時鐘信號通常有兩種方式產(chǎn)生:一是內(nèi)部時鐘方式,二是外部時鐘方式。內(nèi)部時鐘方式如圖2-4所示。在STC89C51單片機內(nèi)部有一振蕩電路,只要在單片機的XTAL1(18)和XTAL2(19)引腳外接石英晶體(簡稱晶振),就構(gòu)成了自激振蕩器并在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率范圍在1.2~12MHz間選擇,典型值為12MHz和6MHz。
圖2-4 STC89C51內(nèi)部時鐘電路
(2) 復(fù)位電路
當(dāng)在STC89C51單片機的RST引腳引入高電平并保持2個機器周期時,單片機內(nèi)部就執(zhí)行復(fù)位操作(若該引腳持續(xù)保持高電平,單片機就處于循環(huán)復(fù)位狀態(tài))。
復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。
最簡單的上電自動復(fù)位電路中上電自動復(fù)位是通過外部復(fù)位電路的電容充放電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位。
除了上電復(fù)位外,有時還需要按鍵手動復(fù)位。本設(shè)計就是用的按鍵手動復(fù)位。按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過RST(9)端與電源Vcc接通而實現(xiàn)的。按鍵手動復(fù)位電路見圖2-5。時鐘頻率用11.0592MHZ時C取10uF,R取10kΩ。
圖2-5 STC89C51復(fù)位電路
(3) STC89C51中斷技術(shù)概述
中斷技術(shù)主要用于實時監(jiān)測與控制,要求單片機能及時地響應(yīng)中斷請求源提出的服務(wù)請求,并作出快速響應(yīng)、及時處理。這是由片內(nèi)的中斷系統(tǒng)來實現(xiàn)的。當(dāng)中斷請求源發(fā)出中斷請求時,如果中斷請求被允許,單片機暫時中止當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)到中斷服務(wù)處理程序處理中斷服務(wù)請求。中斷服務(wù)處理程序處理完中斷服務(wù)請求后,再回到原來被中止的程序之處(斷點),繼續(xù)執(zhí)行被中斷的主程序。
圖2-6為整個中斷響應(yīng)和處理過程。
如果單片機沒有中斷系統(tǒng),單片機的大量時間可能會浪費在查詢是否有服務(wù)請求發(fā)生的定時查詢操作上。采用中斷技術(shù)完全消除了單片機在查詢方式中的等待現(xiàn)象,大大地提高了單片機的工作效率和實時性。
2.3 搶答器的原理
搶答器的工作原理是采用單片機最小系統(tǒng),用程序查詢方式采用動態(tài)顯示組號。主持人按下開始搶答鍵才可以搶答。主持人沒有按下開始搶答按紐(P3.0),有人搶答則搶答違規(guī),報警并顯示組號,主持人按下開始搶答開關(guān)重新?lián)尨?。主持人按下開始搶答按紐(P3.0),蜂鳴響聲提示,數(shù)碼管30秒倒計時搶答,蜂鳴器響聲提示并顯示他的組號,30秒內(nèi)有人搶答則開始60秒倒計時(60秒內(nèi)必須回答完問題),最后五秒倒計時警報。單片機最小系統(tǒng)、搶答按鍵模塊(四位并行數(shù)碼顯示)、顯示模塊、顯示驅(qū)動模塊、搶答開關(guān)模塊、蜂鳴器音頻輸出模塊。
圖2.3搶答器總原理圖
2.4 功能模塊電路
2.4.1開始搶答電路
在此次課程設(shè)計電路中當(dāng)一個問題結(jié)束主持人后按下復(fù)位開關(guān)后進行下一題的準(zhǔn)備。
圖2.4.1開始搶答電路
2.4.2 選手搶答鍵
89C51的P1口做一個為選手搶答的輸入按鍵引腳,P1.0至P1.7輪流輸出低電位,給每一個選手編號1至8,當(dāng)選手按下按鈕時,P1口個端口的電平變化從P1口輸入,經(jīng)單片機處理后從P0輸出由數(shù)碼管顯示搶答者編號。
圖2.4.2 選手搶答電路
2.4.3 顯示與顯示驅(qū)動電路
此電路包括顯示和驅(qū)動,顯示采用數(shù)碼管,驅(qū)動用P2口, 違規(guī)者編號、搶答30秒倒計時、正常搶答者編號和回答問題時間60秒倒計時,數(shù)碼管采用動態(tài)顯示。驅(qū)動電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當(dāng)為低電平則能驅(qū)動數(shù)碼管使其顯示數(shù)字。在+5V電壓下接1k的電阻,保證正常壓降。
圖2.4.3 示與顯示驅(qū)動電路
2.4.4蜂鳴器音頻輸出電路
通過控制不同頻率的矩形脈沖來控制蜂鳴器發(fā)聲。此次課程設(shè)計中只需要一些簡單的提示聲音和稍微顯眼的燈控,有搶答違規(guī),開始搶答,搶答時間結(jié)束和回答時間到得提示聲和亮燈提醒。
圖2.3.4蜂鳴器音頻輸出電路
第3章 軟件設(shè)計
3.1程序設(shè)計
3.1.1 系統(tǒng)流程圖
開 始
初始化
讀鍵盤是否有鍵按下
中斷條件是否滿足
調(diào)用顯示搶答違
規(guī)并報警子程序
進入中斷程序
開中斷并響聲提示
設(shè)定定時器值
并啟動定時器
30秒搶答時間并顯示
并顯示
調(diào)用讀鍵子程序為延時程序
是否有鍵按下
60秒到中斷返回
調(diào)用搶答者獲得的回答問題子程序
3.1.2顯示搶答違規(guī)流程圖
開 始
報警一直提示
顯示違規(guī)者編號
3.1.3搶答成功流程圖
開 始
響聲提示
設(shè)置定時器初值并啟動
顯示搶答者后30秒倒計時
60秒答問題時間到并響聲提示
RET
3.2 程序代碼
3.2.1 主程序
void main()
{
init();
if(k==0) //主持人按下開始鍵
{
Timer();
delay(10);
while(!k);
while(1)
{
dis();
m=0;
n=0;
if(second==10){beep=1;delay(500);beep=0;}
if(second==0) {
TR0=0;n=1;
if(k==0)
{beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}
}
if(n==0)
{
if(k1==0) {delay(5);if(k1==0);while(!k1);t=1;}
else if(k2==0) {delay(5);if(k2==0);while(!k2);t=2;}
else if(k3==0) {delay(5);if(k3==0);while(!k2);t=3;}
else if(k4==0) {delay(5);if(k4==0);while(!k2);t=4;}
else if(k5==0) {delay(5);if(k5==0);while(!k2);t=5;}
else if(k6==0) {delay(5);if(k6==0);while(!k2);t=6;}
else if(k7==0) {delay(5);if(k7==0);while(!k2);t=7;}
else if(k8==0) {delay(5);if(k8==0);while(!k2);t=8;}
else if(k==0) {delay(5);if(k==0);while(!k);t=0;i=0;second=29;beep=1;delay(500);beep=0;TR0=1;}
}
while(t)
{
if(m==0) //開關(guān),保證程序只執(zhí)行一次
{
switch(t)
{
case 1:
{
TR0=0;i=1;second=0;beep=1;delay(500);beep=0;
a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
}
case 2:
{
TR0=0;i=2;second=0;beep=1;delay(500);beep=0;
a2=0;a1=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
}
case 3:
{
TR0=0;i=3;second=0;beep=1;delay(500);beep=0;
a3=0;a1=1;a2=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
}
case 4:
{
TR0=0;i=4;second=0;beep=1;delay(500);beep=0;
a4=0;a1=1;a2=1;a3=1;a5=1;a6=1;a7=1;a8=1;m=1;break;
}
case 5:
{
TR0=0;i=5;second=0;beep=1;delay(500);beep=0;
a5=0;a1=1;a2=1;a3=1;a4=1;a6=1;a7=1;a8=1;m=1;break;
}
case 6:
{
TR0=0;i=6;second=0;beep=1;delay(500);beep=0;
a6=0;a1=1;a2=1;a3=1;a4=1;a5=1;a7=1;a8=1;m=1;break;
}
case 7:
{
TR0=0;i=7;second=0;beep=1;delay(500);beep=0;
a7=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a8=1;m=1;break;
}
case 8:
{
TR0=0;i=8;second=0;beep=1;delay(500);beep=0;
a8=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;m=1;break;
}
}
}
if(a1==0) //選手1的分?jǐn)?shù)
{ second=score1;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score1+=1;if(score1==99)score1=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score1-=1;if(score1==0)score1=60;}
dis();
}
else if(a2==0)
{ second=score2;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score2+=1;if(score2==99)score2=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score2-=1;if(score2==0)score2=60;}
dis();
}
else if(a3==0)
{ second=score3;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score3+=1;if(score3==99)score3=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score3-=1;if(score3==0)score3=60;}
second=score3;
dis();
}
else if(a4==0)
{
second=score4;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score4+=1;if(score4==99)score4=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score4-=1;if(score4==0)score4=60;}
second=score4;
dis();
}
else if(a5==0)
{
second=score5;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score5+=1;if(score5==99)score5=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score5-=1;if(score5==0)score5=60;}
second=score5;
dis();
}
else if(a6==0)
{
second=score6;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score6+=1;if(score6==99)score6=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score6-=1;if(score6==0)score6=60;}
second=score6;
dis();
}
else if(a7==0)
{
second=score7;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score7+=1;if(score7==99)score7=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score7-=1;if(score7==0)score7=60;}
second=score7;
dis();
}
else if(a8==0)
{
second=score8;
dis();
if(m1==0) {delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score8+=1;if(score8==99)score8=60;}
else if(m2==0) {delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score8-=1;if(score8==0)score8=60;}
second=score8;
dis();
}
if(k==0){i=0;t=0;second=29;beep=1;delay(500);beep=0;TR0=1;}
while(!k);
}
}
}
}
3.2.2 定時器子程序
void Timer()
{
TMOD|=0x01;
TH0=0xd8; //初值55536,計數(shù)10000次,每次1US,總計10ms
TL0=0xf0;
IE=0x82; //這里是中斷優(yōu)先級控制EA=1(開總中斷),ET0=1(定時器0允許中斷),這里用定時器0來定時
TR0=1;
}
void tim(void) interrupt 1 using 1 //為定時中斷TR0
{
TH0=0xd8; //重新賦值
TL0=0xf0;
count++;
if(count==100) //100*10ms=1秒
{
count=0;
second--; //秒減1
}
}
3.2.3 延時子程序
void delay(uint z) //延時函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
3.2.4 顯示子程序
void display (uchar shiwei,gewei,xuanshou) //顯示函數(shù)
{
P2=0xfe; //打開顯示時間十位的位選
P0=shiwei;//顯示十位
delay(5);
P2=0xfd; //個位位選
P0=gewei;
delay(5);
P2=0xf7; //選手位選
P0=xuanshou;
delay(5);
}
第4章 系統(tǒng)調(diào)試
軟件的設(shè)計與調(diào)試實行分模塊實現(xiàn)的方法。本設(shè)計軟件調(diào)試中的分模塊包括顯示功能模塊,調(diào)整時間功能模塊,搶答功能模塊以及報警功能模塊。各個獨立模塊功能調(diào)試成功后,將這些模塊程序通過主程序合并在一起,最后再對合并后的總程序進行調(diào)試。各軟件模塊首先要通過PC和仿真器進行軟件調(diào)試,當(dāng)仿真效果符合要求后在燒寫進單片機看是否在實際電路板上正常工作。本設(shè)計通過利用Proteus仿真,將所編寫的程序用wave軟件編譯,所仿真原理圖見附錄。
第5章 結(jié)論
自接觸單片機以來,一直覺得單片機非常難,這次的課程設(shè)計我開始是以老師布置題目為主要選擇對象的,但是后面發(fā)現(xiàn),像八路搶答器在我腦海中根本沒得一點意象,上網(wǎng)搜了很多資料,也感覺不怎么很懂,于是問老師怎么弄,后面發(fā)現(xiàn)老師的意見和我的原本的程序和圖只有幾個地方不同,于是便將兩者綜合了一下,經(jīng)調(diào)試和運行后,發(fā)現(xiàn)還行的通,于是便開始了忐忑的正文模版之路,以為快搞完了,后面發(fā)現(xiàn)其實程序和圖還是要細細的弄懂才能寫好報告,于是我又將程序和圖細細的剖析了一遍,慢慢的畫出流程圖,然后慢慢將流程圖和proteus圖畫好和截取下來,經(jīng)過最近這段時間的在電腦前面的駐守,覺得只要自己肯付出和努力,發(fā)現(xiàn)其實很多的東西不是那么難懂的,以后還是要好好提升自己的動手能力和獨立思考的能力。
在此,還是非常感謝我們的指導(dǎo)老師,她是一位很負(fù)責(zé)和很細心的老師,謝謝她的輔導(dǎo)和鼓勵,這次的課程設(shè)計給了我一個很好的開始,我會好好努力的以后??v然課程設(shè)計是學(xué)校所要求的科目,縱然每次都這么緊張和辛苦,但是我還是覺得有些東西做了,就一定會有一定的價值吧。
參考文獻資料
[1] 康華光,鄒壽彬編.電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)[M].北京:高等教育出版社,2005
[2] 謝自美編.電子線路設(shè)計·實驗·測試 (第二版) [M].上海:電子工業(yè)出版社,2001
[3] 何立民.MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999年
[4] 陸坤,奚大順,李之權(quán)等,電子設(shè)計技術(shù)[M].成都:電子科技大學(xué)出版社1997年[5] 何立民.MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999年
[5] 胡學(xué)海.單片機原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:京電子工業(yè)出版社,2005年
[6] 林凌,李剛,丁茹,李小霞.新型單片機接口器件與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005年
[7] 李朝青主編,《單片機原理與接口技術(shù)》.北京航天航空大學(xué)出版社,1994年
[8] 何立民主編,《單片機應(yīng)用與設(shè)計》.北京航天航空大學(xué)出版社,1990年
[9] 鄒逢興編著,《計算機硬件技術(shù)基礎(chǔ)實驗教程》高等教育出版社,1994年
[10] 裴亞男,付智輝主編,《數(shù)字邏輯》,西南交通大學(xué)出版社,2005年
[11] 李海主編,《74系列芯片手冊》, 重慶大學(xué)出版社, 1999年
附錄一:搶答器原理圖
附錄二:仿真圖
收藏
編號:3962083
類型:共享資源
大?。?span id="c5aj661" class="font-tahoma">1.21MB
格式:ZIP
上傳時間:2019-12-25
25
積分
- 關(guān) 鍵 詞:
-
基于
51
單片機
八路
搶答
設(shè)計
- 資源描述:
-
基于51單片機的八路搶答器設(shè)計(1),基于,51,單片機,八路,搶答,設(shè)計
展開閱讀全文
- 溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。