精品【畢業(yè)設(shè)計(jì)】8路搶答器系統(tǒng)的設(shè)計(jì)-定_第1頁(yè)
精品【畢業(yè)設(shè)計(jì)】8路搶答器系統(tǒng)的設(shè)計(jì)-定_第2頁(yè)
精品【畢業(yè)設(shè)計(jì)】8路搶答器系統(tǒng)的設(shè)計(jì)-定_第3頁(yè)
精品【畢業(yè)設(shè)計(jì)】8路搶答器系統(tǒng)的設(shè)計(jì)-定_第4頁(yè)
精品【畢業(yè)設(shè)計(jì)】8路搶答器系統(tǒng)的設(shè)計(jì)-定_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目 錄前言11.總體設(shè)計(jì)方案11.1數(shù)字搶答器方案11.1.1運(yùn)用完全的數(shù)字電路方案11.1.2運(yùn)用帶微處理的器方案12. 單元模塊設(shè)計(jì)22.1搶答器電路設(shè)計(jì)計(jì)22.1.1電源電路22.1.2 時(shí)鐘電路32.1.3復(fù)位電路32.1.4顯示電路42.1.5鍵盤(pán)掃描電路的設(shè)計(jì)52.1.6 報(bào)警電路72.1.7 系統(tǒng)復(fù)位設(shè)計(jì)82.2 系統(tǒng)整體硬件電路92.2.1 整體硬件電路92.2.1 本章小結(jié)113.軟件設(shè)計(jì)113.1系統(tǒng)主程序設(shè)計(jì)113.2主程序清單123.3本章小結(jié)234.仿真模塊244.1 Proteus仿真系列圖組244.1.1 仿真電路圖244.2安裝與調(diào)試275.設(shè)計(jì)總結(jié)296.參考

2、文獻(xiàn)30前言轉(zhuǎn)眼大三即將結(jié)束,一直以來(lái)都在不停的問(wèn)自己3年來(lái)到底學(xué)到了什么,我也一直很迷惘,很為自己畢業(yè)后著急。站在人來(lái)人往的校園里完全沒(méi)有一個(gè)立足點(diǎn)去審視自己的能力,一直在等待著能自己實(shí)踐的機(jī)會(huì)。我們的專(zhuān)業(yè)老師明白學(xué)生的心理,高瞻遠(yuǎn)矚,在6月份給我們專(zhuān)業(yè)安排了一次綜合課程設(shè)計(jì),由學(xué)生自己選擇課題,自己設(shè)計(jì),自己制出產(chǎn)品。這樣的一個(gè)安排我很是高興,聽(tīng)到這消息我就暗暗的告訴自己一定好好努力做這次設(shè)計(jì),結(jié)果并不是最重要的,就象我們老師說(shuō)的:能實(shí)現(xiàn)固然是最好,即使不能成功,只要我們認(rèn)真去做了,依然能夠?qū)W到很多東西,尤其是動(dòng)手能力和實(shí)戰(zhàn)經(jīng)驗(yàn)。本次所做的課程設(shè)計(jì)就是一個(gè)集搶答、計(jì)分功能于一體的一個(gè)電子產(chǎn)

3、品,講述了電路各部分的設(shè)計(jì)原理及所能實(shí)現(xiàn)的功能 ,它要求要對(duì)各種鎖存器、計(jì)數(shù)器、定時(shí)器、顯示器以及多諧振蕩器等多種數(shù)字電子芯片以及AT89S52熟悉,并能加以運(yùn)用。雖然現(xiàn)在市面上有很多類(lèi)似的成熟產(chǎn)品,但本次設(shè)計(jì)旨在提高動(dòng)手能力,把握整體設(shè)計(jì)的步驟,從這個(gè)層面來(lái)講,仍然很有意義。1.總體設(shè)計(jì)方案1.1數(shù)字搶答器方案1.1.1運(yùn)用完全的數(shù)字電路方案系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機(jī)械開(kāi)關(guān)按鈕作為控制開(kāi)關(guān),完成搶答輸入信號(hào)的觸發(fā)。該方案的特點(diǎn)是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對(duì)較多,而且過(guò)于復(fù)雜,并且制作過(guò)

