找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7504|回復(fù): 2
收起左側(cè)

基于單片機(jī)的8路搶答器設(shè)計(jì)論文 Word格式 可編輯

[復(fù)制鏈接]
ID:209984 發(fā)表于 2017-6-10 23:39 | 顯示全部樓層 |閱讀模式
搶答器設(shè)計(jì)
第一章:緒論,主要介紹設(shè)計(jì)背景。
1.數(shù)字搶答器的概述
2. 設(shè)計(jì)要求及目的
第二章:硬件電路設(shè)計(jì)
1.總體原理圖
2.時(shí)鐘頻率電路的設(shè)計(jì)
3.復(fù)位電路的設(shè)計(jì)
4.顯示電路的設(shè)計(jì)
5.鍵盤(pán)掃描電路的設(shè)計(jì)
6.發(fā)聲
7.系統(tǒng)復(fù)位
三.系統(tǒng)軟件設(shè)計(jì)
1.系統(tǒng)原理圖
2.程序流程圖
3.程序
第四章:焊接調(diào)試過(guò)程與問(wèn)題分析。
4.1 焊接
1.檢測(cè)各元件
2.對(duì)PCB板進(jìn)行排版及連線(xiàn)
3.  焊接的問(wèn)題及解決
4.焊接的技巧和注意事項(xiàng)
4.2調(diào)試
4.21系統(tǒng)的調(diào)試
4.22具體調(diào)試
4.23調(diào)試實(shí)物圖
第五章:總結(jié)
參考文獻(xiàn)
第一章:緒論,主要介紹設(shè)計(jì)背景。
1.數(shù)字搶答器的概述
單片機(jī)把我們帶入了智能化的電子領(lǐng)域,許多繁瑣的系統(tǒng)若由單片機(jī)進(jìn)行設(shè)計(jì),便能收到電路更簡(jiǎn)單、功能更齊全的良好效果。若把經(jīng)典的電子系統(tǒng)當(dāng)作一個(gè)僵死的電子系統(tǒng),那么智能化的現(xiàn)代電子系統(tǒng)則是一個(gè)具有“生命”的電子系統(tǒng)。
而隨著技術(shù)的進(jìn)步,單片機(jī)與串口通信的結(jié)合更多地應(yīng)用到各個(gè)電子系統(tǒng)中已成一種趨勢(shì)。本設(shè)計(jì)就是基于單片機(jī)設(shè)計(jì)搶答系統(tǒng),通過(guò)串口通信動(dòng)態(tài)傳輸數(shù)據(jù),使搶答系統(tǒng)有了更多更完善的功能。單片機(jī)系統(tǒng)的硬件結(jié)構(gòu)給予了搶答系統(tǒng)“身軀”,而單片機(jī)的應(yīng)用程序賦予了其新的“生命”,使其在傳統(tǒng)的搶答器面前具有電路簡(jiǎn)單、成本低、運(yùn)行可靠等特色。對(duì)于搶答器我們大家都知道那是用于選手做搶答題時(shí)用的,選手進(jìn)行搶答,搶到題的選手來(lái)回答問(wèn)題。搶答器不僅考驗(yàn)選手的反應(yīng)速度同時(shí)也要求選手具備足夠的知識(shí)面和一定的勇氣。選手們都站在同一個(gè)起跑線(xiàn)上,體現(xiàn)了公平公正的原則。

2. 設(shè)計(jì)要求及目的

(1)設(shè)計(jì)一個(gè)可供8人進(jìn)行的搶答器。

(2)系統(tǒng)設(shè)置復(fù)位按鈕,按動(dòng)后,重新開(kāi)始搶答。

(3)搶答器開(kāi)始時(shí)數(shù)碼管顯示序號(hào)0,選手搶答實(shí)行優(yōu)先顯示,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。搶答后顯示優(yōu)先搶答者序號(hào),同時(shí)發(fā)出音響。,并且不出現(xiàn)其他搶答者的序號(hào)。

(4)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間有主持人設(shè)定,本搶答器的時(shí)間設(shè)定為60秒,當(dāng)主持人啟動(dòng)“開(kāi)始”開(kāi)關(guān)后,定時(shí)器開(kāi)始減計(jì)時(shí),同時(shí)蜂鳴器有短暫的聲響。

