實訓題目:基于單片機的搶答器的設計
1 系統設計1.1 設計要求
1.1.1設計任務
基于單片機的搶答器的設計
1.1.2性能指標要求
① 需要自己設計電路并焊接電路板。
② 基本要求:有一個主持人控制開關和6路搶答按扭,當主持人允許搶答時才能進行搶答操作,并用一個數碼管顯示搶答選手的號碼,同時其他選手不能再搶答。
③ 當主持人允許搶答后倒計時5秒時間,在這5秒內搶答有效,過后就不能進行搶答了。
④ 電路上要加個蜂鳴器的電路,當有選手搶答時蜂鳴器響一下。
⑤ 當有選手搶答后,進行倒計時20秒作為選手回答問題時間,用兩個數碼管顯示,倒計時時間到時有聲光提示。
⑥ 畫電路板時要增加下載接口,方便調試程序。
⑦ 擴展功能(選做):
用按鍵可設置倒計時的時間,范圍在5秒到30秒之間。
1.2 設計思路及設計框圖
1.2.1設計思路
設計思路如下:
電路通電后,LED閃爍三次,表示電路各功能正常。搶答之前必須由主持人控制,所以在芯片的P1^0腳處接入開始按鍵。搶答時必須有選手搶答電路,因為題目要求6位選手搶答,所以分別在P1^1~P1^6設置了從1~6號選手的搶答按鍵。當主持人按下開始搶答鍵時,6位選手連接的單片機從P1^1~P1^6的任意1位選手都可以進行搶答,搶答時間為5s。主持人按下開始搶答按鍵以后,會進入5s倒計時搶答時間,如若在5s之內,有選手搶答成功,則數碼管顯示搶答選手的號數,搶答成功后燈光提示0.5秒,系統開始自動設定回答問題時間為20s,倒計結束時LED燈亮,并且蜂鳴器響1s,1秒后重新等待主持人控制。
拓展功能利用三個按鍵來實現控制回答問題的時間的增減,有1號和6號選手按鍵同時按下開啟回答時間調整功能,時間加計數的設置控制鍵為P1^1,每當按鍵按下并松開,則倒計時加一。時間減計數的設置控制按鍵為P1^6,每當按鍵按下并松開,則倒計時減一,主持人按鍵P1^0按下來確定回答問題的時間,而且加減計時時間的范圍在5s~30s內,主持人確定時間后會有1s的燈光提示,表示調整完成。P0口接的是一個四位一體共陰數碼管,P2.0~P2.3作為數碼管的位選。三極管8050在電路當中起了開關的作用,當控制三極管開關狀態的管腳P3^3輸出高電平時,蜂鳴器響,反之蜂鳴器停。

