久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7676|回復: 2
打印 上一主題 下一主題
收起左側

基于單片機的8路搶答器設計論文 Word格式 可編輯

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

2. 設計要求及目的

(1)設計一個可供8人進行的搶答器。

(2)系統(tǒng)設置復位按鈕,按動后,重新開始搶答。

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

(4)搶答器具有定時搶答功能,且一次搶答的時間有主持人設定,本搶答器的時間設定為60秒,當主持人啟動“開始”開關后,定時器開始減計時,同時蜂鳴器有短暫的聲響。

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

(6)當設定的時間到,而無人搶答時,本次搶答無效,揚聲器報警發(fā)出聲音,并禁止搶答。定時器上顯示00。

第二章:硬件電路設計
一.系統(tǒng)硬件設計
為使硬件電路設計盡可能合理,應注意以下幾方面:
(1) 盡可能采用功能強的芯片,以簡化電路,功能強的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高。
(2) 留有設計余地。在設計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設計,如果現(xiàn)在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。
(3) 程序空間,選用片內(nèi)程序空間足夠大的單片機,本設計采用AT89C51單片機。
(4)  I/O端口,在樣機研制出來后進行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設計就預留出一些I/O端口,雖然當時空著沒用,那么用的時候就派上用場了。
1.總體原理圖
2.時鐘頻率電路的設計
單片機必須在時鐘的驅動下才能工作.在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。
外部振蕩源電路
一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調(diào)。C1,C2的典型值為30PF。
單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12µs。
3.復位電路的設計
單片機的第9腳RST為硬件復位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復位,復位后單片機的各狀態(tài)都恢復到初始化狀態(tài),其電路圖如圖所示:
復位電路
值得注意的是,在設計當中使用到了硬件復位和軟件復位兩種功能,由上面的硬件復位后的各狀態(tài)可知寄存器及存儲器的值都恢復到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現(xiàn)的前提條件就是不能對單片機進行硬件復位,所以設定了軟復位功能。軟復位實際上就是當程序執(zhí)行完畢之后,將程序指針通過一條跳轉指令讓它跳轉到程序執(zhí)行的起始地址。
4.顯示電路的設計
顯示功能與硬件關系極大,當硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。
5.鍵盤掃描電路的設計
鍵盤是人與微機系統(tǒng)打交道的主要設備。關于鍵盤硬件電路的設計方法也可以在文獻和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設計的立場上來看,僅僅完成鍵盤掃描,讀取當前時刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現(xiàn)象。在單片機應用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。
獨立鍵盤
它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設計上也不復雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時重復掃描法,延時法的原理為:因為“毛刺”脈沖一般持續(xù)時間短,約為幾ms,而我們按鍵的時間一般遠遠大于這個時間,所以當單片機檢測到有按鍵動靜后再延時一段時間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。
6.發(fā)聲
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。
7.系統(tǒng)復位
使CPU進入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復位。從實現(xiàn)系統(tǒng)復位的方法來看,系統(tǒng)復位可分為硬件復位和軟件復位。硬件復位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時間的高電位才能實現(xiàn)。上電復位,人工按鈕復位和硬件看門狗復位均為硬件復位。硬件復位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復位還能自動清除中斷激活標志,使中斷系統(tǒng)能夠正常工作,這樣一個事實卻容易為不少編碼人員所忽視。軟件復位就是用一系列指令來模擬硬件復位功能,最后通過轉移指令使程序從0000H地址開始執(zhí)行。對各專用寄存器的復位操作是容易的,也沒有必要完全模擬,可根據(jù)實際需要去主程序初始化過程中完成。而對中斷激活標志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有的編程人員用020000(LJMP  0000H)作為軟件陷阱,認為直接轉向0000H地址就完成了軟件復位,就是這類錯誤的典型代表。軟件復位是使用軟件陷阱和軟件看門狗后必須進行的工作,這時程序出錯完全有可能發(fā)生在中斷子程序中,中斷激活標志已置位,它將阻止同級中斷響應。由于軟件看門是高級中斷,它將阻止說要中斷響應,由此可見清除中斷激活標志的重要性。
三.系統(tǒng)軟件設計
軟件任務分析和硬件電路設計結合進行,哪些功能由硬件完成,哪些任務由軟件完成,在硬件電路設計基本定型后,也就基本上決定下來了。
1.系統(tǒng)原理圖
2.程序流程圖
在本設計中包括了以下八個主要的程序:主程序;非法搶答序;搶答時間調(diào)整程序;回答時間調(diào)整程序;倒計時程序;正常搶答處理程序;犯規(guī)處理程序;顯示及發(fā)聲程序。主流程圖如圖所示:
     

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