(5)設(shè)定的搶答時(shí)間內(nèi),選手可以搶答,這時(shí)定時(shí)器停止工作,顯示器上顯示選手的號(hào)碼和搶答時(shí)間。并保持到主持人按復(fù)位鍵。

(6)當(dāng)設(shè)定的時(shí)間到,而無(wú)人搶答時(shí),本次搶答無(wú)效,揚(yáng)聲器報(bào)警發(fā)出聲音,并禁止搶答。定時(shí)器上顯示00。

第二章:硬件電路設(shè)計(jì)
一.系統(tǒng)硬件設(shè)計(jì)
為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面:
(1) 盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。
(2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來(lái)修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來(lái)可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。
(3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用AT89C51單片機(jī)。
(4)  I/O端口,在樣機(jī)研制出來(lái)后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問(wèn)題,而這些問(wèn)題不是靠單純的軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些I/O端口,雖然當(dāng)時(shí)空著沒(méi)用,那么用的時(shí)候就派上用場(chǎng)了。
1.總體原理圖
1.001.jpg
2.時(shí)鐘頻率電路的設(shè)計(jì)
單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。
1.002.jpg
外部振蕩源電路
1.003.jpg 一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。
單片機(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。
3.復(fù)位電路的設(shè)計(jì)
單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖所示:
1.004.jpg
復(fù)位電路
值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(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í)行的起始地址。
4.顯示電路的設(shè)計(jì)
顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來(lái)解決。
1.005.jpg
5.鍵盤(pán)掃描電路的設(shè)計(jì)
鍵盤(pán)是人與微機(jī)系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤(pán)硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn)和書(shū)籍中找到,配合各種不同的硬件電路,這些書(shū)籍中一般也提供了相應(yīng)的鍵盤(pán)掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計(jì)的立場(chǎng)上來(lái)看,僅僅完成鍵盤(pán)掃描,讀取當(dāng)前時(shí)刻的鍵盤(pán)狀態(tài)是不夠的,還有不少問(wèn)題需要妥善解決,否則,人們?cè)诓僮麈I盤(pán)就容易引起誤操作和操作失控現(xiàn)象。在單片機(jī)應(yīng)用中鍵盤(pán)用得最多的形式是獨(dú)立鍵盤(pán)及矩陣鍵盤(pán)。
1.006.jpg
獨(dú)立鍵盤(pán)
1.007.jpg 它們各有自己的特點(diǎn),其中獨(dú)立鍵盤(pán)硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤(pán)與獨(dú)立鍵盤(pán)有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤(pán)復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過(guò)程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無(wú)效。
1.010.jpg 6.發(fā)聲
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單片機(jī)某個(gè)口線(xiàn)的“高”電平或低電平,則在該口線(xiàn)上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。
1.011.jpg
7.系統(tǒng)復(fù)位
使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)有必要完全模擬,可根據(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)志的重要性。
三.系統(tǒng)軟件設(shè)計(jì)
軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來(lái)了。
1.系統(tǒng)原理圖
1.012.jpg
2.程序流程圖
在本設(shè)計(jì)中包括了以下八個(gè)主要的程序:主程序;非法搶答序;搶答時(shí)間調(diào)整程序;回答時(shí)間調(diào)整程序;倒計(jì)時(shí)程序;正常搶答處理程序;犯規(guī)處理程序;顯示及發(fā)聲程序。主流程圖如圖所示:
      1.013.jpg
1.014.jpg
1.015.jpg