4、程工序比較煩瑣,使用不太方便。1.1.2運(yùn)用帶微處理的器方案該系統(tǒng)采用51系列單片機(jī)AT89C51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)識(shí)別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來(lái)方便、簡(jiǎn)單并且單片機(jī)周?chē)妮o助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和更改。MCS-51單片機(jī)特點(diǎn)如下: <1>可靠性好:?jiǎn)纹瑱C(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫(xiě)在ROM里,許多信號(hào)通道都在同一芯片,因此可靠性高,易擴(kuò)充。<2>單片機(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,

5、串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。 <3> 控制功能強(qiáng):?jiǎn)纹瑱C(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。方案比較及其選用依據(jù),顯然方案二比方案一簡(jiǎn)單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實(shí)現(xiàn)上都較方案一簡(jiǎn)潔,并且由于單片機(jī)具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外AT89C511單片機(jī)采用12MHz的晶振,提高了信號(hào)的測(cè)量精度,并且使該系統(tǒng)可以通過(guò)軟件改進(jìn)來(lái)擴(kuò)張功能。而方案一采用了中小規(guī)模集成電路,有其復(fù)雜的電路性能,從而可能會(huì)使信號(hào)的輸入輸出產(chǎn)生延時(shí)及不必要的誤差。依此依據(jù)選擇方案二比較適合。其原理框圖如下:

6、搶答按扭優(yōu)先編碼電路鎖存器譯碼電路譯碼顯示主持人控制開(kāi)關(guān)控制電路報(bào)警電路秒脈沖產(chǎn)生電路定時(shí)電路譯碼電路顯示電路 圖.12. 單元模塊設(shè)計(jì)2.1搶答器電路設(shè)計(jì)計(jì)2.1.1電源電路一個(gè)系統(tǒng)要想正常的工作就必須要有穩(wěn)定的電源提供,如果電源不穩(wěn)定的話系統(tǒng)變無(wú)法正常的工作,該系統(tǒng)的整個(gè)電路的工作電壓都為5V,如果采用單獨(dú)的線性電路,電路的紋波會(huì)很大這樣系統(tǒng)可能會(huì)無(wú)法正常的工作,因此我們采用了一塊穩(wěn)壓芯片7805。他是一款5V的穩(wěn)壓芯片能將電壓變得更加的平滑。電源電路如圖:圖2.電源電路2.1.2 時(shí)鐘電路單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的

7、時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。時(shí)鐘電路如圖2所示。圖3 .外部振蕩源電路一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為20PF。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱(chēng)為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。圖中時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12µs。

8、2.1.3復(fù)位電路單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖3所示:圖4.復(fù)位電路圖3中由按鍵RESET1以及電解電容C3、電阻R2構(gòu)成按鍵及上電復(fù)位電路。由于單片機(jī)是高電平復(fù)位,所以當(dāng)按鍵RESET1按下時(shí)候,單片機(jī)的9腳RESET管腳處于高電平,此時(shí)單片機(jī)處于復(fù)位狀態(tài)。當(dāng)上電后,由于電容的緩慢充電,單片機(jī)的9腳電壓逐步由高向低轉(zhuǎn)化,經(jīng)過(guò)一段時(shí)間后,單片機(jī)的9腳處于穩(wěn)定的低電平狀態(tài),此時(shí)單片機(jī)上電復(fù)位完畢,系統(tǒng)程序從0000H開(kāi)始執(zhí)行。值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面

9、的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計(jì)時(shí)時(shí)間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過(guò)一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。2.1.4顯示電路 該電路的顯示電路由4個(gè)LED共陰極管作為顯示時(shí)間和選手號(hào)碼,當(dāng)然采用LCD液晶顯示其也可以但是考慮到成本的問(wèn)題,和實(shí)用性我們選擇了LED,成本大大的降低,顯示電路采用74LS04進(jìn)行鎖存,將P0口的數(shù)據(jù)進(jìn)行鎖存,這樣P0口可以作為其他的用途了。動(dòng)態(tài)顯示當(dāng)中由于人們的視覺(jué)殘留沒(méi)一部分必須停留約為5-20ms才

10、能完全的顯示。顯示通過(guò)軟件程序控制LED的動(dòng)態(tài)顯示顯示程序如下: void display(uchar baiwei,shiwei,gewei,xuanshou) /顯示函數(shù)suo=1;P2=0xf7; /打開(kāi)顯示時(shí)間十位的位選delay1(5);P2=0xfb; /打開(kāi)顯示時(shí)間十位的位選delay1(5);P2=0xfd;/個(gè)位位選delay1(5);P2=0xfe; /選手位選delay1(5);suo=0;4位七段數(shù)碼管顯示電路如圖4所示。圖5. 共陰極數(shù)碼管2.1.5鍵盤(pán)掃描電路的設(shè)計(jì)鍵盤(pán)掃描電路分為獨(dú)立式和矩陣鍵盤(pán)在選手按鍵的時(shí)侯可以選擇矩陣鍵盤(pán),也可以選擇獨(dú)立鍵盤(pán),但是在這里沒(méi)有必

11、要選擇矩陣式鍵盤(pán),當(dāng)選擇矩陣鍵盤(pán)時(shí),選手個(gè)數(shù)可以達(dá)到16個(gè)。鍵盤(pán)點(diǎn)路圖如下:圖6.搶答按鍵及調(diào)整按鍵在圖5中8個(gè)選手按鍵分別接入單片機(jī)的P1.0P1.7端口,然后通過(guò)反相器連到P3口的中斷0端口,單片機(jī)通過(guò)讀取P1.0P1.7的值來(lái)判斷當(dāng)前輸入的是8個(gè)搶答按鍵中的哪一個(gè)。然后出發(fā)一次中斷,搶答時(shí)間調(diào)整和回答時(shí)間調(diào)整接到單片機(jī)的P3.3和P3.4接口,加一及減一按鍵接到單片機(jī)的P3.5和P3.6接口。圖7. 開(kāi)始、結(jié)束按鍵在圖6中,開(kāi)始及結(jié)束按鍵接到單片機(jī)的10、11腳,這里用到了單片機(jī)10、11腳復(fù)合功能中的IO端口功能,單片機(jī)通過(guò)讀取10、11腳的P3.0、P3.1的IO端口值來(lái)判斷當(dāng)前是否

12、處于搶答開(kāi)始狀態(tài)或搶答結(jié)束狀態(tài)。按鍵的觸點(diǎn)在閉合和斷開(kāi)時(shí)均會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行。現(xiàn)在一般均用軟件延時(shí)的方法來(lái)避開(kāi)抖動(dòng)階段,這一延時(shí)過(guò)程一般大于5ms,例如取10-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺(tái)程序)或鍵盤(pán)中斷(外部中斷)子程序中,則該延時(shí)子程序便可直接插入讀鍵過(guò)程中。如果讀鍵過(guò)程安排在定時(shí)中斷子程序中,就可省去專(zhuān)門(mén)的延時(shí)子程序,利用兩次定時(shí)中斷的時(shí)間間隔來(lái)完成抖動(dòng)處理。在鍵盤(pán)掃描電路中開(kāi)始按鍵和選手按鍵都通到了中斷0,當(dāng)開(kāi)始鍵和選手按鍵按下是都會(huì)觸發(fā)一次中斷,然后掃描按鍵判斷是哪一個(gè)按鍵按下的,如果是

13、選手按下?lián)尨鸢存I時(shí)則非法處理,如果時(shí)主持人按下時(shí)則按照正常的搶答流程進(jìn)行搶答。51單片機(jī)大外部中斷經(jīng)過(guò)初始化后,當(dāng)外部引腳變?yōu)榈碗娖胶笃霭l(fā)一次中斷。中斷處理函數(shù)如下:void init()/中斷 定時(shí)器 初始化函數(shù)TMOD=0x01;EA=1;TH0=0x3C; TL0=0xB0;ET0=1;EX0=1;IT0=1;EX1=1;void int0() interrupt 0/中斷0函數(shù)temp=1;中斷1為判斷主持人停止鍵,當(dāng)主持人在答題時(shí)間按下停止時(shí),答題變立刻停止,void int1() interrupt 2/中斷0函數(shù)temp_int0=1;2.1.6 報(bào)警電路我們知道,聲音的頻譜范

