前沿拓展:
win10系統(tǒng)警報(bào)聲
開始->設(shè)置->輕松使用->鍵盤 在右側(cè)列表中找到粘滯鍵的設(shè)置選擇,第二將兩個(gè)設(shè)置項(xiàng)都關(guān)掉試試。
摘要:在平時(shí)各種競(jìng)賽的搶答過(guò)程中,光靠視覺(jué)是很難判斷出哪組先答題,而且很難維持這個(gè)搶答的秩序,利用基于單片機(jī)的搶答系統(tǒng)可以很好的解決這一問(wèn)題。本設(shè)計(jì)采用 AT89C51單片機(jī),為6人**,采用中斷方式,**式鍵盤掃描,以開關(guān)中的某個(gè)開關(guān)的按下(閉合)作為搶答按鍵。無(wú)人搶答時(shí),6只數(shù)碼管輪流循環(huán)顯示1-6(跑馬),誰(shuí)先搶答,數(shù)碼管停止跑馬,6個(gè)數(shù)碼管同時(shí)亮誰(shuí)的編號(hào),對(duì)應(yīng)的數(shù)碼管亮5次搶答人的編號(hào),并發(fā)出聲音提示,其后再有人按鍵,系統(tǒng)不予響應(yīng),直到復(fù)位鍵按下,開始下一輪搶答。經(jīng)過(guò)調(diào)試使得系統(tǒng)達(dá)到預(yù)期目標(biāo)。
關(guān)鍵詞:**;數(shù)碼管;中斷;單片機(jī)
1 設(shè)計(jì)內(nèi)容
1.1設(shè)計(jì)目標(biāo)
制作一個(gè)6人**,以開關(guān)中的某個(gè)開關(guān)的按下(閉合)作為搶答按鍵。無(wú)人搶答時(shí)六只數(shù)碼管輪流循環(huán)顯示1-6的數(shù)字,當(dāng)有人按下?lián)尨痖_關(guān)時(shí),數(shù)碼管停止跑馬,所有數(shù)碼管同時(shí)顯示搶答者的編號(hào),并且在短暫的停留后,搶答者的數(shù)碼管對(duì)應(yīng)的編號(hào)連續(xù)亮五次并發(fā)出蜂鳴聲。其后再有人按下?lián)尨疰I均無(wú)效,直到按下復(fù)位鍵才繼續(xù)進(jìn)行新的一輪搶答。
1.2設(shè)計(jì)環(huán)境
Win7 Keil uVison2 Proteus7.8
2 各模塊選擇
2.1鍵盤模塊
鍵盤是單片機(jī)系統(tǒng)中通用的輸入設(shè)備,用于向系統(tǒng)輸入數(shù)據(jù)或控制信息。鍵盤模塊分為兩種,一種是**式鍵盤,另外一種是矩陣鍵盤。
**式鍵盤: **式按鍵接口的設(shè)計(jì)優(yōu)點(diǎn)是電路配置靈活,軟件實(shí)現(xiàn)簡(jiǎn)單,但每個(gè)按鍵需占用一根I/O接線,若按鍵較多,資源浪費(fèi)嚴(yán)重。適用于按鍵較少的場(chǎng)合。
矩陣鍵盤:矩陣式鍵盤由行線和列線組成,按鍵位于行線、列線的交叉點(diǎn)上。當(dāng)鍵被按下,則其交點(diǎn)的行線和列線接通。行和列可分別用兩個(gè)I/O口來(lái)控制。
雖然矩陣鍵盤提高了I/O口的利用率,它比較適用于大量鍵盤的場(chǎng)合,但是它的電路復(fù)雜,軟件編程也相對(duì)比較復(fù)雜。本設(shè)計(jì)采用**式鍵盤,鍵盤接口中使用多少根I/O線,鍵盤中就有幾個(gè)按鍵,鍵盤接口使用了8根I/O口線,該鍵盤就有8個(gè)按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。最簡(jiǎn)單的編碼方式就是根據(jù)I/O輸入口所直接反映的相應(yīng)按鍵,按下的狀態(tài)進(jìn)行編碼,稱按鍵直接狀態(tài)碼,對(duì)于這樣編碼的**式鍵盤,CPU可以通過(guò)直接讀取I/O口的狀態(tài)來(lái)獲取按鍵的直接狀態(tài)編碼值,根據(jù)這個(gè)值直接進(jìn)行按鍵識(shí)別,這樣形式的鍵盤結(jié)構(gòu)簡(jiǎn)單,按鍵識(shí)別容易。如下圖1所示。
2.2 **顯示模塊
顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起**作者誤解的前提下提供盡可能豐富的信息,全靠軟件來(lái)解決。**的組別號(hào)碼顯示可以采用液晶顯示,也可以采用數(shù)碼管顯示。
LCD具有低功耗,畫面效果好,分辨率高等特點(diǎn),但由于只需顯示組別數(shù)字,信息亮較少,且由于液晶是以點(diǎn)陣的模式顯示各符號(hào),編程工作量大,成本高。
數(shù)碼管具有耐老化,防曬等特點(diǎn),對(duì)外界環(huán)境要求低,易于維護(hù),同時(shí)精確度高,**作簡(jiǎn)單,采用BCD編碼顯示數(shù)字,程序編譯容易,價(jià)格便宜等特點(diǎn),廣泛應(yīng)用于多數(shù)場(chǎng)合中。
數(shù)碼顯示是采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。所以本設(shè)計(jì)就采用數(shù)碼管顯示。
LED顯示器是由發(fā)光二極管顯示字段的顯示器件。在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是七段LED,這種顯示器有共陰極與共陽(yáng)極兩種。本設(shè)計(jì)采用共陰級(jí)數(shù)碼管。
共陰極LED顯示器的發(fā)光二極管陰極共地,當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),該發(fā)光二極管則點(diǎn)亮。
七段顯示器與單片機(jī)接口:只要將一個(gè)8位并行輸出口與顯示器的發(fā)光二極管引腳相連即可。8位并行輸出口輸出不同的字節(jié)數(shù)據(jù)即可獲得不同的數(shù)字或字符,如下表1所示。通常將控制發(fā)光二極管的8位字節(jié)數(shù)據(jù)稱為段選碼。
N位LED顯示器有N根位選線和8×N根段選線。根據(jù)顯示方式不同,位選線與段選線的連接方法不同。段選線控制字符選擇,位選線控制顯示位的亮、滅。
LED顯示器有靜態(tài)顯示與動(dòng)態(tài)顯示兩種方式。
(1) LED靜態(tài)顯示方式
各位LED的位選線連在一起接地或接+5V;
每位LED的段選線(a-dp)各與一個(gè)八位并行口相連。
在同一時(shí)間里每一位顯示的字符可以各不相同。
(2) LED動(dòng)態(tài)顯示方式
將所有LED的段選線并聯(lián)在一起,由一個(gè)八位I/O口控制,而位選線分別由相應(yīng)的I/O口線控制。 如:8位LED動(dòng)態(tài)顯示電路只需要兩個(gè)八位I/O口。其中一個(gè)控制段選碼,另一個(gè)控制位選。
本設(shè)計(jì)由于用到較多的數(shù)碼管,采用動(dòng)態(tài)顯示方式。
由于所有位的段選碼皆由一個(gè)I/O控制,因此,在每個(gè)瞬間,8位LED只可能顯示相同字符。要想每位顯示不同的字符,必須采用動(dòng)態(tài)掃描顯示方式。即在每一瞬間只使某一位顯示相應(yīng)字符。在此瞬間,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平、共陽(yáng)極送高電平)以保證該位顯示相應(yīng)字符,段選控制I/O口輸出相應(yīng)字符段選碼。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延時(shí)一段時(shí)間,以造成視覺(jué)暫留效果。
不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺(jué)穩(wěn)定的顯示狀態(tài)。由人眼的視覺(jué)特性,每一位LED在一秒鐘內(nèi)點(diǎn)亮不少于30次,其效果和一直點(diǎn)亮相差不多。顯示電路圖如下圖5所示。
2.3 蜂鳴器模塊
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無(wú)法直接驅(qū)動(dòng)的,所以要利用放大電路來(lái)驅(qū)動(dòng),一般使用三極管來(lái)放大電流就可以了。如圖6所示。
2.4 時(shí)鐘電路和復(fù)位電路
單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)內(nèi)各種微**作時(shí)間基準(zhǔn),8XX51單片機(jī)的時(shí)鐘信號(hào)通常有兩種電路形式:內(nèi)部振蕩方式和外部振蕩方式。
內(nèi)部振蕩方式是在引腳 XTAL1和 XTAL2外接晶體振蕩器(簡(jiǎn)稱晶振)。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,并且由于AT89C51具有內(nèi)部振蕩器(需外接晶振,本設(shè)計(jì)采用12MHz),所以采用內(nèi)部振蕩方式。
單片機(jī)的復(fù)位引腳RST出現(xiàn)5ms以上的高電平時(shí),單片機(jī)就完成了復(fù)位**作,本設(shè)計(jì)采用雙復(fù)位,即上電復(fù)位和開關(guān)復(fù)位。上電復(fù)位就是利用電容充電過(guò)程在電阻上產(chǎn)生持續(xù)一定時(shí)間的高電平,得到復(fù)位信號(hào)。時(shí)鐘電路和復(fù)位電路如圖7所示。
電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為 5~30PF。
2.5 六人**總原理圖
本設(shè)計(jì)單片機(jī)采用AT89C51,使用**式鍵盤和數(shù)碼管顯示,如圖8所示。
其中P1.0~P1.5所接的開關(guān)為搶答開關(guān),P3.2所接的開關(guān)為復(fù)位開關(guān),按下即可進(jìn)行新的一輪搶答。
3 軟件設(shè)計(jì)過(guò)程
3.1 搶答系統(tǒng)的整個(gè)流程圖
通過(guò)AT89C51的控制,從而構(gòu)成了整個(gè)電路,總流程圖如圖9所示。
4 調(diào)試過(guò)程
4.1 調(diào)試的基本方法
本設(shè)計(jì)軟件調(diào)試的模塊包括顯示功能模塊、搶答按鍵功能模塊以及報(bào)警功能模塊。各個(gè)**模塊功能調(diào)試成功后,聯(lián)機(jī)調(diào)試,將這些模塊程序通過(guò)主程序合并在一起,對(duì)主程序進(jìn)行調(diào)試,并運(yùn)行一段時(shí)間,看程序是否穩(wěn)定達(dá)到預(yù)期效果。本設(shè)計(jì)才用Keil 調(diào)試和Proteus軟件仿真調(diào)試。
在keil軟件編寫好程序后,生成.hex的文件,如下圖10所示:
在protues軟件里雙擊51單片機(jī)模塊,選擇剛生成的hex文件,如下圖11的界面。
最后單擊運(yùn)行按鈕觀察現(xiàn)象。
4.2 調(diào)試的過(guò)程及問(wèn)題分析
數(shù)碼管顯示調(diào)試:數(shù)碼管跑馬顯示后,加入閃爍之后,不能退出閃爍,經(jīng)過(guò)多次試驗(yàn)之后把閃爍的for語(yǔ)句放在while前,使得這問(wèn)題得以解決。
蜂鳴器模塊調(diào)試:當(dāng)按下?lián)尨鸢存I的時(shí)候,蜂鳴器不能發(fā)出警報(bào)聲,經(jīng)過(guò)仔細(xì)檢查代碼以及分析電路模塊,原因是蜂鳴器的電壓太大了。因?yàn)樵谶x用蜂鳴器的時(shí)候系統(tǒng)設(shè)置電壓為12V,而C51芯片引腳輸出電壓一般為3V左右,顯然小于蜂鳴器的驅(qū)動(dòng)電壓,如果把蜂鳴器的驅(qū)動(dòng)電壓設(shè)為2V,蜂鳴器就能完全驅(qū)動(dòng),從而發(fā)出響聲。
4.3 仿真結(jié)果
以1號(hào)選手搶答成功為例。
上電后,無(wú)按鍵**作的時(shí)候數(shù)碼管輪流循環(huán)顯示1-6,即實(shí)現(xiàn)了跑馬燈的功能,仿真結(jié)果如下圖12。
當(dāng)按下1按鍵時(shí)的結(jié)果如下圖13。
所有數(shù)碼管同時(shí)顯示搶答者的編號(hào)后,最后搶答者的編號(hào)在自己對(duì)應(yīng)的數(shù)碼**亮5次,同時(shí)可以聽到蜂鳴器發(fā)出的警報(bào)聲,如下圖14所示。
圖14 搶答者的編號(hào)亮5次停止
此后其他搶答者再按搶答鍵均無(wú)效,直到按下復(fù)位鍵后繼續(xù)新的一輪搶答,按下復(fù)位鍵后繼續(xù)循環(huán)顯示1-6,如下圖15。
5 設(shè)計(jì)小編綜合來(lái)說(shuō)
5.1 搶答系統(tǒng)的特點(diǎn)
⑴該產(chǎn)品的互換性好,響應(yīng)速度快,抗干擾能力強(qiáng),外圍電路簡(jiǎn)單易懂,因此相對(duì)來(lái)說(shuō)體積小。
⑵該系統(tǒng)能用軟件的方式設(shè)計(jì)硬件,所以用軟件方式設(shè)計(jì)的系統(tǒng)向硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)開發(fā)軟件自動(dòng)完成的,易**作。
⑶具有具體數(shù)字顯示的功能。
⑷可以從以前的組合設(shè)計(jì)轉(zhuǎn)向真正的自由設(shè)計(jì),所以設(shè)計(jì)的移植性好,效率高??蛇m合大規(guī)模的現(xiàn)場(chǎng)制作。
⑸利用按鈕進(jìn)行輸入,輸入簡(jiǎn)單。
⑹具有智能報(bào)警的功能。
⑺因?yàn)檎麄€(gè)系統(tǒng)可集成在一個(gè)芯片上,因此體積小,功耗低,可靠邊性更高。
5.2 設(shè)計(jì)心得
本設(shè)計(jì)在深入理解單片機(jī)原理的基礎(chǔ)理論上,主要設(shè)計(jì)了單片機(jī)實(shí)現(xiàn)各個(gè)功能的模塊,最終實(shí)現(xiàn)了**的功能。在這次課程設(shè)計(jì)中,運(yùn)用了以前所學(xué)的專業(yè)知識(shí),更加鞏固了知識(shí)和對(duì)理論有了更深的理解,在設(shè)計(jì)程序之前,要有一個(gè)較為清晰的思路和程序流程圖,不能妄想一次就做好整個(gè)程序,而要一個(gè)一個(gè)模塊的去實(shí)現(xiàn)功能,最后經(jīng)過(guò)反復(fù)的修改,整合成整個(gè)程序。在設(shè)計(jì)過(guò)程中,掌握了分析單片機(jī)應(yīng)用系統(tǒng),調(diào)試簡(jiǎn)單C51程序以及撰寫設(shè)計(jì)報(bào)告的能力提高了發(fā)現(xiàn)問(wèn)題、分析問(wèn)題和解決問(wèn)題的能力,做到將所學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活中。
歡迎大家點(diǎn)贊轉(zhuǎn)發(fā)收藏評(píng)論,私信發(fā)源代碼哦
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http://m.xiesong.cn/131351.html