單片機搶答器課程設計_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、<p>  課 程 設 計 說 明 書</p><p>  課程名稱: 單片機原理及應用 </p><p>  設計題目: 搶答器設計 </p><p>  院 系: 電子信息與電氣工程 </p><p>  學生姓名: </p><p>  學

2、 號: </p><p>  專業(yè)班級: 11電子信息 </p><p>  指導教師: </p><p>  2012年 5 月 17日</p><p>  課 程 設 計 任 務 書</p><p><b>  搶答器設計<

3、;/b></p><p>  摘 要:本組設計目標為以AT89S52單片機作為主要模塊、數(shù)碼管做為顯示模塊組成的用于表決選擇的搶答器。本搶答器主要是通過八個按鍵開關來摸擬八路選手的搶答,開始鍵按下,則進入到八個按鍵的掃描中。通過數(shù)碼管來顯示搶答選手的號數(shù),并由蜂鳴器發(fā)出搶答產(chǎn)生信號。具體功能為:主持人讀完題目后按下允許搶答開關,才能進行選手搶答,否則摁鍵搶答無效,搶答時,首先有時間優(yōu)先,之后有位置優(yōu)先。本

4、搶答器的主要特點有硬件比較簡單,造價便宜,軟件原理通俗易懂。</p><p>  關鍵詞:單片機 搶答器 </p><p><b>  目 錄</b></p><p>  1.設計背景 ……………………………………………………………01</p><p>  1.1 專業(yè)背景 …………………………………………………

5、……01</p><p>  1.2 課題提出 ………………………………………………………01</p><p>  2.設計方案 ……………………………………………………………01</p><p>  2.1 硬件設計方案 …………………………………………………01</p><p>  2.2 軟件設計方案 ……………………………………………

6、……02</p><p>  3.方案實施 ……………………………………………………………03</p><p>  3.1 硬件方案實施 …………………………………………………03</p><p>  3.2 軟件方案實施 …………………………………………………08</p><p>  4.結(jié)果與結(jié)論 ……………………………………………………

7、……15</p><p>  4.1 總體設計過程分析 ……………………………………………15</p><p>  4.2 總體結(jié)論 ………………………………………………………15</p><p>  5.收獲與致謝 …………………………………………………………16</p><p>  6.參考文獻 ………………………………………………………

8、……16</p><p>  7.附件 …………………………………………………………………17</p><p>  7.1 元器件清單 ……………………………………………………17</p><p>  7.2 硬件原理圖 ……………………………………………………18</p><p>  7.3 程序清單 …………………………………………………

9、……18</p><p><b>  1. 設計背景</b></p><p><b>  1.1專業(yè)背景</b></p><p>  隨著現(xiàn)代電子電路的快速發(fā)展,以及電子行業(yè)對現(xiàn)有電子工程技術的不斷需求,特別是對實際操作實踐的電子人才的需求越來越多,所以加強學生動手能力﹑重視實踐應該是電子發(fā)展需求的必然趨向。實踐動手能力的

10、培養(yǎng)是一種綜合能力,這種能力當然是在一定難度的前提下完成的,通過一定數(shù)量的實踐才能逐步形成的。因此在培養(yǎng)實踐能力的同時,要通過實踐來不斷的發(fā)現(xiàn)問題和解決問題的途徑和方法,從而提高實踐能力。</p><p>  近年來,隨著單片機檔次的不斷提高,功能的不斷完善,其應用日趨成熟、應用領域日趨擴大,特別是工業(yè)測控、尖端武器和日用家電等領域更是因為有了單片機而生輝增色。單片機應用技術已成為一項新的工程應用技術。本次實習設

11、計的題目為基于單片機的搶答器。</p><p><b>  1.2課題提出</b></p><p>  搶答器又稱為第一信號鑒別器,其主要應用于各種知識競賽、文藝活動等場合。普通搶答器一般是由很多電路組成的,線路復雜,可靠性不高,功能也比較簡單,特別是當搶答路數(shù)很多時,實現(xiàn)起來就更為困難。這個學期我們開設了單片機課程,為了進一步鞏固我們的相關知識,老師精心組織了這次課

12、程設計。我們設計了以單片機為核心的新型的搶答器,在保留原始搶答器的基本功能的同時又增加了數(shù)碼管顯示電路實現(xiàn)了其它功能。通過這次搶答器設計,是我們進一步掌握相關專業(yè)知識的綜合應用,提高我們的實際設計能力和動手能力。</p><p><b>  2.設計方案</b></p><p><b>  2.1硬件設計方案</b></p><

13、;p>  根據(jù)課程設計要求可以大概構(gòu)思出硬件電路圖:數(shù)碼管與單片機的P0口的低七位相連接;P0.7口與蜂鳴器相連接;P1口接八個按鍵;P2口接八個LED燈分別顯示八位選手搶答的指示信號。</p><p>  1)主控部分的方案設計</p><p>  用以AT89C52為核心的單片機控制方案,通過相應的程序,并通過按鍵來進行電平識別,再由單片機輸出相應的程序,并將相應數(shù)值通過數(shù)碼來顯

