八路搶答器課程設(shè)計(jì)說明書_第1頁
八路搶答器課程設(shè)計(jì)說明書_第2頁
八路搶答器課程設(shè)計(jì)說明書_第3頁
八路搶答器課程設(shè)計(jì)說明書_第4頁
八路搶答器課程設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 單片機(jī)課程設(shè)計(jì) 題 目: 八路搶答器 院 別: 機(jī)電學(xué)院 專 業(yè): 機(jī)電工程 摘 要本課程設(shè)計(jì)主要由硬件部分和軟件部分組成。硬件部分中,stc89c52是核心,時(shí)鐘電路、復(fù)位電路、顯示電路以及電源電路等為輔助部分;軟件部分是用匯編語言編程,用keil軟件來編譯、調(diào)試的。本設(shè)計(jì)是以八路搶答為基本理念。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,蜂鳴器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,搶答限定時(shí)間為30s和回答問題的時(shí)間為10s;可以顯示是哪位選手有效搶答;搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,倒計(jì)時(shí)時(shí)間到蜂鳴器將

2、響起提醒主持人;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。 關(guān)鍵詞單片機(jī);數(shù)碼管;搶答器;八路搶答器目 錄前言1一、系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)21.1系統(tǒng)主要功能21.2作用21.3主要技術(shù)性能指標(biāo)2二、總體設(shè)計(jì)32.1系統(tǒng)整體方案設(shè)計(jì)32.2工作原理32.3組成原理框圖4三、系統(tǒng)設(shè)計(jì)53.1接口電路設(shè)計(jì)53.2程序設(shè)計(jì)93.3硬件調(diào)試143.4 keil調(diào)試153.5開發(fā)板調(diào)試15四、設(shè)計(jì)總結(jié)16參考文獻(xiàn)16附錄17 前言目前,搶答器已經(jīng)作為一種必不可少的工具廣泛應(yīng)用于各種智力和知識(shí)競賽場合,但一般的搶答器可靠性低,使用壽命短,介于這些不方便因素,此次設(shè)計(jì)提出了用stc89c52單

3、片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)簡易的八路搶答器。本次設(shè)計(jì)的系統(tǒng)實(shí)用性強(qiáng)、判斷精確、操作簡單。在學(xué)習(xí)了數(shù)字電子技術(shù)和單片機(jī)原理及應(yīng)用這兩門課程之后,該課程設(shè)計(jì)加深對(duì)理論知識(shí)的理解,學(xué)習(xí)理論知識(shí)在實(shí)際中的應(yīng)用,培養(yǎng)動(dòng)手能力和解決問題的能力。熟悉keil及ptoteus軟件的調(diào)試和仿真。通過實(shí)踐提高對(duì)數(shù)字電路、單片機(jī)的認(rèn)識(shí)。啟發(fā)我們的思維,鍛煉團(tuán)結(jié)互助的精神。一、系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)1.1系統(tǒng)主要功能1.1.1搶答功能 當(dāng)主持人按下開始搶答按鍵后,八路按鍵中任一路按鍵首先按下都將閉鎖其他各路按鍵,搶答成功,通過單片機(jī)程序處理后在數(shù)碼管上顯示搶答者的分組號(hào)。1.1.2限時(shí)搶答 設(shè)定搶

4、答時(shí)間 30s(可調(diào)整),當(dāng)主持人按下?lián)尨鸢存I后,30s 內(nèi)搶答有效,搶答時(shí)間已過,報(bào)警并封鎖各路按鍵,搶答無效。1.1.3限時(shí)答題 設(shè)定答題時(shí)間 10s(可調(diào)整),當(dāng)搶答者按下答題按鍵后開始倒計(jì)時(shí),數(shù)碼管顯示剩余時(shí)間,剩余時(shí)間為 0 則發(fā)出報(bào)警信號(hào)。1.1.4顯示功能 在數(shù)碼管上可顯示搶答時(shí)間倒計(jì)時(shí)、 答題倒計(jì)時(shí)及搶答成功者的分組號(hào)。1.2作用搶答器是一個(gè)機(jī)關(guān)學(xué)校開展智力競賽活動(dòng)必不可少的設(shè)備,其廣泛應(yīng)用于學(xué)校、教育部門、企業(yè)事業(yè)工會(huì)組織、俱樂部等單位組織舉辦各種知識(shí)、技術(shù)競賽及文娛活動(dòng)時(shí)作搶答工具使用。1.3主要技術(shù)性能指標(biāo)(1)搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕s0s7