第四章:焊接調(diào)試過(guò)程與問(wèn)題分析。
4.1 焊接
主要步驟:1.檢測(cè)各元件
2. 對(duì)PCB板進(jìn)行排版及              布線(xiàn)
3.焊接
分步驟完成:
1.檢測(cè)各元件
用萬(wàn)用表檢查、了解元件;
(1)一般電阻
電阻的阻值是可以根據(jù)電阻上的色環(huán)判斷:
1)、四環(huán)電阻阻值等于前兩位對(duì)應(yīng)的數(shù)值乘上第三位對(duì)應(yīng)的倍率,第四位為誤差范圍;
2)、五環(huán)電阻阻值等于前三位對(duì)應(yīng)的數(shù)值乘上第四位對(duì)應(yīng)的倍率,第五位為誤差范圍。
1.016.jpg      電阻R0為五環(huán)型
色環(huán)顏色:棕 黑 黑 棕 棕
阻值=100×10² =1000Ω
誤差為±1%
實(shí)測(cè)阻值為992Ω
本實(shí)驗(yàn)R1用兩個(gè)R0的電阻并聯(lián)成;               圖1  電阻R0
1.017.jpg     電阻R2為四環(huán)型
色環(huán)顏色 :綠 棕 紅 金
阻值=51×10² =5100Ω=5.1kΩ
誤差為±5%
實(shí)測(cè)阻值為5.02kΩ                                圖2 電阻R2                              
    光敏電阻
A、在光照情況下,測(cè)量光敏電阻的阻值,即為光敏電阻的亮阻;
B、在遮光情況下,測(cè)量光敏電阻的阻值,即為光敏電阻的暗阻;
(2)發(fā)光二極管
發(fā)光二極管有兩個(gè)接線(xiàn)柱,一個(gè)長(zhǎng)的一個(gè)短的,長(zhǎng)端為正極,短端為負(fù)極?梢岳萌f(wàn)用表測(cè)量?jī)煞N接法時(shí)的電阻值,可知道當(dāng)正極接到長(zhǎng)端,負(fù)極接到短端的時(shí)候,發(fā)光二極管的阻值比較小,此即是二極管的單向?qū)ㄌ匦浴?/font>
  • 可變電阻
可變電阻有三個(gè)引腳,它的接法和滑動(dòng)變阻器的接法一樣,有三端接入式和兩端接入式,本實(shí)驗(yàn)采用兩端接入式比較簡(jiǎn)單。采用兩端接入時(shí),其中一端必須接在中間的那個(gè)引腳上,另外一個(gè)在剩余的兩個(gè)引腳中,可以任選一個(gè)(兩者的區(qū)別是,滑動(dòng)頭的轉(zhuǎn)動(dòng)方向不一樣)。選擇好引腳后,可以將其接在萬(wàn)用表上,測(cè)其阻值的大小,轉(zhuǎn)動(dòng)滑動(dòng)頭,看順時(shí)針轉(zhuǎn)動(dòng)時(shí)阻值是增加還是減小,這樣做對(duì)調(diào)試電路時(shí)有好處,可以知道自己旋轉(zhuǎn)的方向是增加電阻還是減小電阻。
  • 蜂鳴器
本實(shí)驗(yàn)所用的蜂鳴器和平時(shí)看到的揚(yáng)聲器、耳機(jī)等發(fā)聲器件有微小的差別,它里邊多了一個(gè)振蕩器,輸入電流時(shí)振蕩器產(chǎn)生的音頻信號(hào)電流通過(guò)電磁線(xiàn)圈,使電磁線(xiàn)圈產(chǎn)生磁場(chǎng)。振動(dòng)膜片在電磁線(xiàn)圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲?梢試L試的將其正負(fù)極接上電源,可看到只有正負(fù)極接入正確時(shí),蜂鳴器才會(huì)發(fā)聲。也可根據(jù)蜂鳴器上的引線(xiàn)長(zhǎng)度按來(lái)判斷正負(fù)極(長(zhǎng)正短負(fù))。所以在實(shí)驗(yàn)室中要把蜂鳴器的正負(fù)極接正確。
  • 三極管
