導航:首頁 > 操作系統 > 單片機搶答器設計

單片機搶答器設計

發布時間:2022-09-28 06:36:14

㈠ 求~51單片機的八路搶答器設計程序和原理圖,PCB

ORG 0000H
M: MOV P1, #0FEH
MOV P3, #00H
JNB P2.0, C1
JNB P2.1, C2
JNB P2.2, C3
SJMP M
C1: MOV P3, #06H
SJMP S1
C2: MOV P3, #5BH
SJMP S1
C3: MOV P3, #4FH
SJMP S1
S1: NOP
SJMP S1
END
這個是我以前做過的三路的搶答器的 你可以稍加改動一下就能實現八路的 我只會這一部分 很久沒有接觸了 都忘的差不多了

㈡ 設計一個智力競賽搶答器可同時供8人參加比賽,他們的編號分別是0、1、2、3、4、5、6、7,各用一個搶答按鈕

第一章搶答器設計功能分析
1.1 數字搶答器的概述
對於搶答器我們大家來說都不陌生,它是用於很多競賽場合,真正實現先搶先答,讓最先搶到題的選手來回答問題。搶答器不僅考驗選手的反應速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現了公平公正的原則。
1.2 設計任務與要求
基本要求:
1. 給主持人設置一個開關,用來控制系統的清零(編號顯示數碼管滅燈)和搶答器的開始。
2. 搶答器具有數據鎖存和顯示的功能。搶答開始後,若有選手按動搶答器按鈕,編號立即鎖存,並在LED數碼上顯示選手的編號,同時揚聲器給出音響提示。此外,要封鎖輸入電路,禁止其他選手搶答。
發揮部分:
1. 搶答器具有定時搶答的功能,且一次搶答的時間可以由主持人設定(如30秒)。當節目主持人啟動「開始」鍵後,要求定時器立即減計時,並用顯示器顯示,同時揚聲器發出短暫的聲響,聲響持續時間0.5秒左右。
2. 參加選手在設定的時間內搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答時刻的時間,並保持到主持人將系統清零為止。
3. 如果定時搶答的時間已到,卻沒有選手搶答時,本次搶答無效,系統短暫報警,並封鎖輸入電路,禁止選手超時後搶答,時間顯示器上顯示00。
4. 選手如果在主持人按開始鍵之前違規搶答,系統報警,LED顯示違規選手號碼和FF,直到主持人按下停止鍵。

第二章 搶答器方案論證
搶答器的實現方式有種多樣,通過純電子器件搭建電路實現,如優先編碼器,鎖存器,555定時器解碼器等,純電子器件實現沒有軟體參與,調試簡單,但是它不易於擴展和修改,而且電路結構復雜,調試困難電子,電子器件管腳很多,實際搭建起來費時費力,焊接很容易出錯。於是,我想到了用單片機實現。單片機體積小價格低,應用方便,穩定可靠。單片機將很多任務交給了軟體編程去實現,大大簡化了外圍硬體電路,使外圍電路的實現簡單方便。由於單片機本身不具有軟體編譯測試的功能,我們需要藉助其他軟體編譯,將編譯好的程序「燒」入單片機內。
在實際電路設計中,需要先通過模擬軟體測試電路以及編譯的程序,檢查外圍電路設計是否合理,軟體編譯是否正確,以及軟體和硬體電路能否正常配合工作,能否准確的實現所設計的功能。如果測試通過,電路模擬沒有問題能完全實現功能的話就可以實際的做板子的焊接工作了。在老師的指導下我選擇了常用的單片機模擬軟體proteus6.9以及keil 進行模擬。

第三章 硬體電路設計
3.1總體設計
根據搶答器的基本功能,可以設計出如下的單片機外圍電路:

圖3-1 總體設計
如圖3-1,P3.0為開始搶答,P3.2為停止,P1.0-P1.7為八路搶答輸入,數碼管段選P0口,位選P2口低3位,蜂鳴器(用綠燈代替)輸出為P3.6口。P3.2為時間加1調整,P3.3為時間減1調整。
3.2 外部振盪電路

圖3-2 外部振盪電路
一般選用石英晶體振盪器。此電路在加電大約延遲10ms後振盪器起振,在XTAL2引腳產生幅度為3V左右的正弦波時鍾信號,其振盪頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振盪器起振;二是對振盪器的頻率進行微調。C1,C2的典型值為30PF。
3.3 復位電路的設計
單片機的第9腳RST為硬體復位端,只要將該端持續4個機器周期的高電平即可實現復位,復位後單片機的各狀態都恢復到初始化狀態,其電路圖如圖4所示:

圖3-3 復位電路
在方案中使用到了硬體復位和軟體復位兩種功能,由上面的硬體復位可使寄存器及存儲器的值都恢復到初始值,而前面的功能提到了倒計時間需要有記憶功能,該功能實現的前提條件就是不能對單片機進行硬體復位,所以設定了軟復位功能。軟復位實際上就是當程序執行完畢之後,將程序指針通過一條跳轉指令讓它跳轉到程序執行的起始地址。
3.1.4 顯示電路的設計
顯示電路使用了七段數碼管7SEG-MPX4-CC,它是共陰極的,由高電平點亮。

圖3-4 陰極七段數碼管
4.1.5 按鈕輸入電路的設計
搶答器的輸入按鈕使用常開開關,

