找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 573|回复: 1
打印 上一主题 下一主题
收起左侧

单片机新手想弄一个多路抢答器,找不到问题出在软件还是硬件

[复制链接]
跳转到指定楼层
楼主
66黑币
求助大佬, 谢谢大家
原本想按下右边的开关on/off就能倒计时10s,蜂鸣器响,用左下4x4开关进行抢答,并显示出按下的开关号码,按下后20s倒计时作答;
若在按下10s开关之前有人按下,就会显示开关号码,蜂鸣器响
(文件已经上传在最后)
这是proteus仿真

运行后出现:
按下ON/OFF


使用键盘后好像乱码:


单片机代码:用keil,编译后没有错误

ORG 0000H
LJMP MAIN
ORG 0013H;外部中断1
LJMP ESS1

ORG 0100H
MAIN:SETB EA
SETB EX1;开中断
SETB IT1;外部中断1初始化

;判断第一行
L16:MOV P1,#0FFH
MOV R2,#00H
CLR P1.0
INC R2
JB P1.4,L0;若为1->L0
LCALL DE0
L0: INC R2
JB P1.5,L1
LCALL DE0
L1: INC R2
JB P1.6,L2
LCALL DE0
L2: INC R2
JB P1.7,L3
LCALL DE0
;第二行
L3: SETB P1.0
CLR  P1.1
INC R2
JB  P1.4,L4
LCALL DE0
L4: INC R2
JB P1.5,L5
LCALL DE0
L5: INC R2
JB P1.6,L6
LCALL DE0
L6: INC R2
JB P1.7,L7
LCALL DE0
;第三行
L7: SETB P1.1
CLR P1.2
INC R2
JB P1.4,L8
LCALL DE0
L8: INC R2
JB P1.5,L9
LCALL DE0
L9: INC R2
JB P1.6,L10
LCALL DE0
L10: INC R2
JB P1.7,L11
LCALL DE0
;第四行
L11: SETB P1.2
CLR P1.3
INC R2
JB P1.4,L12
LCALL DE0
L12: INC R2
JB P1.5,L13
LCALL DE0
L13: INC R2
JB P1.6,L14
LCALL DE0
L14: INC R2
JB P1.7,L15
LCALL DE0
L15:LJMP L16        ;读行列式键盘

ESS1:MOV 70H,#30D ;外部中断 1
MOV R7,#0CH
CLR P3.0
S2: LCALL DELAY
DJNZ 70H,S2
SETB P3.0 ;蜂鸣器提示开始抢答
MOV TMOD,#00010000B
MOV R3,#0AH
L20:MOV 55H,#14H
L19:MOV TH0,#3CH
MOV TL0,#0B0H ;定时器1初始化
SETB TR1        ;启动定时器1
MOV A,R3
MOV B,#0AH
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 53H,A
LCALL DELAY1
SETB P2.4
MOV A,B
MOVC A,@A+DPTR
MOV 54H,A
CLR P2.5
MOVC A,@A+DPTR
MOV 54H,A
CLR P2.5
MOV P0,54H
LCALL DELAY1
SETB P2.5
L18:JNB TF1,L18
D6:CJNE R3,#0FFH,L21
LJMP L22
L21:LJMP L20 ;抢答倒计时
L22:MOV 73H,#02D
S5:MOV 70H,#20D
MOV 71H,#20H
CLR P3.0
S4:LCALL DELAY
DJNZ 70H,S4
SETB P3.0
S6:LCALL DELAY
DJNZ 71H,S6
DJNZ 73H,S5 ;抢答倒计时时间到声音提示
D5:RETI

DE0:MOV DPTR,#TAB ;抢答违规报警并显示抢答违规组号
MOV A,R2
MOV B,#0AH
S10:MOV 72H,#20D
MOV 73H,#10D
CLR P3.0
S8:LCALL LCC
DJNZ 72H,S8
SETB P3.0
S9:LCALL LCC
DJNZ 73H,S9
DJNZ 71H,S10
L17:LCALL LCC
LJMP L17
LCC:CLR P2.4
MOV P0,50H
LCALL DELAY
DELAY1:MOV P1,#0FFH;正常抢答读键
W0:INC R2
JB P1.5,W1
LCALL DE1
W1:INC R2
JB P1.6,W2
LCALL DE1
W2:INC R2
JB P1.7,W3
LCALL DE1
W3:SETB P1.0
CLR P1.1
INC R2
JB P1.4,W4
LCALL DE1
W4:INC R2
JB P1.5,W5
LCALL DE1
W5:INC R2
JB P1.6,W6
LCALL DE1
W6:INC R2
JB P1.7,W7
LCALL DE1
W7:SETB P1.1
CLR P1.2
INC R2
JB P1.4,W8
LCALL DE1
W8:INC R2
JB P1.5,W9
LCALL DE1
W9:INC R2
JB P1.6,W10
LCALL DE1
W10:INC R2
JB P1.7,W11
LCALL DE1
W11:SETB P1.2
CLR P1.3
INC R2
JB P1.4,W12
LCALL DE1
W12:INC R2
JB P1.5,W13
LCALL DE1
W13:INC R2
JB P1.6,W14
LCALL DE1
W14:INC R2
JB P1.7,W15
LCALL DE1
W15:DJNZ R4,W16
LJMP W18
W16:LJMP W0
W18:RET

DE1:MOV P1,#0FFH ;抢答成功声音提示及回答时间计时
MOV 70H,#20D
CLR P3.0
S3:LCALL DELAY
DJNZ 70H,S3
SETB P3.0
SETB P2.0
SETB P2.1
MOV DPTR,#TAB
MOV A,R2
MOV A,B
MOVC A,@A+DPTR
MOV 57H,A
MOV TMOD,#00000001B
MOV R5,#16H
L32:MOV R6,#14H
L31:MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
CLR P2.4
MOV P0,56H
LCALL DELAY
SETB P2.4
CLR P2.5
MOV P0,57H
LCALL DELAY
SETB P2.5
CJNE R5,#14H,L34
LJMP L35
L34: JC L35
LJMP L30
L35: MOV A,R5
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV 58H,A
MOV A,B
MOVC A,@A+DPTR
MOV 59H,A
CLR P2.6
MOV P0,58H
LCALL DELAY
SETB P2.6
CLR P2.7
MOV P0,59H
LCALL DELAY
SETB P2.7
L30:JNB TF0,L30
CLR TF0
DJNZ R6,L31
DEC R5
CJNE R5,#0FFH,L32
MOV P1,#0FFH
MOV 70H,#50D
CLR P3.0
S7:LCALL DELAY
DJNZ 70H,S7
SETB P3.0
MOV P2,#0FFH
MOV R3,#00H
MOV R7,#00H
RET
DELAY:MOV 51H,#10D ;延时子程序
D0:MOV 52H,#248D
D1:DJNZ 52H,D1
DJNZ 51H,D0
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END

AT89C51设计.zip

82.36 KB, 下载次数: 5

文件打包

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:875906 发表于 2022-6-9 14:46 | 只看该作者
仿真截图

{I8}94O9}MH9{UVLC_7MB11.png (58.3 KB, 下载次数: 23)

{I8}94O9}MH9{UVLC_7MB11.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表