14、示。用單片機來制作的搶答器,硬件電路比較簡單,容易明白,且成本相對較低。</p><p><b>  2)優(yōu)先級的設定</b></p><p>  對于八位選手的優(yōu)先級的設置有兩種方案。</p><p>  方案一:利用一片74LS09芯片分別把P1口的八個搶答信號個一組相與之后接到單片機的除主持人外的其他的中斷,并有軟件的編寫來控制八個搶答信

15、號的優(yōu)先級。</p><p>  方案二:利用兩片74LS09先把八個搶答信號各一組相與后,再把相與后的信號個一組再次相與,最后把相與的結(jié)果的一個信號接到單片機的外部中斷0上,當有搶答信號時,通過軟件編寫查詢各個選手順序可以設置八個搶答的優(yōu)先級。</p><p>  顯然,方案一雖然少用了一片74LS09芯片但它需要四個中斷,甚是麻煩。而方案二只需要設置兩個中斷的開通與關斷以及內(nèi)部查詢順序

16、就可以設置八個搶答信號的優(yōu)先級。因此選擇方案二。</p><p><b>  2.2軟件設計方案</b></p><p>  1)中斷的開通與關斷設計</p><p>  為達到在主持人未按下按鍵前搶答無效應該設置外部中斷為開中斷,外部中斷0為關中斷。當開始搶答信號發(fā)出后,開外部中斷0以接收選手搶答中斷信號。選手搶答后,開外部中斷1從而使主持人

17、再次按下按鍵后可以開始下一次搶答。</p><p><b>  2)數(shù)碼管的顯示</b></p><p>  方案一:采用靜態(tài)顯示,是指當數(shù)碼管顯示某一字符時,七段數(shù)碼管的對應段的發(fā)光二極管被選中,在這種顯示方式下,每段LED都對應一個單片機口線。</p><p>  方案二:采用動態(tài)顯示,對于多位數(shù)碼管顯示時,每一位數(shù)碼管輪流顯示,當顯示間隔

18、時間較短時人眼就分辨不出是動態(tài)顯示,而是每一位都是一直都在顯示。</p><p>  比較二者,靜態(tài)顯示主要的優(yōu)點是顯示穩(wěn)定,在發(fā)光二極管導通電流一定的情況下顯示器的亮度大,系統(tǒng)運行過程中,在需要更新顯示內(nèi)容時,CPU才去執(zhí)行顯示更新子程序,這樣既節(jié)約了CPU的時間,又提高了CPU的工作效率。其不足之處是在需要用于顯示的數(shù)碼管較多時占用硬件資源較多,每個LED數(shù)碼管需要獨占8條輸出線。隨著顯示器位數(shù)的增加,需要的

19、I/O口線也將增加。動態(tài)顯示器的優(yōu)點是節(jié)省硬件資源,成本較低,但是要保證顯示器正常顯示,CPU必需每隔一段時間執(zhí)行一次顯示子程序,占用CPU大量時間,降低了CPU的工作效率,同時顯示亮度較靜態(tài)顯示器低。</p><p>  通過以上分析,結(jié)合本課題只提供一位數(shù)碼管,所以采用方案一。</p><p><b>  3)搶答信號指示燈</b></p><

20、p>  對于這一位LED燈的閃爍可以通過軟件程序的編寫,交替送出電平高低控制其閃爍。</p><p><b>  3. 方案實施</b></p><p><b>  3.1硬件方案實施</b></p><p>  1)相關應用軟件的介紹</p><p>  本次設計要用到的軟件包括:電路模擬仿

21、真軟件Proteus軟件,匯編語言的編譯器軟件keil軟件,布線制板軟件dxp軟件。</p><p>  首先對于Proteus軟件的用法:如圖1中所示,區(qū)域①為菜單及工具欄,區(qū)域②為預覽區(qū),區(qū)域③為元器件瀏覽區(qū),區(qū)域④為編輯窗口,區(qū)域⑤為對象拾取區(qū),區(qū)域⑥為元器件調(diào)整工具欄,區(qū)域⑦為運行工具條。 首先點擊啟動界面區(qū)域③中的“P”按鈕(Pick Devices,拾取元器件)來打開“Pick Devices”(拾取

22、元器件)對話框從元件庫中拾取所需的元器件。在對話框中的“Keywords”里面輸入我們要檢索的元器件的關鍵詞,比如我們要選擇項目中使用的AT89C52,就可以直接輸入。輸入以后我們能夠在中間的“Results”結(jié)果欄里面看到我們搜索的元器件的結(jié)果。 搜索到所需的元器件以后,我們可以雙擊元器件名來將相應的元器件加入到我們的文檔中,那么接著我們還可以用相同的方法來搜索并加入其他的元器件。當我們已經(jīng)將所需的元器件全部加入到文檔中時,我們可以點