圖3-5 搶答按鍵
這些常開開關組成了搶答按鍵,硬體電路簡單,在程序設計上也不復雜,只要在程序中消除在按鍵過程中產生的「毛刺」現象就可以了。這里採用最常用的方法即延時法,其的原理為:因為「毛刺」脈沖一般持續時間短,約為幾ms,而按鍵的時間一般遠遠大於這個時間,所以當單片機檢測到有按鍵動靜後再延時一段時間(這里取10ms)後再判斷此電平是否保持原狀態,如果是則為有效按鍵,否則無效。
3.1.6 發聲
這里能利用程序來控制單片機P3.6口線反復輸出高電平或低電平,即在該口線上產生一定頻率的矩形波,接上揚聲器就能發出一定頻率的聲音,再利用延時程序控制「高」「低」電平的持續時間,就能改變輸出頻率,從而改變音調,使揚聲器發出不同的聲音。

第四章 系統軟體設計
4.1 程序系統結構圖
硬體電路確定後,軟體的編程要與硬體相匹配,軟硬體才能結合完成所要實現的功能。由功能分析得到以下的軟體結構圖:

圖4-1 軟體系統結構圖
4.2 程序流程圖
整個程序主要由定時器T0、定時器T1、外部中斷0和主程序構成。
定時器T0用於使揚聲器發聲,當需要響鈴時,把響鈴標志位置一,每次中斷都對P3.7取反,揚聲器發聲,改變定時器初值,可改變揚聲器頻率。定時器程流程圖如下:

圖4-2 響鈴程序流程圖
定時器T1用於倒計時,每次中斷為50ms,當計數標志為20時即為一秒,顯示數字減一。其流程圖如下:

圖4-3 倒計時中斷流程圖
外部中斷0用於調整倒計時時間,流程圖如下:

圖4-4 調整搶答時間流程圖

主程序協調三個中斷一起工作,實現搶答功能,其流程圖如下:

圖4-5 主程序流程圖

附錄:
程序代碼:
P3.0為開始搶答,P3.1為停止,P1.0-P1.7為八路搶答輸入,數碼管段選P0口,位選P2的低三位口,蜂鳴器輸出為P3.6口。
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT0SUB
ORG 000BH
AJMP T0INT
ORG 001BH
AJMP T1INT
OK EQU 20H ; 搶答開始標志位
RING EQU 22H ; 響鈴標志位
ORG 0040H
MAIN: MOV R1,#0FH; 初設搶答時間為15s
MOV R2,#0AH; 初設答題時間為10s
MOV TMOD,#11H; 設置未定時器/模式1
MOV TH0,#0F0H
MOV TL0,#0FFH; 越高發聲頻率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H; 50ms為一次溢出中斷
SETB EA
SETB ET0
SETB ET1
SETB EX0
SETB EX1; 允許四個中斷,T0/T1/INT0/INT1
CLR OK
CLR RING
SETB TR1
SETB TR0; 一開始就運行定時器,以開始顯示FFF.如果想重新計數,重置TH1/TL1就可以了
查詢程序:
START: MOV R5,#0BH
MOV R4,#0BH
MOV R3,#0BH
ACALL DISPLAY; 未開始搶答時候顯示FFF
JB P3.0,NEXT
ACALL DELAY
JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執行,否者跳到非法搶答查詢
ACALL BARK;按鍵發聲
MOV A,R1
MOV R6,A; 送R1->R6,因為R1中保存了搶答時間
SETB OK; 搶答標志位,用於COUNT只程序中判斷是否查詢搶答
MOV R3,#0AH; 搶答只顯示計時,滅號數
AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT裡面
NEXT: JNB P1.0,FALSE1
JNB P1.1,FALSE2
JNB P1.2,FALSE3
JNB P1.3,FALSE4
JNB P1.4,FALSE5
JNB P1.5,FALSE6
JNB P1.6,FALSE7
JNB P1.7,FALSE8
AJMP START
非法搶答處理程序:
FALSE1: ACALL BARK; 按鍵發聲
MOV R3,#01H
AJMP ERROR
FALSE2: ACALL BARK
MOV R3,#02H
AJMP ERROR
FALSE3: ACALL BARK
MOV R3,#03H
AJMP ERROR
FALSE4: ACALL BARK
MOV R3,#04H
AJMP ERROR
FALSE5: ACALL BARK
MOV R3,#05H
AJMP ERROR
FALSE6: ACALL BARK
MOV R3,#06H
AJMP ERROR
FALSE7: ACALL BARK
MOV R3,#07H
AJMP ERROR
FALSE8: ACALL BARK
MOV R3,#08H
AJMP ERROR
倒計時程序(包括有效搶答程序):
COUNT: MOV R0,#00H; 重置定時器中斷次數
MOV TH1,#3CH
MOV TL1,#0B0H; 重置定時器
RECOUNT: MOV A,R6; R6保存了倒計時的時間
MOV B,#0AH
DIV AB; 除十分出個位/十位
MOV 30H,A; 十位存於(30H)
MOV 31H,B; 個位存於(31H)
MOV R5,30H ; 取十位
MOV R4,31H ; 取個位
MOV A,R6
CLR C
SUBB A,#07H
JNC LARGER ;大於5s跳到LARGER,小於等於5s會提醒
MOV A,R0
CJNE A,#0AH,FULL;1s中0.5s向下運行
CLR RING
AJMP CHECK
FULL: CJNE A,#14H,CHECK ; 1s時,響並顯示號數並清R0,重新計時
SETB RING
MOV A,R6
JZ QUIT ; 計時完畢
MOV R0,#00H
DEC R6 ; 一秒標志減1
AJMP CHECK
LARGER: MOV A,R0
CJNE A,#14H,CHECK ; 如果1s向下運行,否者跳到查"停/顯示"
DEC R6; 計時一秒R6自動減1
MOV R0,#00H
CHECK: JNB P3.1,QUIT; 如按下停止鍵退出
ACALL DISPLAY
JNB P1.0,TRUE1
JNB P1.1,TRUE2
JNB P1.2,TRUE3
JNB P1.3,TRUE4
JNB P1.4,TRUE5
JNB P1.5,TRUE6
JNB P1.6,TRUE7
JNB P1.7,TRUE8
AJMP RECOUNT
QUIT: CLR OK ; 如果按下了"停止鍵"重新回到開始
CLR RING
ACALL BARK
AJMP START
正常搶答處理程序:
TRUE1: ACALL BARK; 按鍵發聲
MOV A,R2
MOV R6,A; 搶答時間R2送R6
MOV R3,#01H
CLR OK;
AJMP LOOP2
TRUE2:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP LOOP2
TRUE3:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP LOOP2
TRUE4:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP LOOP2
TRUE5: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP LOOP2
TRUE6: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#06H
CLR OK
AJMP LOOP2
TRUE7: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP LOOP2
TRUE8: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
LOOP2: AJMP DISPLAY ;搶答後停止計時,等待返回
SETB RING
JNB P3.1 QUIT
AJMP LOOP2
犯規搶答程序:
ERROR: SETB RING ;犯規響鈴
MOV R5,#0BH
MOV R4,#0BH; 顯示FF和犯規號數
LOOP3: ACALL DISPLAY
JNB P3.1 QUIT1; 等待「停止」鍵按下
AJMP LOOP3
QUIT1: CLR RING
CLR OK
AJMP START
顯示程序:
DISPLAY:MOV DPTR,#DAT1; 查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"滅","1","2","3","4","5","6","7","8","9","滅","F"
DAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
DELAY1: MOV 35H,#08H
LOOP0: ACALL DISPLAY
DJNZ 35H,LOOP0
RET
延時(顯示和去抖動用到):
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET
發聲程序:
BARK: SETB RING
ACALL DELAY1
ACALL DELAY1
CLR RING; 按鍵發聲
RET
INT0(搶答時間R1調整程序):
INT0SUB:MOV A,R1
MOV B,#0AH
DIV AB
MOV R5,A
MOV R4,B
MOV R3,#0AH
ACALL DISPLAY;先在兩個時間LED上顯示R1
JNB P3.2,INC0; P3.2為+1s鍵,如按下跳到INCO
JNB P3.3,DEC0; P3.3為-1s鍵,如按下跳到DECO
JNB P3.4,BACK0; P3.4為確定鍵,如按下跳到BACKO
AJMP INT0SUB
INC0: MOV A,R1
CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起
MOV R1,#00H
ACALL DELAY1
AJMP INT0SUB
ADD0: INC R1
ACALL DELAY1
AJMP INT0SUB
DEC0: MOV A,R1
JZ SETR1;如果R1為0, R1就置99,
DEC R1
ACALL DELAY1
AJMP INT0SUB
SETR1: MOV R1,#63H
ACALL DELAY1
AJMP INT0SUB
BACK0: RETI
TO溢出中斷(響鈴程序):
T0INT:MOV TH0,#0ECH
MOV TL0,#0FFH
JNB RING,OUT
CPL P3.6 ; RING標志位為1時候P3.6口不短取反使喇叭發出一定頻率的聲音
OUT: RETI
T1溢出中斷(計時程序):
T1INT: MOV TH1,#3CH
MOV TL1,#0B0H
INC R0
RETI
END