三極管有兩種,一種是PNP管,一種是NPN管,本實(shí)驗(yàn)用的是PNP管。
三極管有三個(gè)引腳,分別是基極(b),發(fā)射極(e),集電極(c)。本實(shí)驗(yàn)所用的三極管判斷極點(diǎn)的方法是,面對(duì)有型號(hào)標(biāo)記的一面,然后看著三個(gè)引腳,從左到右依次是,發(fā)射極(e),基極(b),集電極(c)。接線(xiàn)時(shí)三個(gè)極端不能接錯(cuò),否則三極管就沒(méi)有起到作用。                        
1.018.jpg
圖3三極管符號(hào)、管腳排列
集電極和基極之間形成集電結(jié),發(fā)射極和基極之間形成發(fā)射結(jié),三極管起放大作用的條件,發(fā)射結(jié)正向偏置,集電結(jié)反向偏置。正向偏置時(shí)必須達(dá)到正向偏置電壓,即為導(dǎo)通,否則,為截止?fàn)顟B(tài)。
2.對(duì)PCB板進(jìn)行排版及連線(xiàn)            
       本實(shí)驗(yàn)所用的面包板的內(nèi)部鏈接在破壞背面的絕緣膠帶的情況下,可以揭開(kāi)膠帶看其內(nèi)部線(xiàn)路的構(gòu)造,以防不知道內(nèi)部線(xiàn)路差錯(cuò)電路。當(dāng)然最好的辦法是:用測(cè)試電路在插孔上來(lái)回實(shí)驗(yàn),猜想驗(yàn)證其內(nèi)部構(gòu)造。                                                        
1)、首先了解面包板在連線(xiàn)和焊接的注意事項(xiàng)。
2)、了解實(shí)驗(yàn)原件及器材后,按照原理圖在面包板上連接電路;
3)、焊接要注意,電子電路在焊接時(shí),應(yīng)遵循的規(guī)則。
3.  焊接的問(wèn)題及解決
一般來(lái)說(shuō),造成硬件問(wèn)題的首要問(wèn)題就是焊接了,也就是說(shuō)焊接的好與壞直接響產(chǎn)品的正常運(yùn)行。造成焊接質(zhì)量不高的常見(jiàn)原因是:①焊錫用量過(guò)多,形成焊點(diǎn)的錫堆積;焊錫過(guò)少,不足以包裹焊點(diǎn)。②冷焊。焊接時(shí)烙鐵溫度過(guò)低或加熱時(shí)間不足,焊錫未完全熔化、浸潤(rùn)、焊錫表面不光亮(不光滑),有細(xì)小裂紋(如同豆腐渣一樣!)。③夾松香焊接,焊錫與元器件或印刷板之間夾雜著一層松香,造成電連接不良。若夾雜加熱不足的松香,則焊點(diǎn)下有一層黃褐色松香膜;若加熱溫度太高,則焊點(diǎn)下有一層碳化松香的黑色膜。對(duì)于有加熱不足的松香膜的情況,可以用烙鐵進(jìn)行補(bǔ)焊。對(duì)于已形成黑膜的,則要"吃"凈焊錫,清潔被焊元器件或印刷板表面,重新進(jìn)行焊接才行。④焊錫連橋。指焊錫量過(guò)多,造成元器件的焊點(diǎn)之間短路。這在對(duì)超小元器件及細(xì)小印刷電路板進(jìn)行焊接時(shí)要尤為注意。⑤焊劑過(guò)量,焊點(diǎn)明圍松香殘?jiān)芏。?dāng)少量松香殘留時(shí),可以用電烙鐵再輕輕加熱一下,讓松香揮發(fā)掉,也可以用蘸有無(wú)水酒精的棉球,擦去多余的松香或焊劑。⑥焊點(diǎn)表面的焊錫形成尖銳的突尖。這多是由于加熱溫度不足或焊劑過(guò)少,以及烙鐵離開(kāi)焊點(diǎn)時(shí)角度不當(dāng)浩成的內(nèi)。
  最小系統(tǒng)的電路不工作,首先應(yīng)該確認(rèn)電源電壓是否正常。用電壓表測(cè)量接地引腳跟電源引腳之間的電壓,看是否符合電源電壓,常用的是5V左右。接下來(lái)就是檢測(cè)復(fù)位引腳的電壓是否正常,EA引腳的電壓要正常為5V左右。