23、擊“OK”按鈕來完成元器件的添加?! √砑雍迷骷院螅旅嫖覀兯枰龅木褪菍⒃骷凑瘴覀兊男枰B接成電路。首先在元器件瀏覽區(qū)中點擊我們需要添加到文檔中的元器件,這時我們就可以在瀏覽區(qū)看到我們所選擇的元器件的形狀與方向,如果其方向不符合你的要求</p><p>  Proteus中單片機芯片默認已經(jīng)添加電源與地,所以我們可以省略。</p><p>  圖1. proteus 啟動界面

24、圖  修改好各組件屬性以后就要將程序(HEX文件)載入單片機了。這里就要用到匯編語言的編譯器軟件keil軟件了。</p><p>  應用Keil進行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存—建立工程并添加源文件—設置工程—編譯/匯編、連接,產(chǎn)生目標文件—程序調(diào)試。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進行編譯/匯編、連接等操作。工程的建立、設置、編譯/匯編及連接產(chǎn)生目標

25、文件的方法非常易于掌握。首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴展名.asm(.a51)或.c;然后選擇菜單Project-New Project…,建立新工程并保存(保存時無需加擴展名,也可加上擴展名.uv2);工程保存后會立即彈出一個設備選擇對話框,選擇CPU后點確定返回主界面。這時工程管理

26、窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標彈出快捷菜單,選擇“Add File to Group ‘Source Group1’”,出現(xiàn)一個對話框,要求尋找并加入源文件(在加入一個源文件后,該對話框不會消失,</p><p><b>  2)硬件電路框圖</b></p><p>  本系統(tǒng)采用AT

27、89S52單片機作為控制核心,對按鍵開關送來的信號進行分析處理,最終控制數(shù)碼管顯示相應的數(shù)值。本系統(tǒng)主要的單元電路有單片機主控電路、鍵盤控制電路、LED顯示電路模塊等。系統(tǒng)硬件框圖如下圖圖2所示。</p><p><b>  圖2.系統(tǒng)硬件框圖</b></p><p><b>  3)時鐘電路</b></p><p>  

28、單片機必須在時鐘電路的驅(qū)動下才能工作。在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源,就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,其振蕩頻率主要由石英晶體的頻率決定。兩個電容的作用是幫助振蕩器起振,并對振蕩器的頻率進行微調(diào)。電路如圖3所示</p><p><b>  圖3.時鐘電路圖</b>&l

29、t;/p><p><b>  復位電路</b></p><p>  外部中斷和內(nèi)部中斷并存,單片機有硬件復位端,輸入一定周期的高電平即可實現(xiàn)復位。復位后單片機的各個狀態(tài)都恢復到了初始狀態(tài)。電路如圖4所示:</p><p><b>  圖4.復位電路圖</b></p><p>  5)數(shù)碼管的設計: 圖中

30、數(shù)碼管采用的是1位七段共陽數(shù)碼管,其中a ~ f段分別接到單片機的P0.0 ~ P0.6口,由單片機輸出的P0口數(shù)據(jù)來決定段碼值,還有八個300歐姆的電阻,連接在P0口上,用作P0口的上拉電阻。</p><p><b>  6)電源電路</b></p><p>  電源電路由橋堆2w10和7805構(gòu)成。電源電路主要用用于為整個系統(tǒng)提供電源。我們?nèi)粘S秒姸际?20V的交

31、流電,所以在設計電源時要先把交流電整成直流,然后再經(jīng)過穩(wěn)壓管輸出整個系統(tǒng)所需的穩(wěn)定的直流電壓。整流主要采用2W10橋堆和電容濾波以得到基本穩(wěn)定的輸出電壓。穩(wěn)壓部分是采用常用的穩(wěn)壓管W7805得到穩(wěn)定的輸出正5V電壓。如圖5所示:</p><p><b>  圖5.電源電路圖</b></p><p>  7)LED和數(shù)碼管顯示</p><p> 

32、 LED顯示主要是給發(fā)光二極管送一恒定的電流,這種方法需要有寄存器、譯碼器、驅(qū)動電路燈邏輯部件。而單片機的P0口每一位可以驅(qū)動八個TTL型LS型負載,所以可以采用直接由P0口驅(qū)動數(shù)碼管,P2對應每一口接一個發(fā)光二極管。</p><p>  由于采用的是陽極接5V電源的接法,所以需要限流電阻與發(fā)光二極管串聯(lián)。發(fā)光二極管允許通過的電流是3mA至10mA左右,為了使發(fā)光二極管亮度高點,所以,選擇了串聯(lián)300歐電阻。&l