㈢ AT89S51單片機八路搶答器工作原理

基於MCS-51系列單片機AT89S51的八路搶答器

基於MCS-51系列單片機AT89S51的八路搶答器

前言

隨著現代電子電路的快速發展,以及電子行業對現有電子工程技術的不斷需求,特別是對實際操作實踐的電子人才的需求越來越多,所以加強學生動手能力、重視實踐應該是電子發展需求的必然趨向。實踐動手能力的培養是一種綜合能力,這種能力當然是在一定難度的前提下完成的,通過一定數量的實踐才能逐步形成的。因此在培養實踐能力的同時,要通過實踐來不斷的發現問題和解決問題的途徑和方法,從而提高實踐能力。

近年來,隨著單片機檔次的不斷提高,功能的不斷完善,其應用日趨成熟、應用領域日趨擴大,特別是工業測控、尖端武器和日用家電等領域更是因為有了單片機而生輝增色。單片機應用技術已成為一項新的工程應用技術。本次實習設計的題目為基於單片機的搶答器。

在本次的課程設計中我主要負責了該系統的印製電路板PCB的製作

一、方案論證

方案一:系統各部分採用中小規模集成數字電路,用機械開關按鈕作為控制開關,完成搶答輸入信號的觸發。該方案的特點是中小規模集成電路應用技術成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由於系統功能要求較高,所以電路連接集成電路相對較多,而且過於復雜,並且製作過程工序比較煩瑣,使用不太方便。

方案二:該系統採用MCS-51系列單片機AT89S51作為控制核心,該系統可以完成運算控制、信號識別以及顯示功能的實現。由於用了單片機,使其技術比較成熟,應用起來方便、簡單並且單片機周圍的輔助電路也比較少,便於控制和實現。整個系統具有極其靈活的可編程性,能方便地對系統進行功能的擴張和更改性。CS-51單片機特點如下:

