單片機課設(shè):六路智能搶答器
設(shè)計目的
利用所學(xué)單片機的理論知識進行軟硬件整體設(shè)計,鍛煉學(xué)生理論聯(lián)系實際、綜合應(yīng)用的能力。
設(shè)計內(nèi)容:
設(shè)計基于單片機的6人搶答器,并編程實現(xiàn)其功能.
設(shè)備和器材:
單片機最小開發(fā)系統(tǒng),中斷控制器8259A一片(自選),并行接口8255A一片或8155(用單片機開發(fā)板),發(fā)光二極管12只(紅,黃各6只),LED數(shù)碼管若干只,按鈕或按鍵10個,其他器件任選。
設(shè)計要求:
1、設(shè)計硬件接口電路,將這些外設(shè)構(gòu)成一個簡單的單片機應(yīng)用系統(tǒng),畫出接口的連接圖。
2、 編寫下列控制程序
① 1—6號手中先按下按鈕者,LED數(shù)碼管顯示其選手號碼(后按下無效)。
② 由裁判掌握,若回答正確,該選手對應(yīng)黃燈亮,否則紅燈亮。
③ 回答正確時,記分牌加10分,不正確減10分(初始分100分)
Code:
ORG 0000H
LJMP PREPAREORG 0030H
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共陰極數(shù)碼管顯示代碼表 0~9
/*------------------------------初始化模塊-------------------------*/
PREPARE: MOV SP,#70hLEDSEL0 BIT P2.0;LED選擇位
LEDSEL1 BIT P2.1
LEDSEL2 BIT P2.2
LEDSEL3 BIT P2.3
JUDGMENT0 BIT P2.4;裁判裁決錯誤
JUDGMENT1 BIT P2.5;裁判裁決正確
SELECT0 BIT P2.6;位選信號0
SELECT1 BIT P2.7;位選信號1
RST BIT P3.6;記錄各選手成績
MOV 31H,#01H ;一號選手百位分數(shù)
MOV 32H,#00H;一號選手十位分數(shù)
MOV 33H,#00H;一號選手個位分數(shù)
MOV 34H,#01H;二號選手分數(shù)
MOV 35H,#00H
MOV 36H,#00H
;三號選手分數(shù)
MOV 37H,#01H
MOV 38H,#00H
MOV 39H,#00H
;四號選手分數(shù)
MOV 3AH,#01H
MOV 3BH,#00H
MOV 3CH,#00H
;五號選手分數(shù)
MOV 3DH,#01H
MOV 3EH,#00H
MOV 3FH,#00H
;六號選手分數(shù)
MOV 40H,#01H
MOV 41H,#00H
MOV 42H,#00HMOV 60H,#00H;記分牌搶答選手編號
MOV 61H,#00H;記分牌百位數(shù)據(jù)
MOV 62H,#00H;記分牌十位數(shù)據(jù)
MOV 63H,#00H;記分牌個位數(shù)據(jù)
BEGIN: MOV P2,#0FFH;P2,P3 口置高電平,準備接受裁判信號、搶答信號
MOV P3,#0FFH
MOV P1,#3FH
MOV R4,#00H
MOV R0,#00H
MOV R1,#00HCLR C
SETB SELECT0
SETB SELECT1
/*-----------------------------檢測搶答模塊-------------------------*/
CHECK:JNB RST,BEGIN
MOV A,P3;接收P3口的搶答信號,按下時為0
CPL A
JZ CHECKFIND:RRC A;有搶答信號時逐次移位判斷是哪一為搶答者
INC R4
JNCFIND
MOV 60H,R4
MOV A,R4;獲取搶答選手的計分地址
LCALL DECODE
DEC A
MOV B,#03H
MUL AB
ADD A,#31H
MOV R0,A;搶答選手百位分數(shù)地址,存R0
ADD A,#01H
MOV R1,A ;搶答選手十位分數(shù)地址,存R1/*------------------------------裁判裁決和計分模塊-------------------------*/
JUDGE:JNB JUDGMENT1,RIGHT;裁判裁定回答正確,送低電平回答正確
JNB JUDGMENT0,FALSE
JNB RST,BEGIN;復(fù)位鍵按下,重新初始化
SJMP JUDGEFALSE:MOV A,#06H;裁定錯誤則亮對應(yīng)選手紅燈,送低電平亮
ADD A,R4
DECA
ORL A,#0F0H
MOVP2,AMOV A,@R1
JZ BORROW
DECA
MOV @R1,A
MOV 61H,@R0
MOV 62H,@R1
SJMP SHOW
;十位向百位借位處理
BORROW:
MOV A,@R0
JZ ZERO
MOV @R1,#09H
MOV A,@R0
DEC A
MOV @R0,A
MOV 61H,@R0
MOV 62H,@R1
SJMP SHOWZERO: MOV @R0,#00H;分數(shù)扣為0,不再扣分
MOV @R1,#00H
MOV 61H,@R0
MOV 62H,@R1
SJMP SHOWRIGHT:MOV A,#00H;裁定正確則亮對應(yīng)選手黃燈,送低電平亮
ADD A,R4
DECA
ORL A,#0F0H
MOVP2,AMOV A,@R1
CJNE A,#09H,NOTEQUAL
;十位向百位進位處理
CARRY:MOV @R1,#00H
MOV A,@R0
INC A
MOV @R0,A
MOV 61H,@R0
MOV 62H,@R1
SJMP SHOWNOTEQUAL: INC A
MOV @R1,A
MOV 61H,@R0
MOV 62H,@R1
SJMP SHOW
/*------------------------------動態(tài)顯示和延時模塊-------------------------*/SHOW: JNB RST,TOBEGIN;復(fù)位鍵按下,重新初始化
MOV A,60H;顯示處理選手編號
SETB SELECT0;共陰極數(shù)碼管送低電平有效
SETB SELECT1LCALL DECODE
MOV A,63H;顯示處理選手得分的個位值
CLR SELECT0
SETB SELECT1LCALL DECODE
MOV A,62H;顯示處理選手得分的十位值
SETB SELECT0
CLR SELECT1LCALL DECODE
MOV A,61H;顯示處理選手得分的百位值
CLR SELECT0
CLR SELECT1
LCALL DECODE
SJMP SHOWDECODE:MOV R5,A;保護A中值
MOV DPTR,#TABLE ;查表譯碼送段碼給P1口顯示
MOVC A,@A+DPTR
MOV P1,A
MOV A,R5
;掃描延時
D1:MOV R6,#2
D2:MOV R7,#250
DJNZ R7,$
DJNZ R6,D2
RET
TOBEGIN: LJMP BEGIN
END
Proteus 仿真:
代碼下載 :六路智能搶答器(代碼+proteus仿真+課設(shè)報告)下載