4.焊接的技巧和注意事項(xiàng)
1、焊錫之前應(yīng)該先插上電烙鐵的插頭,給電烙鐵加熱。  
2、焊接時(shí),焊錫與電路板、電烙鐵與電路板的夾角最好成45度,這樣焊錫與電烙鐵夾角成90度。
3、焊接時(shí),焊錫與電烙鐵接觸時(shí)間不要太長(zhǎng),以免焊錫過(guò)多或是造成漏錫;也不要過(guò)短,以免造成虛焊。
4、元件的腿盡量要直,而且不要伸出太長(zhǎng),以1毫米為好,多余的可以剪掉。
5、焊完時(shí),焊錫最好呈圓滑的圓錐狀,而且還要有金屬光澤。
4.2調(diào)試4.21系統(tǒng)的調(diào)試
系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們?cè)O(shè)計(jì)好的硬件電路和軟件程序,只有經(jīng)過(guò)聯(lián)合調(diào)試,才能驗(yàn)證其正確性;軟硬件的配人情況以及是否達(dá)到設(shè)計(jì)任務(wù)的要求,也只有經(jīng)過(guò)調(diào)試,才能發(fā)現(xiàn)問(wèn)題并加以解決、完善,最終開(kāi)發(fā)成實(shí)用產(chǎn)品。
  硬件調(diào)試分單元電路調(diào)試和聯(lián)機(jī)調(diào)試,單元電路試驗(yàn)在硬件電路設(shè)計(jì)時(shí)已經(jīng)進(jìn)行,這里的調(diào)試只是將其制成印刷電路板后試驗(yàn)電路是否正確,并排除一些加工工藝性錯(cuò)誤(如錯(cuò)線(xiàn)、開(kāi)路、短路等)。這種調(diào)試可單獨(dú)模擬進(jìn)行,也可通過(guò)開(kāi)發(fā)裝置由軟件配合進(jìn)行,硬件聯(lián)機(jī)調(diào)試則必須在系統(tǒng)軟件的配合下進(jìn)行。
  軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機(jī)調(diào)試兩個(gè)階段。程序的分塊調(diào)試一般在單片機(jī)開(kāi)發(fā)裝置上進(jìn)行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個(gè)特殊的程序段,并連同被調(diào)程序功能塊一起在開(kāi)發(fā)裝置上運(yùn)行;也可配合對(duì)應(yīng)硬件電路單獨(dú)運(yùn)行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過(guò)單步運(yùn)行或設(shè)置斷點(diǎn)的方法,查出原因并加以改正,直到運(yùn)行結(jié)果正確為止。這時(shí)該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進(jìn)行調(diào)試。程序聯(lián)機(jī)調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個(gè)完整程序,在所研制的硬件電路上運(yùn)行。從而試驗(yàn)程序整體運(yùn)行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會(huì)有某些支路上的程序、功能塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時(shí),調(diào)試人員應(yīng)創(chuàng)造條件進(jìn)行模擬調(diào)試。在聯(lián)調(diào)中如發(fā)現(xiàn)硬件問(wèn)題也應(yīng)及時(shí)修正,直到單片機(jī)系統(tǒng)的軟件、硬件全部調(diào)試成功為止。系統(tǒng)調(diào)試完成后,還要進(jìn)行一段時(shí)間的試運(yùn)行,從而檢驗(yàn)系統(tǒng)的穩(wěn)定性和抗干擾能力,驗(yàn)證系統(tǒng)功能是否達(dá)到設(shè)計(jì)要求,是否達(dá)到預(yù)期的效果。
4.22具體調(diào)試
1、具有清零裝置和搶答控制,可由主持人操縱避免有人在主持人說(shuō)
“開(kāi)始”前提前搶答違反規(guī)則。
2、具有定時(shí)功能,在60秒內(nèi)無(wú)人搶答表示所有參賽選手獲參賽隊(duì)對(duì)本題棄權(quán)。
3、60秒時(shí)仍無(wú)人搶答其報(bào)警電路工作表示搶答時(shí)間耗盡并禁止搶答。
4、 顯示搶答時(shí)間, 按一下減一秒,按一下"-1s"鍵,時(shí)間LED上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為0s~60s。                        
5、主持人按"搶答開(kāi)始"鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)60s搶答時(shí)間),如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù),只有第一個(gè)按搶答的選手有效。                                                                                             
6、如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按"停止"按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開(kāi)始"進(jìn)入下次搶答計(jì)時(shí)。                                                                                                      
我遇到的問(wèn)題:有時(shí)候在自己創(chuàng)建的元器件的管腳上無(wú)法實(shí)現(xiàn)連線(xiàn)。
 分析回答:應(yīng)該是管腳的間距太小了。因?yàn)樵贗SIS中,每個(gè)元器件的管腳都要占據(jù)一塊區(qū)域(就像自己的保護(hù)區(qū)一樣,不容別人隨意侵犯),該區(qū)域會(huì)排斥外部的走線(xiàn)。解決問(wèn)題的方法是在走線(xiàn)的同時(shí)按住 “CTRL”鍵,直到走線(xiàn)繞過(guò)狹窄的保護(hù)區(qū)。當(dāng)然最根本的辦法是重新編輯元器件,把其管腳間距調(diào)大一些。
  主持人按鍵來(lái)控制總開(kāi)關(guān),主持人按下開(kāi)關(guān)那么選手開(kāi)始搶答,此時(shí)數(shù)碼管開(kāi)始0-60計(jì)數(shù),并且選手們必須在規(guī)定的時(shí)間內(nèi)進(jìn)行搶答,若過(guò)了60秒還沒(méi)搶答那么搶答失效,選手們?nèi)粲幸粋(gè)在規(guī)定的時(shí)間內(nèi)搶答成功則其余的選手不可以再搶答,即該選手搶答成功。