5、表示。(2)設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)s,該開關(guān)由主持人控制。(3)搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在led數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。(4)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)開始答題鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間1秒。(5)參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,顯示器上顯示選手的編號(hào)和答題的時(shí)間,并保持到主持人將系統(tǒng)清除為止。二、總體設(shè)計(jì)2.1系統(tǒng)整體方案設(shè)計(jì)該搶答器以stc89c52單片機(jī)為控

6、制核心,其他外圍電路包括復(fù)位電路、時(shí)鐘電路、報(bào)警電路、led顯示電路、搶答按鍵等。利用c語言編程,使其實(shí)現(xiàn)復(fù)位、定時(shí)和報(bào)警的功能。通過按鍵掃描輸出按鍵信息,并通過單片機(jī)將它轉(zhuǎn)化為在七段數(shù)碼上顯示的字符型。單片機(jī)的p1口為8組搶答按鍵的輸入口,p0.0p0.7為雙位數(shù)碼管的段選口,p2.0p2.7為一位數(shù)碼管的段選口,p3.0p3.1為雙位數(shù)碼管的位選口,p3.2為一位數(shù)碼管的位選口。p3.7和p3.4分別實(shí)現(xiàn)時(shí)間調(diào)整的加1和減1功能;p3.6為報(bào)警電路的控制口。2.2工作原理接通電源后,主持人將系統(tǒng)復(fù)位清零,搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示為零,定時(shí)器顯示設(shè)定時(shí)間“30”秒;主持人按下“開始按鈕,

7、宣布開始,搶答器開始工作。雙位數(shù)碼管“30”秒開始倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,單位數(shù)碼管顯示搶答選手編號(hào),雙位數(shù)碼管顯示回答時(shí)間“10”秒,并禁止二次搶答。主持人按下回答倒計(jì)時(shí)“開始”,雙位數(shù)碼管開始“10”秒倒計(jì)時(shí),倒計(jì)時(shí)時(shí)間到,蜂鳴器發(fā)出報(bào)警信號(hào),主持人停止選手答題并按下“復(fù)位”按鍵停止系統(tǒng)工作。如果再次搶答必須由主持人再次操作“開始”狀態(tài)開關(guān)。2.3組成原理框圖圖2.3.1組成原理框圖三、系統(tǒng)設(shè)計(jì)3.1接口電路設(shè)計(jì)3.1.1時(shí)鐘電路設(shè)計(jì)mcs- 51的時(shí)鐘可以由兩種方式產(chǎn)生, 一種是內(nèi)部方式,

8、利用芯片內(nèi)部的振蕩電路; 另外一種為外部方式. 本論文根據(jù)實(shí)際需要和簡便, 采用內(nèi)部振蕩方式. mcs- 51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器, 引腳 xtal1 和 xtal2 分別是此放大器的輸入端和輸出端. 這個(gè)放大器與作為反饋元件的片外晶體或陶瓷諧振器一起構(gòu)成一個(gè)自激振蕩器.mcs- 51 雖然有內(nèi)部振蕩電路, 但要形成時(shí)鐘, 必須外接元件所以實(shí)際構(gòu)成的振蕩時(shí)鐘電路.外接晶體以及電容 c1 和 c2 構(gòu)成并聯(lián)諧振電路接在放大器的反饋回路中,對(duì)接電容的值雖然沒有嚴(yán)格的要求, 但電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。晶體頻率可在1. 2mh

9、z 12mhz 之間任選, 電容c1和 c2 的典型值在 20pf 100pf 之間選擇, 考慮到本系統(tǒng)對(duì)于外接晶體的頻率穩(wěn)定性要求不高, 所以采取比較廉價(jià)的 11.0592mh晶振, 根據(jù)調(diào)試電容選擇 30pf。如圖3.1.1所示圖3.1.1晶振電路圖3.1.2獨(dú)立式按鍵鍵盤設(shè)計(jì)鍵盤接口中使用多少根i/o線,鍵盤中就有幾個(gè)按鍵,鍵盤接口使用了8根i/o口線,該鍵盤就有8個(gè)按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實(shí)際需要對(duì)鍵盤中的按鍵靈活的編碼。最簡單的編碼方式就是根據(jù)i/o輸入口所直接反映的相應(yīng)按鍵,按下的狀態(tài)進(jìn)行編碼,稱按鍵直接狀態(tài)碼,對(duì)于這樣編碼的獨(dú)