1>可靠性好:單片機按照工業控制要求設計,抵抗工業雜訊干擾優於一般的CPU,程序指令和數據都可以燒寫在ROM許多信號通道都在同一晶元,因此可靠性高。

2>易擴充:單片機有一般電腦所必須的器件,如三態雙向匯流排,串並行的輸入及輸出引腳,可擴充為各種規模的微電腦系統

3>控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。原理框圖如1-1所示;

圖1-1

方案比較及其選用依據,顯然方案二比方案一簡單的多,不但從性能上優於方案一,而且在使用上及其功能的實現上都較方案一簡潔,並且由於單片機具有優越的高集成電路性,使其工作速度更快、效率更高。另外AT89S51單片機採用12MHz的晶振,提高了信號的測量精度,並且使該系統可以通過軟體改進來擴張功能。而方案一採用了中小規模集成電路,有其復雜的電路性能,從而可能會使信號的輸入輸出產生延時及不必要的誤差。依此依據選擇方案二比較適合。

二、原理分析

1.本電路採用單片機AT89C51作為控制晶元,單片機的P0口外接八個發光二極體,每個發光二極體分別作為八位選手的信號指示燈。並在各個外接電路上並接開關按鍵,按鍵另一端接地。發光二極體採用共陽極接法,由於P0口為高電平呈輸入狀態,當有按鍵按下時,P0口呈低電平與按鍵對應的發光二極體滿足點亮條件點亮。在程序編程上採用查詢,查詢P0口P0。0到P0。7的八個埠呈低電平,即查詢是哪個選手先按鍵,然後將選手號碼的位元組數據送至串列口輸出並在數碼管上顯現出來。

2.蜂鳴器是利用三極體處於開關狀態是的導通與截止工作,在三極體導通時蜂鳴器工作,三極體截止時蜂鳴器不工作。三極體採用8550PNP型基極接於P1。2口置其低電平時三極體導通,置其高電平時三極體截止。

3.數碼管採用共陽極七段顯示,其內部發光二極體為共陽極接高電平,當對應發光二極體一端為低電平時發光二極體點亮,顯示的數字或字元由送入的位元組數據控制,位元組數據的輸出採用串形口工作模式0,8位串列位元組數據的輸出通過RXD埠送出,TXD端用於送出同步移位脈沖,作為外接器件的同步移位信號。數據的發送是在TI=0的情況下,由一寫發送緩沖器的指令開始CPU執行完該指令,串列口即將8位數據從RXD端送出,同時TXD端發出同步移位脈沖。8位數據發送完畢後由硬體置位TI=1,通過查詢TI位來確定是否發送完一組數據,TI=1表示發送緩沖器已空,當要發送下一組數據時用軟體使TI清零,然後即可發送下一組數據。

4.軟體設計分析首先在程序的開始為選手設置了一段違規程序,該程序的作用是為了防止選手在主持人沒有按下搶答鍵時,有的選手已經提前搶答了,本次搶答為無效搶答,並有報警和記錄下該位選手的選號,做違規處理,如果選手超出了在規定的提前搶答次數,則該選手將被取消以後的搶答資格。如果在主持按下搶答鍵時再搶答,該次搶答被視為有效搶答,在主持按下回答問題的鍵時選手就可以在規定的時間內回答問題了

圖1-2

<1>選手查詢程序:

ORG0000H

START:CLRA

MOVA,#0FFH

MOVP0,A

LOP:JNBP2。4,LP

JNBP0。0,SA1

JNBP0。1,SA2

JNBP0。2,SA3

JNBP0。3,SA4

JNBP0。4,SA5

JNBP0。5,SA6

JNBP0。6,SA7

JNBP0。7,SA8

SJMPLOP

SA1:AJMPSB1

SA2:AJMPSB2

SA3:AJMPSB3

SA4:AJMPSB4

SA5:AJMPSB5

SA6:AJMPSB6

SA7:AJMPSB7

SA8:AJMPSB8

LP:MOVR0,#9

LOP1:LCALLLED

LCALLDEL

JNBP0。0,SIP1

JNBP0。1,SIP2

JNBP0。2,SIP3

JNBP0。3,SIP4

JNBP0。4,SIP5

JNBP0。5,SIP6

JNBP0。6,SIP7

JNBP0。7,SIP8

DECR0

CJNER0,#0,LOP1

MOVR0,#0

LCALLLED

LCALLDEL

SJMPLOP

SIP1:AJMPDIP1

SIP2:AJMPDIP2

SIP3:AJMPDIP3

SIP4:AJMPDIP4

SIP5:AJMPDIP5

SIP6:AJMPDIP6

SIP7:AJMPDIP7

SIP8:AJMPDIP8

SB1:MOVR2,#1

LCALLLED1

LCALLDE

SJMPLP1

SB2:MOVR2,#2

LCALLLED1

LCALLDE

SJMPLP1

SB3:MOVR2,#3

LCALLLED1

LCALLDE

SJMPLP1

SB4:MOVR2,#4

LCALLLED1

LCALLDE

SJMPLP1

SB5:MOVR2,#5

LCALLLED1

LCALLDE

SJMPLP1

SB6:MOVR2,#6

LCALLLED1

LCALLDE

SJMPLP1

SB7:MOVR2,#7

LCALLLED1

LCALLDE

SJMPLP1

SB8:MOVR2,#8

LCALLLED1

LCALLDE

SJMPLP1

LP1:JNBP2。4,LOP2