4.23調(diào)試實(shí)物圖
1.開(kāi)始計(jì)時(shí)
1.019.jpg
2.選手搶答
1.020.jpg
第五章:總結(jié)
     經(jīng)過(guò)近兩個(gè)星期的努力,在老師和同學(xué)的討論和幫助下,我成功地完成了八路搶答器的設(shè)計(jì),通過(guò)此次課程設(shè)計(jì),我重新認(rèn)識(shí)到了對(duì)書(shū)本上的知識(shí)要獨(dú)立運(yùn)用的道理。在搶答器設(shè)計(jì)過(guò)程中,發(fā)現(xiàn)了很多細(xì)節(jié)性的問(wèn)題,也出現(xiàn)了很多錯(cuò)誤,經(jīng)過(guò)和同學(xué)們研究、商討最后都解決,感覺(jué)團(tuán)隊(duì)協(xié)作能力是非常有必要的!通過(guò)此次的搶答器的設(shè)計(jì),讓我重新拾起了以前所學(xué)習(xí)的電子知識(shí)和C語(yǔ)言的編程,也使我加深了對(duì)單片機(jī)及接口技術(shù)的理解和應(yīng)用,由于知識(shí)水平的局限,設(shè)中可能會(huì)存在著一些不足,我真誠(chéng)的接受老師和同學(xué)的批評(píng)和指正。

參考文獻(xiàn)
1.C程序設(shè)計(jì) ,譚浩強(qiáng),清華大學(xué)出版社,2005
2.單片機(jī)原理及接口技術(shù)(第3版),李朝青,北京航空航天大學(xué)出版社,2002
3. 單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)例指導(dǎo),馮育長(zhǎng),西安電子科技大學(xué)出版社,2007
4. 單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo),李光飛,北京航天航空大學(xué)出版社,2004