10、立式鍵盤,cpu可以通過直接讀取i/o口的狀態(tài)來獲取按鍵的直接狀態(tài)編碼值,根據(jù)這個(gè)值直接進(jìn)行按鍵識(shí)別,這樣形式的鍵盤結(jié)構(gòu)簡單,按鍵識(shí)別容易。 獨(dú)立式按鍵鍵盤:用于輸入高低電平,八位選手搶答時(shí)高低電平發(fā)生變化,如圖3.1.2所示。圖3.1.2獨(dú)立按鍵接線圖3.1.3數(shù)碼管顯示部分設(shè)計(jì) led動(dòng)態(tài)顯示是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式,其接口電路是把所有顯示器的8個(gè)筆劃段a-dp 同名端并聯(lián)在一起,而每一個(gè)顯示器的公共極com是各自獨(dú)立地受i/o線控制,cpu的字段輸出口送出字形碼時(shí),所有顯示器由于同名端并連接收到相同的字形碼,但究竟哪個(gè)顯示器亮,則取決于com端,而這一端是由i/o控制的,所以

11、就可以自行決定何時(shí)顯示哪一位了,在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間表是極為短暫的,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝將就盡管實(shí)際上各位顯示器并非間時(shí)點(diǎn)亮,但只要掃描速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。搶答器倒計(jì)時(shí)顯示電路:有一個(gè)雙位數(shù)碼管和一個(gè)單位數(shù)碼管組成,雙位數(shù)碼管顯示30s倒計(jì)時(shí),單位數(shù)碼管顯示成功搶答選手編號(hào),如圖3.1.3所示。圖3.1.3選手搶答成功顯示號(hào)碼圖3.1.4蜂鳴器電路設(shè)計(jì)利用程序來控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的巨型波,接上喇叭就能發(fā)出一定頻率的聲音,單片機(jī)通過內(nèi)部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形

12、輸出驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,有選手搶答成功,使蜂鳴器發(fā)出聲音,如圖3.1.4所示。圖3.1.4蜂鳴器接線電路圖根據(jù)上述對(duì)搶答器系統(tǒng)各個(gè)部分的電路設(shè)計(jì),設(shè)計(jì)的完整系統(tǒng)電路圖如圖 3.1.5所示:圖3.1.5完整系統(tǒng)仿真電路圖3.2程序設(shè)計(jì)系統(tǒng)程序分為主程序、子程序兩部分 開始設(shè)置定時(shí)方式程序初始化倒計(jì)時(shí)設(shè)置顯示程序設(shè)計(jì)置賦值初值鍵盤掃描程序序中斷位設(shè)置標(biāo)志位設(shè)置等待中斷 返回3.2.1 主程序 圖3.2.1 主程序流程框圖主程序是系統(tǒng)上電或復(fù)位后首先要執(zhí)行的程序,主程序主要完成系統(tǒng)的初始化、掃描顯示、掃描鍵盤等工作。程序流程如圖3.2.1所示,對(duì)單片機(jī)進(jìn)行初始化,包括設(shè)置堆棧、倒計(jì)時(shí)30s設(shè)置、定時(shí)器t

13、0設(shè)置,外部中斷設(shè)置,鍵盤掃描設(shè)置,初始化狀態(tài)時(shí)顯示00。開始程序初始化按鍵按下顯示相應(yīng)內(nèi)容程序開始倒計(jì)時(shí)鍵盤掃描程序等待中斷返回3.2.2 倒計(jì)時(shí)30s子程序圖3.2.2 定時(shí)器t0中斷子程序框圖當(dāng)程序開始進(jìn)入這個(gè)子程序,開始進(jìn)行初始化,然后進(jìn)行倒計(jì)時(shí)的設(shè)置,設(shè)置為30s倒計(jì)時(shí),等待主持人按下“開始”鍵。開始倒計(jì)時(shí),檢測有沒有鍵按下,若有,單位數(shù)碼管顯示號(hào)碼,雙位數(shù)碼管顯示“10”秒;若沒有,繼續(xù)倒計(jì)時(shí)并顯示,倒計(jì)時(shí)計(jì)完為止,中斷退出,返回到中斷入口處。開始程序初始化按鍵按下顯示相應(yīng)號(hào)碼與倒計(jì)時(shí)時(shí)間鍵盤掃描程序序序返回鍵盤掃描程序按鍵按下倒計(jì)時(shí)開始等待中斷3.2.3倒計(jì)時(shí)10s子程序圖3.2

