本文设计了一种以AT89C51单片机为核心的八路答录机。 采用数码管直接指示、自动锁存显示结果、自动复位的设计思想。 通过单片机的控制和处理,可以根据不同的接听输入信号产生不同的响应。 输出信号与输入信号相对应,最终通过LED数码管显示对应的通道号。 即使两组的应答时间相差几微秒,仍然可以区分哪组按键先被按下,充分利用了单片机系统。 具有结构简单、功能强大、可靠性好、实用性强等特点。 该设计基于八向应答的基本概念。 考虑到根据需要设置限时应答的功能,应答系统采用AT89C51单片机及外围接口实现,并利用单片机的定时器/计数器定时计数原理,将软件和硬件有机地结合起来,使得系统能正确进行计时,使数码管正确显示时间。 使用键盘输出开关和扬声器生成提示。 同时,系统可以实现:在快速答题中,答案只有在开始后才有效,如果在答题开始前答案无效; 有45秒应答时间显示; 可以显示哪个玩家是有效答案和无效答案,并且按下正确按钮后有音乐提示; 回答时间和问答时间倒计时显示。 时间到后系统定时器自动复位,主控强制复位; 按钮被锁定。 在有效状态下,按钮无效、非法。 关键词:Tackler MCU LED数码管时序目录 1.概述 12.方案比较 22.1方案A22.2方案B33。 硬件设计 43.1 原理图的确定 43.2 抢球器电路 43.3 时序控制电路设计 53.4 复位电路设计 53.5 晶振电路设计 63.6 报警电路设计 73.7 播放器应答键(矩阵键盘) 73.8 显示及显示驱动电路 84. 程序设计 84.1 系统主电路程序设计 84.2 显示接听违规流程 104.3 接听成功流程图 104.4 程序列表 105. 调试结果 116. 元件列表 127. 总结 13 参考文献 14 附录 1 15 附录 2 238 通道应答器设计概要: 本设计基于八通道应答器方式回答概念。
考虑到根据需要设置限时应答的功能,应答系统采用AT89C51单片机及外围接口实现,并利用单片机的定时器/计数器定时计数原理,将软件和硬件有机地结合起来,使得系统能正确进行计时,使数码管正确显示时间。 使用键盘输出开关和扬声器生成提示。 同时,系统可以实现:在快速答题中,答案只有在开始后才有效,如果在答题开始前答案无效; 有45秒应答时间显示; 可以显示哪个玩家是有效答案和无效答案,并且按下正确按钮后有音乐提示; 回答时间和问答时间倒计时显示。 时间到后系统定时器自动复位,主控强制复位; 按钮被锁定。 在有效状态下,按钮无效、非法。 关键词:应答器、单片机、LED数码管、时序 一、概述 单片机原理及应用课程设计是学生综合运用所学知识、充分掌握工作原理的重要实践环节,单片机及其接口的编程和使用。 通过独立或协作提出和演示设计方案,调试软硬件,最终获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统的整体概念,初步掌握计算机应用系统的整体概念。微控制器的软件和硬件。 硬件开发方法。 根据单片机原理及应用课程的要求,主要进行了两个方面的设计,即单片机最小系统及存储器扩展设计和接口技术应用设计。 其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和1个串行接口的实际应用,以便掌握可以组成最小的应用系统并进行简单的编程使用。
存储器扩展设计要求学生掌握常用半导体芯片与单片机之间的接口,如用作外部程序存储器时EPROM存储器与单片机的连接关系、用作外部数据存储器时SRAM存储器与单片机的连接关系、 E2PROM存储器用作外部程序/数据存储器,与微控制器连接。 能够合理分配和使用单片机的内部和外部存储器,并编程实现正常的读写功能。 本文设计了一种以AT89C51单片机为核心的八路答录机。 采用数码管直接指示、自动锁存显示结果、自动复位的设计思想。 通过单片机的控制和处理,可以根据不同的接听输入信号产生不同的响应。 输出信号与输入信号相对应,最终通过LED数码管显示对应的通道号。 即使两组的应答时间相差几微秒,仍然可以区分哪组按键先被按下,充分利用了单片机系统。 具有结构简单、功能强大、可靠性好、实用性强等特点。 2 方案比较 2.1 方案A 本系统采用51系列单片机89C51作为控制核心。 系统可以完成计算控制、信号识别和显示等功能的执行。 由于采用单片机,技术相对成熟,应用方便简单,而且单片机周围的辅助电路相对较少,易于控制和实现。 整个系统极其灵活和可编程,可以很容易地扩展和改变系统的功能。 MCS-51单片机的特点如下: 可靠性好:单片机按照工业控制要求设计,其抗工业噪声干扰能力优于普通CPU。 程序指令和数据可以写入ROM中。 多个信号通道位于同一芯片上,可靠性高,操作方便。 扩展后的微控制器具有通用计算机所必需的器件,如三态双向总线、串行和并行输入输出引脚等,可扩展为各种规模的微计算机系统。 它具有很强的控制功能:除了输入输出指令和逻辑判断指令外,单片机指令还有更丰富的条件分支跳转指令。
应答电路的接口电路 3.2 应答机电路的参考电路如图所示。 该电路完成两个功能:一是区分玩家按键顺序,并锁存第一响应者的号码,同时解码并显示电路显示号码; 二是禁止其他玩家按键操作无效。 如果再有急于接听的情况,主持人需要复位开关来清除,然后再进行复位电路原理图。 复位电路采用两种复位方式:上电自动复位和手动复位。 图中9号网络连接到单片机的复位引脚。 脚。 要实现复位,只需在51系列单片机的RESET引脚上加5ms的高电平即可。 上电复位是通过对电容充电来实现的,即上电瞬间RESET端电位与Vcc相同。 随着电容器储存的能量增加,电容器电压逐渐升高,充电电流减小,RESET端电位降低。 这样就会建立一个脉冲电压,调节电容和电阻的大小可以调节脉冲的持续时间。 通常,如果使用12MHz晶振,复位元件参数为22μF电解电容和10kΩ电阻。 当按下复位按钮时,RESET端保持高电平两个机器周期,从而使按钮复位电路复位。 3.5 晶振电路设计 MSC-51 单片机的定时控制功能是由时钟电路和振荡器完成的。 根据硬件电路的不同,连接方法分为内部时钟法和外部时钟法。 本设计采用内部时钟方法。 微控制器内部有一个反相放大器。 XTAL1和XTAL2分别是反相放大器的输入和输出端。 连接外部定时反馈组件形成振荡器(内部时钟模式),产生时钟并将其发送到微控制器内部的各个组件。
时钟频率越高,单片机控制器的控制节奏越快,运算速度也越快。 一般来说,微控制器内部都有一个带反馈的线性反相放大器。 外部晶体振荡器(或连接陶瓷振荡器)和电容器可以组成振荡器,如图2-2所示。 上电后,振荡器产生一个延迟一段时间(约10ms)的时钟,不受软件控制。 图中Y1为晶振,振荡产生的时钟频率主要由Y1决定。 电容C1、C2有两个作用:一是帮助振荡器起振,二是微调振荡器的频率。 典型值为 30pF。 晶振电路的设计如图2-2所示: 晶振电路原理图 3.6 报警电路设计 报警电路用于报警。 当遇到报警信号时,发出报警。 一般来说,扬声器是一个感应报警电路,驱动扬声器的信号是各种频率的脉冲。 因此,驱动扬声器最简单的方法就是使用达林顿晶体管,或者将两个常用的小晶体管连接成达林顿配置。 右图中,电阻R是限流电阻,利用晶体管的高电流增益来实现电路的快速饱和。 不过,如果要输出P0到这个电路,还需要接一个10K的上拉电阻。 当选手在规定时间内抢答时,进行优先判定、号码锁存、号码显示、喇叭提示。 一轮接听后,计时器停止,禁止第二次接听,计时器显示剩余时间。 如果再次回答,主持人必须再次进行“清除”和“开始”状态切换。 报警电路图 3.7 播放器接听键(矩阵键盘) AT89C51 的P1 口作为播放器接听输入按钮引脚。 P1.0至P1.7依次输出低电位,每个玩家编号为1至8,P1P1端口的输入经单片机处理后从P0输出,数码管显示响应者编号。
3.8 显示及显示驱动电路 该电路包括显示和驱动器。 显示器采用数码管,驱动器采用P2口。 违规者编号、答题倒计时30秒、正常答题者编号、答题倒计时60秒时间动态显示在数码管上。 驱动电路的P2口。 查询显示程序使用P0口作为段选口,输出P2的低3位作为位选输出。 当为低电平时,驱动数码管显示数字。 +5V电压时接一个10k电阻,保证压降正常。 4. 程序设计 4.1 系统主程序设计 为了实现答题的公平、公正、合理,必须在主机发出答题命令之前设定好答题时间。 因此,在开始答题之前必须先编写程序来设定时间。 时间设定后,主机发出应答命令,按下P1.7按钮。 程序开始打开定时器中断并开始倒计时。 然后调用键盘扫描子程序,编写键盘扫描程序。 当扫描检测到有人按下接听键时,立即关闭T0,调用显示程序,封锁键盘。 系统主程序流程 4.2 显示非法响应流程 4.3 成功响应流程图 4.4 程序清单详见附录一。 五、调试结果 通过 Keil 软件编译测试程序,生成 HEX 文件如图 4 所示-1:在Keil软件上编译程序,通过Proteus仿真结果。 仿真结果显示,按下start后,数码管开始倒计时。 ,仿真结果如图4-2所示。 Proteus仿真结果 当玩家按下按钮时,数码管显示玩家编号并开始倒计时,如下图所示。 Proteus 仿真结果 6. 元件清单 元件名称 数量 备注 10kΩ 电阻 8 个 10μF 电容 1 个 30pF 电容 2 个 12MHZ 晶振,1 个 AT89C51 单片机芯片,1 个开关按钮,15 个报警器,1 个 7SEG-MPX4-CC 数码管 7.总结 经过近一周的单片机课程设计,八路应答器的设计终于完成了,虽然还没有完全完成。 达到了设计要求,但还是收获颇丰。
通过这次课程设计,我更加熟悉了单片机芯片的工作原理和具体使用方法。 单片机课程设计的重点是软件算法的设计,需要非常巧妙的编程算法。 这锻炼了你独立思考的能力和通过查看相关资料解决问题的习惯。 我们还了解了课程设计的一般步骤以及设计中应注意的问题。 设计不仅是对之前所学知识的考验,更是对自身能力的提升。 下面我简单总结一下整个设计过程。 首先,收到作业后选择主题。 选题是设计的开始。 选择一个合适的、有趣的主题,对于整个设计能否顺利进行有着很大的关系。 就像走路一样,第一步具有决定性的意义。 需要仔细考虑从哪里迈出第一步。 否则,你可能会走很多弯路,走很多弯路,甚至走错方向,难以到达目的地。 因此,在选择主题时一定要慎重考虑。 其次,主题确定后,就该查找资料了。 核对信息是设计的前期准备。 无论用哪种方式查,信息都是有价值的,应该一一记录下来,以备将来使用。 第三,通过上面的过程,积累了很多信息,对选题有了一个大概的了解。 这一步就是在这样的基础上,整合已有的信息,对主题进行更彻底的分析。 第四,一旦有了研究方向,就应该开始实施。 其实前面三个步骤都是为这一步做准备。 通过这次设计,我对数字电路设计中的逻辑关系有了一定的了解,对以前学过的数字电路有了新的认识,也复习了以前学过的知识。 就像人们常说的回顾过去一样。 对我来说是新的,但在设计过程中,遇到了很多问题,有些知识不再清晰。 不过我通过一些资料又复习了一遍数字电路部分的内容。
这样的设计也让我们和同学的关系更进了一步。 同学们互相帮助,有不懂的地方一起讨论。 所以我非常感谢帮助过我的同学。 感谢卢玉军老师给了我这样一个实践的机会。 在整个设计过程中,我学到了很多东西,培养了自己独立工作的能力,对自己的工作能力树立了信心。 我相信这将对我今后的学习、工作和生活产生非常重要的影响。 而且,我的动手能力得到了很大的提高,让我充分体会到创作过程中探索的难度和成功的喜悦。 虽然这个项目还不是很完美,但是我在设计过程中学到的东西是这个设计最大的收获和财富,让我受益终生。 参考文献[1]吴一峰,陈德伟. 微控制器原理和接口技术。 北京:电子工业出版社。 2005.[2]周润静,张丽娜。 基于PROTEUS的电路和单片机仿真。 北京:航空航天大学出版社。 2007.[3]胡耀辉,朱超华等。单片机系统开发经典实例。 北京:冶金工业出版社。 2006.[4]张迎新。 单片机初级教程. 北京:航空航天大学出版社。 2007. 附录1 源程序:OK EQU 20H; 应答开始标志 RING EQU 22H; 环形标志 DATA0 EQU 36H; 应答按键端口数据存储地址 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 00 40HMAIN: MOV R1 ,#30;应答时间初始设置为 30sMOV R2,#45;应答时间初始设置为45sMOV TMOD,#11H;设置非定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH;声音频率越高,声音频率越高。 提示MOV TH1,#3CHMOV TL1,#0B0H; 50ms是溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1; 允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0; 在开始时运行计时器以开始显示 PPP。 如需重新计数,只需复位TH1/TL1即可; 查询程序开始:MOV DATA0,#0FFH; 初始化MOV R5、#0BHMOV R4、#0BHMOV R3、#0BH ACALL DISPLAY; 未开始应答时显示PPPJNB P3 .3、INT0SUBJNB P3.4、TZ1; 倒计时调整JB P3.0,NEXT; dddddddACALL DELAYJB P3.0,下一个; debounce,如果“开始键”被按下则向下执行,否则跳转到非法应答查询SETB EX0; 打开 INT0ACALL BARK; 按下按钮发声 MOV A、R1 MOV R6、A; 发送R1->R6,因为R1中保存了应答时间SETB OK; 接听标志在COUNT程序中用于判断是否查询接听(当使用锦袋中的时间来判断是倒计时接听还是倒计时接听)MOV R3,#0AH; 回答时只显示计时器,熄灭的数字个数为AJMP COUNT; 进入倒计时程序,COUNT NEXT中“查询有效抢答程序”:JNB P1.0、FALSE1JNB P1.1、FALSE2JNB P1.2、FALSE3JNB P1.3、FALSE4JNB P1.4、FALSE5JNB P1.5、FALSE6JNB P1.6,TZ1JNB P1.7,TZ2AJMP STARTTZ1:JMP FALSE7TZ2:JMP FALSE8;非法响应处理程序 FALSE1:ACALL BARK; 按钮声音 MOV R3、#01HAJMP ERRORFALSE2:ACALL BARKMOV R3、#02HAJMP ERRORFALSE3:ACALL BARKMOV R3、#03HAJMP ERRORFALSE4:ACALL BARKMOV R3、#04HAJMP ERRORFALSE5:ACALL BARKMOV R3、#05HAJMP ERRORFALSE6:ACALL BARK MOV R3、#0 6HAJMP 错误7: ACALL BARKMOV R3,#07HAJMP ERRORFALSE8: ACALL BARKMOV R3,#08HAJMP ERROR;INT0 (应答时间 R1 调整程序)INT0SUB: MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;第一个 R1JNB P3 .4、两个时间LED上显示INC0; P3.4为+1s键,按下则跳转到INCOJNB P3.5,DEC0; P3.5是-1s键,按下则跳转到DECOJNB P3。 1、返回0; P3.1为确认键。 如果按下,跳转到BACKOAJMP INT0SUBINC0:MOV A,R1CJNE A,#63H,ADD0; 如果不是99,则R2加1。 如果达到99,则将R1设置为0并再次添加。 上升。
MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1;如果 R1 为 0,则 R1 设置为 99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETI ;INT1(应答时间R2调整程序)INT1SUB: MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC1JNB P3.1,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H , ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SUBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI; 倒数程序(答题倒数和答题倒数均跳至更改程序) )COUNT: MOV R0 ,#00H;复位定时器中断次数 MOV TH1,#3CHMOV TL1,#0B0H;复位定时器 RECOUNT: MOV A,R6;R6 保存给 R6MOV B、#0AHDIV AB 答复时间或答复时间之前的倒计时时间; 十位相除,得到个位/十位 MOV 30H,A;十位存放在(30H)MOV 31H,B;个位存放在(31H)MOV R5,30H;得到十位 MOV R4, 31H;获取个位 MOV A, R6SUBB A, #07HJNC Large; 如果大于5s,则跳转到LARGER; 如果小于或等于5s,则会提醒您MOV A,R0CJNE A,#0AH,FULL; 1s 内向下运行 0.5s CLR RINGAJMP CHECKFULL: CJNE A, #14H , CHECK ;以下是 1s 的情况,振铃显示数并清除 R0,重新计数 SETB RINGMOV A,R6JZ QUIT; 定时完成 MOV R0,#00HDEC R6; 一秒标记减1AJMP CHECKLARGER:MOV A,R0CJNE A,#14H,CHECK; 如果向下运行1s,否则跳转检查“停止/显示”DEC R6; 一秒后R6自动减小1MOV。 R0,#00HCHECK:JNB P3.1,退出; 如果按停止键退出ACALL DISPLAYJB OK,ACCOUT; 如果是倒计时响应,如果是,则查询响应,否则跳过查询,继续倒计时(这样起到锁定响应的作用) AJMP RECOUNTACCOUT: MOVA A, DATA0JNB P1.0, TRUE1JNB P1.1, TRUE2JNB P1.2、TRUE3JNB P1.3、TRUE4JNB P1.4、TRUE5JNB P1.5、TRUE6JNB P1.6、TZ3JNB P1.7、TZ4 AJMP 重新计数 TZ3:JMP TRUE7 TZ4:JMP TRUE8QUIT:CLR OK; 如果按下“停止键”,则编程 CLR RING AJMP START; 正常接听处理程序 TRUE1:ACALL BARK; 按键音 MOV A、R2MOV R6、A; 应答时间R2发送R6MOV R3,#01HCLR OK; 由于答题时机不再查询答案,所以锁定答案 AJMP COUNTTRUE2:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OK AJMP COUNTTRUE3:ACALL BARK;MOV A,R2MOV R6,AMOV R3,# 03HCLR OK AJMP COUNTTRUE4:ACALL BARK;MOV A,R2MOV R6,AMOV R3 ,#04HCLR OKAJMP COUNTTRUE5:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6:ACALL BARK;MOV A,R2MOV R6,AMOV R3 ,#06HCLR OKAJMP COUNTTRUE7: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;错误响应程序 ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯规数暂时保存(34H) HERE: MOV A, R0CJNE A, #0AH, FLASH; 向下运行0.5s -> 关闭并停止声音 CLR RINGMOV R3, #0AHMOV R4, #0AHMOV R5, #0AH; 所有三个灯将关闭 AJMP CHECK1FLASH:CJNE A、#14H、CHECK1; 以下是1s的情况,响铃并显示数字并清除R0,重新计算SETB RINGMOV R0,#00HMOV R3,34H; 检索编号 MOV R5、#0BHMOV R4、#0BH; 显示 PP 和编号 AJMP CHECK1CHECK1: JNB P3.1,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP START; 显示程序DISPLAY:MOV DPTR,#DAT1; 查表显示程序,使用P0口为段选择码口输出/P2低三位选择码输出,MOV A,R3MOVC A,@A+DPTRMOV P2,#0feH