14、圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。當(dāng)在最后的5秒的時(shí)侯蜂鳴器變產(chǎn)生報(bào)警,以提醒選手們搶答時(shí)間或答題時(shí)間將要結(jié)束了。報(bào)警程序如下:If(t=5)Beep=1;當(dāng)有選手提前答題的時(shí)候蜂鳴器便持續(xù)發(fā)出響聲。本文設(shè)計(jì)如圖8所示。圖中單片機(jī)的14腳輸出具有復(fù)合功能,此處用到了單片機(jī)17腳的IO端口功能,單片機(jī)通過(guò)內(nèi)部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形輸出驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。圖8 報(bào)警電路2.1.7 系

15、統(tǒng)復(fù)位設(shè)計(jì)使CPU進(jìn)入初始狀態(tài),從0000H地址開(kāi)始執(zhí)行程序的過(guò)程叫系統(tǒng)復(fù)位。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來(lái)看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過(guò)CPU外部的硬件電路給CPU的RESET端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門(mén)狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專(zhuān)用寄存器的狀態(tài)均被初始化,且對(duì)片內(nèi)通用寄存器的內(nèi)容沒(méi)有影響。但是,硬件復(fù)位還能自動(dòng)清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來(lái)模擬硬件復(fù)位功能,最后通過(guò)轉(zhuǎn)移指令使程序從0000H地址開(kāi)始執(zhí)行。對(duì)各專(zhuān)用寄存器的復(fù)位操作是容易的,也沒(méi)有必要完全模