14、.3 倒計(jì)時(shí)10s子程序框圖當(dāng)程序開始進(jìn)入這個(gè)子程序,開始進(jìn)行初始化,然后進(jìn)行倒計(jì)時(shí)的設(shè)置,設(shè)置為10s倒計(jì)時(shí),等待主持人按下“開始”鍵。開始倒計(jì)時(shí),倒計(jì)時(shí)時(shí)間到,中斷退出,返回到中斷入口處。開始程序初始化鍵盤掃描程序返回譯碼電路顯示號(hào)碼及時(shí)間優(yōu)先編碼電路等待中斷是否有選手按鍵按下3.2.5 選手按鍵程序圖3.2.5 鍵盤掃描程序框圖鍵盤掃描時(shí)先判斷是否允許掃描,是的話允許鍵盤掃描,否的話即不允許鍵盤掃描。不允許掃描就返回調(diào)用,結(jié)束該程序。允許掃描時(shí)開始掃描p1口看有沒有選手按下答題鍵,按下時(shí)此口變?yōu)榈碗娖?,如果沒有選手按鍵,則繼續(xù)掃描,倒計(jì)時(shí)30秒結(jié)束后無鍵按下,則結(jié)束此循環(huán),等待主持人重

15、新按下“開始”鍵才重新開始循環(huán)。開始選手號(hào)碼在數(shù)碼管1顯示出來鍵盤掃描程序序序返回倒計(jì)時(shí)開始等待中斷是否有按鍵按下倒計(jì)時(shí)在數(shù)碼管2顯示出來3.2.6 數(shù)碼管顯示程序 圖3.2.6 顯示子程序框圖進(jìn)入顯示子程序先把選手的號(hào)碼顯示于單位數(shù)碼管,然后是選手的答題時(shí)間十秒鐘倒計(jì)時(shí)顯示在雙位數(shù)碼管,個(gè)位顯示在雙位數(shù)碼管的第一位上,十位顯示在雙位數(shù)碼管的第二位上,同時(shí)等待倒計(jì)時(shí)開始,若開始數(shù)碼管上顯示的數(shù)字則開始進(jìn)行減計(jì)算,進(jìn)行倒計(jì)時(shí)至到結(jié)束或等待中斷。 3.3硬件調(diào)試硬件調(diào)試的調(diào)試比較困難。因?yàn)槭钦{(diào)試所以先不能對(duì)元件進(jìn)行焊接,只能把各個(gè)元件用導(dǎo)線連接起來。調(diào)試的整體過程是:各個(gè)系統(tǒng)逐個(gè)調(diào)試,各部分調(diào)試成

16、功后再進(jìn)行組裝后的整體調(diào)試。調(diào)試過程包括:1. 顯示部分的調(diào)試問題:數(shù)碼管的顯示不穩(wěn)定,不停的閃爍。分析:沒有考慮到干擾及環(huán)境的制約。解決方案:采用電容濾波盡可能去除紋波和干擾。2. 顯示部分的調(diào)試問題:數(shù)碼管顯示數(shù)據(jù)不齊全分析:程序編制存在問題。解決方案:使用程序編制軟件keil與仿真軟件protues進(jìn)行程序的檢查與仿真。3. 控制部分的調(diào)試問題:按下電源按鍵后電路無任何反應(yīng)。分析:焊接電路可能存在短路。解決方案:使用萬用表檢測,發(fā)現(xiàn)短路部分,使用烙鐵使短路部分?jǐn)嚅_。4. 控制部分的調(diào)試問題:按下電源按鍵后數(shù)據(jù)顯示有時(shí)正常有時(shí)又不正常。分析:按鍵接觸不良。解決方案:使用萬用表檢測,發(fā)現(xiàn)按鍵

17、按下后不穩(wěn)定,更換質(zhì)量更好的按鍵。5. 聲音部分的調(diào)試問題:按下電源按鍵后,蜂鳴器在程序的運(yùn)行下無反應(yīng)。分析:蜂鳴器焊接不良或正負(fù)極接反。解決方案:檢查蜂鳴器的焊接,若焊接不良或正負(fù)極接反將其焊接正常。 3.4 keil調(diào)試啟動(dòng)keil軟件,選擇“project”菜單下的“new project”命令,輸入項(xiàng)目的文件名,選擇存儲(chǔ)路徑,點(diǎn)擊“保存”按鈕。在“select device”窗口中選擇“atmel”下的“stc89c52” 芯片,單擊“確定”按鈕。展開“project workspace”窗口中的“target 1”, 右擊 “target 1”,選擇“options for targ