參考文獻
1.C程序設計 ,譚浩強,清華大學出版社,2005
2.單片機原理及接口技術(第3版),李朝青,北京航空航天大學出版社,2002
3. 單片機系統(tǒng)設計與實例指導,馮育長,西安電子科技大學出版社,2007
4. 單片機課程設計實例指導,李光飛,北京航天航空大學出版社,2004

單片機源程序:
  1. #include

  2. #include

  3. #define uchar unsigned char

  4. #define uint unsigned int

  5. sbit rst=P3^7;

  6. sbit speaker=P3^6;//報警

  7. sbit start=P3^4;

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

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

  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[]=//搶答時的8種按鍵情況

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

  26. //

  27. //延時

  28. //

  29. void DelayMS(uint ms)

  30. {

  31.               uchar t;

  32.               while(ms--)

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

  34. }

  35. //

  36. //報警

  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;//定時器T0初始值的高八位

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

  59.               IE=0x83;//開總中斷,定時器中斷,外部中斷0

  60.               while(1)

  61.               {            

  62.                            

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

  64.                             {

  65.                                           dsy_buffer[0]=0;

  66.                                           TR0=0;

  67.                                           dsy_time=0x3c;            

  68.                             }

  69.                             if(dsy_time==0x00)//在設定的時間到,而無人搶答時關閉定時器中斷

  70.                             {

  71.                                           TR0=0;//關閉定時器中斷

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

  73.                             }            

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

  75.                             {            

  76.                                          

  77.                                           P2=m;

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

  79.                                           dsy_buffer[2]=dsy_time%10;//搶答時間的個位

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

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

  82.                                           DelayMS(5);

  83.                            



  84.                             }

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

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

  87.                             {

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

  89.                                           {

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

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

  92.                                                         {

  93.                                                                       dsy_buffer[0]=i+1;

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

  95.                                                                       TR0=0;              //關閉定時器0

  96.                                                                       speak();                                                                     

  97.                                                         }

  98.                                                       

  99.                                           }                           

  100.                             }

  101.                            

  102.               }            



  103. }

  104. //

  105. //實現(xiàn)定時時間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--;//實現(xiàn)計數(shù)器的減法計數(shù)

  116.               }                           

  117. }



  118. //

  119. //搶答開始

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

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關帖子

回復

使用道具 舉報

沙發(fā)
ID:210035 發(fā)表于 2017-6-11 11:09 | 只看該作者
課程設計么
回復

使用道具 舉報

板凳
ID:210052 發(fā)表于 2017-6-11 11:58 | 只看該作者
這是畢業(yè)論文?
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人毛片在线观看 | a视频在线观看 | 国产综合久久 | 亚洲国产中文在线 | 精品国产乱码久久久久久a丨 | 日韩欧美视频免费在线观看 | 精品亚洲一区二区三区 | 欧美精品影院 | 人碰人操 | 欧美中文字幕 | 小川阿佐美pgd-606在线 | 中文字幕在线免费视频 | 久久精品成人 | 日韩精品一区二区三区中文在线 | 亚洲欧洲成人 | 国产精品亚洲成在人线 | 国产一区2区 | 成人免费小视频 | 性色网站| www.中文字幕.com | 一级片免费网站 | 亚洲精品久久久一区二区三区 | 在线观看电影av | 日韩伦理一区二区 | 丁香久久 | 午夜合集 | 免费高清av| 久久久91| 中文精品视频 | 国产高清视频在线 | 日韩欧美中文 | 欧美888 | 免费精品视频 | 免费一二区 | 国产国产精品久久久久 | 久草免费在线视频 | 国产一区二区三区四区五区加勒比 | a精品视频 | 四虎影音 | 日本午夜一区二区三区 | 日韩三级一区 |