基于C51的四路搶答器課程設計報告_第1頁
基于C51的四路搶答器課程設計報告_第2頁
基于C51的四路搶答器課程設計報告_第3頁
基于C51的四路搶答器課程設計報告_第4頁
基于C51的四路搶答器課程設計報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、大連海事大學課程設計課程設計報告設計題目:基于51單片機的四路搶答器姓 名:邵東東學 號:2220093697指導老師:田園日 期:2012年7月20日 目錄1、 概述22、 設計原理22.1 設計思路及框圖22.2 顯示部分42.3 倒計時部分52.4 鍵值讀取部分5三、系統(tǒng)的調(diào)試6四、仿真圖7五、個人總結(jié)7六、附錄86.1 附錄一86.2 附錄二11參考文獻16一、概述 隨著信息時代的到來,電子技術在社會生活中發(fā)揮著越來越重要的作用。搶答器是為智力競賽參賽者答題時進行搶答而設計的一種優(yōu)先判決器電路,廣泛應用于各種知識競賽、文娛活動等場合。本設計利用8951單片機作為核心部件進行邏輯控制及信

2、號產(chǎn)生的四路搶答器。本設計主要完成:1、設計4組參賽的搶答器,每組設置一個搶答按鈕;2、電路具有第一搶答信號鑒別能力,搶答成功后,顯示組別,發(fā)出聲音;3、系搶答開始后能進行5秒倒計時,以使搶答者有充分是時間決定是否搶答;4、如果在倒計時期間有參賽者按下,則本輪搶答失敗,需復位重新?lián)尨?。二、設計原理2.1 設計原理及框圖搶答器總體設計方案框圖如圖1圖1 總體設計方案框圖主程序如下:void main() j0=10; j6=11;j7=11; sec=8;buzzer=1; chaos_flag=0;/超時標志位 qiang_flag=0;/搶答標志位 start_flag=0;/開始標志位 i

3、nti0();while(1) buffer_zone(); display(); if(sec>0) /超時標志位處理 chaos_flag=0; else chaos_flag=1; if(qiang_flag=0) P3=0xfe; /有人搶答指示 else P3=0xf7; /無人搶答指示 keyscan(); 2.2 顯示部分本模塊由四位一體的七段共陰極數(shù)碼顯示管完成。圖2 數(shù)碼管顯示仿真圖顯示程序如下:void display() temp=0xfe; for(k=0;k<8;k+)P2=temp;P0=ijk;delay(2);temp=_crol_(temp,1);

4、 2.3 倒計時部分在搶答開始之前有5秒的倒計時時間,是為了讓選手有充分的準備,這部分雖然簡單,但是必不可少。倒計時程序如下:void djs() switch(a) case 5:P0=0x6D; /*數(shù)碼管顯示5*/break; case 4:P0=0x66;break; case 3:P0=0x4f;break; case 2:P0=0x5b;break; case 1:P0=0x06;break; case 0:P0=0x3f; /數(shù)碼管顯示0*/break; default :break; 2.4 鍵值讀取部分由于是四路搶答器,用到的按鍵比較少,故本設計采用獨立式鍵盤,接口原理如圖:

5、圖3 獨立式鍵盤接口鍵值讀取是本次設計非常重要的一部分,這部分程序比較冗長,這里限于篇幅,不再引出程序。附錄一會有完整的程序展示。三、 系統(tǒng)的調(diào)試系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。硬件調(diào)試是我們進行本次課程設計的第一項工作,通過系統(tǒng)給的調(diào)試程序,我們輕松完成了硬件調(diào)試。軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機調(diào)試兩個階段。程序的分塊調(diào)試一般在單片機開發(fā)裝置上進行,可根據(jù)所調(diào)程序功能的入口參量初值編制一個特殊的程序段,并連同被調(diào)程序功能塊一起在開發(fā)裝置上運行。如果執(zhí)行結(jié)果與預期的不一致,可以通過單步運行或設置斷點的方法,查出原因并加以改正,直到運行結(jié)果正確為止。四、仿真圖圖4 仿真圖五

6、、個人總結(jié)單片機作為我們的專業(yè)課之一,雖然我對這門課沒什么興趣,覺得那些知識枯燥乏味,但在這次課程設計后我發(fā)現(xiàn)自己在一點一滴的努力中對單片機的興趣也在逐漸增加。在這學期的課程設計中,我們在收獲知識的同時,還收獲了閱歷,收獲了興趣。我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨立思考能力,在各種其它能力上也都有了提高。更重要的是,在實踐中,我們學會了很多學習的方法。而這是日后最實用的。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。這次課程實踐使我加深了對8951芯片的認識,對以前混淆不清的各個端口功能了然于胸。作為一名工科學生,學會這些Keil C這種工具軟件對日后的學習

7、非常有幫助。總的來說,這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。最后,由衷感謝老師們給我們這樣一個鍛煉自己的機會,感謝田老師兩個星期以來的悉心指導!六、附錄由于第一次的程序過于簡單,所以我和鄭陽同學后來對程序作了修改,附錄一收的是基本程序,附錄二收的是加強后的程序。6.1 附錄一#include<reg51.h>unsigned char a;unsigned char b;unsigned char c; sbit P1_0=P