SJMPLP1

DIP1:MOVR2,#1

LCALLLED1

LCALLDE

SJMPLH1

DIP2:MOVR2,#2

LCALLLED1

LCALLDE

SJMPLH1

DIP3:MOVR2,#3

LCALLLED1

LCALLDE

SJMPLH1

DIP4:MOVR2,#4

LCALLLED1

LCALLDE

SJMPLH1

DIP5:MOVR2,#5

LCALLLED1

LCALLDE

SJMPLH1

DIP6:MOVR2,#6

LCALLLED1

LCALLDE

SJMPLH1

DIP7:MOVR2,#7

LCALLLED1

LCALLDE

SJMPLH1

DIP8:MOVR2,#8

LCALLLED1

LCALLDE

SJMPLH1

LH1:JNBP2。4,LOOP

SJMPLH1

LOP2:MOVA,#11H

MOVSBUF,A

JNBTI,$

CLRTI

LCALLDEL

AJMPLOP

<2>串列輸出程序:

該部分程序的設計利用了單片機的串列模式0輸出,該輸出方式佔用IO口少。可以省去許多IO口作為功能的擴展使用。在該模式下,我們採用了輸出查詢的方式,就是要藉助發送標志TI,當程序執行到發送標志位時,查詢其標志位TI的值,只要TI的值是0程序就繼續查詢,知道查詢到TI為1時才結束,然後在進入下一組數據的發送。由於串列輸出時送進去的數都是十進制數,以致計算機不能識別,所以還要把送進去的十進制數轉化成而進制數,這樣才能輸出。因此在輸出程序前必須有拆字程序,把原來送進去的十進制數轉化成二進制數,然後在輸出並通過數碼管顯示出來。但是如果在顯示選手選號與顯示選手回答問題所用的到計同用一段串列輸出程序時就會造成程序的混亂,所以在此處設計了兩段初始值不同的顯示程序,從而可能增加了程序的煩瑣化。

LED1:MOVA,R2

MOVB,#10

DIVAB

MOVR1,A

MOVR3,B

MOVA,R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

MOVA,R3

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

RET。

LED:MOVA,R0

MOVB,#10

DIVAB

MOVR1,A

MOVR3,B

MOVA,R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

MOVA,R3

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

RET

DE:CLRP1。2

LCALLDEL01

SETBP1。2

LCALLDEL01

RET

TAB:DB11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H

RET

<3>倒計時程序

該程序為選手回答問題時的30秒倒計時程序,其中前25秒為正常的倒計時,在後5秒倒計時時伴隨有報警聲,用於提示選手回答問題的剩餘時間。如果該選手在正常的倒計時內沒有完成問題的回答,那麼倒計時將被清零。

LOOP:MOVR0,#30

LPP:LCALLLED

LCALLDEL

JNBP2。4,LOP2

DECR0

CJNER0,#5,LPP

MOVR0,#5

LPP1:JNBP2。4,LOP2

LCALLLED

LCALLDE

DECR0

CJNER0,#0,LPP1

MOVR0,#0

LCALLLED

LCALLDEL

LJMPSTART

<4>延時程序

該系統設計了兩段延時程序,一段1秒延時,是為了30秒倒計時調用和程序中一秒延時所用;另一段為0。5秒延時,用於報警。程序的設計中報警時間為一秒,但是由於在硬體的設計時只設計了一個按鍵,這樣就會造成連續按鍵時會使所設定的報警聲不斷的響,這是設計中不允許的,所以在軟體編程時設計了一個0。5秒的延時,被報警時所調用,這樣就使報警聲能很清楚地區分出來了

DEL:MOVR6,#20DEL01:MOVR6,#10

DEL1:MOVR5,#100DEL11:MOVR5,#100

DEL2:MOVR4,#250DEL21:MOVR4,#250

DJNZR4,$DJNZR4,$

DJNZR5,DEL2DJNZR5,DEL21

DJNZR6,DEL1DJNZR6,DEL11

RETRET

<5>報警程序

該段程序主要是用於本系統中的所有報警使用,報警時間延時為1秒鍾。

DE:CLRP1。2

LCALLDEL01

SETBP1。2

LCALLDEL01

RET

三、製作過程

五、參考文獻

曾峰,鞏海洪,曾波,電子工業出版社,印刷電路板(PCB)設計與製作2005.8

梅海鳳,王艷秋,張軍,汪毓鐸,清華大學出版社單片機原理與介面技術2004.2

北京交通大學出版社

第二個文獻:基於51單片機八路搶答器設計程序及電路圖

基於51單片機八路搶答器設計程序及電路圖

說明:本人的這個設計改進後解決了前一個版本中1號搶答優先的問題,並增加了錦囊的設置,當參賽選手在回答問題時要求使用錦囊,則主持人按下搶答開始鍵,計時重新開始。

;八路搶答器電路請看下圖是用ps模擬的,已經測試成功

<單片機八路搶答器電路圖>

;============================================================

;================單片機八路搶答器程序=====================

;================51hei=======================

;================2008年5月=======================

;============================================================

OKEQU20H;搶答開始標志位

RINGEQU22H;響鈴標志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

MAIN:MOVR1,#30;初設搶答時間為30s

MOVR2,#60;初設答題時間為60s

MOVTMOD,#11H;設置未定時器/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高發聲頻率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms為一次溢出中斷

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;允許四個中斷,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數,重置TH1/TL1就可以了

;=====查詢程序=====

START:MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未開始搶答時候顯示FFF