1.2.2總體設計框圖
2 各個模塊程序的設計2.1 單片機
STC89C52RC是以51為內核的8位單片機,芯片總共有40個引腳。
P0~P3:總共占32個引腳,其中P0是低8位地址線/數據線的端口,P1是數據線端口,P2是高8位地址線/數據線端口,P3是數據線/第二功能線端口。P0口內部沒有上拉電阻,所以在P0用作輸出時必須外加上拉電阻。
EA~ /VPP:片外程序ROM有效編程電源,作EA~用時為輸出信號,EA~=0片外程序ROM有效,EA~=1片內ROM有效,作VPP用時為電源輸入。
XTAL1和XTAL2:外部時鐘震蕩輸入端
RST/VPD:復位/備用電源接入。正常工作時作復位信號引入,當VCC失電時,此腳接入備用電源,使片內RAM中的數據處于底功能保護。
2.2 最小系統
這兩部分電路分別為晶振電路和復位電路,這兩塊電路與單片機的電源電路共同組成了單片機的最小系統。
晶振電路由晶振和兩個瓷片電容組成,本實訓采用晶振為12MHZ,瓷片電容的容量為22PF,瓷片電容是沒有正負極之分的。
本次實訓采用的復位電路是手動復位方式,當復位鍵按下,RST由低電平變為高電平,RST引腳獲得2個機器周期的脈沖后,實現手動硬件復位,使單片機重新開始執行程序。
2.3 按鍵模塊電路
按鍵一端接地,一端接單片機I/O口。當按鍵按下時,電平狀態因一端接地被拉低。
2.4 數碼管顯示模塊電路
本次實訓用的是四位共陰數碼管,A,B,C,D,E,F,G,DP控制段選;1,2,3,4控制位選。
2.5 蜂鳴器與LED燈模塊電路
在本次實訓中,蜂鳴器電路材料有8050(NPN)三極管,一個限流電阻,一個蜂鳴器,此時電路中的三極管充當開關作用,當P3^3=1時三極管導通,則蜂鳴器響,反之不響。
LED負極端通過限流電阻接地,正極接入I/O口,當P3^4=1時,LED亮,反之滅。
3 調試過程焊完板子后用下載線接通電源,觀察電源指示燈是否正常,指示燈閃爍后停止工作,斷電檢查電路,發現有一接地端未聯通,接通后發現電源指示燈不在工作。
軟件燒錄時一直在檢測單片機,在嘗試斷電重連,讀寫反接后燒錄成功。
在驗證功能期間發現“選手回答問題結束”后,蜂鳴器和LED一直處在開啟狀態,需要復位按鍵復位后才能使用;電源指示燈不工作(可能燒壞了),無法判斷電路是否正常;修改代碼將聲光提醒改為1s,1s后自動恢復等待主持人操作;通電后LED閃爍三次,閃爍結束后等待主持人操作。
在硬件不改變的前提增加擴展功能,使用1號和6號選手按鍵同時按下開啟回答時間調整功能,時間加計數的設置控制鍵為P1^1,每當按鍵按下并松開,則倒計時減1。時間減計數的設置控制按鍵為P1^6,每當按鍵按下并松開,則倒計時加1,或者一直按著加(減)按鍵,倒計時會每個0.5s實現自加(減)1,主持人按鍵P1^0按下來確定回答問題的時間,加減計時時間的調整范圍在5s~30s內,主持人確定時間后會有1s的燈光提示,表示調整完成。
4 功能測試4.1 測試儀器與設備
電腦 :一臺
萬用表 :一臺
燒錄器 :一個
4.2 性能指標測試
1.總共有六路搶答,在主持人允許搶答才可以開始搶答,倒計時5秒。
2.一個搶答后,其他選手不能再搶答,可以設定時間來限制回答問題的時間。
3.當有選手開始搶答時,蜂鳴器響一聲。
4.選手回答時間結束時有聲光顯示
5.可以通過按鍵來設置回答問題時間(5-30秒)。
4.3 誤差分析
有時候按鍵不防抖或無反應
5 實訓心得體會經過這一周的單片機實訓,結合之前的單片機理論課和實驗課,各個書本與老師的答疑解惑下,我終于完成了本次實訓,在單片機電路連接中只需要把單片機最小系統做出來然后把IO口接各個外圍器件,寫好程序進行操控就可以了,但是也非常考察人的細心和焊功是否牢固。
在這學習的過程中,我通過網上查了許多單片機的資料,讓我明白了51單片機的I/0的作用,由于P0口與P1\P2\P3口不同,因為其內部沒有上拉電阻,如果不加上拉電阻,會呈現高阻狀態,所以當我們需要用P0口給數碼管進行段選時,P0口必須外加上拉電阻,通常為10K的排阻。通過分析網上列出的幾種不同的蜂鳴器控制電路,我懂得了本次實訓蜂鳴器控制電路中的三極管在電路中充當著開關作用,電阻充當著限流作用,保護電路。51單片機I/O口充當控制作用。
在此,我感謝指導我的老師們,通過本次實訓學習到的知識是從理論課本上獲取不到的,這些調試電路的經驗,調試代碼的經驗,51單片機的原理,統統需要實踐的積累。在今后遇到使用單片機所做的項目,我都會通過這次的實訓的經驗來擬定好一個方案,并能夠設計基礎電路,在軟件方面還需多加練習,多寫程序,吸收別人的思維方式,腦海中要構造好流程圖,流程圖做好,每一步需要怎么寫怎么做就一目了然了。
附錄1:仿真圖
附錄2:程序