8、10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;void delay(int m)int d,k;for(d=0;d<m;d+)for(k=0;k<20;k+);main() P1=0xff;P1_5=0; a=5; b=0;c=0; TMOD=0x01; TH0=-50000/256; TL0=-50000%256; EA=1;ET0=1;TR0=1; while(1) switch(a) case 5:P0=0x6D;break; case 4:P0=0x66;break; cas

9、e 3:P0=0x4f;break; case 2:P0=0x5b;break; case 1:P0=0x06;break; case 0:P0=0x3f;break; default :break; if(P1_0=0&&c=0) P0=0x06;c=1;P1_5=1;delay(100);P1_5=0; else if(P1_1=0&&c=0) P0=0x5b;c=1;P1_5=1;delay(100);P1_5=0; else if(P1_2=0&&c=0) P0=0x4f;c=1;P1_5=1;delay(100);P1_5=0; els

10、e if(P1_3=0&&c=0) P0=0x66;c=1;P1_5=1;delay(100);P1_5=0; if(P1_4=0) a=5;c=0;P1_5=1;delay(100);P1_5=0; time0() interrupt 1 TH0=-50000/256; TL0=-50000%256; b+; if(b>=10) b=0;a-;6.2 附錄二#include "reg51.h"#include "intrins.h"#define uint unsigned int #define uchar unsigned c

11、haruchar sec,temp,temp1,k,a,m;uchar chaos_flag; /超時標志位uchar qiang_flag; /搶答標志位uchar start_flag; /開始標志位sbit buzzer=P20;/*共陽數(shù)碼管字型碼*/uchar i=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff;/*顯示代碼序號*/uchar j=10,11,11,11,11,11,11,11;/*延時函數(shù)*/ void delay(uint z) uint x,y; for(x=z;x>0;x-)for(

12、y=110;y>0;y-); /*顯示緩沖區(qū)函數(shù)*/ void buffer_zone() j7=sec/10;j6=sec%10; /*顯示函數(shù)*/ void display() temp=0xfe; for(k=0;k<8;k+)P2=temp;P0=ijk;delay(2);temp=_crol_(temp,1); /*函數(shù)初始化*/ void inti0() TMOD=0x01; TH0=(65535-50000)/256; TL0=(65525-50000)%256; EA=1; ET0=1; TR0=0; /*中斷函數(shù)*/ void zd() interrupt 1 T

13、H0=(65535-50000)/256;TL0=(65525-50000)%256;m+;if(m=20)m=0;sec-;buffer_zone();if(sec<=0)P3=0xf5;delay(400); P3=0xf7;TR0=0;j0=11;j6=11;j7=11; while(1); buffer_zone(); /*鍵功能程序區(qū)*/ void keyscan()temp1=P1;temp1=temp1&0xff;if(temp1!=0xff)delay(10);temp1=P1;temp1=temp1&0xff;if(temp1!=0xff)temp1=P

14、1;switch(temp1)case 0xff: /沒有鍵按下 display(); break;case 0xfd: /鍵2按下?lián)尨痖_始 P3=0xfe; TR0=1;/啟動定時器 j0=11; start_flag=1;/開始標志位 display(); buffer_zone(); break; case 0xfb: /鍵3按下?lián)尨鸾Y(jié)束 if(qiang_flag=1) TR0=0; j0=11;j6=11; j7=11; P3=0xfd; break;case 0xf7: /鍵4按下:一號選手搶答處理 if(start_flag=0) /犯規(guī)操作處理 j0=1; display();

15、 P3=0xf9; delay(200); P3=0xfb; break; if(chaos_flag=1|qiang_flag=1) /超時或已有選手搶答處理 break; else P3=0xef; sec=8; TR0=1; j0=1; buffer_zone(); display(); qiang_flag=1; break;case 0xef: /鍵5按下:二號選手搶答處理 if(start_flag=0) /犯規(guī)操作處理 j0=2; display(); P3=0xf9; delay(200); P3=0xfb; break; if(chaos_flag=1|qiang_flag=

16、1) /超時或已有選手搶答處理 break; else j0=2; P3=0xdf; TR0=1; sec=8; display();/ buffer_zone(); qiang_flag=1; break; case 0xdf: /鍵6按下:三號選手搶答處理 if(start_flag=0) /犯規(guī)操作處理 j0=3; display(); P3=0xf9; delay(200); P3=0xfb; break; if(chaos_flag=1|qiang_flag=1) /超時或已有選手搶答處理 break; else TR0=1; P3=0xbf; j0=3; display(); se

17、c=8;/ buffer_zone(); qiang_flag=1; break;case 0xbf: /鍵7按下:四號選手搶答處理 if(start_flag=0) /犯規(guī)操作處理 j0=4; display(); P3=0xf9; delay(110); P3=0xfb; break; if(chaos_flag=1|qiang_flag=1) /超時或已有選手搶答處理 break; else TR0=1; P3=0x7f; j0=4; display(); sec=8; buffer_zone(); qiang_flag=1; break;case 0x7f: /復位鍵 TR0=0; sec=8; P3=0xff; /燈滅 j0=10;j6=11; j7=11; sec=8; chaos_flag=0;/超時標志位初始化 qiang_flag=0;/搶答標志位初始化 start_flag=0;/開始標志位初始化 display(); break; /*主函數(shù)*/ void main() j0=10;j6=11;j7=11; sec=8;buzzer=1; chaos_flag=0;/超時標志位 qiang_f

溫馨提示

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

評論

0/150

提交評論