18、et target 1”,選擇“target”選項(xiàng)在keil (mhz)右邊輸入“12m”。選擇“debug”選項(xiàng),選擇“use keil monitor-51 driver”。單擊“settings”按鈕,串口選擇“com1”,波特率選擇“38400”,單擊“ok”按鈕。右擊“source group 1”,選擇“add files to group source group 1,在文件類型中選擇“asm source file”,找到將要編譯的程序,單擊 “add”按鈕,然后再單擊“close”按鈕。單擊“rebuild all target files”,在“build”窗口中觀察編譯結(jié)

19、果,根據(jù)提示修改程序,直到?jīng)]有錯(cuò)誤出現(xiàn)。3.5開發(fā)板調(diào)試根據(jù)程序的設(shè)計(jì)在開發(fā)板上分別連接好各個(gè)端口的連接線,用串口線把計(jì)算機(jī)和試驗(yàn)箱的仿真頭連接好。單擊keil軟件上的“start/stop debug session”按鈕,再單擊“run”按鈕,運(yùn)行程序。觀察試驗(yàn)箱上出現(xiàn)的效果,分析程序的對(duì)錯(cuò),直到調(diào)試出正確的結(jié)果。圖4.3開發(fā)板四、設(shè)計(jì)總結(jié)單片機(jī)課程設(shè)計(jì)是學(xué)習(xí)單片機(jī)的一個(gè)重要環(huán)節(jié)。本次課程設(shè)計(jì)加深了我們對(duì)所學(xué)理論知識(shí)的理解,并能將其熟練應(yīng)用,做到理論與實(shí)際相結(jié)合。我們小組此次的課題是八路搶答器。針對(duì)八路搶答器,我們小組通過上網(wǎng)查閱各種類似的設(shè)計(jì),查找相關(guān)的知識(shí),確定基本設(shè)計(jì)方案,通過仿真驗(yàn)

20、證方案的可行性,并根據(jù)我們所設(shè)計(jì)好的電路到賽格電子商城去購買原材料。采購?fù)暝牧虾?,我們就要開始根據(jù)我們的電路進(jìn)行電路板的焊接。電路的焊接考慮的方面很多,不僅要注意到元件的排版,還要考慮元件的正負(fù)極以及各個(gè)引腳的含義。在小組的通力合作下,我們很快的就把電路焊接好,接下來的任務(wù)就是將寫好的程序下載到芯片中了。按鍵電路的設(shè)計(jì)是本設(shè)計(jì)任務(wù)的一個(gè)難點(diǎn),一點(diǎn)要注意考慮按鍵的“抖動(dòng)”效應(yīng)。根據(jù)實(shí)際情況,選用獨(dú)立式鍵盤并采用“軟件”的方式來消除按鍵的“抖動(dòng)”效應(yīng)。通過這次課程設(shè)計(jì),我們明白學(xué)習(xí)是一個(gè)不斷積累的過程,在工作、生活中都應(yīng)該不斷地學(xué)習(xí),努力的提高自己的知識(shí)和綜合素質(zhì)。知識(shí)必須通過應(yīng)用才能實(shí)現(xiàn)其價(jià)值

21、。有些東西以為學(xué)會(huì)了,但真正到用的時(shí)候才是真的學(xué)會(huì)了。這次的課程設(shè)計(jì)是累并快樂著,此次課程設(shè)計(jì)讓我們學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)時(shí)的隨機(jī)應(yīng)變能力以及與人合作共同提高的能力,都讓我們受益匪淺。總體來說,通過這次課程設(shè)計(jì)學(xué)習(xí),讓我們對(duì)各種電路都有了大概的了解,也學(xué)會(huì)了常用繪圖軟件的使用,在平時(shí)的理論學(xué)習(xí)中遇到的問題都一一解決,加深了我們對(duì)專業(yè)的了解,為以后的學(xué)習(xí)打下了好的開端。參考文獻(xiàn)1、徐愛鈞主編 單片機(jī)原理實(shí)用教程 電子工業(yè)出版社2、閻石主編 數(shù)字電子技術(shù)基本教程 清華大學(xué)出版社3、郭天祥主編 51單片機(jī)c語言教程 電子工業(yè)出版社附錄1、c語言編碼程序如下/*單片

22、機(jī)課程八路搶答器c語言程序設(shè)計(jì)*/#include #define uchar unsigned char#define uint unsigned intsbit wela1=p30; /定義倒計(jì)時(shí)位選sbit wela2=p31;sbit wela_hao=p32; /定義號(hào)碼位選sbit set=p33; /定義號(hào)碼時(shí)間設(shè)置按鍵sbit answer=p34; /定義回答倒計(jì)時(shí)開始sbit clear=p35; /定義系統(tǒng)清除位sbit buzzer=p36; /定義蜂鳴器sbit host=p37; /定義開始位sbit key1=p10; /定義按鍵sbit key2=p11; sb