33、t;/p><p><b>  8)蜂鳴器</b></p><p>  蜂鳴器的發(fā)聲主要用于對有搶答時的報警信號,以提示主持人。蜂鳴器的發(fā)聲由三極管放大電壓、電流來驅(qū)動,其中三極管的基集接單片機的P0.7口,以提供導通基集電流,從而經(jīng)放大后達到蜂鳴器的發(fā)聲電壓、電流。其電路圖如6所示:</p><p><b>  圖6. 蜂鳴器電路<

34、/b></p><p><b>  3.2軟件方案實施</b></p><p>  1) 搶答器流程圖  流程圖是使用圖形表示算法的思路是一種極好的方法,不論采用何種程序設計方法,程序總體結(jié)構(gòu)確定后,一般以程序流程圖的形式對其進行描述??傮w框圖中的各個子模塊或各個子任務也應該結(jié)合具體的教學模型和算法畫出較詳細的程序流程圖,供后面編寫具體程序和閱讀程序使用。為便

35、于識別,繪制流程圖的習慣做法是:方框表示:要執(zhí)行的處理;平行四邊形表示:輸入;不規(guī)則圖形代表輸出;菱形表示:判斷。</p><p>  對整個系統(tǒng)的功能分析知,匯編語言程序分為三大部分:主持人未按允許搶答時沒有響應,主持人按鍵為外部中斷1,之后有搶答信號為外部中斷0。得到系統(tǒng)的流程圖如下圖。</p><p><b>  圖7.主程序流程圖</b></p>

36、<p><b>  主要程序分析</b></p><p>  我們組所采用的編程語言是單片機匯編語言,匯編語言的特點是程序的各個部分除了必要的信息交流外彼此之間相互獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護以及調(diào)試。匯編語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。它的語法比較靈活,允許程序編寫者有較大

37、的自由度。本次設計的主程序中包括主持人按鍵處理程序,主選手搶答處理程序,一號選手搶答處理程序,LED燈閃爍程序,鍵盤消抖延時程序以及蜂鳴器發(fā)聲時間和LED閃爍間隔時間程序。程序分析如下:</p><p><b>  a.初始化程序</b></p><p>  搶答器的程序初始化主要完成中斷初始化,數(shù)碼管顯示初始化。中斷初始化主要是對主持人按鍵中斷信號和搶答中斷信號的初

38、始化,首先設置為主持人中斷優(yōu)先,搶答中斷其后,即只有主持人按下按鍵后才允許選手搶答。而對于數(shù)碼管的初始化顯示在本課題中是使數(shù)碼管全滅。初始化程序如下:</p><p>  MOV A,#7FH ;初始化</p><p><b>  MOV P0,A</b></p><p>  SETB EA

39、 ;CPU開中斷</p><p>  SETB EX1 ;開外部中斷1</p><p>  SETB IT1 ;外部中斷1設為電平觸發(fā)方式</p><p>  CLR EX0

40、 ;關外部中斷0</p><p>  b.外部中斷1處理程序</p><p>  程序主要是用來處理主持人按鍵發(fā)出的搶答信號的顯示和選手搶答按鍵的允許:在主持人按下按鍵后,使數(shù)碼管顯示0以示意選手可以開始搶答,同時開外部中斷0,即允許選手搶答中斷。同時,數(shù)碼管顯示0就說明主持人已經(jīng)按下按鍵,所以在這里沒有調(diào)用鍵盤消抖延時程序。處理程序和流程圖如下:</

41、p><p>  SETB EX0 ;開外部中斷0</p><p>  SETB IT0 ;外部中斷0設為電平觸發(fā)方式</p><p>  MOV A,#40H </p><p> 

42、 MOV P0,A ;主持人按鍵顯示段碼送到P0口顯示</p><p>  RETI ;中斷返回</p><p>  圖8. 外部中斷1處理程序</p><p>  c.外部中斷0處理程序</p><p>  也就是選

43、手搶答中斷處理程序。首先調(diào)用鍵盤消抖延時程序,確定有鍵按下后。當有兩位選手同時搶答時根據(jù)要求的八號選手優(yōu)先級,一號選手優(yōu)先級最低的要求,所以在編寫軟件的時候首先檢測八號選手對應的口線、如果是該鍵按下,就直接跳轉(zhuǎn)到對應按鍵處理程序,否則就檢測下一位,依次檢測下去。</p><p>  例如八號選手的檢測程序如下:</p><p>  SETB EX1

44、 ;開外部中斷1</p><p>  SETB IT1 ;外部中斷1設為電平觸發(fā)方式</p><p>  CLR EX0 ;關外部中斷0 </p><p><b>  CLR IT0</b></p>

45、;<p>  MOV A,P1 ;把搶答狀態(tài)送到累加器A</p><p>  LCALL DEL0              ;調(diào)用延時程序,軟件消抖</p><p>  CJNE A,P1,IN0              ;沒有搶答,跳轉(zhuǎn)再次檢測鍵盤狀態(tài)</p><p>  MOV A,#