16、擬,可根據(jù)實(shí)際需要去主程序初始化過(guò)程中完成。而對(duì)中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪](méi)有明確的位地址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類(lèi)錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門(mén)狗后必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級(jí)中斷響應(yīng)。由于軟件看門(mén)是高級(jí)中斷,它將阻止說(shuō)要中斷響應(yīng),由此可見(jiàn)清除中斷激活標(biāo)志的重要性。在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。出錯(cuò)處理程序ERR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。程序一般先關(guān)

17、中斷,以便后續(xù)處理能順利進(jìn)行,然后用兩個(gè)RETI指令代替兩個(gè)LJMP指令,從而清除了兩級(jí)中斷激活標(biāo)志。有相應(yīng)軟件陷阱捕捉來(lái)的程序可能沒(méi)有全部激活兩個(gè)標(biāo)志,這也無(wú)妨。有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動(dòng)”和“熱啟動(dòng)”。 “冷啟動(dòng)”時(shí),系統(tǒng)的狀態(tài)全部無(wú)效,進(jìn)行徹底的初始化操作;而“熱啟動(dòng)”時(shí),對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”。為了使系統(tǒng)能正確決定采用何種啟動(dòng)方式,常用上電標(biāo)志來(lái)區(qū)分,如圖9所示:復(fù)位關(guān)中斷,

18、設(shè)定堆棧上電標(biāo)志冷啟自檢全面初始化熱啟動(dòng)恢復(fù)被破壞的信息部分初始化建立上電標(biāo)志開(kāi)始運(yùn)轉(zhuǎn)圖9系統(tǒng)復(fù)位策略圖2.2 系統(tǒng)整體硬件電路2.2.1 整體硬件電路PROTEL是PORTEL公司推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無(wú)愧地排在眾多EDA軟件的前面,是電子設(shè)計(jì)者的首選軟件,它較早就在國(guó)內(nèi)開(kāi)始使用,在國(guó)內(nèi)的普及率也最高,有些高校的電子專(zhuān)業(yè)還專(zhuān)門(mén)開(kāi)設(shè)了課程來(lái)學(xué)習(xí)它,幾乎所有的電子公司都要用到它,許多大公司在招聘電子設(shè)計(jì)人才時(shí)在其條件欄上常會(huì)寫(xiě)著要求會(huì)使用PROTEL。它包含了電原理圖繪制、模擬電路與數(shù)字電路混合信號(hào)仿真、多層印制電路板設(shè)計(jì)(包含印制電路板自動(dòng)布線)、可編程邏輯器件設(shè)計(jì)

