单片机课程设计《八路抢答器》.docx

上传人:b****5 文档编号:2854837 上传时间:2022-11-16 格式:DOCX 页数:75 大小:1.91MB
下载 相关 举报
单片机课程设计《八路抢答器》.docx_第1页
第1页 / 共75页
单片机课程设计《八路抢答器》.docx_第2页
第2页 / 共75页
单片机课程设计《八路抢答器》.docx_第3页
第3页 / 共75页
单片机课程设计《八路抢答器》.docx_第4页
第4页 / 共75页
单片机课程设计《八路抢答器》.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

单片机课程设计《八路抢答器》.docx

《单片机课程设计《八路抢答器》.docx》由会员分享,可在线阅读,更多相关《单片机课程设计《八路抢答器》.docx(75页珍藏版)》请在冰豆网上搜索。

单片机课程设计《八路抢答器》.docx

单片机课程设计《八路抢答器》

1任务要求

(1)实现多路抢答器功能。

(2)用LED显示屏显示抢答提示、哪组抢答、哪组犯规、加减分情况以及每组的得分。

(3)数码显示抢答和答题时间,时间到调用LED模块显示“时间到!

”。

(4)主持人通过按钮控制抢答功能:

抢答、复位、加分和减分。

2硬件设计

2.1硬件分析

(1)LED显示屏模块设计

LED显示屏是用了16块8×8点阵模块,把每一行的行线连起来,每一列的列线连起来级联成64×16点阵显示屏。

通过8个74HC273锁存器把每一行的64列数据锁存起来,通过4线-16线译码器74159控制每一行打开。

4块8×8点阵模块级联成16×16点阵模块示意图如图3.1所示:

8条行线连在一起组成16行

8条列线连在一起组成16列

图3.14块8×8点阵级联示意图

64×16点阵模块由16块8×8点阵模块以及8块74HC273锁存器组成,锁存器负责把每一行的数据锁存起来,电路图如图3.2所示:

 

图3.264×16点阵电路图

(2)按键模块设计

八路抢答器顾名思义有8个抢答按钮,故八路抢答器应由8个抢答键及4个功能键组成。

每一组的按键判断有相应的LED指示灯,用来指示抢答与犯规操作。

按键模块电路如图3.3及图3.4所示:

图3.3抢答按钮

图3.4主持人控制按钮

(3)数码显示模块设计

数码显示模块由两位数码管组成,可以显示00~99,通过位扫描显示两位数字。

数码管用来显示抢答时间以及答题时间。

数码显示模块电路如图3.5所示:

图3.5数码显示模块

2.2硬件电路原理图

八路抢答器由LED显示模块、数码显示模块、按键模块以及译码电路,锁存电路组成。

电路原理图如图3.6所示:

图3.6硬件电路原理图

3软件设计

3.1主要模块流程图

(1)开始程序流程图如图4.1所示

图4.1开始程序流程图

(2)开始抢答程序流程图如图4.2所示

图4.2开始抢答程序流程图

(3)判断犯规程序流程图如图4.3所示

图4.3判断犯规程序流程图

(4)答题程序流程图如图4.4所示

图4.4答题程序流程图

(5)加减分流程图如图4.5所示

图4.5加减分流程图

3.2主要模块的程序分析

本程序主要分为四部分:

(1)主程序模块、

(2)显示模块、(3)计时模块、(4)按键中断模块。

(1)主程序分析

主程序负责整个程序的调用和转跳,实现由准备抢答——正在抢答——哪组抢答——哪组加减分的过程,以及犯规的判断和复位。

START:

MOVR6,#100

START2:

MOVDPTR,#TABST;显示开机画面

LCALLDISPLAY

DJNZR6,START2

LCALLDELAY2

MAIN:

MOVIE,#00H;主程序

MOVP2,#00H

MOVP3,#1CH

MOVP3,#0FCH

MOVP2,#00H

MOVP3,#2CH

MOVP3,#0FCH

MOVP3,#0FCH

LCALLZHUNBEI

MOVR0,#0

MOVR1,#0

MOVR2,#0

MOVR3,#0

MOVR5,#0

MOVR4,#00H

MOVR7,#00H

MOVTH0,#9EH

MOVTL0,#58H

MOVA,#00H

MOVB,#00H

MOV31H,#00H;红灯标志

MOV32H,#00H;时间到标志

MOV2EH,#00H;组按键标志

MOV2FH,#00H;有键按下去标志

MOV30H,#00H;有组抢答标志

MOV33H,#00H;加减分标志

MOV34H,#00H;加/减分标志,00H为加分

MOV35H,#00H;已经加减分标志

MOV0A1H,#00H

MOVTMOD,#01H

MOVR6,#10

SETBET0

SETBEA

SETBEX0

SETBIT0

CLRTR0

;程序开始时先给DPTR一个值,再调用静态显示子程序(LCALLDISPLAY),显示开机画面,一会之后,进行系统初始化,标志所需要的信息,再给DPTR一个值,调用静态显示子程序,显示“准备抢答”。

CHEAK:

MOVA,2FH

CJNEA,#00H,CH

MOV2FH,#00H

LCALLFENSHU

LJMPCHEAK

CH:

MOV2FH,#00H

CJNER7,#08H,IFFANGUI2

MOVR7,#00H

MOV0A1H,#00H

MOV2EH,#00H

CLREX0

LJMPKAIQIANG

IFFANGUI2:

LJMPIFFANGUI

;之后,程序循环地调用显示分数子程序,并不断查询是否有键按下去,如果有键按下去,即查询是否是主持人按了“开始”,是则转跳到开始抢答,否则转跳到犯规判断。

FENSHU:

MOV9EH,#8;显示分数

MOV9FH,#0

MM3:

MOV9CH,#16