46、7FH             ??;八號選手搶答的數(shù)值送到A</p><p>  CJNE A,P1,K6              ;不是八號選手搶答,轉(zhuǎn)到K6</p><p>  AJMP KEY7               ;是八號搶答,轉(zhuǎn)到KEY7</p><p>  外部中斷0處理程序的流程圖如下:</p><p>  圖9. 外

47、部中斷0處理程序</p><p><b>  d.按鍵處理程序</b></p><p>  此過程就是蜂鳴器響一聲,數(shù)碼管顯示選手號,對應選手LED閃爍五次。數(shù)碼管顯示就是給P0送入選手號對應段碼; P0.7高電平,使蜂鳴器發(fā)聲,再調(diào)用蜂鳴器發(fā)聲時間延時程序,然后使P0.7為低電平關閉蜂鳴器發(fā)聲。LED閃爍是給P2口對應的口線交替送高低電平,同時調(diào)用延時程序用來控制閃

48、爍的時間間隔。例如一號選手的處理程序如下:</p><p>  MOV A,#0F9H                   </p><p>  MOV P0,A              ?。粩?shù)碼管顯示一號選手搶答</p><p>  LCALL DEL1             ?。徽{(diào)用蜂鳴器響聲時間延時程序</p><p>  CL

49、R P0.7                ;關閉蜂鳴器響聲</p><p>  MOV R0,#00H              </p><p>  LCALL FLASH             ??;一號選手對應LED燈閃爍程序</p><p>  RETI                 ??;中斷返回</p><p><b&

50、gt;  e.延時程序</b></p><p>  延時程序用來控制LED閃爍的時間間隔、蜂鳴器響聲時間和按鍵消抖。延時程序的編寫就是利用給寄存器賦值,然后利用DJNZ指令判斷寄存器是否為零,再利用幾個DJNZ嵌套,結(jié)合指令執(zhí)行所占用的機器周期,計算延時程序的延時時間。根據(jù)延時時間的不同來設置寄存器的值。例如消抖程序如下:</p><p>  DEL0: MOV R2,#40

51、 </p><p>  LOP0: MOV R3,#125</p><p>  LOP1: DJNZ R3,LOP1</p><p>  DJNZ R2,LOP0</p><p><b>  RET</b></p><p><b>

52、  f.閃爍程序</b></p><p>  這部分程序中采用了查表程序,表格中的不同值賦給P2口控制等的亮與滅;其中也調(diào)用了延時程序。主要是控制選手指示燈的閃爍。閃爍程序和流程圖如下:</p><p>  FLASH: MOV DPTR,#TAB ; 轉(zhuǎn)移表首地址送DPTR</p><p>  MOV R1

53、,#05H ;閃爍次數(shù)到R1</p><p>  LOP: MOV 30H,R0 ;查表偏移量到寄存器30H</p><p><b>  MOV A,30H</b></p><p>  MOVC A,@A+DPTR

54、 ;查表</p><p>  MOV P2,A ;對應查表結(jié)果的LED燈亮</p><p>  LCALL DEL1 ;調(diào)用閃爍延時程序</p><p>  INC 30H

55、 ;查表偏移量增1</p><p><b>  MOV A,30H</b></p><p>  MOVC A,@A+DPTR ;查表</p><p>  MOV P2,A ;對應查表結(jié)果的LED燈滅</p><p> 

56、 LCALL DEL1 ;調(diào)用閃爍延時程序</p><p>  DJNZ R1,LOP ; 閃爍次數(shù)減1不為0轉(zhuǎn)移</p><p>  RET ; 返回 </p><p>  圖10

57、. 閃爍程序流程圖</p><p><b>  4. 結(jié)果與結(jié)論</b></p><p>  4.1總體設計過程分析</p><p>  首先,我覺得做單片機課程設計是十分有意義的,而且是十分必要的。在已度過的大學時間里,我們大多數(shù)接觸的是課堂授課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學的專業(yè)基礎課理

58、論知識運用到實踐中去呢?很明顯做類似的課程設計就為我們提供了良好的實踐平臺。</p><p>  其次,這次課程設計大概持續(xù)了兩周時間,由于剛開始時一直很輕視這些或那些問題,或者說有點心虛,猛然間面對一個挺大的問題:從設計到實現(xiàn)全靠我們幾個!什么只想著去問問老師,沒想到大家都很牛,很快就有人有思路了,我們也不能甘心落于人后,只能費盡心思的做了!我們設計的課題是八路搶答器,搶答器主要是由單片機、主持人按鍵和選手搶答