19、、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server (客戶/服務(wù)器)體系結(jié)構(gòu),同時(shí)還兼容一些其它設(shè)計(jì)軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動(dòng)布線可實(shí)現(xiàn)高密度PCB的100布通率。1、運(yùn)用PROTEL工具畫(huà)出原理電路:圖11整體電路圖圖12 PCB電路圖2、三維PCB圖圖13三維PCB圖2.2.1 本章小結(jié)本章是搶答器的系統(tǒng)仿真部分,并對(duì)搶答器的各個(gè)流程做出了具體仿真結(jié)果。從仿真圖上可以進(jìn)一步得出結(jié)論:利用單片機(jī)設(shè)計(jì)的搶答器工作性能穩(wěn)定,延遲時(shí)間小,電路結(jié)構(gòu)簡(jiǎn)單,是一個(gè)實(shí)用、創(chuàng)新性的電路設(shè)計(jì)。3.軟件設(shè)計(jì)3.1系統(tǒng)主程序設(shè)計(jì)為了能

20、夠達(dá)到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時(shí)間,因而在編開(kāi)始搶答前的程序得先編寫(xiě)設(shè)定時(shí)間的程序,當(dāng)時(shí)間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開(kāi)始打開(kāi)定時(shí)中斷開(kāi)始倒計(jì)時(shí),然后調(diào)用鍵盤(pán)掃描子程序,編寫(xiě)鍵盤(pán)掃描程序。當(dāng)在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤(pán)。主程序流程圖:加載程序運(yùn) 行行開(kāi)始開(kāi)始數(shù)碼管顯示FFF開(kāi)始搶按時(shí)間倒計(jì)時(shí)開(kāi)始前有選手搶按顯示違例選手號(hào)碼并伴有語(yǔ)音報(bào)警倒計(jì)時(shí)結(jié)束,超時(shí)有選手搶按顯示FFF顯示選手號(hào)碼,倒計(jì)時(shí)時(shí)間,語(yǔ)音報(bào)警,答題,答題時(shí)間倒計(jì)時(shí)正常流程違規(guī)流程若超過(guò)答題時(shí)間,則數(shù)碼管顯示FFF答題完畢根據(jù)選手表

21、現(xiàn),規(guī)則由主持人減分圖143.2主程序清單#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit suo=P24;sbit beep=P27;sbit wei1=P20;sbit wei2=P21;sbit wei3=P22;sbit led=P0;sbit kai=P32;sbit tin=P33;sbit jiaf=P30;sbit jianf=P31;sbit jias=P35;sbit jians=P36;sbit que=P37;sbit xuanshou=P25;sbit xx=

22、P26;#include"wenjian.h"uchar code tale=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71;uchar fen1=20,fen2=20,fen3=20,fen4=20,fen5=20,fen6=20,fen7=20,fen8=20;uchar score_one=1,score_two=2,score_three=3,score_four=4;uchar score;uchar temp,t;uchar f;uchar que1=0;uchar time1=10,time2=10

23、;uchar temp_int0;void delay1(uint z) /延時(shí)函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void init()/中斷 定時(shí)器 初始化函數(shù)void int0() interrupt 0/中斷0函數(shù)temp=1;void int1() interrupt 2/中斷0函數(shù)temp_int0=1;void time0(void) interrupt 1/計(jì)數(shù)器0中斷,設(shè)置計(jì)數(shù)器計(jì)數(shù),50ms中斷t+;void display(uchar baiwei,shiwei,gewei,xuanshou) /顯示函數(shù)su

24、o=1;P2=0xf7; /打開(kāi)顯示時(shí)間十位的位選delay1(5);P2=0xfb; /打開(kāi)顯示時(shí)間十位的位選delay1(5);P2=0xfd;/個(gè)位位選delay1(5);P2=0xfe; /選手位選delay1(5);suo=0;uchar panduan()/判斷是哪一個(gè)選手按下鍵uchar i=0,b=0;if(kai=0) b=9;switch (P1) case 0xfe:b=1;break;case 0xfd:b=2;break;case 0xfb:b=3;break;case 0xf7:b=4;break;case 0xef:b=5;break;case 0xdf:b=6;

