单片机为核心的四路抢答器设计与实现

2 下载量 116 浏览量 更新于2024-06-28 3 收藏 261KB DOC 举报
"基于单片机的四人抢答器设计文档" 这篇文档是关于基于单片机的四路抢答器的设计,适用于课程设计或项目实践,旨在让学生掌握单片机原理及其应用。该设计由工程大学机电学院的学生武云完成,指导教师为王老师,所属专业班级为电气2124班,设计时间为2014年7月7日至7月18日。 设计目标是创建一个具备计时和锁存功能的四人抢答器,供4名选手或4个代表队使用。抢答器设有4个按钮代表每位参赛者,以及由主持人控制的系统去除开关S1和抢答控制开关S2。系统具备以下特性: 1. 当选手按下按钮,抢答器会锁存相应的编号并在1602液晶显示屏上显示,同时蜂鸣器发出声音提示。 2. 抢答器有定时抢答功能,主持人可以设定抢答时间(如10秒),启动“开场”键后开始倒计时。 3. 如果在设定时间内无人抢答,系统会显示无效抢答,并停止抢答功能,定时显示器显示01s。 4. 优先抢答者的编号会一直保持显示,直到主持人取消本次抢答。 设计中,单片机扮演了核心角色,采用AT89C51型号。系统分为三个模块:显示模块、存储模块和抢答开关模块。显示模块通过1602液晶屏显示抢答信息,存储模块负责数据锁存,抢答开关模块接收选手的按键输入。单片机处理这些信号,输出相应的控制信号,实现整个抢答过程的智能控制。 这个设计的意义在于,相较于传统的抢答器,基于单片机的抢答器简化了电路结构,增加了实用功能,提高了可靠性和灵活性。在证券、股票交易、智力竞赛等公开公平的场合,这种智能抢答器能够确保比赛的公正性,满足了对高效、精确和易于操作设备的需求。 这个设计涵盖了单片机编程、硬件接口设计、数字逻辑和实时控制等多个方面的知识,是学习和实践单片机技术的理想项目。通过这个设计,学生不仅能够掌握单片机的基础知识,还能了解到如何将这些知识应用于实际问题解决,提升工程实践能力。
2023-02-27 上传
四人抢答器模拟实验报告 一、目的与要求 1. 目的: (1)培养学生综合利用MCS- 51单片机的软硬件知识进行程序设计的能力,解决一些实际问题。 (2)进一步加深对MCS-51单片机内部结构和程序设计方法的理解。 (3)提高学生建立程序文档、归纳总结的能力。 2. 基本要求: (1)要求用MCS-51单片机知识完成程序的设计; (2)源代码程序要求必要的注释。 3. 创新要求 在基本要求达到后,可以进行创新设计,如更加完善程序功能。 二、系统总体设计 基于MCS-51单片机的智能抢答器的设计,主要要实现以下几种功能: (1)当主持人按下他的按键时,抢答开始,LED显示器开始从0到20的定时记数。 (2)在20秒定时的时间内,如果有竞赛者要回答问题,那么按下自己的按键,此时 ,与该竞赛者对应的显示灯亮,并且LED显示器的计时停止。先按键的竞赛者可屏蔽其他 人的抢答信号。 (3)如果在20秒定时结束后,即LED显示器显示20时,仍然没竞赛者按下按键回答问 题,那么报警信号灯亮 (4)在20秒内,可以进行累加计时 三、硬件系统设计 该抢答器的设计是基于MCS- 51单片机的,使用到的硬件主要有8051的P1口和P3口,LED显示器,8155芯片及单片机内 部的定时器/计数器T/C。 如图示(图1): 图1 1. 使用4个开关分别代表4个选手控制号,用P1口中的P1.0,P1.1,P1.2,P1.3表示四个 选手 2. 用P1.7(X6)表示红灯,P3口中的P3.2与外来脉冲连接,控制继续计时。 3. 资源分配:在设计过程中,用到了8051的P1口和P3口,主要是/INT0和/INT1,用竞 赛者的按键X0、X2、X3、X4控制/INT1。当程序运行时,启动T/C计数,用8155芯片使LE D显示计;当/INT1产生有效信号时,停止T/C计数,LED计时停止。 四、程序流程图(如图2): N Y Y Y N N N Y 图2 五:系统软件设计 1. 主程序 主程序功能:完成单片机MCS- 51的初始化操作;定时器初始化;等待定时器中断的发生;发生中断,则转入相应的中 断服务程序,执行相应功能的子程序。主程序流程图如下(图3): 图3 2. 子程序 子程序主要包括LED显示的程序,定时器/计数器T/C程序,抢答的中断服务程序。 2.1 LED显示程序 LED计数的启动受到/INT0、/INT1、T/C0、T/C1的控制。 LED显示程序的功能是: a.当/INT0产生有效信号,T/C0和T/C1启动后,LED开始显示计数(从0到20)。 b.当/ INT1产生有效信号后,使T/C0和T/C1停止工作,此时LED停止在当时的计数值。这也就是 说一轮抢答结束。 LED显示程序的流程图如图(图4): 图4 2.2 定时器/计数器T/C程序 首先设置T/C0输出方波,且定时50ms,再经过反向脉冲后为100ms, T/C1计数为20(工作方式已在主程序设置),这样1秒产生,LED20秒定时可以开始,接 着判断LED是否显示到20。如果到20,则报警。如果没显示到20,LED继续计数。 T/C程序流程图如图(图5): N Y Y 图5 2.3 抢答的子程序 抢答的子程序所完成的主要功能是:当主持人宣布抢答开始,并按下按键LED开始计 数后,竞赛者才能抢答。有竞赛者按下按键后,显示与之相对应的选手号,同时LED计数 停止。 抢答程序在抢答开始的20秒内,查询是否有人按键。也就是进入一段查询程序,其流 程图如图6所示。 先读P1口,查询P1.0、P1.1、P1.2、P1.3的状态,判断几号竞赛者按下按键,根据查 询结果转向各自的中断服务程序:使LED显示的计数停止,与各按键相对应的号码被显示 。 , Y N Y N N Y N N Y N 图6 六:程序 org 0000h ajmp main org 0003h ajmp start org 000bh ajmp time org 0030h main: mov tmod,#1 ;置T/C0为方式1、定时,置T/C1为方式1、计数 mov th0,#0b1h ;送T/C0定时初值 mov tl0,#0e0h mov ie, #83h ;设置中断 setb tr0      ;启动T/C0定时 mov r3,#0 mov r4,#0 mov 30h,#0 ;记时的个位显示 mov 31h,#0 ;记时的十位显示 mov 32h,#0    ;选手号 disp: mov sp,5fh mov a,#03h    ;对8155初始化 mov dptr,#0ff20h movx @dptr,a loop: mov r5,#1 mov r0,#30h mov a,r5 loop1: mov dptr,#0f