59、按鍵以及顯示部分組成;搶答器主要功能是:實現(xiàn)主持人按下允許搶答按鍵后數(shù)碼管顯示0,并允許選手搶答;當有有選手搶答時,其他選手再搶答無效;當有兩位以上選手同時搶答時,八號選手優(yōu)先級最高,一號選手最低。在有選手搶答后,數(shù)碼管顯示搶答選手號,對應選手搶答指示LED燈閃爍五次,同時蜂鳴器響一聲。當主持人再次按下按鍵后數(shù)碼管顯示0,又開始下一題的搶答。說真的,整個過程不夠流暢,專業(yè)知識與實際問題結(jié)合的不夠靈活,思維不夠敏捷,確實費了不少心思,設計

60、結(jié)果也不是太理想。</p><p>  最后,總結(jié)出以下要點:在設計程序之前,設計者必學對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片 機內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經(jīng)之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在

61、設計課程過程中遇到問題是很正常的,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。</p><p><b>  4.2總體結(jié)論</b></p><p>  經(jīng)過近十天的努力,在老師幫助下,我們這一組較好的完成了設計任務,通過此次課程設計,我重新認識到了自學的重要性,以及學以致用的道理。我在圖書館及網(wǎng)絡上查閱了大量的資料,同時也認識到了團隊合作

62、的重要作用。此次的搶答器的設計,讓我重新認識了以前所學習的專業(yè)知識,我覺得此次設計讓我更加鞏固了所學的知識并在設計的過程中學會了與時俱進,克服了工作的枯燥感,讓我受益匪淺。在學習單片機這門課程的時候,我們應該好好的記筆記,課下好好的做練習題才能把匯編語言程序設計靈活的運用到單片機的應用上,在單片機這門課程的學習上,我們還應該知道一種常用的仿真軟件proteus軟件,可以讓你我們更為清晰的掌握C89C52單片機的實際應用上的設計。在今后的

63、學習過程中,應該多看一些專業(yè)方面的書籍,以豐富自己的知識。由于知識水平的局限和動手能力不足,設計中可能會存在著一些不足,我真誠的接受老師和同學的批評和指正。</p><p><b>  5. 收獲與致謝</b></p><p>  這兩個周的單片機課程設計實習很快要結(jié)束了,在這個過程中我深刻的認識到了自己的不足,也獲得了很多難得的經(jīng)驗和知識。在本課程設計即將完成之際,

64、我要對所有支持和幫助我的老師和同學表示衷心的感謝。我要感謝我們的指導老師、老師,作為一個平時和她接觸很少的普通學生,她的平易近人和認真負責的態(tài)度讓我深受感動,她也給了我們精確地的指導,讓我學到了很多知識,掌握了Keil的編程和Proteus的仿真的方法,也獲得了實踐鍛煉的機會。這次課程設計,由于我們經(jīng)驗的匱乏,有許多想不到的地方,如果沒有高老師的督促指導,以及本組的同學們的團結(jié)合作,想要完成這個設計是不太可能的。高老師平日里還要授課,但

65、在我們做課程設計的每個階段,從查閱資料到設計草案的確定和修改,中期檢查,后期詳細設計,裝配草圖等整個過程中都給予了我們悉心的指導。其次要感謝我們的單片機課程老師段老師,她平時授課認真,對我們要求嚴格負責,在相關知識的積累和應用上給了我們極大的幫助!我們都很喜歡她帶的課!然后要感謝本組同學的幫助,他們都是知識儲量豐富,做事認真的合作伙伴!最后還要感謝周圍同學的幫助!謝謝大家! </p><p><b> 

66、 6. 參考文獻</b></p><p>  [1] 張毅剛,彭喜元,董繼成。單片機原理及應用.高等教育出版社,2003.</p><p>  [2] 童詩白,華成英.模擬電子技術基礎.高等教育出版社。2006</p><p>  [3] 張大明,劉振鵬.單片微機控制應用技術實操指導書。機械工業(yè)出版社,2007.</p><p>

67、  [4] 徐晨,陳繼紅,王春明,徐慧.微機原理及應用。高等教育出版社。2004.</p><p><b>  7. 附件</b></p><p><b>  7.1 元器件清單</b></p><p><b>  7.2 硬件原理圖</b></p><p><b>

68、  圖10 硬件原理圖</b></p><p><b>  7.3系統(tǒng)程序清單</b></p><p>  ORG 000H ;復位入口</p><p>  LJMP START</p><p>  ORG 0003H

69、 ;外部中斷0入口</p><p><b>  LJMP IN0</b></p><p>  ORG 0013H ;外部中斷1入口</p><p><b>  LJMP IN1</b></p><p>  ORG 1000H

70、 ;主程序入口</p><p>  START: MOV A,#7FH ;初始化</p><p><b>  MOV P0,A</b></p><p>  SETB EA ;CPU開中斷</

71、p><p>  SETB EX1 ;開外部中斷1</p><p>  SETB IT1 ;外部中斷1設為電平觸發(fā)方式</p><p>  CLR EX0 ;關外部中斷0</p><