JBP3.0,NEXT;ddddddd

ACALLDELAY

JBP3.0,NEXT;去抖動,如果"開始鍵"按下就向下執行,否者跳到非法搶答查詢

ACALLBARK;按鍵發聲

MOVA,R1

MOVR6,A;送R1->R6,因為R1中保存了搶答時間

SETBOK;搶答標志位,用於COUNT只程序中判斷是否查詢搶答

MOVR7,#01H;讀搶答鍵數據信號標志,這里表示只讀一次有用信號

MOVR3,#0AH;搶答只顯示計時,滅號數

AJMPCOUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT裡面

NEXT:JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

JNBP1.5,FALSE6

JNBP1.6,FALSE7

JNBP1.7,FALSE8

AJMPSTART

;=====非法搶答處理程序=====

FALSE1:MOVR3,#01H

AJMPERROR

FALSE2:MOVR3,#02H

AJMPERROR

FALSE3:MOVR3,#03H

AJMPERROR

FALSE4:MOVR3,#04H

AJMPERROR

FALSE5:MOVR3,#05H

AJMPERROR

FALSE6:MOVR3,#06H

AJMPERROR

FALSE7:MOVR3,#07H

AJMPERROR

FALSE8:MOVR3,#08H

AJMPERROR

;=====INT0(搶答時間R1調整程序)=====

INT0SUB:MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;先在兩個時間LED上顯示R1

JNBP3.4,INC0;P3.4為+1s鍵,如按下跳到INCO

JNBP3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO

JNBP3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO

AJMPINT0SUB

INC0:MOVA,R1

CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1

AJMPINT0SUB

ADD0:INCR1

ACALLDELAY1

AJMPINT0SUB

DEC0:MOVA,R1

JZSETR1;如果R1為0,R1就置99,

DECR1

ACALLDELAY1

AJMPINT0SUB

SETR1:MOVR1,#63H

ACALLDELAY1

AJMPINT0SUB

BACK0:RETI

;=====INT1(回答時間R2調整程序)=====

INT1SUB:MOVA,R2

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

AJMPINT1SUB

INC1:MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1

AJMPINT1SUB

ADD1:INCR2

ACALLDELAY1

AJMPINT1SUB

DEC1:MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPINT1SUB

SETR2:MOVR2,#63H

ACALLDELAY1

AJMPINT1SUB

BACK1:RETI

;=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====

REPEAT:MOVA,R2;使用錦囊時重新計時

MOVR6,A

CLRRING

COUNT:MOVR0,#00H;重置定時器中斷次數

MOVTH1,#3CH

MOVTL1,#0B0H;重置定時器

RECOUNT:MOVA,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6

MOVB,#0AH

DIVAB;除十分出個位/十位

MOV30H,A;十位存於(30H)

MOV31H,B;個位存於(31H)

MOVR5,30H;取十位

MOVR4,31H;取個位

MOVA,R6

SUBBA,#07H

JNCLARGER;大於5s跳到LARGER,小於等於5s會提醒

MOVA,R0

CJNEA,#0AH,FULL;1s中0.5s向下運行

CLRRING

AJMPCHECK

FULL:CJNEA,#14H,CHECK;下面是1s的情況,響並顯示號數並清R0,重新計

SETBRING

MOVA,R6

JZQUIT;計時完畢

MOVR0,#00H

DECR6;一秒標志減1

AJMPCHECK

LARGER:MOVA,R0

CJNEA,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示"

DECR6;計時一秒R6自動減1

MOVR0,#00H

CHECK:JNBP3.1,QUIT;如按下停止鍵退出

JNBOK,CHECKK;只在回答倒計時才有效

AJMPNEXTT

CHECKK:JNBP3.0,REPEAT;判斷是否使用錦囊

NEXTT:ACALLDISPLAY

JBOK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續倒數(這里起到鎖搶答作用)

AJMPRECOUNT

ACCOUT:

MOVA,36H

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6

JNBACC.6,TZ1

JNBACC.7,TZ2

AJMPRECOUNT

TZ1:JMPTRUE7

TZ2:JMPTRUE8

QUIT:CLROK;如果按下了"停止鍵"執行的程序

CLRRING

AJMPSTART

;=====正常搶答處理程序=====

TRUE1:ACALLBARK

MOVA,R2

MOVR6,A;搶答時間R2送R6

MOVR3,#01H

CLROK;因為答題的計時不再查詢搶答,所以就鎖了搶答

AJMPCOUNT

TRUE2:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#02H

CLROK

AJMPCOUNT

TRUE3:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#03H

CLROK

AJMPCOUNT

TRUE4:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#04H

CLROK

AJMPCOUNT

TRUE5:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#05H

CLROK

AJMPCOUNT

TRUE6:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#06H

CLROK

AJMPCOUNT

TRUE7:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#07H

CLROK

AJMPCOUNT

TRUE8:ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#08H

CLROK

AJMPCOUNT

;=====犯規搶答程序=====

ERROR:MOVR0,#00H

MOVTH1,#3CH

MOVTL1,#0B0H

MOV34H,R3;犯規號數暫存與(34H)

HERE:MOVA,R0

CJNEA,#06H,FLASH;0.3s向下運行->滅並停響

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三燈全滅

AJMPCHECK1

FLASH:CJNEA,#0CH,CHECK1;下面是0.8s的情況,響並顯示號數並清R0,重新計

SETBRING

MOVR0,#00H

MOVR3,34H;取回號數

MOVR5,#0BH

MOVR4,#0BH;顯示FF和號數