MOVR2,#00H

MOV9AH,R2

MAIN2:

MOV9BH,#5

MM:

MOVA,2FH

CJNEA,#0FFH,FS1

CJNER7,#0AH,FSIF0BH

SJMPFS1

FSIF0BH:

CJNER7,#0BH,FSIF09H

SJMPFS1

FSIF09H:

CJNER7,#09H,BAC2

FS1:

MOVP1,#0FH

LCALLDISPLAY4

MOVR2,9AH

DJNZ9BH,MM

INC9AH

MOVR2,9AH

DJNZ9CH,MAIN2

MOV9DH,#60

LPP:

MOVR2,#0FH

MOVA,2FH

CJNEA,#0FFH,FS2

CJNER7,#0AH,FSIF0BH2

SJMPFS2

FSIF0BH2:

CJNER7,#0BH,FSIF09H2

SJMPFS2

FSIF09H2:

CJNER7,#09H,BAC2

FS2:

MOVP1,#0FH

LCALLDISPLAY4

DJNZ9DH,LPP

MOV9CH,#16

MOVR2,9AH

MAIN3:

MOV9BH,#6

MM2:

MOVA,2FH

CJNEA,#0FFH,FS3

CJNER7,#0AH,FSIF0BH3

SJMPFS3

FSIF0BH3:

CJNER7,#0BH,FSIF09H3

SJMPFS3

FSIF09H3:

CJNER7,#09H,BAC2

FS3:

MOVP1,#0FH

LCALLDISPLAY4

MOVR2,9AH

DJNZ9BH,MM2

INC9AH

MOVR2,9AH

DJNZ9CH,MAIN3

INC9FH

DJNZ9EH,MM3

BAC2:

RET

;在显分数时,9AH表示显示哪组的分数,调用滚动显示子程序(LCALLDISPLAY4)滚动显示每组的得分,直到按了“开始”键或者抢答键就跳出显示分数子程序。

KAIQIANG:

MOVA,2EH;显示开始抢答

CJNEA,#0FFH,KAISHI

LJMPQIANGDA

KAISHI:

CJNER7,#09H,KS

CLREA

LJMPMAIN

KS:

MOVA,32H

CJNEA,#0FFH,KS2

MOVP2,#00H

MOVP3,#1CH

MOVP3,#0FCH

MOVP2,#0FFH

MOVP3,#2CH

MOVP3,#0FCH

LJMPTO

KS2:

MOVP1,#0FH

MOVDPTR,#TAB2

LCALLDISPLAY

SETBTR0

LCALLDIGITAL

MOVP1,#0FH

SETBEX0

LJMPKAIQIANG

;进入开始抢答之后,判断是否有抢答键按下去,有则转跳到抢答程序,否则判断时候按了复位键,是则转跳到主程序开头,否则给DPTR一个值,调用静态显示子程序,显示“开始抢答”并开启计时器,计时10秒,调用数码显示子程序(LCALLDIGITAL),之后就转跳到开始抢答继续判断。

如果在“开始抢答”状态下,时间到了,就转跳到时间到程序。

QIANGDA:

MOV30H,#0FFH;显示哪组抢答

MOVR6,#60

MOVR5,#00H

MOVA,#80H

MOVR2,0A1H

INCR2

DD:

RLA

DJNZR2,DD

MOVP2,A

MOVP3,#1CH

MOVP3,#0FCH

MOVP2,#00H

MOVP3,#2CH

MOVP3,#0FCH

QD2:

CJNER7,#09H,IFAS

LJMPMAIN

IFAS:

MOVA,33H

CJNEA,#00H,ADDSUBB

MOVA,32H

CJNEA,#00H,TO

MOVP1,#0FH

LCALLDISPLAY2

LCALLDIGITAL

LJMPQD2

;进入抢答程序后,计时60秒,通过键值的判断,判断出是哪组抢答之后,把抢答的那一组的指示灯点亮绿色,并调用显示子程序(LCALLDISPLAY2)显示哪组抢答和数码显示子程序(LCALLDIGITAL)显示倒计时。

在显示哪组抢答这段时间内,如果有按“复位”键,就转跳到主程序开头。

如果时间到了,就调用静态显示子程序,显示“时间到!

”。

ADDSUBB:

CJNER7,#0AH,IFSUB;显示加减分

LCALLJIAFEN

MOV35H,#0FFH

LJMPADSB

IFSUB:

LCALLJIANFEN

MOV35H,#0FFH

LJMPADSB

ADSB:

CJNER7,#09H,AS

LJMPMAIN

AS:

LCALLDISPLAY3

MOVP1,#0FH

LJMPADSB

JIAFEN:

MOVA,#40H

ADDA,0A1H

MOVR0,A

MOVA,@R0

ADDA,#10

MOV@R0,A

RET

JIANFEN:

MOVA,#40H

ADDA,0A1H

MOVR0,A

MOVA,@R0

CLRC

SUBBA,#10

MOV@R0,A

RET

;加减分程序用8个连续单元存储8组的分数,之后判断是按了加分还是减分,如果是加分,就调用加分子程序(LCALLJIAFEN),如果是减分,就调用减分子程序(LCALLJIANFEN),然后调用显示加分子程序显示哪组加了分,直到按了“复位”键返回主程序开头。

IFFANGUI:

MOVA,2EH;判断哪组犯规

CJNEA,#00H,IFG

LJMPCHEAK

IFG:

MOV2EH,#00H

FG:

CJNER7,#09H,FG2

LJMPMAIN

FG2:

MOVDPTR,#TAB3

LCALLDISPLAY

MOVP1,#0FH

CJNER7,#00H,IF01H

MOVP2,31H

SETBP2.0

MOV31H,P2

MOVP3,#2CH

MOVP3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1