25、break;case 0xbf:b=7;break;case 0x7f:b=8;break; return b;uchar fenshu(uchar b,h)/b為選手所選的分?jǐn)?shù),h為對(duì)應(yīng)的選手號(hào)/uchar x;while(xx=1&&temp_int0=0);if(jiaf=0&&temp_int0=0)delay1(10);if(jiaf=0)switch (h) case 1:fen1=fen1+b;x=fen1;break;case 2:fen2=fen2+b;x=fen2;break;case 3:fen3=fen3+b;x=fen3;break;c

26、ase 4:fen4=fen4+b;x=fen4;break;case 5:fen5=fen5+b;x=fen5;break;case 6:fen6=fen6+b;x=fen6;break;case 7:fen7=fen7+b;x=fen7;break;case 8:fen8=fen8+b;x=fen8;break; if(jianf=0&&temp_int0=0)delay1(10);if(jianf=0)switch (h) case 1:fen1=fen1-b;x=fen1;break;case 2:fen2=fen2-b;x=fen2;break;case 3:fen3

27、=fen3-b;x=fen3;break;case 4:fen4=fen4-b;x=fen4;break;case 5:fen5=fen5-b;x=fen5;break;case 6:fen6=fen6-b;x=fen6;break;case 7:fen7=fen7-b;x=fen7;break;case 8:fen8=fen8-b;x=fen8;break; return x;void ma(uchar a)uchar h;uchar s;uchar temp2;suo=0;s=time2;h=a;/*switch (a) case 1:fen=fen1;break;case 2:fen=f

28、en2;break;case 3:fen=fen3;break;case 4:fen=fen4;break;case 5:fen=fen5;break;case 6:fen=fen6;break;case 7:fen=fen7;break;case 8:fen=fen8;break; */temp2=P0&0xf0;while(temp2=0xf0&&temp_int0=0)temp2=P0&0xf0;if(temp2!=0xf0&&temp_int0=0)delay1(10);delay1(10);if(temp2!=0xf0)switch (

29、temp2) case 0xe0:score=score_one;break;case 0xd0:score=score_two;break;case 0xb0:score=score_three;break;case 0x70:score=score_four;break; TR0=1;while(s>0&&que1=0&&temp_int0=0)if(t=20)t=0;s-;if(s=0)ET0=0;f=fenshu(score,h);que1=1;TR0=0;break;if(xuanshou=0)delay1(20);if(xuanshou=0)q

30、ue1=1;f=fenshu(score,h);TR0=0;break;display(tales%100%10,tales%100/10,tales/100,talea);que1=0;while(temp_int0=0)display(talef%100%10,talef%100/10,talef/100,talea);void panduan1()uchar i;uchar temp2;uchar temp1;uchar biao=0;temp2=time1;temp_int0=0;if(temp=1&&temp_int0=0)temp=0;temp1=panduan()

31、;switch(temp1)case 9:temp1=0; while(temp2>0&&biao=0&&temp_int0=0) temp1=panduan(); switch(temp1) case 0:break;case 1:display(tale10,tale10,tale10,tale1);ET0=0;ma(1);biao=1;break; case 2:display(tale10,tale10,tale10,tale2);ET0=0;ma(2);biao=1;break; case 3:display(tale10,tale10,tale

32、10,tale3);ET0=0;ma(3);biao=1;break; case 4:display(tale10,tale10,tale10,tale4);ET0=0;ma(4);biao=1;break;case 5:display(tale10,tale10,tale10,tale5);ET0=0;ma(5);biao=1;break; case 6:display(tale10,tale10,tale10,tale6);ET0=0;ma(6);biao=1;break; case 7:display(tale10,tale10,tale10,tale7);ET0=0;ma(7);bia