72、p><b>  SJMP $</b></p><p>  ;=====主持人按鍵處理程序=====</p><p>  IN1: SETB EX0 ;開外部中斷0</p><p>  SETB IT0 ;外部中斷0設為電

73、平觸發(fā)方式</p><p>  MOV A,#40H </p><p>  MOV P0,A ;主持人按鍵顯示段碼送到P0口顯示</p><p>  RETI ;中斷返回</p>

74、<p><b>  SJMP $</b></p><p>  ;=====主選手搶答處理程序=====</p><p>  IN0: SETB EX1 ;開外部中斷1</p><p>  SETB IT1 ;

75、外部中斷1設為電平觸發(fā)方式</p><p>  CLR EX0 ;關外部中斷0 </p><p><b>  CLR IT0</b></p><p>  MOV A,P1 ;把搶答狀態(tài)送到累加器A</p><

76、;p>  LCALL DEL0              ;調(diào)用延時程序,軟件消抖</p><p>  CJNE A,P1,IN0             ??;沒有搶答,跳轉(zhuǎn)再次檢測鍵盤狀態(tài)</p><p>  MOV A,#7FH             ??;八號選手搶答的數(shù)值送到A</p><p>  CJNE A,P1,K6             ??;

77、不是八號選手搶答,轉(zhuǎn)到K6</p><p>  AJMP KEY7              ?。皇前颂枔尨?,轉(zhuǎn)到KEY7</p><p>  K6: RR A                  ;累加器循環(huán)右移一位</p><p>  CJNE A,P1,K5              ;不是七號選手搶答,轉(zhuǎn)到K5</p><p> 

78、 AJMP KEY6               ;是七號搶答,轉(zhuǎn)到KEY6</p><p>  K5: RR A</p><p>  CJNE A,P1,K4             ??;不是六號選手搶答,轉(zhuǎn)到K4</p><p>  AJMP KEY5              ?。皇橇枔尨?,轉(zhuǎn)到KEY5</p><p>  K4

79、: RR A</p><p>  CJNE A,P1,K3             ??;不是五號選手搶答,轉(zhuǎn)到K3</p><p>  AJMP KEY4              ??;是五號搶答,轉(zhuǎn)到KEY4</p><p>  K3: RR A</p><p>  CJNE A,P1,K2              ;不是四號

80、選手搶答,轉(zhuǎn)到K2</p><p>  AJMP KEY3              ?。皇撬奶枔尨?,轉(zhuǎn)到KEY3</p><p>  K2: RR A</p><p>  CJNE A,P1,K1             ?。徊皇侨栠x手搶答,轉(zhuǎn)到K1</p><p>  AJMP KEY2              ?。皇侨枔尨?,

81、轉(zhuǎn)到KEY2</p><p>  K1: RR A</p><p>  CJNE A,P1,K0              ;不是二號選手搶答,轉(zhuǎn)到K0</p><p>  AJMP KEY1              ?。皇嵌枔尨?,轉(zhuǎn)到KEY1</p><p>  K0: AJMP KEY0               ;一號

82、選手搶答,轉(zhuǎn)到KEY0</p><p>  ;=====一號選手搶答處理程序=====</p><p>  KEY0: MOV A,#0F9H                   </p><p>  MOV P0,A             ?。粩?shù)碼管顯示一號選手搶答</p><p>  LCALL DEL1             

83、??;調(diào)用蜂鳴器響聲時間延時程序</p><p>  CLR P0.7               ?。魂P閉蜂鳴器響聲</p><p>  MOV R0,#00H              </p><p>  LCALL FLASH            ??;一號選手對應LED燈閃爍程序</p><p>  RETI            

84、        ??;中斷返回</p><p><b>  SJMP $</b></p><p>  KEY1: MOV A,#0A4H</p><p>  MOV P0,A               ?。粩?shù)碼管顯示二號選手搶答</p><p>  LCALL DEL1              ??;調(diào)用蜂鳴器響聲時間

85、延時程序 </p><p>  CLR P0.7                ??;關閉蜂鳴器響聲</p><p>  MOV R0,#02H</p><p>  LCALL FLASH             ?。欢栠x手對應LED燈閃爍程序</p><p>  RETI                     ?。恢袛喾祷?lt;/p&g

86、t;<p><b>  SJMP $</b></p><p>  KEY2: MOV A,#30H</p><p>  MOV P0,A                ;數(shù)碼管顯示三號選手搶答</p><p>  LCALL DEL1              ??;調(diào)用蜂鳴器響聲時間延時程序 </p><p&

87、gt;  CLR P0.7                ??;關閉蜂鳴器響聲</p><p>  MOV R0,#04H</p><p>  LCALL FLASH              ;三號選手對應LED燈閃爍程序</p><p>  RETI                       ;中斷返回</p><p><b>

