搶答器設計 第一章:緒論,主要介紹設計背景。 1.數字搶答器的概述 2. 設計要求及目的 第二章:硬件電路設計 1.總體原理圖 2.時鐘頻率電路的設計 3.復位電路的設計 4.顯示電路的設計 5.鍵盤掃描電路的設計 6.發聲 7.系統復位 三.系統軟件設計 1.系統原理圖 2.程序流程圖 3.程序 第四章:焊接調試過程與問題分析。 4.1 焊接 1.檢測各元件 2.對PCB板進行排版及連線 3. 焊接的問題及解決 4.焊接的技巧和注意事項 4.2調試 4.21系統的調試 4.22具體調試 4.23調試實物圖 第五章:總結 參考文獻 第一章:緒論,主要介紹設計背景。 1.數字搶答器的概述單片機把我們帶入了智能化的電子領域,許多繁瑣的系統若由單片機進行設計,便能收到電路更簡單、功能更齊全的良好效果。若把經典的電子系統當作一個僵死的電子系統,那么智能化的現代電子系統則是一個具有“生命”的電子系統。
而隨著技術的進步,單片機與串口通信的結合更多地應用到各個電子系統中已成一種趨勢。本設計就是基于單片機設計搶答系統,通過串口通信動態傳輸數據,使搶答系統有了更多更完善的功能。單片機系統的硬件結構給予了搶答系統“身軀”,而單片機的應用程序賦予了其新的“生命”,使其在傳統的搶答器面前具有電路簡單、成本低、運行可靠等特色。對于搶答器我們大家都知道那是用于選手做搶答題時用的,選手進行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現了公平公正的原則。 2. 設計要求及目的(1)設計一個可供8人進行的搶答器。 (2)系統設置復位按鈕,按動后,重新開始搶答。 (3)搶答器開始時數碼管顯示序號0,選手搶答實行優先顯示,優先搶答選手的編號一直保持到主持人將系統清除為止。搶答后顯示優先搶答者序號,同時發出音響。,并且不出現其他搶答者的序號。 (4)搶答器具有定時搶答功能,且一次搶答的時間有主持人設定,本搶答器的時間設定為60秒,當主持人啟動“開始”開關后,定時器開始減計時,同時蜂鳴器有短暫的聲響。 (5)設定的搶答時間內,選手可以搶答,這時定時器停止工作,顯示器上顯示選手的號碼和搶答時間。并保持到主持人按復位鍵。 (6)當設定的時間到,而無人搶答時,本次搶答無效,揚聲器報警發出聲音,并禁止搶答。定時器上顯示00。 第二章:硬件電路設計一.系統硬件設計 為使硬件電路設計盡可能合理,應注意以下幾方面: (1) 盡可能采用功能強的芯片,以簡化電路,功能強的芯片可以代替若干普通芯片,隨著生產工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高。 (2) 留有設計余地。在設計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設計,如果現在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。 (3) 程序空間,選用片內程序空間足夠大的單片機,本設計采用AT89C51單片機。 (4) I/O端口,在樣機研制出來后進行現場試用時,往往會發現一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設計就預留出一些I/O端口,雖然當時空著沒用,那么用的時候就派上用場了。 1.總體原理圖 2.時鐘頻率電路的設計單片機必須在時鐘的驅動下才能工作.在單片機內部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產生一定的時鐘信號送到單片機內部的各個單元,決定單片機的工作速度。 外部振蕩源電路
一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調。C1,C2的典型值為30PF。 單片機在工作時,由內部振蕩器產生或由外直接輸入的送至內部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數,常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12µs。 3.復位電路的設計單片機的第9腳RST為硬件復位端,只要將該端持續4個機器周期的高電平即可實現復位,復位后單片機的各狀態都恢復到初始化狀態,其電路圖如圖所示: 復位電路 值得注意的是,在設計當中使用到了硬件復位和軟件復位兩種功能,由上面的硬件復位后的各狀態可知寄存器及存儲器的值都恢復到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現的前提條件就是不能對單片機進行硬件復位,所以設定了軟復位功能。軟復位實際上就是當程序執行完畢之后,將程序指針通過一條跳轉指令讓它跳轉到程序執行的起始地址。 4.顯示電路的設計顯示功能與硬件關系極大,當硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。 5.鍵盤掃描電路的設計鍵盤是人與微機系統打交道的主要設備。關于鍵盤硬件電路的設計方法也可以在文獻和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應的鍵盤掃描程序。站在系統監控軟件設計的立場上來看,僅僅完成鍵盤掃描,讀取當前時刻的鍵盤狀態是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現象。在單片機應用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。 獨立鍵盤
它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設計上也不復雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區別,首先在硬件電路上它要比獨立鍵盤復雜得多,而且在程序算法上比它要煩瑣,但它在節省端口資源上有優勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產生的“毛刺”現象。這里采用最常用的方法,即延時重復掃描法,延時法的原理為:因為“毛刺”脈沖一般持續時間短,約為幾ms,而我們按鍵的時間一般遠遠大于這個時間,所以當單片機檢測到有按鍵動靜后再延時一段時間(這里我們取10ms)后再判斷此電平是否保持原狀態,如果是則為有效按鍵,否則無效。
6.發聲我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續時間,就能改變輸出頻率,從而改變音調,使喇叭發出不同的聲音。 7.系統復位使CPU進入初始狀態,從0000H地址開始執行程序的過程叫系統復位。從實現系統復位的方法來看,系統復位可分為硬件復位和軟件復位。硬件復位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時間的高電位才能實現。上電復位,人工按鈕復位和硬件看門狗復位均為硬件復位。硬件復位后,各專用寄存器的狀態均被初始化,且對片內通用寄存器的內容沒有影響。但是,硬件復位還能自動清除中斷激活標志,使中斷系統能夠正常工作,這樣一個事實卻容易為不少編碼人員所忽視。軟件復位就是用一系列指令來模擬硬件復位功能,最后通過轉移指令使程序從0000H地址開始執行。對各專用寄存器的復位操作是容易的,也沒有必要完全模擬,可根據實際需要去主程序初始化過程中完成。而對中斷激活標志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認為直接轉向0000H地址就完成了軟件復位,就是這類錯誤的典型代表。軟件復位是使用軟件陷阱和軟件看門狗后必須進行的工作,這時程序出錯完全有可能發生在中斷子程序中,中斷激活標志已置位,它將阻止同級中斷響應。由于軟件看門是高級中斷,它將阻止說要中斷響應,由此可見清除中斷激活標志的重要性。 三.系統軟件設計軟件任務分析和硬件電路設計結合進行,哪些功能由硬件完成,哪些任務由軟件完成,在硬件電路設計基本定型后,也就基本上決定下來了。 1.系統原理圖2.程序流程圖在本設計中包括了以下八個主要的程序:主程序;非法搶答序;搶答時間調整程序;回答時間調整程序;倒計時程序;正常搶答處理程序;犯規處理程序;顯示及發聲程序。主流程圖如圖所示:
第四章:焊接調試過程與問題分析。 4.1 焊接主要步驟:1.檢測各元件 2. 對PCB板進行排版及 布線 3.焊接 分步驟完成: 1.檢測各元件用萬用表檢查、了解元件; (1)一般電阻 電阻的阻值是可以根據電阻上的色環判斷: 1)、四環電阻阻值等于前兩位對應的數值乘上第三位對應的倍率,第四位為誤差范圍; 2)、五環電阻阻值等于前三位對應的數值乘上第四位對應的倍率,第五位為誤差范圍。
電阻R0為五環型 色環顏色:棕 黑 黑 棕 棕 阻值=100×10² =1000Ω 誤差為±1% 實測阻值為992Ω 本實驗R1用兩個R0的電阻并聯成; 圖1 電阻R0
電阻R2為四環型 色環顏色 :綠 棕 紅 金 阻值=51×10² =5100Ω=5.1kΩ 誤差為±5% 實測阻值為5.02kΩ 圖2 電阻R2 光敏電阻 A、在光照情況下,測量光敏電阻的阻值,即為光敏電阻的亮阻; B、在遮光情況下,測量光敏電阻的阻值,即為光敏電阻的暗阻; (2)發光二極管 發光二極管有兩個接線柱,一個長的一個短的,長端為正極,短端為負極?梢岳萌f用表測量兩種接法時的電阻值,可知道當正極接到長端,負極接到短端的時候,發光二極管的阻值比較小,此即是二極管的單向導通特性。 可變電阻有三個引腳,它的接法和滑動變阻器的接法一樣,有三端接入式和兩端接入式,本實驗采用兩端接入式比較簡單。采用兩端接入時,其中一端必須接在中間的那個引腳上,另外一個在剩余的兩個引腳中,可以任選一個(兩者的區別是,滑動頭的轉動方向不一樣)。選擇好引腳后,可以將其接在萬用表上,測其阻值的大小,轉動滑動頭,看順時針轉動時阻值是增加還是減小,這樣做對調試電路時有好處,可以知道自己旋轉的方向是增加電阻還是減小電阻。 本實驗所用的蜂鳴器和平時看到的揚聲器、耳機等發聲器件有微小的差別,它里邊多了一個振蕩器,輸入電流時振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。可以嘗試的將其正負極接上電源,可看到只有正負極接入正確時,蜂鳴器才會發聲。也可根據蜂鳴器上的引線長度按來判斷正負極(長正短負)。所以在實驗室中要把蜂鳴器的正負極接正確。 三極管有兩種,一種是PNP管,一種是NPN管,本實驗用的是PNP管。 三極管有三個引腳,分別是基極(b),發射極(e),集電極(c)。本實驗所用的三極管判斷極點的方法是,面對有型號標記的一面,然后看著三個引腳,從左到右依次是,發射極(e),基極(b),集電極(c)。接線時三個極端不能接錯,否則三極管就沒有起到作用。 圖3三極管符號、管腳排列 集電極和基極之間形成集電結,發射極和基極之間形成發射結,三極管起放大作用的條件,發射結正向偏置,集電結反向偏置。正向偏置時必須達到正向偏置電壓,即為導通,否則,為截止狀態。 2.對PCB板進行排版及連線 本實驗所用的面包板的內部鏈接在破壞背面的絕緣膠帶的情況下,可以揭開膠帶看其內部線路的構造,以防不知道內部線路差錯電路。當然最好的辦法是:用測試電路在插孔上來回實驗,猜想驗證其內部構造。 1)、首先了解面包板在連線和焊接的注意事項。 2)、了解實驗原件及器材后,按照原理圖在面包板上連接電路; 3)、焊接要注意,電子電路在焊接時,應遵循的規則。 3. 焊接的問題及解決一般來說,造成硬件問題的首要問題就是焊接了,也就是說焊接的好與壞直接響產品的正常運行。造成焊接質量不高的常見原因是:①焊錫用量過多,形成焊點的錫堆積;焊錫過少,不足以包裹焊點。②冷焊。焊接時烙鐵溫度過低或加熱時間不足,焊錫未完全熔化、浸潤、焊錫表面不光亮(不光滑),有細小裂紋(如同豆腐渣一樣!)。③夾松香焊接,焊錫與元器件或印刷板之間夾雜著一層松香,造成電連接不良。若夾雜加熱不足的松香,則焊點下有一層黃褐色松香膜;若加熱溫度太高,則焊點下有一層碳化松香的黑色膜。對于有加熱不足的松香膜的情況,可以用烙鐵進行補焊。對于已形成黑膜的,則要"吃"凈焊錫,清潔被焊元器件或印刷板表面,重新進行焊接才行。④焊錫連橋。指焊錫量過多,造成元器件的焊點之間短路。這在對超小元器件及細小印刷電路板進行焊接時要尤為注意。⑤焊劑過量,焊點明圍松香殘渣很多。當少量松香殘留時,可以用電烙鐵再輕輕加熱一下,讓松香揮發掉,也可以用蘸有無水酒精的棉球,擦去多余的松香或焊劑。⑥焊點表面的焊錫形成尖銳的突尖。這多是由于加熱溫度不足或焊劑過少,以及烙鐵離開焊點時角度不當浩成的內。
最小系統的電路不工作,首先應該確認電源電壓是否正常。用電壓表測量接地引腳跟電源引腳之間的電壓,看是否符合電源電壓,常用的是5V左右。接下來就是檢測復位引腳的電壓是否正常,EA引腳的電壓要正常為5V左右。 4.焊接的技巧和注意事項1、焊錫之前應該先插上電烙鐵的插頭,給電烙鐵加熱。
2、焊接時,焊錫與電路板、電烙鐵與電路板的夾角最好成45度,這樣焊錫與電烙鐵夾角成90度。 3、焊接時,焊錫與電烙鐵接觸時間不要太長,以免焊錫過多或是造成漏錫;也不要過短,以免造成虛焊。 4、元件的腿盡量要直,而且不要伸出太長,以1毫米為好,多余的可以剪掉。 5、焊完時,焊錫最好呈圓滑的圓錐狀,而且還要有金屬光澤。 4.2調試4.21系統的調試系統調試包括硬件調試和軟件調試,而且兩者是密不可分的。我們設計好的硬件電路和軟件程序,只有經過聯合調試,才能驗證其正確性;軟硬件的配人情況以及是否達到設計任務的要求,也只有經過調試,才能發現問題并加以解決、完善,最終開發成實用產品。
硬件調試分單元電路調試和聯機調試,單元電路試驗在硬件電路設計時已經進行,這里的調試只是將其制成印刷電路板后試驗電路是否正確,并排除一些加工工藝性錯誤(如錯線、開路、短路等)。這種調試可單獨模擬進行,也可通過開發裝置由軟件配合進行,硬件聯機調試則必須在系統軟件的配合下進行。
軟件調試一般包括分塊調試和聯機調試兩個階段。程序的分塊調試一般在單片機開發裝置上進行,可根據所調程序功能塊的入口參量初值編制一個特殊的程序段,并連同被調程序功能塊一起在開發裝置上運行;也可配合對應硬件電路單獨運行某程序功能塊,然后檢查是否正確,如果執行結果與預想的不一致,可以通過單步運行或設置斷點的方法,查出原因并加以改正,直到運行結果正確為止。這時該 程序功能塊已調試完畢,可去掉附加程序段。其它程序功能塊可按此法進行調試。程序聯機調試就是將已調試好的各程序功能塊按總體結構聯成一個完整程序,在所研制的硬件電路上運行。從而試驗程序整體運行的完整性、正確性和與硬件電路的配合情況。在聯調中可能會有某些支路上的程序、功能塊因受條件制約而得不到相應的輸入參數,這時,調試人員應創造條件進行模擬調試。在聯調中如發現硬件問題也應及時修正,直到單片機系統的軟件、硬件全部調試成功為止。系統調試完成后,還要進行一段時間的試運行,從而檢驗系統的穩定性和抗干擾能力,驗證系統功能是否達到設計要求,是否達到預期的效果。
4.22具體調試1、具有清零裝置和搶答控制,可由主持人操縱避免有人在主持人說 “開始”前提前搶答違反規則。 2、具有定時功能,在60秒內無人搶答表示所有參賽選手獲參賽隊對本題棄權。 3、60秒時仍無人搶答其報警電路工作表示搶答時間耗盡并禁止搶答。 4、 顯示搶答時間, 按一下減一秒,按一下"-1s"鍵,時間LED上會顯示改變后的時間,調整范圍為0s~60s。 5、主持人按"搶答開始"鍵,會有提示音,并立刻進入搶答倒計時(預設60s搶答時間),如有選手搶答,會有提示音,并會顯示其號數,只有第一個按搶答的選手有效。 6、如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統會自動進入準備狀態,等待主持人按"搶答開始"進入下次搶答計時。 我遇到的問題:有時候在自己創建的元器件的管腳上無法實現連線。
分析回答:應該是管腳的間距太小了。因為在ISIS中,每個元器件的管腳都要占據一塊區域(就像自己的保護區一樣,不容別人隨意侵犯),該區域會排斥外部的走線。解決問題的方法是在走線的同時按住 “CTRL”鍵,直到走線繞過狹窄的保護區。當然最根本的辦法是重新編輯元器件,把其管腳間距調大一些。
主持人按鍵來控制總開關,主持人按下開關那么選手開始搶答,此時數碼管開始0-60計數,并且選手們必須在規定的時間內進行搶答,若過了60秒還沒搶答那么搶答失效,選手們若有一個在規定的時間內搶答成功則其余的選手不可以再搶答,即該選手搶答成功。 4.23調試實物圖1.開始計時 2.選手搶答 第五章:總結 經過近兩個星期的努力,在老師和同學的討論和幫助下,我成功地完成了八路搶答器的設計,通過此次課程設計,我重新認識到了對書本上的知識要獨立運用的道理。在搶答器設計過程中,發現了很多細節性的問題,也出現了很多錯誤,經過和同學們研究、商討最后都解決,感覺團隊協作能力是非常有必要的!通過此次的搶答器的設計,讓我重新拾起了以前所學習的電子知識和C語言的編程,也使我加深了對單片機及接口技術的理解和應用,由于知識水平的局限,設中可能會存在著一些不足,我真誠的接受老師和同學的批評和指正。
參考文獻1.C程序設計 ,譚浩強,清華大學出版社,2005 2.單片機原理及接口技術(第3版),李朝青,北京航空航天大學出版社,2002 3. 單片機系統設計與實例指導,馮育長,西安電子科技大學出版社,2007 4. 單片機課程設計實例指導,李光飛,北京航天航空大學出版社,2004
單片機源程序:
- #include
- #include
- #define uchar unsigned char
- #define uint unsigned int
- sbit rst=P3^7;
- sbit speaker=P3^6;//報警
- sbit start=P3^4;
- uchar count=0;//用于產生1秒的時間
- uchar dsy_time=0x3c; //用于顯示搶答時間
- uchar dsy_buffer[]={0,0,0};//顯示緩沖
- uchar code leddata[]= //共陰數碼管的段碼
- {
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- };
- uchar code state[]=//搶答時的8種按鍵情況
- {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- //
- //延時
- //
- void DelayMS(uint ms)
- {
- uchar t;
- while(ms--)
- for(t=0;t<120;t++);
- }
- //
- //報警
- //
- void speak(void)
- {
- uchar i=10;
- while(i--)
- {
- speaker=~speaker;
- DelayMS(2);
- } }
- //
- //主程序
- //
- void main()
- { //初始化
- uchar i,m=0x04;
- P0=0xff;
- P1=0x00;
- P2=0x00;
- P3=0xb7;
- TMOD=0x01;//選擇工作方式
- TH0=0x3c;//定時器T0初始值的高八位
- TL0=0xaf;//定時器T0初始值的低八位
- IE=0x83;//開總中斷,定時器中斷,外部中斷0
- while(1)
- {
-
- if(rst==0)//系統復位
- {
- dsy_buffer[0]=0;
- TR0=0;
- dsy_time=0x3c;
- }
- if(dsy_time==0x00)//在設定的時間到,而無人搶答時關閉定時器中斷
- {
- TR0=0;//關閉定時器中斷
- P1=0x00;//禁止搶答
- }
- for(i=0;i<3;i++)//用數碼管顯示搶答序號和搶答時間
- {
-
- P2=m;
- m=_cror_(m,1);//循環移位實現數碼管的動態顯示
- dsy_buffer[2]=dsy_time%10;//搶答時間的個位
- dsy_buffer[1]=dsy_time/10;//搶答時間的十位
- P0=leddata[dsy_buffer[i]];//數碼管顯示搶答者的序號和搶答時間
- DelayMS(5);
-
-
- }
- m=0x04;//實現下輪的循環顯示
- for(i=0;i<8;i++)
- {
- if(P1==state[i])//判斷有按鍵按下
- {
- DelayMS(10); //延時防止按鍵抖動引起的誤操作
- if(P1<=state[i]) //再次判斷有按鍵按下
- {
- dsy_buffer[0]=i+1;
- P1=0x00;//通過硬件實現優先搶答
- TR0=0; //關閉定時器0
- speak();
- }
-
- }
- }
-
- }
-
- }
- //
- //實現定時時間1S
- //
- void key_inter() interrupt 1
- {
- TH0=0x3c;//50MS初始值
- TL0=0xaf;//50MS初始值
- if(++count==20)
- {
- count=0;
-
- dsy_time--;//實現計數器的減法計數
- }
- }
-
- //
- //搶答開始
- [color=rgb(0, 0, 0)]…………限于本文篇幅 余下代碼請從51黑下載附件…………[/color]
復制代碼
完整論文下載(word格式 可編輯):
基于單片機8路搶答器論文.doc
(5.98 MB, 下載次數: 23)
2017-6-10 23:38 上傳
點擊文件名下載附件
|