摘要:在平時各種競賽的搶答過程中,光靠視覺是很難判斷出哪組先答題,而且很難維持這個搶答的秩序,利用基于單片機的搶答系統可以很好的解決這一問題。本設計采用 AT89C51單片機,為6人搶答器,采用中斷方式,獨立式鍵盤掃描,以開關中的某個開關的按下(閉合)作為搶答按鍵。無人搶答時,6隻數碼管輪流循環顯示1-6(跑馬),誰先搶答,數碼管停止跑馬,6個數碼管同時亮誰的編号,對應的數碼管亮5次搶答人的編号,并發出聲音提示,其後再有人按鍵,系統不予響應,直到複位鍵按下,開始下一輪搶答。經過調試使得系統達到預期目标。
關鍵詞:搶答器;數碼管;中斷;單片機
1 設計内容
1.1設計目标
制作一個6人搶答器,以開關中的某個開關的按下(閉合)作為搶答按鍵。無人搶答時六隻數碼管輪流循環顯示1-6的數字,當有人按下搶答開關時,數碼管停止跑馬,所有數碼管同時顯示搶答者的編号,并且在短暫的停留後,搶答者的數碼管對應的編号連續亮五次并發出蜂鳴聲。其後再有人按下搶答鍵均無效,直到按下複位鍵才繼續進行新的一輪搶答。
2.2 搶答器顯示模塊
顯示功能與硬件關系極大,當硬件固定後,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。搶答器的組别号碼顯示可以采用液晶顯示,也可以采用數碼管顯示。
LCD具有低功耗,畫面效果好,分辨率高等特點,但由于隻需顯示組别數字,信息亮較少,且由于液晶是以點陣的模式顯示各符号,編程工作量大,成本高。
數碼管具有耐老化,防曬等特點,對外界環境要求低,易于維護,同時精确度高,操作簡單,采用BCD編碼顯示數字,程序編譯容易,價格便宜等特點,廣泛應用于多數場合中。
數碼顯示是采用BCD編碼顯示數字,程序編譯容易,資源占用較少。所以本設計就采用數碼管顯示。
LED顯示器是由發光二極管顯示字段的顯示器件。在單片機應用系統中通常使用的是七段LED,這種顯示器有共陰極與共陽極兩種。本設計采用共陰級數碼管。
共陰極LED顯示器的發光二極管陰極共地,當某個發光二極管的陽極為高電平時,該發光二極管則點亮。
七段顯示器與單片機接口:隻要将一個8位并行輸出口與顯示器的發光二極管引腳相連即可。8位并行輸出口輸出不同的字節數據即可獲得不同的數字或字符,如下表1所示。通常将控制發光二極管的8位字節數據稱為段選碼。
N位LED顯示器有N根位選線和8×N根段選線。根據顯示方式不同,位選線與段選線的連接方法不同。段選線控制字符選擇,位選線控制顯示位的亮、滅。
LED顯示器有靜态顯示與動态顯示兩種方式。
(1) LED靜态顯示方式
各位LED的位選線連在一起接地或接 5V;
每位LED的段選線(a-dp)各與一個八位并行口相連。
在同一時間裡每一位顯示的字符可以各不相同。
(2) LED動态顯示方式
将所有LED的段選線并聯在一起,由一個八位I/O口控制,而位選線分别由相應的I/O口線控制。 如:8位LED動态顯示電路隻需要兩個八位I/O口。其中一個控制段選碼,另一個控制位選。
本設計由于用到較多的數碼管,采用動态顯示方式。
由于所有位的段選碼皆由一個I/O控制,因此,在每個瞬間,8位LED隻可能顯示相同字符。要想每位顯示不同的字符,必須采用動态掃描顯示方式。即在每一瞬間隻使某一位顯示相應字符。在此瞬間,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平、共陽極送高電平)以保證該位顯示相應字符,段選控制I/O口輸出相應字符段選碼。如此輪流,使每位顯示該位應顯示字符,并保持延時一段時間,以造成視覺暫留效果。
不斷循環送出相應的段選碼、位選碼,就可以獲得視覺穩定的顯示狀态。由人眼的視覺特性,每一位LED在一秒鐘内點亮不少于30次,其效果和一直點亮相差不多。顯示電路圖如下圖5所示。
2.3 蜂鳴器模塊
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、複印機、報警器、汽車電子設備、電話機、定時器等電子産品中作發聲器件。由于蜂鳴器的工作電流一般比較大,以緻于單片機的I/O 口是無法直接驅動的,所以要利用放大電路來驅動,一般使用三極管來放大電流就可以了。如圖6所示。
2.4 時鐘電路和複位電路
單片機的時鐘信号用來提供單片機内各種微操作時間基準,8XX51單片機的時鐘信号通常有兩種電路形式:内部振蕩方式和外部振蕩方式。
内部振蕩方式是在引腳 XTAL1和 XTAL2外接晶體振蕩器(簡稱晶振)。内部振蕩方式所得的時鐘信号比較穩定,并且由于AT89C51具有内部振蕩器(需外接晶振,本設計采用12MHz),所以采用内部振蕩方式。
單片機的複位引腳RST出現5ms以上的高電平時,單片機就完成了複位操作,本設計采用雙複位,即上電複位和開關複位。上電複位就是利用電容充電過程在電阻上産生持續一定時間的高電平,得到複位信号。時鐘電路和複位電路如圖7所示。
電容器C1、C2起穩定振蕩頻率、快速起振的作用。電容值一般為 5~30PF。
2.5 六人搶答器總原理圖
本設計單片機采用AT89C51,使用獨立式鍵盤和數碼管顯示,如圖8所示。
其中P1.0~P1.5所接的開關為搶答開關,P3.2所接的開關為複位開關,按下即可進行新的一輪搶答。
3 軟件設計過程
3.1 搶答系統的整個流程圖
通過AT89C51的控制,從而構成了整個電路,總流程圖如圖9所示。
4 調試過程
4.1 調試的基本方法
本設計軟件調試的模塊包括顯示功能模塊、搶答按鍵功能模塊以及報警功能模塊。各個獨立模塊功能調試成功後,聯機調試,将這些模塊程序通過主程序合并在一起,對主程序進行調試,并運行一段時間,看程序是否穩定達到預期效果。本設計才用Keil 調試和Proteus軟件仿真調試。
在keil軟件編寫好程序後,生成.hex的文件,如下圖10所示:
在protues軟件裡雙擊51單片機模塊,選擇剛生成的hex文件,如下圖11的界面。
最後單擊運行按鈕觀察現象。
4.2 調試的過程及問題分析
數碼管顯示調試:數碼管跑馬顯示後,加入閃爍之後,不能退出閃爍,經過多次試驗之後把閃爍的for語句放在while前,使得這問題得以解決。
蜂鳴器模塊調試:當按下搶答按鍵的時候,蜂鳴器不能發出警報聲,經過仔細檢查代碼以及分析電路模塊,原因是蜂鳴器的電壓太大了。因為在選用蜂鳴器的時候系統設置電壓為12V,而C51芯片引腳輸出電壓一般為3V左右,顯然小于蜂鳴器的驅動電壓,如果把蜂鳴器的驅動電壓設為2V,蜂鳴器就能完全驅動,從而發出響聲。
4.3 仿真結果
以1号選手搶答成功為例。
上電後,無按鍵操作的時候數碼管輪流循環顯示1-6,即實現了跑馬燈的功能,仿真結果如下圖12。
當按下1按鍵時的結果如下圖13。
所有數碼管同時顯示搶答者的編号後,最後搶答者的編号在自己對應的數碼管裡亮5次,同時可以聽到蜂鳴器發出的警報聲,如下圖14所示。
圖14 搶答者的編号亮5次停止
此後其他搶答者再按搶答鍵均無效,直到按下複位鍵後繼續新的一輪搶答,按下複位鍵後繼續循環顯示1-6,如下圖15。
5 設計總結
5.1 搶答系統的特點
⑴該産品的互換性好,響應速度快,抗幹擾能力強,外圍電路簡單易懂,因此相對來說體積小。
⑵該系統能用軟件的方式設計硬件,所以用軟件方式設計的系統向硬件系統的轉換是由有關開發軟件自動完成的,易操作。
⑶具有具體數字顯示的功能。
⑷可以從以前的組合設計轉向真正的自由設計,所以設計的移植性好,效率高。可适合大規模的現場制作。
⑸利用按鈕進行輸入,輸入簡單。
⑹具有智能報警的功能。
⑺因為整個系統可集成在一個芯片上,因此體積小,功耗低,可靠邊性更高。
5.2 設計心得
本設計在深入理解單片機原理的基礎理論上,主要設計了單片機實現各個功能的模塊,最終實現了搶答器的功能。在這次課程設計中,運用了以前所學的專業知識,更加鞏固了知識和對理論有了更深的理解,在設計程序之前,要有一個較為清晰的思路和程序流程圖,不能妄想一次就做好整個程序,而要一個一個模塊的去實現功能,最後經過反複的修改,整合成整個程序。在設計過程中,掌握了分析單片機應用系統,調試簡單C51程序以及撰寫設計報告的能力提高了發現問題、分析問題和解決問題的能力,做到将所學的理論知識運用到實際生活中。
歡迎大家點贊轉發收藏評論,私信發源代碼哦
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!