88、  SJMP $</b></p><p>  KEY3: MOV A,#99H</p><p>  MOV P0,A                ??;數(shù)碼管顯示四號選手搶答</p><p>  LCALL DEL1               ??;調(diào)用蜂鳴器響聲時間延時程序 </p><p>  CLR P0.7       

89、           ;關閉蜂鳴器響聲</p><p>  MOV R0,#06H</p><p>  LCALL FLASH             ??;四號選手對應LED燈閃爍程序</p><p>  RETI                      ??;中斷返回</p><p><b>  SJMP $</b>&

90、lt;/p><p>  KEY4: MOV A,#92H</p><p>  MOV P0,A                ??;數(shù)碼管顯示五號選手搶答</p><p>  LCALL DEL1               ;調(diào)用蜂鳴器響聲時間延時程序</p><p>  CLR P0.7                 ;關閉蜂鳴器響聲<

91、;/p><p>  MOV R0,#08H</p><p>  LCALL FLASH             ?。晃逄栠x手對應LED燈閃爍程序</p><p>  RETI                      ??;中斷返回</p><p><b>  SJMP $</b></p><p>  

92、KEY5: MOV A,#82H</p><p>  MOV P0,A                ??;數(shù)碼管顯示六號選手搶答</p><p>  LCALL DEL1               ?。徽{(diào)用蜂鳴器響聲時間延時程序</p><p>  CLR P0.7                 ?。魂P閉蜂鳴器響聲</p><p>  

93、MOV R0,#0AH</p><p>  LCALL FLASH             ??;六號選手對應LED燈閃爍程序</p><p>  RETI                      ??;中斷返回</p><p><b>  SJMP $</b></p><p>  KEY6: MOV A,#0F8H&l

94、t;/p><p>  MOV P0,A                 ;數(shù)碼管顯示七號選手搶答</p><p>  LCALL DEL1               ??;調(diào)用蜂鳴器響聲時間延時程序</p><p>  CLR P0.7                 ;關閉蜂鳴器響聲</p><p>  MOV R0,#0CH</p>

95、;<p>  LCALL FLASH             ??;七號選手對應LED燈閃爍程序</p><p>  RETI                      ;中斷返回</p><p><b>  SJMP $</b></p><p>  KEY7: MOV A,#80H</p><p>  M

96、OV P0,A                ;數(shù)碼管顯示八號選手搶答 </p><p>  LCALL DEL1              ??;調(diào)用蜂鳴器響聲時間延時程序</p><p>  CLR P0.7                ?。魂P閉蜂鳴器響聲</p><p>  MOV R0,#0EH</p><p>  LCALL FLA

97、SH              ;八號選手對應LED燈閃爍程序</p><p>  RETI                     ??;中斷返回</p><p><b>  SJMP $</b></p><p>  ;=====LED燈閃爍程序=====</p><p>  FLASH: MOV DPTR,#TAB

98、 ; 轉(zhuǎn)移表首地址送DPTR</p><p>  MOV R1,#07H ;閃爍次數(shù)到R1</p><p>  LOP: MOV 30H,R0 ;查表偏移量到寄存器30H</p><p><b>  M

99、OV A,30H</b></p><p>  MOVC A,@A+DPTR ;查表</p><p>  MOV P2,A ;對應查表結(jié)果的LED燈亮</p><p>  LCALL DEL1 ;調(diào)用閃

100、爍延時程序</p><p>  INC 30H ;查表偏移量增1</p><p><b>  MOV A,30H</b></p><p>  MOVC A,@A+DPTR ;查表</p><p>  MOV P2,A

101、 ;對應查表結(jié)果的LED燈滅</p><p>  LCALL DEL1 ;調(diào)用閃爍延時程序</p><p>  DJNZ R1,LOP ; 閃爍次數(shù)減1不為0轉(zhuǎn)移</p><p>  RET

102、 ; 返回 </p><p>  ;=====鍵盤消抖延時程序=====</p><p>  DEL0: MOV R2,#40 </p><p>  LOP0: MOV R3,#125</p><p>  LOP1

103、: DJNZ R3,LOP1</p><p>  DJNZ R2,LOP0</p><p>  RET ;返回</p><p>  ;=====蜂鳴器發(fā)聲時間和LED閃爍間隔時間程序=====</p><p>  DEL1: MOV R5,#5

104、</p><p>  D0: MOV R6,#125</p><p>  D1: MOV R4,#200</p><p>  D2: DJNZ R4,D2</p><p>  DJNZ R6,D1</p><p>  DJNZ R5,D0</p><p>  RET

105、 ;返回</p><p>  TAB: DB 0FEH,0FFH,0FDH,0FFH,0FBH,0FFH,0F7H,0FFH,0EFH </p><p>  DB 0FFH,0DFH,0FFH,0BFH,0FFH,07FH,0FFH ;閃爍段碼表</p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論