33、o=1;break; case 8:display(tale10,tale10,tale10,tale8);ET0=0;ma(8);biao=1;break; default:break;if(biao=1) biao=0;break; if(t=20&&biao=0) t=0; temp2-; if(temp2=0) display(taletemp2%100%10,taletemp2%100/10,taletemp2/100,tale10); break; case 1:for(i=0;i<100;i+)delay1(20);display (tale10,tale1

34、0,tale10,tale1);temp1=0;break;case 2:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale2);temp1=0;break;case 3:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale3);temp1=0;break;case 4:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale4);temp1=0;break;case 5:for(i=0;i<100;i+)display (

35、tale10,tale10,tale10,tale5);temp1=0;break;case 6:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale6);temp1=0;break;case 7:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale7);temp1=0;break;case 8:for(i=0;i<100;i+)display (tale10,tale10,tale10,tale8);temp1=0;break; void scan_qiang_time()i

36、f(jias=0)delay1(20);delay1(20);delay1(20);delay1(20);if(jias=0) while(que!=0) delay1(20);delay1(20);delay1(20);delay1(20); if(que!=0) if(jias=0) delay1(20);delay1(20);delay1(20);delay1(20); if(jias=0) time1=time1+1; if(jians=0) delay1(20);delay1(20);delay1(20);delay1(20); if(jians=0) time1=time1-1;

37、display(taletime1%100%10,taletime1%100/10,taletime1/100,tale10); void scan_dati_time()if(jians=0)delay1(20);delay1(20);delay1(20);if(jians=0) while(que!=0) delay1(20);delay1(20);delay1(20); if(que!=0) if(jias=0) delay1(20);delay1(20);delay1(20); if(jias=0) time2=time2+1; if(jians=0) delay1(20);delay

38、1(20);delay1(20); if(jians=0) time2=time2-1; display(taletime2%100%10,taletime2%100/10,taletime2/100,tale10); void main()while(1)init();panduan1();display(tale10,tale10,tale10,tale10);scan_qiang_time();scan_dati_time();3.3本章小結(jié)本章是搶答器的軟件設(shè)計(jì),實(shí)現(xiàn)搶答功能主要是通過(guò)編寫(xiě)程序的方法集成在AT89C51內(nèi)部。將程序下載到硬件電路中,實(shí)現(xiàn)搶答功能。4.仿真模塊4.1 Pr

39、oteus仿真系列圖組4.1.1 仿真電路圖仿真電路基本操作步驟:(1)、打開(kāi)PROTEUS 操作界面添加所需電路元件到元件列表中: 單擊“P”按鈕,出現(xiàn)挑選元件對(duì)話框, 在出現(xiàn)的對(duì)話框Keywords中輸入所用元件名稱(chēng),在對(duì)話框中單擊OK按鈕,關(guān)閉對(duì)話框。(2)放置元件。在元件列表中左健選取元件,在編輯窗口中單擊左健,這樣元件就被放到原理圖編輯窗口中了。(3)在編輯區(qū)布線,修改元件參數(shù)。 點(diǎn)擊想要連接的兩個(gè)引腳,就能就能簡(jiǎn)單地實(shí)現(xiàn)布線。在特殊的位置需要布線,用戶只需在中間的角落點(diǎn)擊。自動(dòng)布線也能在元件移動(dòng)的時(shí)候操作,自動(dòng)地解決相應(yīng)的連線。節(jié)點(diǎn)自動(dòng)布置和移除。節(jié)約時(shí)間的同時(shí),避免其他方面可能引

40、起的錯(cuò)誤。也可以手工布點(diǎn),但是布點(diǎn)以后需要連線。雙擊元件修改相關(guān)參數(shù)。(4)進(jìn)行電路仿真,完成原理圖。一、搶答器仿真電路圖:圖15仿真電路圖 圖中U1為單片機(jī)AT89C51,U2為芯片74HC30,U3為芯片74LS04。K1K8分別為8路搶答按鍵,分別接到單片機(jī)的P1.0P1.7中。開(kāi)始按鍵與結(jié)束按鍵分別接到單片機(jī)的10、11腳,由于單片機(jī)的10、11腳既有串行接口RXD、TXD功能,又有P3.0、P3.1的IO端口功能,此處按鍵用到單片機(jī)10、11腳的IO端口功能。搶答時(shí)間調(diào)整按鍵和回答時(shí)間調(diào)整按鍵分別接到單片機(jī)的13、14管腳,加一按鍵和減一按鍵分別接到單片機(jī)的15、16管腳。4位七段數(shù)