AJMPCHECK1

CHECK1:JNBP3.1,QUIT1

ACALLDISPLAY

AJMPHERE

QUIT1:CLRRING

CLROK

AJMPSTART

;=====顯示程序=====

DISPLAY:MOVDPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#0feH

MOVP0,A

ACALLDELAY2

MOVDPTR,#DAT2

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#0fdH

MOVP0,A

ACALLDELAY2

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#0fbH

MOVP0,A

ACALLDELAY2

RET

DAT1:DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"滅","1","2","3","4","5","6","7","8","9","滅","F"

DAT2:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;第一個為零,其他與上相同,因為十位如果為零顯示熄滅

;====加減時間延時(起到不會按下就加N個數)======

DELAY1:MOV35H,#08H

LOOP0:ACALLDISPLAY

DJNZ35H,LOOP0

RET

;=====延時4236個機器周期(去抖動用到)=====

DELAY:MOV32H,#12H

LOOP:MOV33H,#0AFH

LOOP1:DJNZ33H,LOOP1

DJNZ32H,LOOP

RET

;=====延時4236個機器周期(顯示用到)=====

DELAY2:MOV32H,#43H

LOOP3:MOV33H,#1EH

MOVA,R7;每隔60~70個機器周期讀一次P1口,全為1時為無效數據,繼續讀,有一個不為1時,轉到正常搶答處理

JNZAAAA1;沒讀到有效數據時繼續轉到AAAA1

LOOP2:DJNZ33H,LOOP2

DJNZ32H,LOOP3

RET

;=====讀搶答按鍵數據口程序=====

;由於在讀搶答數據口的時候,單片機首先進入倒計時程序,再調用顯示程序,最後才檢測按鍵口

;然而在檢測按鍵口時動態掃描要調用三次(4ms)延時程序.這樣就會導致讀數據口出現滯後,造成1號優先最高.8號最低.

;故採用在延時子程序中加了讀數據口程序.保證了靈敏度和可靠性

AAAA1:MOVA,P1

CJNEA,#0FFH,AA1;當不全為1時的數據為有效數據

AA0:MOV36H,A;將有效數據送到36H暫存

AJMPLOOP2

AA1:DECR7

AJMPAA0

;=====發聲程序=====

BARK:SETBRING

ACALLDELAY1

ACALLDELAY1

CLRRING;按鍵發聲

RET

;=====TO溢出中斷(響鈴程序)=====

T0INT:MOVTH0,#0ECH

MOVTL0,#0FFH

JNBRING,OUT;

CPLP3.6;RING標志位為1時候P3.6口不短取反使喇叭發出一定頻率的聲音

OUT:RETI

;=====T1溢出中斷(計時程序)=====

T1INT:MOVTH1,#3CH

MOVTL1,#0B0H

INCR0

RETI

僅供參考。

㈣ 關於搶答器的摘要翻譯 急

Quiz device is a kind of electronic procts, has widely applied in all kinds of intelligence and knowledge competition situation, is a kind of common competition for answers. From the principle, it is a kind of typical digital circuits, including the assembly logic circuit and temporal logic circuit structure form varied. Circuit, can use simple cross-coupled nand gates, also can use, also can trigger microcontroller. Microcontroller, make design contest results more simple and more advantageous function. The design is based on single chip microcomputer control, all the responder microcontroller timer/counter timing and numeration principle, software and hardware organically, and makes the system can accurately on time, and make the digital tubes can properly shows the time. With a switch do occur, the speaker output keyboard. And the system can realize: in the contest, only after the start, if only vies to answer first vies to answer first started before; for the invalid responder Vies to answer first time limit of time and answer questions in the 1-99s set, That is where players can effectively vies to answer first and invalid vies to answer first, right after the buttons music hint, Vies to answer first time and answer questions, full time after the events timer control system and the automatic reset compulsory reset, Keys locked in effective condition, the key is invalid.

㈤ 基於at89s52單片機搶答器的設計用什麼軟體畫原理圖

用Altium Designer 、DXP或Protel99

㈥ 八人搶答器如何設計(1)搶答結束聲音提示(2)搶答開始聲音提示

建議你採用單片機設計,比較靈活方便
可以自由設定搶答倒計時的時間,
LED的顯示也可以多樣化,
還有就是控制按鍵的使用,搶答開始,復位等等
而且根據實際應用,擴展更靈活

㈦ 單片機八人搶答器程序設計

;------------------------------------------
KAI BIT P3.7 ;開始
;------------------------------------------
ORG 0000H
JMP START
START:
;----------------------;下面是清零(復位)
MOV P0, #0C0H ;顯示0
MOV P2, #255 ;熄燈
MOV R4, #0
;----------------------;下面等待按下"開始"鍵
KAISHI:
JB KAI, KAISHI ;沒有按"開始",就循環
CALL DELAY ;延時
JB KAI, KAISHI ;消抖
JNB KAI, $ ;等待釋放
;----------------------
MOV P0, #0CH ;顯示P
WAIT: ;等待搶答
MOV A, P1
CPL A
JZ WAIT ;繼續等待
;----------------------
XS: ;查找選手按鍵的位置
CPL A
MOV P2, A
JNB ACC.0, J0
JNB ACC.1, J1
JNB ACC.2, J2
JNB ACC.3, J3
JNB ACC.4, J4
JNB ACC.5, J5
JNB ACC.6, J6
; JMP J7
J7: INC R4
J6: INC R4
J5: INC R4
J4: INC R4
J3: INC R4
J2: INC R4
J1: INC R4
J0: INC R4
MOV A, R4
MOV DPTR, #D_TAB
MOVC A, @A + DPTR
MOV P0, A
;----------------------;下面等待按下復位鍵
W_FW:
JB KAI, W_FW ;沒有按,則轉
CALL DELAY ;延時
JB KAI, W_FW ;消抖
JNB KAI, $ ;等待釋放
JMP START
;------------------------
D_TAB:
DB 0C0H,0F9H,0A4H,0B0H, 99H ;共陽極0-9
DB 92H, 82H,0F8H, 80H, 90H,0BFH ;-
;------------------------------------------
DELAY: ;延時約10ms
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
;==========================================
END

