1绪论………………………………………………………………………………………………4
1. 错误!未定义书签。八路抢答器的概
述.....................................................4
1.2设计任务与要求 . ............................................. 4 2总体方案设计..................................................... 5
2.1方案设计„„„„„„„„„„„„„„„„„„„„„„„ 2.2 方案论证与比较 ............................ 错误!未定义书签。 2.3 总体框图设计
3 硬件电路设计 ................................... 错误!未定义书签。
3.1 AT89C51单片机 . ............................ 错误!未定义书签。 3.2 按键电路 .................................. 错误!未定义书签。 3.3 复位电路 .................................. 错误!未定义书签。 3.4 报警电路
3.5 LED数码显示电路和驱动电路 3.6 总设计电路图
4 软件设计 ....................................... 错误!未定义书签。
4.1 程序流程图 ................................ 错误!未定义书签。 5总结 ........................................... 错误!未定义书签。 参考文献: ....................................................... 17 附录 ............................................................. 18
附录一 程序代码 ............................... 错误!未定义书签。
1 绪论
1.1 八路抢答器的概述
随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。本文设计的八路抢答器以AT89C51单片机为核心器件,包括时钟电路、复位电路、显示电路、按键电路以及报警电路。基于MCS-51系列单片机AT89C51的一种抢答器. 该电路采用AT89C51单片机的四个8位并行I/O接口连接各个控制电路来实现抢答功能. 该电路设计简单, 进行简单更改便可实现对8组或8组以下的人员抢答. 它能根据不同的抢答输入信号,经过单片机的控制处理产生不同的对应输出信号,最后经过LED 数码管显示相应的路数,充分利用了单片机的优点。
1.2 设计任务及要求
(1)、设计任务
基于MCS-51系列单片机AT89C51,设计一个多功能八路抢答器 (2)、设计要求
1)抢答器同时供8名选手或8个代表比赛,分别用8个按钮K1~K8。 2)设置一个系统清除和抢答控制开关K9,该开关由主持人控制。 3)抢答器具有锁存功能与显示功能。即选手按动按钮,锁存相应的编号 并在优先抢答选手的编号一直保持到主持人将系统清除为止。 4)主持人按下抢答“开始”按钮,抢答开始。
5)当某一路抢答成功时,在数码管上显示成功信息和该路的号数; 6)当某一路抢答违规时,能在数码管上显示违规信息和该路的号数; 7)具有定时抢答发功能, 且一次抢答的时间由主持人设定(如5秒) 。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
8)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
9如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2 总体方案设计
2.1 方案设计
方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便的完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作工序比较繁琐,使用不太方便。
方案二:采用89C51系列单片机作为控制核心。该系统可以完成运算控制、信号识别以及显示功能的实现。利用单片机程序判断选手按键是否有效,若无效,启动扬声器报警。选手若按正常的操作进行抢答,利用数码管显示电路实现倒计时显示时间。整个系统具有极其灵活的可编程性,能方便的对系统进行动能的扩张和更改。
2.2 方案设计论证与选择
相对于第一个方案:
方案二可靠性好:单片机按照工业控制要求设计,抵制工业噪声干扰优于一般的CPU 。
单片机有一般电脑所必须的器件,如三台双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳转指令。
所以我选择方案二。
2.3 总体框图设计
该系统以89C51单片机为核心,由晶振和复位电路、抢答器电路、时序控制电路、报警电路、LED 数码管显示器和驱动电路组成。复位电路、按键电路、数码管显示电路、报警电路这几部分电路组成。系统框图如图2-3所示。工作原理:接通电源后,主持人按下“清除”按钮,对系统进行复位和清零,抢答器处于禁止状态,数码管显示器显示设定时间;主持人按下“开始”按钮,抢答器开始工作,选手可进行抢答,在此过程中,抢答器完成优先判断、编号显示、扬声器提示。当一轮抢答之后,定时器停止,禁止二次抢答,显示器显示剩余时间。如果再次抢答,必须由主持人再次操作“清除”或者“开始”状态按钮。
图2-3
3 硬件设计
3.1 AT89C51单片机
AT89C51作为抢答电路系统的核心器件。如图3-1所示,该器件是INTEL 公司生产的MCS -51系列单片机的基础产品,采用了可靠的CMOS 工艺制造技术,具有高性能的8位单片机,属于标准的MCS -51的CMOS 产品。不仅结合了HMOS 的高速和高密度技术及HMOS 的低功耗特征,而且继承和扩展了MCS -48单片机的体系结构和指令系统。
图3-1
①AT89C51单片机的主要特征:
A 、与MCS -51兼容,4K 字节可编程闪烁存储器; b 、灵活的在线系统编程,掉电标识和快速编程特性; c 、寿命为1000次写/擦周期,数据保留时间可10年以上; d 、全静态工作模式:0HZ~33HZ;
e 、三级程序存储器锁定;f128×8位内部RAM ,32位可编I/O线; g 、两个16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个
全双工I/O接口。
h 、有位寻址功能、适于布尔处理的位处理机。 ②单片机与报警电路
系统中的报警电路是由发光二极管和限电流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接线方法与P2端口相同,不同的是Flash 编程和程序校验,P1接收低8位地址数据。 ③程序存储器
本系统的所需的没有必要外扩程序存储器,所以不用考虑存储器扩充容量的大小,单片机本身的存储器就已足够。 ④数据存储器
根据系统的功能要求,不需扩展外部RAM ,89C51本身的RAM 就能满足要求。 ⑤I/O接口芯片
根据系统的功能要求,I/O接口芯片的也不需进行扩展。 ⑥总线驱动能力
MCS-51系列单片机的外部扩展功能很强,但4个8位并行的带负载的能力是有限的。P0口能驱动8个TTL 电路,P1~P3口只能驱动3个TTL 电路。在实际运用中,这些端口的负载不应超过总负载能力的70%,以保证留有一定的余量,以增强系统的抗干扰能力,在外接负载较多的情况下,应采用总线驱动电路,以提高端口的驱动能力和抗干扰能力
3.2 按键电路
键盘是人与微机系统打交道的主要设备。按键电路如图3-2所示。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。该电路完成两个功能:一是分辨出选手按键的先后,并锁存抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键,即使其他选手操作无效。抢答器具有锁存、定时、显示和报警功能。
时序控制电路是抢答器设计的关键,它要完成的功能是:一、主持人按动“开
始”按键K8时,抢答电路和定时电路进入正常抢答状态。二、当主持人未按动“开始”按键,但有参赛选手按动抢答键时,蜂鸣器声响,抢答电路和定时电路停止工作。
图3-2
3.3 复位电路
复位是计算机的一个重要工作状态。如图3-3所示,在单片机工作时,接电之前要复位,断电后也要复位,在抢答器中复位则为定时做铺垫的,在抢答之前要复位,抢答完毕后也要复位,按了复位键之后,LED 的显示全为00,当引脚RST 端保持两个机器周期以上的高电平,AT89C51可以进入复位状态。
图3-3
3.4 报警电路
报警电路具有报警功能,如图3-4所示,如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示为00,并发出一段时间的报警声
图3-4
3.5 LED数码显示器和驱动电路
本设计所用的显示器为7段共阴极接法LED 显示器,如图3-5所示,当某一发光二极管的阳极输入高电平时,则该段发光。利用P0口做段选码口输出,P2口的1\3\4三位做位选码输出.
图3-5
3.6 总设计电路图
图3-6
4、软件设计
4.1程序流程图
在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如图所示:
图4-1
图4-2
图
4-3
5 调试
5.1准备开始:
图5-1
5.2 二号选手抢答成功:
图5-2
5.3四号选手抢答成功:
图5-3
5.4抢答时间到,无人抢答:
图
5-4
5.5抢答犯规:
图5-5
6.总结
开始选择课程设计题目是,看见这个题目觉得挺好弄得,但是想的总是美好的。这次课程设计的仿真工具是从来没有使用过,是在老师和同学的指导下学会的,结合单片机设计电路更是从来没有接触过,但是没有办法,所以通过上网或去图书馆查阅资料了解了一些,经过两个星期的设计,从开始的什么都不会,慢慢的自己会更改电路,会仿真,导入程序后会自己进行一些修改。虽然不是很系统的学习这些,但是基本的操作已经了解了。通过这次课程设计,我们意识到,要想设计出好的电路,必须清楚明白的知道题目所要表达的意思,并且要了解各种元器件的用途,这次设计综合了我们所学习过的知识,也对这些知道进行了一定的扩展了解,这些对我们是很有帮助的。
参考文献:
[1] 张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3] 阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006 [4]夏路易,石宗义。电路原理图与电路板设计教程Protel 99se. 北京:北京希望电子出版社,2002
[5]康华光。模拟电路技术基础(第五版)。北京:高等教育出版社,2
附录
附录一程序代码:
OK EQU 25H ;抢答开始标志位 RING EQU 27H ;响铃标志位
DATA0 EQU 40H ;抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT
MAIN: MOV R1,#5 ;初设抢答时间为5s MOV R2,#5 ;初设答题时间为5s MOV TMOD,#10H ;设置未定时器方式2 MOV TH0,#0ECH
MOV TL0,#0FFH ;越高发声频率越高, 越尖 MOV TH1,#3CH
MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA SETB ET0
SETB ET1 ;允二个中断,T0/T1 CLR OK CLR RING SETB TR1
SETB TR0
;=====查询程序=====
START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH
ACALL DISPLAY ;未开始抢答时候显示P00 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,TZ1 JNB P1.7,TZ2 AJMP START TZ1: JMP FALSE7 TZ2: JMP FALSE8
;=====非法抢答处理程序=====
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保存了倒计时的时间, 之前先将抢答时间或回答时间给R6
MOV B,#0AH
DIV AB ;除十分出个位/十位
MOV 30H,A ;十位存于(30H)
MOV 31H,B ;个位存于(31H)
MOV R5,30H ;取十位
MOV R4,31H ;取个位
MOV A,R6
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
JB OK,ACCOUT ;如果是抢答倒计时, 如是则查询抢答, 否者跳过查询继续倒数(这里起到锁抢答作用)
AJMP RECOUNT
ACCOUT: MOV A,DATA0
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.7,TZ4
AJMP RECOUNT
TZ3: JMP TRUE7
TZ4: JMP TRUE8
QUIT: CLR OK ;如果按下了" 停止键" 执行的程序 CLR RING
AJMP START
;=====正常抢答处理程序=====
TRUE1: ACALL BARK
MOV A,R2
MOV R6,A ;
MOV R3,#01H
CLR OK ;
以就锁了抢答, 回答倒计时开始.
AJMP COUNT
TRUE2:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP COUNT
TRUE3:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP COUNT
TRUE4:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP COUNT
TRUE5: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP COUNT
TRUE6: ACALL BARK
MOV A,R2
MOV R6,A 回答时间R2送R6 因为答题的计时不再查询抢答, 所
CLR OK
AJMP COUNT
TRUE7: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP COUNT
TRUE8: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
AJMP COUNT
;=====犯规抢答程序=====
ERROR: MOV R0,#00H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV 34H,R3 ;
HERE: MOV A,R0
CJNE A,#0AH,FLASH ;0.5s
CLR RING
MOV R3,#0AH
MOV R4,#0AH
MOV R5,#0AH ;
AJMP CHECK1
FLASH: CJNE A,#14H,CHECK1 ;
清R0, 重新计
SETB RING
MOV R0,#00H
MOV R3,34H ;
MOV R5,#0BH
MOV R4,#0BH ;
AJMP CHECK1
CHECK1: JNB P3.1,QUIT1
ACALL DISPLAY
AJMP HERE
QUIT1: CLR RING
CLR OK
AJMP START
;=====显示程序===== 犯规号数暂存与(34H) 向下运行->灭并停响 三灯全灭 下面是1s 的情况, 响并显示号数并取回号数 显示00和号数
DISPLAY: MOV DPTR,#DAT1 ;查表显示程序, 利用P0口做段选码口输出/P2口的1\3\4三位做位选码输出.
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#0feH
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#0fdH
MOV P0,A
ACALL DELAY
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#0fbH
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H ;"灭
","1","2","3","4","5","6","7","8","9"," 灭","P"
DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,3fH
;第一个为零, 最后一个为零, 其他与上相同, 因为十位如果为零显示熄灭
;=====延时(显示和去抖动用到)=====
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET
;=====发声程序=====
BARK: SETB RING
ACALL DISPLAY
ACALL DISPLAY
CLR RING ;按键发声
RET
;=====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
;========INTT0中断服务程序============
INTT0:MOV DATA0,P1
CLR EX0
RETI
END
1绪论………………………………………………………………………………………………4
1. 错误!未定义书签。八路抢答器的概
述.....................................................4
1.2设计任务与要求 . ............................................. 4 2总体方案设计..................................................... 5
2.1方案设计„„„„„„„„„„„„„„„„„„„„„„„ 2.2 方案论证与比较 ............................ 错误!未定义书签。 2.3 总体框图设计
3 硬件电路设计 ................................... 错误!未定义书签。
3.1 AT89C51单片机 . ............................ 错误!未定义书签。 3.2 按键电路 .................................. 错误!未定义书签。 3.3 复位电路 .................................. 错误!未定义书签。 3.4 报警电路
3.5 LED数码显示电路和驱动电路 3.6 总设计电路图
4 软件设计 ....................................... 错误!未定义书签。
4.1 程序流程图 ................................ 错误!未定义书签。 5总结 ........................................... 错误!未定义书签。 参考文献: ....................................................... 17 附录 ............................................................. 18
附录一 程序代码 ............................... 错误!未定义书签。
1 绪论
1.1 八路抢答器的概述
随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。本文设计的八路抢答器以AT89C51单片机为核心器件,包括时钟电路、复位电路、显示电路、按键电路以及报警电路。基于MCS-51系列单片机AT89C51的一种抢答器. 该电路采用AT89C51单片机的四个8位并行I/O接口连接各个控制电路来实现抢答功能. 该电路设计简单, 进行简单更改便可实现对8组或8组以下的人员抢答. 它能根据不同的抢答输入信号,经过单片机的控制处理产生不同的对应输出信号,最后经过LED 数码管显示相应的路数,充分利用了单片机的优点。
1.2 设计任务及要求
(1)、设计任务
基于MCS-51系列单片机AT89C51,设计一个多功能八路抢答器 (2)、设计要求
1)抢答器同时供8名选手或8个代表比赛,分别用8个按钮K1~K8。 2)设置一个系统清除和抢答控制开关K9,该开关由主持人控制。 3)抢答器具有锁存功能与显示功能。即选手按动按钮,锁存相应的编号 并在优先抢答选手的编号一直保持到主持人将系统清除为止。 4)主持人按下抢答“开始”按钮,抢答开始。
5)当某一路抢答成功时,在数码管上显示成功信息和该路的号数; 6)当某一路抢答违规时,能在数码管上显示违规信息和该路的号数; 7)具有定时抢答发功能, 且一次抢答的时间由主持人设定(如5秒) 。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
8)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
9如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2 总体方案设计
2.1 方案设计
方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便的完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作工序比较繁琐,使用不太方便。
方案二:采用89C51系列单片机作为控制核心。该系统可以完成运算控制、信号识别以及显示功能的实现。利用单片机程序判断选手按键是否有效,若无效,启动扬声器报警。选手若按正常的操作进行抢答,利用数码管显示电路实现倒计时显示时间。整个系统具有极其灵活的可编程性,能方便的对系统进行动能的扩张和更改。
2.2 方案设计论证与选择
相对于第一个方案:
方案二可靠性好:单片机按照工业控制要求设计,抵制工业噪声干扰优于一般的CPU 。
单片机有一般电脑所必须的器件,如三台双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳转指令。
所以我选择方案二。
2.3 总体框图设计
该系统以89C51单片机为核心,由晶振和复位电路、抢答器电路、时序控制电路、报警电路、LED 数码管显示器和驱动电路组成。复位电路、按键电路、数码管显示电路、报警电路这几部分电路组成。系统框图如图2-3所示。工作原理:接通电源后,主持人按下“清除”按钮,对系统进行复位和清零,抢答器处于禁止状态,数码管显示器显示设定时间;主持人按下“开始”按钮,抢答器开始工作,选手可进行抢答,在此过程中,抢答器完成优先判断、编号显示、扬声器提示。当一轮抢答之后,定时器停止,禁止二次抢答,显示器显示剩余时间。如果再次抢答,必须由主持人再次操作“清除”或者“开始”状态按钮。
图2-3
3 硬件设计
3.1 AT89C51单片机
AT89C51作为抢答电路系统的核心器件。如图3-1所示,该器件是INTEL 公司生产的MCS -51系列单片机的基础产品,采用了可靠的CMOS 工艺制造技术,具有高性能的8位单片机,属于标准的MCS -51的CMOS 产品。不仅结合了HMOS 的高速和高密度技术及HMOS 的低功耗特征,而且继承和扩展了MCS -48单片机的体系结构和指令系统。
图3-1
①AT89C51单片机的主要特征:
A 、与MCS -51兼容,4K 字节可编程闪烁存储器; b 、灵活的在线系统编程,掉电标识和快速编程特性; c 、寿命为1000次写/擦周期,数据保留时间可10年以上; d 、全静态工作模式:0HZ~33HZ;
e 、三级程序存储器锁定;f128×8位内部RAM ,32位可编I/O线; g 、两个16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个
全双工I/O接口。
h 、有位寻址功能、适于布尔处理的位处理机。 ②单片机与报警电路
系统中的报警电路是由发光二极管和限电流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接线方法与P2端口相同,不同的是Flash 编程和程序校验,P1接收低8位地址数据。 ③程序存储器
本系统的所需的没有必要外扩程序存储器,所以不用考虑存储器扩充容量的大小,单片机本身的存储器就已足够。 ④数据存储器
根据系统的功能要求,不需扩展外部RAM ,89C51本身的RAM 就能满足要求。 ⑤I/O接口芯片
根据系统的功能要求,I/O接口芯片的也不需进行扩展。 ⑥总线驱动能力
MCS-51系列单片机的外部扩展功能很强,但4个8位并行的带负载的能力是有限的。P0口能驱动8个TTL 电路,P1~P3口只能驱动3个TTL 电路。在实际运用中,这些端口的负载不应超过总负载能力的70%,以保证留有一定的余量,以增强系统的抗干扰能力,在外接负载较多的情况下,应采用总线驱动电路,以提高端口的驱动能力和抗干扰能力
3.2 按键电路
键盘是人与微机系统打交道的主要设备。按键电路如图3-2所示。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。该电路完成两个功能:一是分辨出选手按键的先后,并锁存抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键,即使其他选手操作无效。抢答器具有锁存、定时、显示和报警功能。
时序控制电路是抢答器设计的关键,它要完成的功能是:一、主持人按动“开
始”按键K8时,抢答电路和定时电路进入正常抢答状态。二、当主持人未按动“开始”按键,但有参赛选手按动抢答键时,蜂鸣器声响,抢答电路和定时电路停止工作。
图3-2
3.3 复位电路
复位是计算机的一个重要工作状态。如图3-3所示,在单片机工作时,接电之前要复位,断电后也要复位,在抢答器中复位则为定时做铺垫的,在抢答之前要复位,抢答完毕后也要复位,按了复位键之后,LED 的显示全为00,当引脚RST 端保持两个机器周期以上的高电平,AT89C51可以进入复位状态。
图3-3
3.4 报警电路
报警电路具有报警功能,如图3-4所示,如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示为00,并发出一段时间的报警声
图3-4
3.5 LED数码显示器和驱动电路
本设计所用的显示器为7段共阴极接法LED 显示器,如图3-5所示,当某一发光二极管的阳极输入高电平时,则该段发光。利用P0口做段选码口输出,P2口的1\3\4三位做位选码输出.
图3-5
3.6 总设计电路图
图3-6
4、软件设计
4.1程序流程图
在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如图所示:
图4-1
图4-2
图
4-3
5 调试
5.1准备开始:
图5-1
5.2 二号选手抢答成功:
图5-2
5.3四号选手抢答成功:
图5-3
5.4抢答时间到,无人抢答:
图
5-4
5.5抢答犯规:
图5-5
6.总结
开始选择课程设计题目是,看见这个题目觉得挺好弄得,但是想的总是美好的。这次课程设计的仿真工具是从来没有使用过,是在老师和同学的指导下学会的,结合单片机设计电路更是从来没有接触过,但是没有办法,所以通过上网或去图书馆查阅资料了解了一些,经过两个星期的设计,从开始的什么都不会,慢慢的自己会更改电路,会仿真,导入程序后会自己进行一些修改。虽然不是很系统的学习这些,但是基本的操作已经了解了。通过这次课程设计,我们意识到,要想设计出好的电路,必须清楚明白的知道题目所要表达的意思,并且要了解各种元器件的用途,这次设计综合了我们所学习过的知识,也对这些知道进行了一定的扩展了解,这些对我们是很有帮助的。
参考文献:
[1] 张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3] 阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006 [4]夏路易,石宗义。电路原理图与电路板设计教程Protel 99se. 北京:北京希望电子出版社,2002
[5]康华光。模拟电路技术基础(第五版)。北京:高等教育出版社,2
附录
附录一程序代码:
OK EQU 25H ;抢答开始标志位 RING EQU 27H ;响铃标志位
DATA0 EQU 40H ;抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT
MAIN: MOV R1,#5 ;初设抢答时间为5s MOV R2,#5 ;初设答题时间为5s MOV TMOD,#10H ;设置未定时器方式2 MOV TH0,#0ECH
MOV TL0,#0FFH ;越高发声频率越高, 越尖 MOV TH1,#3CH
MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA SETB ET0
SETB ET1 ;允二个中断,T0/T1 CLR OK CLR RING SETB TR1
SETB TR0
;=====查询程序=====
START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH
ACALL DISPLAY ;未开始抢答时候显示P00 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,TZ1 JNB P1.7,TZ2 AJMP START TZ1: JMP FALSE7 TZ2: JMP FALSE8
;=====非法抢答处理程序=====
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保存了倒计时的时间, 之前先将抢答时间或回答时间给R6
MOV B,#0AH
DIV AB ;除十分出个位/十位
MOV 30H,A ;十位存于(30H)
MOV 31H,B ;个位存于(31H)
MOV R5,30H ;取十位
MOV R4,31H ;取个位
MOV A,R6
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
JB OK,ACCOUT ;如果是抢答倒计时, 如是则查询抢答, 否者跳过查询继续倒数(这里起到锁抢答作用)
AJMP RECOUNT
ACCOUT: MOV A,DATA0
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.7,TZ4
AJMP RECOUNT
TZ3: JMP TRUE7
TZ4: JMP TRUE8
QUIT: CLR OK ;如果按下了" 停止键" 执行的程序 CLR RING
AJMP START
;=====正常抢答处理程序=====
TRUE1: ACALL BARK
MOV A,R2
MOV R6,A ;
MOV R3,#01H
CLR OK ;
以就锁了抢答, 回答倒计时开始.
AJMP COUNT
TRUE2:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP COUNT
TRUE3:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP COUNT
TRUE4:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP COUNT
TRUE5: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP COUNT
TRUE6: ACALL BARK
MOV A,R2
MOV R6,A 回答时间R2送R6 因为答题的计时不再查询抢答, 所
CLR OK
AJMP COUNT
TRUE7: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP COUNT
TRUE8: ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
AJMP COUNT
;=====犯规抢答程序=====
ERROR: MOV R0,#00H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV 34H,R3 ;
HERE: MOV A,R0
CJNE A,#0AH,FLASH ;0.5s
CLR RING
MOV R3,#0AH
MOV R4,#0AH
MOV R5,#0AH ;
AJMP CHECK1
FLASH: CJNE A,#14H,CHECK1 ;
清R0, 重新计
SETB RING
MOV R0,#00H
MOV R3,34H ;
MOV R5,#0BH
MOV R4,#0BH ;
AJMP CHECK1
CHECK1: JNB P3.1,QUIT1
ACALL DISPLAY
AJMP HERE
QUIT1: CLR RING
CLR OK
AJMP START
;=====显示程序===== 犯规号数暂存与(34H) 向下运行->灭并停响 三灯全灭 下面是1s 的情况, 响并显示号数并取回号数 显示00和号数
DISPLAY: MOV DPTR,#DAT1 ;查表显示程序, 利用P0口做段选码口输出/P2口的1\3\4三位做位选码输出.
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#0feH
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#0fdH
MOV P0,A
ACALL DELAY
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#0fbH
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H ;"灭
","1","2","3","4","5","6","7","8","9"," 灭","P"
DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,3fH
;第一个为零, 最后一个为零, 其他与上相同, 因为十位如果为零显示熄灭
;=====延时(显示和去抖动用到)=====
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET
;=====发声程序=====
BARK: SETB RING
ACALL DISPLAY
ACALL DISPLAY
CLR RING ;按键发声
RET
;=====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
;========INTT0中断服务程序============
INTT0:MOV DATA0,P1
CLR EX0
RETI
END