單片機(jī)源程序:
  1. #include

  2. #include

  3. #define uchar unsigned char

  4. #define uint unsigned int

  5. sbit rst=P3^7;

  6. sbit speaker=P3^6;//報(bào)警

  7. sbit start=P3^4;

  8. uchar count=0;//用于產(chǎn)生1秒的時(shí)間

  9. uchar dsy_time=0x3c; //用于顯示搶答時(shí)間

  10. uchar dsy_buffer[]={0,0,0};//顯示緩沖

  11. uchar code leddata[]=  //共陰數(shù)碼管的段碼

  12.                                           {

  13.                 0x3F,  //"0"

  14.                 0x06,  //"1"

  15.                 0x5B,  //"2"

  16.                 0x4F,  //"3"

  17.                 0x66,  //"4"

  18.                 0x6D,  //"5"

  19.                 0x7D,  //"6"

  20.                 0x07,  //"7"

  21.                 0x7F,  //"8"

  22.                 0x6F,  //"9"

  23.                          };

  24. uchar code state[]=//搶答時(shí)的8種按鍵情況

  25. {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  26. //

  27. //延時(shí)

  28. //

  29. void DelayMS(uint ms)

  30. {

  31.               uchar t;

  32.               while(ms--)

  33.               for(t=0;t<120;t++);

  34. }

  35. //

  36. //報(bào)警

  37. //

  38. void speak(void)

  39. {

  40.               uchar i=10;            

  41.               while(i--)            

  42.                             {

  43.                                           speaker=~speaker;

  44.                                           DelayMS(2);                                                      

  45. }                            }

  46. //

  47. //主程序

  48. //

  49. void main()

  50. {              //初始化

  51.               uchar i,m=0x04;

  52.               P0=0xff;

  53.               P1=0x00;

  54.               P2=0x00;

  55.               P3=0xb7;

  56.               TMOD=0x01;//選擇工作方式

  57.               TH0=0x3c;//定時(shí)器T0初始值的高八位

  58.               TL0=0xaf;//定時(shí)器T0初始值的低八位

  59.               IE=0x83;//開(kāi)總中斷,定時(shí)器中斷,外部中斷0

  60.               while(1)

  61.               {            

  62.                            

  63.                             if(rst==0)//系統(tǒng)復(fù)位

  64.                             {

  65.                                           dsy_buffer[0]=0;

  66.                                           TR0=0;

  67.                                           dsy_time=0x3c;            

  68.                             }

  69.                             if(dsy_time==0x00)//在設(shè)定的時(shí)間到,而無(wú)人搶答時(shí)關(guān)閉定時(shí)器中斷

  70.                             {

  71.                                           TR0=0;//關(guān)閉定時(shí)器中斷

  72.                                           P1=0x00;//禁止搶答

  73.                             }            

  74.                             for(i=0;i<3;i++)//用數(shù)碼管顯示搶答序號(hào)和搶答時(shí)間

  75.                             {            

  76.                                          

  77.                                           P2=m;

  78.                                           m=_cror_(m,1);//循環(huán)移位實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示                                         

  79.                                           dsy_buffer[2]=dsy_time%10;//搶答時(shí)間的個(gè)位

  80.                                 dsy_buffer[1]=dsy_time/10;//搶答時(shí)間的十位            

  81.                                           P0=leddata[dsy_buffer[i]];//數(shù)碼管顯示搶答者的序號(hào)和搶答時(shí)間

  82.                                           DelayMS(5);

  83.                            



  84.                             }

  85.                                           m=0x04;//實(shí)現(xiàn)下輪的循環(huán)顯示

  86.                             for(i=0;i<8;i++)

  87.                             {

  88.                                           if(P1==state[i])//判斷有按鍵按下

  89.                                           {

  90.                                                         DelayMS(10); //延時(shí)防止按鍵抖動(dòng)引起的誤操作

  91.                                                         if(P1<=state[i]) //再次判斷有按鍵按下

  92.                                                         {

  93.                                                                       dsy_buffer[0]=i+1;

  94.                                                                       P1=0x00;//通過(guò)硬件實(shí)現(xiàn)優(yōu)先搶答

  95.                                                                       TR0=0;              //關(guān)閉定時(shí)器0

  96.                                                                       speak();                                                                     

  97.                                                         }

  98.                                                       

  99.                                           }                           

  100.                             }

  101.                            

  102.               }            



  103. }

  104. //

  105. //實(shí)現(xiàn)定時(shí)時(shí)間1S

  106. //

  107. void key_inter() interrupt 1

  108. {

  109.               TH0=0x3c;//50MS初始值

  110.               TL0=0xaf;//50MS初始值

  111.               if(++count==20)

  112.               {

  113.                             count=0;

  114.                            

  115.                             dsy_time--;//實(shí)現(xiàn)計(jì)數(shù)器的減法計(jì)數(shù)

  116.               }                           

  117. }



  118. //

  119. //搶答開(kāi)始

  120. [color=rgb(0, 0, 0)]…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………[/color]
復(fù)制代碼

完整論文下載(word格式 可編輯):
基于單片機(jī)8路搶答器論文.doc (5.98 MB, 下載次數(shù): 23)


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:210035 發(fā)表于 2017-6-11 11:09 | 顯示全部樓層
課程設(shè)計(jì)么
回復(fù)

使用道具 舉報(bào)

ID:210052 發(fā)表于 2017-6-11 11:58 | 顯示全部樓層
這是畢業(yè)論文?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表