;以上程序已經調好。

㈧ 設計搶答器的意義

  1. 搶答器的發展就是人類社會進步和科學發展的標志之一。
  2. 搶答器是一種應用非常廣泛的電子電氣設備,在各種搶答場合、競賽中,它能迅速客觀地分辨出最先獲得發言權的選手以及實現設定發言時間、記錄分數等功能。
  3. 早期的搶答器只由幾個三極體、可控硅、發光管等組成,能通過發光管的指示辨認出選手號碼。現在大多數搶答器均使用單片機和數字集成電路,並增加了許多新功能,如選手號碼顯示、強大前或搶答後的計時、選手得分顯示等功能。


  4. 當今搶答器的核心部位是單片機。微型計算機具有運算速度快、精度高、方便靈活、適應范圍廣和可靠性高等特點。作為其分支的單片機,由於特殊的硬體結構和指令系統,還具有以下突出特點:1、體積小、價格低、應用廣2、通用性、靈活性、3、可靠性強、抗干擾能力強、單片機的高集成度、4、實時控制能力強5、應用開發周期短。單片機體積小、功能強等特點,決定了它在工業控制、智能化儀器、通信系統、信息處理和家用電器等領域得到了廣泛應用。

㈨ 搶答器的的設計原理 及圖

電路原理如附圖,它由IC1和一個編碼開關以及控制器等組成。編碼開關是由IC1中的輸入端A、B、C、D與二極體和按鍵組成。


驗證編碼開關是否正確,只要按住任意一個按鍵。使它有一個正電平輸入,數碼管就會顯示相應的數字來。A、B、C、D這四條編碼線。

分別是1、2、4、8。3則是由1+2同時輸入一個正電平獲得,5則由1+4獲得,6則由2+4獲得,7則由1+2+4獲得,二極體是起反向截止作用的。

(9)單片機搶答器設計擴展閱讀:

搶答器,原理:如果為四路,當其中任一路控下後,其他幾路即失效,結果為第一次按下的,可以用數碼管或是LED燈來顯示,當然這里只是講原理與編程,具體可以根據搶答器路數及顯示方式更改程序即可。

源程序如下:

<div class="blockcode"><blockquote>/*用的是AT89S52開發板,獨立按鍵介面如下,就用這四路。先按下的用LED燈來顯示,對應第一個到第四個LED燈,其他再按無效,如果想再次實現,可手動復位單片機*/

#include <reg52.h>

sbit key1=P3^0; //定義按鍵,根據需要連接線路,如獨立按鍵(4路)

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3。

㈩ 什麼是"三路搶答器"如何設計阿

可以用各種東西來設計,我這里交你一個用繼電接觸器的方法。
三路的搶答器:
主電路用3個燈(單相並聯)。
控制電路用一個常閉按紐,三個常開按鈕,三個中間繼電器(因為使用是電流較小,所以使用繼電器,不用接觸器)。每路繼電器的線圈上用一常開按鈕用於搶答。
每個繼電器要有自保(在按鈕出並一個該繼電器的常開觸點),在每個接觸器上串上其他兩個接觸器的常閉觸點(用來互鎖,即當有人搶答成功,主電路相對應的燈會兩。同時,另外兩人就算按按鈕也沒有用,因為繼電器的線圈被鎖,的不到電,無法動作。),控制電路就是這樣設計。

這是一個最簡單的方法,如果你要用電子線路來實現,那麼原理和思路是一樣的,具體如何設計你就自己考慮了,我這里用繼電接觸的設計方法,只能給你一個思路(不過你按我的這個方法去做,一定可以實現)。
如果你要用單片機來實現,那麼這個程序也不是很難,按照這個思路去做也是很簡單的。

閱讀全文

與單片機搶答器設計相關的資料

熱點內容
大轉折系列電影17部 瀏覽:85
蠟筆小新功夫小子國語版免費觀看 瀏覽:406
一個囚犯和一個小男孩的外國電影 瀏覽:974
yy寫的很詳細的小說 瀏覽:128
求個在線觀看的中文字幕 瀏覽:436
四台伺服器怎麼改成host 瀏覽:784
馬尾電影院今日影訊 瀏覽:815
老濕機免費看片網站 瀏覽:914
ck影院 瀏覽:942
ubuntuphpfpm安裝 瀏覽:414
末世之一女多男 瀏覽:178
電腦上如何下載稅務app 瀏覽:528
s曲線單片機 瀏覽:664
配音秀app如何自動取消續費功能 瀏覽:755
程序員深山養雞 瀏覽:825
類似渣夫的百惠媳的小說 瀏覽:502
javaforever 瀏覽:637
女主叫桃子的微電影 瀏覽:449
藍光超清1080p影視 瀏覽:296
男變女懷孕並生孩子的小說 瀏覽:344