41、碼管段選P0口。4位七段數(shù)碼管的位選接P2口低3位,蜂鳴器輸為P2.7口8.二、復(fù)位圖圖16 復(fù)位顯示三個(gè)FFF該圖顯示當(dāng)單片機(jī)復(fù)位后,在4位七段數(shù)碼管上顯示的初始狀態(tài)“F FF”字符。三、設(shè)置計(jì)時(shí)時(shí)間圖17 計(jì)時(shí)時(shí)間為17秒該圖顯示通過(guò)加一按鍵操作后在4位數(shù)碼管上顯示的計(jì)時(shí)時(shí)間為F009秒。四、非法搶答并顯示座號(hào)圖18 1號(hào)選手非法搶答該圖顯示的是若三號(hào)選手非法搶答時(shí)候,第一位字符顯示單片機(jī)判定的非法選手“1”號(hào)選手,在4位數(shù)碼管上的后兩位顯示非法搶答字符“FFF”。五、搶答成功并顯示倒計(jì)時(shí)圖201號(hào)選手搶答圖中顯示的是若1號(hào)選手搶答成功的時(shí)候,4位數(shù)碼管的第一顯示是“1”號(hào)選手搶答成功,最

42、后三位不顯示。4.2安裝與調(diào)試 1、直流電壓表調(diào)試步驟。 制作PCB電路板流程:打印PCB裁剪覆銅板預(yù)處理覆銅板(打磨)轉(zhuǎn)印PCB腐蝕電路板電路板鉆孔電路板預(yù)處理(打磨、清洗、涂松香)焊接電子元件。調(diào)試:(1) 開(kāi)機(jī)按電源開(kāi)關(guān),顯示屏左邊的"搶答"指示燈亮,數(shù)碼管顯示。(2) 設(shè)定"搶答"倒計(jì)時(shí)時(shí)間(3) 設(shè)定"答題"倒計(jì)時(shí)時(shí)間(4) 測(cè)試各組搶答按鍵試按一下各組的搶答按鈕,應(yīng)立即顯示該組的組別數(shù)字,同時(shí)機(jī)內(nèi)喇叭發(fā)出"叮咚"的提示音,按"取消"鍵,返回"0"閃爍狀態(tài)。(5)

43、啟動(dòng)搶答倒計(jì)時(shí),開(kāi)始搶答"FFFF"狀態(tài)下,當(dāng)主持人宣布搶答開(kāi)始時(shí),馬上按一下"搶答"鍵,屏幕顯示所設(shè)定的搶答倒計(jì)時(shí)時(shí)間并開(kāi)始倒計(jì)時(shí),提示倒計(jì)時(shí)時(shí)間馬上臨近結(jié)束。倒計(jì)時(shí)到0以后,儀器發(fā)出"叮咚"的結(jié)束提示音,同時(shí)顯示屏返回"FFFF"待命狀態(tài)。在"搶答"倒計(jì)時(shí)中,如果有參賽組搶答,儀器屏幕立即顯示該組的組別號(hào),同時(shí)發(fā)出"叮咚"的搶答成功提示音。需要返回"FFFF"待命狀態(tài),按"取消"鍵即可。(6) 啟動(dòng)答題倒計(jì)時(shí)"FFFF"狀態(tài)下,或有參賽組搶答成功后,需要開(kāi)始答題的計(jì)時(shí)時(shí),按"答題計(jì)時(shí)"鍵,屏幕顯示所設(shè)定的答題倒計(jì)時(shí)時(shí)間并開(kāi)始倒計(jì)時(shí),提示倒計(jì)時(shí)時(shí)間馬上臨近結(jié)束。倒計(jì)時(shí)到0以后,儀器發(fā)出"丁冬"的結(jié)束提示音,同時(shí)顯示屏返回"FFFF"待命狀態(tài)。(7) 提前取消倒計(jì)時(shí)無(wú)論是"搶答"還是"答題"的倒計(jì)時(shí)時(shí)間,需要提前退出,只要按一下&q

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論