基于51单片机抢答器的课程设计_第1页
基于51单片机抢答器的课程设计_第2页
基于51单片机抢答器的课程设计_第3页
基于51单片机抢答器的课程设计_第4页
基于51单片机抢答器的课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安文理学院物理与机械电子 工程学院专业课程设计报告 专业班级 测控技术与仪器 课 程 51单片机技术与设计 题 目 基于51单片机的抢答器设计 学 号 学生姓名 指导教师 2014年 5月 基于基于 5151 单片机的八位抢答器设计单片机的八位抢答器设计 摘要摘要 随着电子技术的飞速发展,基于单片机的控制系统已应用于工业、农业、电力、 电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的 控制系统的常规电子线路。 抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频 率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器 虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢 答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。 本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用 AT89C51单 片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、 硬件有机地结合起来,使得系统能够正确地进行计时。同时使液晶显示屏能够正确地显 示时间,并且给出指令的提示,扬声器发生提示。系统能够实现:在抢答中,只有开始 后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1- 99s 设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有声音的提示;抢答 时间和回答问题时间倒记时显示,满时后系统计时有声音提示;抢答倒计时时间和回答 问题时间均可通过硬件的按键调整。 关键词:AT89C51;单片机;液晶显示屏;抢答器;智能 目录 第 0 页 目录目录 1 引言.1 2 设计任务与要求概述.1 2.1 题目.1 2.2 设计任务.1 2.3 设计要求.1 2.4 设计目的.1 3 方案总体设计.2 3.1 方案.2 3.1.1 控制芯片.2 3.1.2 显示方式.2 3.1.3 程序语言的选择.2 3.2 原理框图.3 4 硬件电路设计.3 4.1 抢答器的工作原理.3 4.2 单元电路设计.3 4.2.1 抢答器电路.3 4.2.2 发声电路设计.4 4.2.3 开始、复位按键输入电路的设计.4 4.2.4 时钟震荡电路.4 4.2.5 设定时间、加减时间电路设计.4 4.2.6 显示电路的设计.5 5 软件设计.6 5.1 抢答器工作流程.6 5.2 流程框图.6 6 电路仿真调试.7 6.1 上电准备状态.7 6.2 开始抢答.7 6.3 非法抢答.8 6.4 正常抢答.8 7 实验仪器及元器件清单.9 8 设计总结.9 9 致谢.9 目录 第 2 页 10 参考文献.10 附录一 系统电路图.11 附录二 程序清单.11 0 0 1 引言 目前各种各样的竞赛越来越多,无论是学校、工厂、军队还是益智性电视节 目,其中用到抢答器的概率非常大。目前很多抢答器基本上采用小规模数字集 成电路设计,使用起来不够理想。因此设计一款更易于使用和区分度高的 抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化 而著称。所以若利用单片机来设计抢答器,便使以上问题得以解决。针对以上 情况,本课程设计出以 AT89C51 单片机为核心的八路抢答器。它能根据不同的 抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信 号,最后通过液晶显示屏显示相应的路数和答题时间以及各项命令等,使竞赛真 正达到公正、公开、公平。 2 设计任务与要求概述 2.1 题目 8路比赛抢答器 2.2 设计任务 利用8051单片机中断系统,制作一个有8个按键的比赛抢答器,可供8名选 手比赛的抢答,每组设置一个抢答按钮,按钮的编号与选手的编号对应,主持 人设置控制开关,用来控制系统的清零和抢答的开始,在有人按键时进行对应 选手显示。 2.3 设计要求 1 完成系统的硬件电路设计与软件设计; 2 采用汇编或 C 语言编程; 3 采用 Proteus、KeilC 等软件实现系统的仿真调试; 4 论文要求思路清晰,结构合理,语言流畅,书写格式符合要求。 2.4 设计目的 1 综合运用相关课程中所学的理论知识去完成这一设计课题。 2 通过查阅手册和相关文献资料,培养自己独立分析和解决问题的能力。 3 进一步熟悉单片机和常用接口电路,加深对专业知识和理论知识学习的 认识和理解。 4 学会电路的设计与程序的调试。 5 学会撰写课程设计论文。 6 培养严肃认真的工作作风和严谨的科学态度。 西安文理学院课程设计报告 第 1 页 3 方案总体设计 3.1 方案 3.1.1 控制芯片 我们采用 51 系列单片机 AT89C51 作为控制核心,该系统可以完成运算控 制、信号识别以及显示功能的实现。单片机技术比较成熟,应用起来方便、简 单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其 灵活的可编程性,能方便地对系统进行功能的扩张和更改。 MCS-51 单片机特点如下:a、可靠性好:单片机按照工业控制要求设计, 抵抗工业噪声干扰优于一般的 CPU,程序指令和数据都可以写在 ROM 里,许多 信号通道都在同一芯片,因此可靠性高,易扩充。b、单片机有一般电脑所必须 的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微 电脑系统。c、控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还 有更丰富的条件分支跳跃指令。 3.1.2 显示方式 在实现基本功能时,我们采用了四位数码管显示,后两位显示倒计时时间, 第一位显示抢答组号,第三位置空,在此基础上还在程序里加了更改抢答时间 和倒计时时间的模块,也可通过数码管显示,成为一个比较完整的系统。 后来在实现拓展功能时,我们想加入语音显示的模块,发现 proteus 软件无 法仿真,就改为用液晶显示屏 1602 显示。1602 液晶显示屏也叫 1602 字符型液 晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 1602 液晶模 块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形, 这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等, 每一个字符都有一个固定的代码,它可以通过简短的英文提示和数字使人明确 看到比赛进行的整个过程。 3.1.3 程序语言的选择 一开始实现基本功能时,使用数码管作为显示,采用了汇编语言,比较高 效,条理也清晰;后来做拓展功能时改用液晶显示屏显示,发现液晶显示屏使 用 c 语言编程更便捷高效,就整体使用了 c 语言。 2 2 抢答按扭 优先编码 器 码电路 锁存器译码电路译码显示 主持人按钮 开关 控制电路报警电路 秒脉冲产生电路定时电路译码电路显示电路 3.2 原理框图 图图 3.13.1 原理框图原理框图 4 硬件电路设计 4.1 抢答器的工作原理 用单片机的两个外部中断作为修改时间的选择按钮,选择修改抢答倒计时 时间还是回答问题时间;用定时器1作为时间的控制。 4.2 单元电路设计 4.2.1 抢答器电路 该电路有八个按钮分别接于 P1.0P1.7可实现两个功能:一是分辨出选手按 键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止 其他选手按键操作无效。如有再次抢答需由主持人将 S 开关重新置,“清除”然 后再进行下一次抢答。如图4.1 图图4.14.1 抢答器电路抢答器电路 西安文理学院课程设计报告 第 3 页 4.2.2 发声电路设计 用 P3.6口和扬声器相连,主持人将控制开关拨到“开始“位置时,会发声, 抢答电路和定时电路进人正常抢答工作状态;当参赛选手按动抢答键时,扬声 器发声,抢答电路和定时电路停止工作。如图4.2 4.2.3 开始、复位按键输入电路的设计 复位是计算机的一个重要工作状态。开始和复位键分别接于 P3.0和 P3.1口, 在单片机工作时,接电之前,断电后也要复位。在抢答器中复位则为定时做铺 垫,在抢答之前要复位,抢答完也要复位。按了复位键,显示屏的状态是 “start”。如图4.3 图图4.24.2 发声电路发声电路 图图4.34.3 开始、复位电路开始、复位电路 4.2.4 时钟震荡电路 CPU 的操作需要精确的定时,可用一个晶体振荡器产生稳定的时钟脉冲来 控制 AT89C51单片机上的 XTAL1和 XTAL2分别为振荡电路的输入和输出。如 图4.4 4.2.5 设定时间、加减时间电路设计 该电路主要是对答题时间和抢答时间调整设计的,抢答时间接 P3.2,答题 时间接 P3.3,加一秒接 P3.4,减一秒接 P3.5。如图4.5 4 4 图图4.44.4 时钟振荡电路时钟振荡电路 图图4.54.5 加减时间电路加减时间电路 4.2.6 显示电路的设计 本系统通过液晶显示屏来显示各提示信息。如图4.6 图图4.64.6 显示时间电路显示时间电路 西安文理学院课程设计报告 第 5 页 5 软件设计 5.1 抢答器工作流程 为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前 必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序, 当时间设好了之后,主持人发布抢答命令按下 P3.0按键,程序开始打开定时中 断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有 人按下了答题键,马上关闭 T0、调用显示程序、封锁键盘。 接通电源后,液晶显示屏显示“Ready”,抢答器处于禁止状态,处于等待 开始状态,此时有人抢答,会显示“error”,也可以调整抢答时间和回答问题 时间,;主持人将开关置,“开始”状态,宣布“开始”抢答器工作,显示屏 显示“go!”,扬声器给出声响提示,定时器倒计时;选手在定时时间内抢答 时,抢答器完成,显示组号,并且倒计时,时间到扬声器提示。当一轮抢答之 后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由 主持人再次操作“开始、停止“状态开关。 5.2 流程框图 图图 5.15.1 流程框图流程框图 6 6 6 电路仿真调试 6.1 上电准备状态 图图6.16.1 上电准备状态上电准备状态 6.2 开始抢答 图图6.26.2 开始抢答开始抢答 西安文理学院课程设计报告 第 7 页 6.3 非法抢答 图图6.36.3 非法抢答非法抢答 6.4 正常抢答 图图6.46.4 正常抢答正常抢答 8 8 7 实验仪器及元器件清单 表表 7-17-1 实验仪器及元器件清单实验仪器及元器件清单 8 设计总结 通过这次课程设计,我更进一步地认识了抢答器的工作原理,掌握了它的 调整及测试方法。本系统通过采用 AT89C51 单片机作为核心,以八个按键输入 抢答信号,以液晶显示屏显示,根据烧录到单片机中的程序控制整个系统的工 作流程,整体性好,效率高,实现了抢答器的智能化。在这过程之中也遇到了 一些问题,比如对汇编语言理解还不够,将其转化为 C 语言时在时序上出现一 些问题,还有 C 语言基础也需要加强,编程能力有待提高。 9 致谢 通过此次的课程设计,让我更进一步的巩固了单片机的各种知识。但在设 计的过程中,遇到了很多的问题,有一些知识已经不太清楚了,但是通过一些 资料又重新的翻阅并且认真的复习了相关教科书中的内容。此次的课程设计树 立了对自己工作能力的信心,相信会对今后的学习工作生活都有非常重要的影 响,而且大大的提高了动手能力,使我充分的体会到了创造过程中的探索的艰 难和成功的喜悦。虽然这次做出的作品还存在很多需要改进的地方,但是在整 个设计过程中所学习到的东西是这次实训所得到的最大收获跟财富,使我终身 受益。最后,我要感谢指导老师老师和杨浩辉同学在我将系统的汇编语言改为 C 语言时对我无私的帮助。 器件名称规格型号数量 微处理器 AT89C511 极性电容 1uF1 电阻(排阻) RESPACK89 电容 10uF2 晶振 12MHZ1 按钮 15 液晶显示屏 LM020L1 扬声器 BUZZER1 西安文理学院课程设计报告 第 9 页 10 参考文献 【1】戴梅蕚 史嘉权 编著, 微型计算机技术及应用 (第四版)清华大学 出版社,北京,2008.3 【2】 (美)Bruce Eckel 著 陈昊鹏 译JAVA 编程思想 (第四版) ,机械 工业出版社,北京,2007.6(2013.11 重印) 【3】冯博琴 吴宁 主编, 微型计算机原理与接口技术 (第三版) ,清华 大学出版社,北京密云胶印厂,2011.6 【4】张毅刚等 编著, 新编 MSC-51 单片机应用设计 (第三版) ,哈尔滨 工业大学出版社,哈尔滨东林印务有限公司,2008.4 10 10 附录一 系统电路图 图附录 系统电路图 附录二 程序清单 #include /包含单片机的头文件 #include /包含_nop_()函数定义的头文件 sbit RS=P20; /寄存器选择位,将 RS 位定义为 P2.0 引脚 sbit RW=P21; /读写选择位,将 RW 位定义为 P2.1 引脚 sbit E=P22; sbit ring=P36; sbit start=P30; sbit ok=P31; sbit add=P34; sbit sub=P35; sbit D0=P10; sbit D1=P11; sbit D2=P12; sbit D3=P13; sbit D4=P14; sbit D5=P15; sbit D6=P16; 西安文理学院课程设计报告 第 11 页 sbit D7=P17; unsigned char num=0; unsigned char a=30,b=60,n=0,qd,hd,d; void display(); void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; void delay(unsigned char n) unsigned char i; for(i=0;in;i+) delay1ms(); void nopp(unsigned char n) unsigned char i; for(i=0;in;i+) _nop_(); bit lcd_bz() bit result; RS=0; /根据规定,RS 为低电平,RW 为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 nopp(4); /空操作四个机器周期,给硬件反应时间 result=(bit)(P0 /将忙碌标志电平赋给 result E=0; return result; void WriteInstruction (unsigned char dictate) while(lcd_bz()=1); /如果忙就等待 RS=0; /根据规定,RS 和 R/W 同时为低电平时,可以写入指令 RW=0; E=1; /E 置低电平 nopp(2); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入 P0 口,即写入指令或地址 nopp(4); /空操作四个机器周期,给硬件反应时间 E=1; /E 置高电平(正跳变) 12 12 nopp(4);/空操作四个机器周期,给硬件反应时间 E=0; /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 void WriteData(unsigned char y) while(lcd_bz()=1); RS=1; /RS 为高电平,RW 为低电平时,可以写入数据 RW=0; E=1; /E 置低电平 P0=y; /将数据送入 P0 口,即将数据写入液晶模块 nopp(4);/空操作四个机器周期,给硬件反应时间 E=1; /E 置高电平(正跳变) nopp(4);/空操作四个机器周期,给硬件反应时间 E=0; /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 void LcdInitiate(void) delay(15); /延时 15ms,首次写指令时应给 LCD 一段较长的反应时间 WriteInstruction(0x30); /显示模式设置:8 位数据,162 显示,57 点阵, delay(5); /延时 5ms WriteInstruction(0x38); delay(5); WriteInstruction(0x0c); /显示模式设置:显示开,有光标,光标闪烁 delay(5); WriteInstruction(0x06); /显示模式设置:光标右移,字符不移 delay(5); WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除 delay(5); void Display(unsigned char string) unsigned char i; i = 0; while(stringi != 0) / 显示字符 WriteData(stringi); i+; /*void bark() ring=1; delay(10); ring=0; 西安文理学院课程设计报告 第 13 页 */ void answer() ring=1; delay(500); ring=0; WriteInstruction(0x01); delay(1); Display(“ go! “); TR1=1 ; qd=1; d=a; while(1) /TR0=1; if(!D0)n=1; break; if(!D1)n=2; break; if(!D2)n=3; break; if(!D3)n=4; break; if(!D4)n=5; break; if(!D5)n=6; break; if(!D6)n=7; break; if(!D7)n=8; break; WriteInstruction(0x01); switch(n) case 1:Display(“ number:1 “);hd=1;break; case 2:Display(“ number:2 “);hd=1;break; case 3:Display(“ number:3 “);hd=1;break; case 4:Display(“ number:4 “);hd=1;break; case 5:Display(“ number:5 “);hd=1;break; case 6:Display(“ number:6 “);hd=1;break; case 7:Display(“ number:7 “);hd=1;break; case 8:Display(“ number:8 “);hd=1;break; n=0; 14 14 /WriteInstruction(0x01); delay(5000); d=b; while(d+1) ; void display() unsigned char tm3=0x20,0,0; unsigned char a1,b1; a1=d/10; tm1=a1+0x30; b1=d%10; tm2=b1+0x30; WriteInstruction(0x01); delay(1); Display(tm); void main(void) /主函数 TMOD=0X11; /选择定时器方式 1 TH0=0X00; /给定时器赋处置 TL0=0XFF; TH1=0X3C; TL1=0XB0; EA=1; ET1=1;/开总中断 EX0=1; ET0=1; EX1=1; TR1=1; LcdInitiate(); /调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论