1、基于STC89C51的抢答器设计菏泽学院Heze University本科生课程设计(论文)题目 基于AT89C51的智能抢答器的设计 姓名 任青瑞 学号 2013174271 院 系 蒋震机电工程学院 专业 自动化 指导教师 侯建华 职称 副教授 微机原理与接口技术课程设计任务书及成绩评定专业 自动化 设计题目 基于AT89C51的智能抢答器的设计 学生姓名 任青瑞 学号 2013174271 指导教师 侯建华 职称 副教授 一、设计的主要内容(技术指标)与要求1、主要内容 本方案以AT89C51单片机作为主控核心,与数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟
2、电路、定时/钟端,LED显示模块等电路,设计的八路抢答器具有倒计时和实时显示抢答选手号码的特点。2、设计要求: 采用单片机编程控制,能够实现抢答,数码显示,违例报警多种功能。进度安排:第一阶段 查阅相关文献第二阶段 确立多个方案,选择最优方案第三阶段 针对方案进行硬件电路设计并调试第四阶段 针对方案进行软件设计并调试第五阶段 总结报告,写论文成绩评定设计成绩:指导教师: 年 月 日摘要1关键词1Abstract1Key words1引言21 抢答器设计方案21.1 抢答器系统原理21.2 设计思路22 系统总电路的设计32.1 抢答通道32.2 表决通道32.3 锁存部分42.4 时序控制电路
3、42.5 字位控制52.6 LED显示模块52.7 蜂鸣器报警模块53 程序设计63.1 主程序63.2 倒计时30S子程序63.3 外部中断T1中断子程序63.4 蜂鸣器中断子程序63.5 选手按键程序73.6 数码管显示程序84 设计结果与分析8参考文献10附录11基于AT89C51的智能抢答器的设计自动化专业学生 任青瑞指导老师 侯建华摘要: 无论是学校、工厂、军队还是益智性电视节目,都会举办各种各样的智力竞赛,都会用到抢答器。根据其工作流程,此次设计提出了用AT89C51单片机作为核心控制单元,设计一个简易的抢答器,本方案以AT89C51单片机作为主控核心,与数码管、蜂鸣器等构成八路抢
4、答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/钟端,LED显示模块等电路,设计的八路抢答器具有倒计时和实时显示抢答选手号码的特点。基于 AT89C51 单片机实现的抢答、表决与计时器,分别设计优先编码电路、锁存器、译码电路并将参赛队的输入信号在显示器上输出;报警电路可通过控制电路和主持人开关启动;计时功能通过定时电路和译码电路将秒脉冲产生的信号实现。经过试验模拟仿真,表明本设计抢答器具有反映快、功能多、实用性强的特点。关键词: AT89C51单片机;抢答; 定时; 报警; 时序控制The Design of Intelligent Responder Based on AT89C
5、51Automation professional student Ren QingruiTutor HoujianhuaAbstract: In recent years, with the rapid development of science and technology, SCM applications are to deepening, while driving the traditional control test to change with each passing day, and at the same time, the responder has been a
6、breakthrough development. Both schools, factories, military or puzzle of TV programs, held a variety of intellectual competition, will be used in answering device. Responder as products in this era of labor, is widely used in todays society. Design a kind of based on MCU AT89C51 responder, voting an
7、d timer are designed priority coding circuit, latch and decoding circuit and participating team input signal on the display output; alarm circuit through the control circuit and the host switch start; realize the timing function through the timing circuit and decoding circuit will be second pulse si
8、gnal. After experimental simulation shows that this design reflects the characteristics of fast, responder has multiple functions, strong practicability.Keywords: AT89C51 microcontroller; responder; timing; alarm; timing control 引言 当今社会竞争日渐剧烈,科技发展也日新月异,智能化和自动化在推动社会进步过程中发挥着不可替代的作用。数字抢答器由主体电路与扩展电路组成。优
9、先编码电路、锁存器、译码电路将电路的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形,更具实用性。 目前市场上已有各种各样的智力竞赛抢答器,但绝大多数是早期设计的,以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟,但功能越多的电路相对来说越复杂,而且成本偏高,故障多,显示方式简单(有的甚至没有显示电路),无法判断提前抢按按钮的行为,不便于电路升级换代。设计一种基于AT89C51单片机实现的抢答、表决与计时器
10、,将反映快、功能多、实用性强的特点融入该抢答器中,将会对使得比赛更加公平,公正,促进比赛的公平性。1 抢答器设计方案1.1 抢答器系统原理 抢答器是为智力竞赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组(8 组),每组受控于一个抢答开关,分别为 SW0、SW2 . SW7。 抢答时各组对主持人提出的问题要在短时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁。回答完题后,由主持人将所有按键恢复,重新开始下一轮抢答。系统以两种方式提醒第一抢答者:(1)第一抢答者产生时扬声器以“音乐”警示;(2)通过对应的输出引
11、脚电亮 LED(发光二极管),编译码电路数字显示组别号。抢答电路流程图如图1-1所示。1.2 设计思路 根据其工作流程,此次设计提出了用AT89C51单片机作为核心控制单元,设计一个简易的抢答器,本方案以AT89C51单片机作为主控核心,与数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/钟端,LED显示模块,字位控制,时序控制电路,锁存部分,表决通道,抢答通道等电路,设计的八路抢答器具有倒计时和实时显示抢答选手号码的特点,还有复位电路,使其再开始新一轮的答题和比赛。 在设计之前,先准备好原理图设计软件,编程软件,AT89C51单片机,相关元器件,焊接工具,
12、导线若干等,然后查阅资料,绘制电路图,绘制完成后生成PCB图,进行元器件的布局,不断改进。布局要美观合理,避免信号干扰绘 图1-1 抢答器电路流程图制完成后进行电路板的印刷,然后进行元器件的焊接,最终完成整个智能抢答器系统的硬件部分,然后进行软件编程,确定完成整个智能抢答器系统后进行调试。2 系统总电路的设计 系统总电路主要有显示模块、抢答模块、报警模块和表决计时模块等组成,系统总仿真电路图如图2-1所示。2.1 抢答通道利用单片机的两个中断请求输入引脚,并将单片机的定时/计数器T0与T1的脉冲输入引脚扩展为两个中断请求输入引脚,来实现八路抢答功能,这样利用中断特性及时响应抢答信号,减小两组抢
13、答时间相差很小时所引起的误差。如果系统中抢答组数多于4组,则对4个中断请求输入引脚前极加逻辑门电路即可。本设计的抢答是通过是SW0、SW2.SW7实现的。抢答模块电路如图2-2所示。2.2 表决通道 系统开启电源后,集中器和表决器都上点复位进行自检。表决器处始化之后处于通讯接收状态。集中器在初始化之后,则转入对表决器的线路检测通讯,直接发送地址帧查询表决器。地址帧格式为各表决器的地址号,采用地址位(第9 位为1)方式。表决器接收后发生中断,判断是否与本机地址符合,如不符合,信息丢弃,继续接收;如符合,则转向中断处理,发送“本机正常”信息,帧格式为本机地址。集中器接收后判断是否信息正确,正确则把
14、该“表决器正常”信息存储。之后集中器接着检查下一台表决器。如接收信息不正确,集中器延时一段时间再发一次,两次都不正确则判断该表决器有故障。表决器有故障的用一个图2-1 系统总仿真电路图空字节来表示状态。依次通讯后,最后再对第一次没确认的表决器询问,这个是通过检查刚才的结果来询问,即分析刚才存起来的表决器状态字来确定有问题的表决器。图2-2 抢答模块电路图2.3 锁存部分锁存部分采用串行-并行位输出锁存移位寄存器74H30。要显示字符,首先要把这个字符转换成相应的字形码。然后通过串行口发送到74HC30,74HC30把串行口接收到的数据变为并行输出加到数码管上。本设计采用的是共阳8段数码管显示器
15、。2.4 时序控制电路时序控制电路是抢答器设计的关键,它要完成以下3项功能:主持人将控制开关拨到“开始”位置时,扬声器发声,抢答电路和定时电路进入正常抢答工作状态。 当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。当设定的抢答时间到,无人抢答时,扬声器发声,同时抢答电路和定时电路停止工作。2.5 字位控制由P1口输出字形码,让数码管显示第一个抢答组的编号。为了提高信号驱动能力,用单向驱动器74LS244来驱动数码管。2.6 LED显示模块 LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。LED
16、的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。本文选取LED是考虑了亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定等特点。数码管电路如图2-3所示。图2-3 数码管模块电路图在图2-2中当按钮按下时通过P1双向I/O将数据送入AT89C51,AT89C51对其进行编码,将数据转化为相应的二进制代码,再经过串行口P3.0,P3.1将数据送入串行转并行八位移位寄存器74HC30,将数据锁存在74HC30中,同时对二进制代码进行译码,通过输出口O0-O6以并行的形式将数据输入数码显示器。2.7 蜂鸣器报警模块 蜂鸣器是一
17、种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 利用单片机I/O定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。蜂鸣器模块电路图如图2-4所示。图2-4 蜂鸣器模块电路图3 程序设计3.1 主程序 主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘等工作。程序流程如图4.1所示,对单片机进行初始化,包括设
18、置堆栈、倒计时30s设置、定时器T0设置,外部中断设置,键盘扫描设置,初始化状态显示000。抢答器系统的软件部分主流程图如图3-1所示。3.2倒计时子程序首先要把累加器ACC和程序状态字PSW放入堆栈保护,然后进行倒计时的设置,倒计时,先看看是否到达1S,如果到了,倒计时自动减1,并在数码管显示,再判断最终倒计时到没,如果没到,继续倒计时并显示,直到倒计时计完为止,然后弹出累加器ACC与程序状态字PSW,中断退出,程序返回到中断入口处。3.3外部中断T1中断子程序 外部中断T1中断时要先把累加器ACC和程序状态字PSW放入堆栈保护,然后把20H标志位置0,再调用显示程序,T0开始定时,T1停止
19、,然后设置倒计时,设置之后弹出累加器ACC和程序状态字PSW,中断退出,返回到中断入口处。3.4蜂鸣器中断子程序 定时器T1中断时要先把累加器ACC和程序状态字PSW放入堆栈保护,然后就是响铃。接上喇叭,利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。设置之后弹出累加器ACC和程序状态字PSW,中断退出,返回到中断入口处。图3-1 主流程图3.5选手按键程序 键盘扫描时先判断20H单元和21H单元标志位是否为0,是的话就说明允许键盘扫描,否的话就说明不允许键盘扫描,不允许扫描就返回调用,结束,允许扫描时开始扫描P1口看有没有选手按下答题键,按下
20、时此口变为低电平0,如果没有选手按下就检查20H和21H。3.6数码管显示程序进入显示子程序先把选手的号码显示于01数码管,然后是选手的答题时间十秒钟倒计时显示,把个位显示在02数码管上,把十位显示在03数码管上,同时把倒计时的数值减1后存在61H和62H中,判断倒计时是否结束到0,结束的话返回调用,倒计时没有结束即继续倒计时。4设计结果与分析 利用AT89C51单片机作为核心进行逻辑控制及信号的产生,设计的硬件控制电路和C语言程序,可以在很大程度上解决多个按键同时按下所造成的按键采样及锁定问题,使竞赛真正达到公正、公平、公开的目的,即使几组的抢答时间相差几微秒,也可以分辨出哪组优先答题,有利
21、于产品的升级换代和智能化管理。实物图如图4-1所示。图4-1 抢答器实物图通过这次课程设计,我不仅深化了以前学过的的许多知识,还掌握了很多新的学习技巧。本次课程设计重在培养学生的自主设计能力和对重点知识的掌握,是以前所学知识的一个浓缩,具有很强的代表性、实践性、和理论性。本设计着重讲述了抢答器的工作过程和实验原理。在论述实验原理的过程中,分批次地讲述了个单元电路工作原理以及完成的功能。结合本设计的内容,指出了各单元电路的设计方法和意义,以及如何进行抢答控制。本次实验设计查询了许多有用的资料,包括芯片的逻辑功能及其拓展原理,设计出相应的电路结构。通过仿真电路检验和论证以及对电路的实现的难易程度的
22、综合考虑,最后的选出了实验电路方案。电路设计是一个很灵活的东西,它反映了解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在单元电路的理解和设计上面,最终达到了想要的效果。参考文献:1 朱红,刘静萍.微机原理与接口技术M.北京:清华大学出版社,2011. 2 郭天祥.51单片机C语言教程M.北京:电子工业出版社,2009.3 晶体管技术编辑部编.电子电路设计与制作M.北京:科学出版社,2005.4 张洪润,吕泉,吴建平.电子线路及应用M.北京:清华大学出版社,2005.5 付家才.电子工程实践技术M.北京:化学工业出版社,2002.6 王松武.电子创新设计
23、与实践M.北京:国防工业出版社,2005.附录源程序#include#defineuintunsignedint#defineucharunsignedcharsbitSW1=P10; / P10到 P17八路抢答按钮sbitSW2=P11;sbitSW3=P12;sbitSW4=P13;sbitSW5=P14;sbitSW6=P15;sbitSW7=P16;sbitSW8=P17;sbitSTART=P23; /开始,复位sbitADD=P25; /加一sbitDEC=P26; /减一sbitA=P27; /蜂鸣器sbitH1=P20; /选手编号位baisbitH2=P21; /剩余时间十
24、位shisbitH3=P22; /剩余时间个位ucharcodetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,; /数码管显示字符voidkeyscan(); /键盘扫描函数声明voiddisplay(); /显示函数声明voiddelay(uint); /延时函数声明voidFUWEI(); /复位函数声明voidqushu(); /拆分任意两位数uintinput=30; /默认剩余时间30秒ucharge,shi,bai=0,n=1,m=0,t=0,temp; /定义变量/主函数开始/voidmain() TMOD=0x0
25、1; /设置定时器0为工作方式1.(M1M0为1) TH0=(65536-46080)/256; /装初值。11.0592晶振定时50ms数为19456. TL0=(65536-46080)%256; /低位 EA=1; /开启总中断 ET0=1; /开定时器0中断 /中断服务子程序每结束一次都回到原来点 while(1) /主程序死循环,保证抢答器一直运行下去 keyscan(); qushu(); /依次扫描此3个函数 display(); /系统复位函数voidFUWEI() TR0=0; /关定时器 TH0=(65536-46080)/256; /重装初值 TL0=(65536-460
26、80)%256; /低8位 t=0; /中断函数计数清零 A=0; delay(500); /报警500毫秒 A=1; bai=0; /选手编号清零 input=30; /设置剩余时间 /系统显示函数voiddisplay() H1=0; P0=tablebai; /选手编号显示 delay(1); H1=1; /关一位数码管,保证选手编号位不被干扰 H2=0; P0=tableshi; /剩余时间十位显示 delay(1); H2=1; /关二位数码管 H3=0; P0=tablege; /剩余时间个位显示 delay(1); H3=1; /关三位数码管voidqushu() /拆分任意两位
27、数函数 shi=input/10; /取整 ge=input%10; /取余voidkeyscan() /键盘扫描函数 if(RESET=0) /复位操作,无论何时,都可以复位,节省时间 delay(200); /延时200毫秒,防止按键机械振动引起的误差 FUWEI(); /系统复位 n=1; /复位后开启主持人其他权限 /n为1时,表示还没开始抢答,可以操作 if(n) if(START=0) /开始抢答需要自锁 A=0; delay(500); /报警500毫秒 A=1; TR0=1; /开定时器 m=1; /开启选手抢答权限 n=0; /自锁,有效防止在选手答题时主持人误操作 /调整时间函数,抢答前可操作 if(n) if(ADD=0) delay(200); /防止按键抖动重复加一 input+; /时间加一 if(DEC=0) delay(2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1