23、it key3=p12;sbit key4=p13;sbit key5=p14;sbit key6=p15;sbit key7=p16;sbit key8=p17;uchar hao,shu,shu1,shu2,shi,ge,t0,t1,start,flag;int jia;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void init();/*初始函數(shù)申明*/void display(uchar shi,uchar ge,uchar hao);

24、void delay(uint z);void keyscan1();void keyscan();void main() init(); while(1) buzzer=0; display(shi,ge,hao); if(set=0) delay(5);if(set=0) jia=-jia; tr0=0; tr1=0; buzzer=1; delay(10); while(!set); buzzer=0; if(jia0) display(shi,ge,hao); buzzer=0; if(host=0)/主持人 delay(5); if(host=0) flag=1; start=1;

25、buzzer=1; delay(5); while(!host); if(clear=0)/系統(tǒng)清除 delay(5); if(clear=0) tr0=0; tr1=0; shu1=10; shu=shu2; hao=0; delay(5); start=3; buzzer=1; delay(5); while(!clear); tr0=0; /給0關(guān)閉倒計(jì)時(shí)30s程序 tr1=0; /給0關(guān)閉倒計(jì)時(shí)10s程序 shi=0; ge=0; if(flag=1) if(start=0)/選手按下,顯示倒計(jì)時(shí)10秒 wela1=1; wela2=1; delay(1);tr0=0; display

26、(shi,ge,hao); delay(1); if(answer=0) delay(5); if(answer=0) tr0=0; tr1=1; buzzer=1; delay(5); while(!answer); if(start=1)/主持人按下,搶答倒計(jì)時(shí)30秒 wela1=1; wela2=1; delay(1); tr0=1; tr1=0; display(shi,ge,hao); delay(1); keyscan(); void init()/*初始化*/ wela1=1; /關(guān)掉倒計(jì)時(shí)位選 wela2=1; shi=0; ge=0; t0=0; t1=0; flag=0;

27、shu=30; /搶答倒計(jì)時(shí)時(shí)間 shu1=10; /回答倒計(jì)時(shí)時(shí)間 shu2=30; wela_hao=0; hao=0; jia=1; buzzer=0; tmod=0x11; th0=(65536-50000)/256; tl0=(65536-50000)%256; th1=(65536-50000)/256; tl1=(65536-50000)%256; ea=1; et0=1; et1=1; tr0=0; tr1=0;void display(uchar shi,uchar ge,uchar hao)/*數(shù)碼管動(dòng)態(tài)掃描*/ p0=tableshi; wela1=1; wela2=0;

28、 delay(5); p0=tablege; wela1=0; wela2=1; delay(5); wela_hao=0; p2=tablehao; delay(5);void keyscan1() if(host=0) delay(5);if(host=0) shu=shu+1; shu2=shu; buzzer=1; delay(5); while(!host); buzzer=0; if(answer=0) delay(5);if(answer=0) shu=shu-1; shu2=shu; buzzer=1; delay(5); while(!answer); buzzer=0; v

29、oid keyscan()/*按鍵掃描函數(shù)*/ if(key1=0) delay(5);if(key1=0) hao=1; p2=tablehao; start=0; tr0=0; shi=1; ge=0; tr0=0; buzzer=1; delay(5); while(!key1); if(key2=0) delay(5);if(key2=0) hao=2; p2=tablehao; start=0; tr0=0; shi=1; ge=0; buzzer=1; delay(5); while(!key2); if(key3=0) delay(5);if(key3=0) hao=3; p2=tablehao; start=0; tr0=0; shi=1; ge=0; buzzer=1; delay(5); while(!key3); if(key4=0) delay(5);if(key4=0) hao=4; p2=tablehao; start=0; tr0=0; shi=1; ge=0; buzzer=1; delay(5); while(!key4); if(key5=0) delay(5);if(key5=0) hao=5; p2=tablehao; start=0; t

溫馨提示

  • 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. 人人文庫網(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)論