资源描述
湖南科技大学本科生课程设计(论文) 湖 南 科 技 大 学单 片 机 课 程 设 计 题 目 智力抢答应用系统设计 姓 名 李振文 学 院 机电工程学院 专 业 测控技术与仪器 学 号 0903030211 指导教师 # 成 绩 _2012年6月- 19 -摘 要随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样。抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低,减少兴致。做为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。本设计是以四路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;按键锁定,在有效状态下,按键无效非法。ABSTRACTWith the continuous development of science and technology, promote learning science, science and technology, knowledge of the variety of means. With a tool for Qiangda, which has been widely used in all kinds of intelligence and knowledge contests occasions. But Qiangda is used for lower frequency, and some production complex or low reliability, and reduced interest. As a unit, if the purchase is a Qiangda .Although the economy can bear, each year the number is extremely small, because of the long-term storage (electronic devices) Qiangda for damage to the purchase of the trouble and timeliness of activities, The development will be affected, so this Qiangda is designed .This design is six road Qiangda as the basic concept.By taking into account the need for seting time and limiting to answer the function, which uses AT89C51 microcontroller and external interface of Qiangda system, and uses SCM timer / counter timing and the number of mind Principle, the software and hardware organically combined, which could allow the right to conduct time, while the digital display to the correct time. Switching with the keyboard output, speakers in tips. At the same time, system can be realized .In Qiang da and which only begins after the Qiangda only effective, if at the beginning of Qiangda before Qiangda invalid; Qiangda limited time to answer questions and the time can be set in the 1-99 s; players who can show that it is effective and Qiangda Qiang da invalid, right after the music keys tips; Qiangda time to time and answer questions Dao Ji shi, over time, the system automatically reset control and mandatory reduction; keys locked in an active state, the key is invalid illegal. Key words: AT89C51; alphanumeric display; Qiangda; time; alarm目录摘要i目录ii第一章 绪论.11.1 课题研究的相关背景11.2 选题的目的和意义.11.3 课题研究的内容.11.4 国内外研究现状.21.5 抢答器目前存在的主要问题.2第二章 硬件设计32.1抢答器的工作原理32.2单片机的选择32.3按键设计32.4时钟电路设计42.5复位电路设计52.6系统复位52.7总体电路设计6第三章 软件设计.73.1主程序系统结构图.73.2软件任务分析.73.3程序流程图.8第四章 总结与展望94.1总结.94.2 展望.9参考文献11附录12第一章 绪论1.1 课题研究的相关背景抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。本课题利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发生提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可是在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。1.2 选题的目的和意义通过这次课程设计,掌握51单片机的原理,了解简单多功能抢答器组成原理,初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。初步掌握多功能抢答器的调整及测试方法。提高动手能力和排除故障的能力。1.3 课题研究的内容本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。主持人有开始和结束、复位键。主持人按开始后,选手开始抢答为有效,选手指示灯亮。如果主持人没有按下开始键而选手就抢答视为犯规,扬声器持续发声。主持人可按键结束,新一轮抢答开始。通过研究并在设计验证后发现,采用单片机技术设计的抢答器与目前常用的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部,第二,工作性能可靠,抗千扰能力优于目前抢答器。所以本研究是一个实用的工程设计,具有创新性。后其号码只有数码或指示灯显示,没有语音提示。本课题就是为了解决以上3个问题,设计了六路抢答器。1.4 国内外研究现状抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块 ,而专用集成块的购买又很困难。为适应高校等多代表队单位活动的需要而设计一个多功能抢答器,这种抢答器具有电路简单,元件普通 ,易于购买等优点,很好地解决了制作者制作困难和难于购买的问题。在国内外已经开始了普遍的应用。1.5 抢答器目前存在的主要问题随着改革开放事业的不断深入,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率校低,且有的要么制作复杂,要么可靠性低,减少兴致。作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。但目前多数抢答器存在3个不足之处:第一,现场线路连接复杂。因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。第二,电路复杂。因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。第三,选手抢按成功。第二章 硬件设计2.1抢答器的工作原理抢答器是为竞赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。在抢答竞赛或呼叫时,有多个信号同时或者不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部定时器开始工作,记录有关时间并产生超时信号,在整个抢答器工作过程中,显示电路、声音电路等还要根据现场实际情况向外电路输出相应信号。2.2单片机的选择根据初步设计方案的分析,设计这样一个简单的应用系统,以AT89C51单片机为控制中心,采用模块化的设计方案.AT89C51单片机是采用高性能的静态80C51设计由先进工艺制造并带有非易失性程序存储器,全部支持时钟和时钟操作。和分别包含字节和字节条口线个位定时计数器输入优先级嵌套中断结构个串行口可用于多机通信扩展或全双工以及片内振荡器和时钟电路。此外,由于器件采用了静态设计可提供很宽的操作频率范围频率可降至可实现由软件选择的节电模式、空闲模式和掉电模式。空闲模式冻结但定时器串口中断系统任然工作,由于设计是静态时钟可停止而不会丢失用户数据运行可以从时钟停止处恢复。2.3按键设计4个抢答按键分别接入单片机的端口,单片机通过读取17的值来判断当前输入的是个抢答按键中的哪一个。(图1.1 LED灯电路)按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法,来避开抖动阶段,这一延时过程一般大于,例如取。如果监控程序中的读键操作安排在主程序(后合程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。(图2.1 按键电路)2.4时钟电路设计单片机必须在时钟驱动下才能正常工作,在单片机内部有一个时钟振荡电路,只需要外部接一个振荡源就能产生一定时钟信号送到单片机的各个单元,决定单片机的工作速度。电路如下图:(图2.3 晶振电路)一般选用石英晶体振荡器。此电路在加电大约延迟后震荡器起振,在引脚产生幅度为左右的正弦波时钟信号,其震荡频率主要由石英晶振的频率确定。电路中两个电容,的作用有两个:(1)帮助震荡器起振;(2)是对震荡器的频率进行微调。,的典型值为。单片机在工作时,由内部振荡器产生或由外部直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用表示。图中时钟频率为,即,则时钟周期为。2.5复位电路设计单片机第九引脚为复位端,只要在复位端保持两周期的高电平,就可实现复位。电路如下图:(图2.4 复位电路)图中由按键以及电容,电阻构成复位电路。由于单片机是高电平复位,所以当按下后,丹皮即进入复位状态。当上电后,由于电容的缓慢充电,单片机脚电压逐步由高转向低,经过一段时间,单片机的脚稳定在低电平状态,此时单片机复位完毕,单片机各状态恢复到初始状态。当上电后,由于电容的缓慢充电,单片机的脚电压逐步由高向低转化,经过一段时间后,单片机的脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从开始执行。值得注意的是,在设计当中是用到了硬件复位和软件复位两种功能,由上而得硬件复位后的各种状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。2.6系统复位使进入初始状态,从地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过外部的硬件电路给的端加上足够时间的高电位才能实现。上点复位,人工按键复位和硬件看门狗复位均为硬件复位。硬件复位后,个专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用寄存器的复位操作是容易的,也没有必要完全模拟。可根据实际需要去主程序初始化过程中完成。2.7总体电路设计(图2.5 总体电路)P1.0为开始抢答,P1.6为停止,P1.2-P1.5为四路抢答输入,LED段选P3口,蜂鸣器输出为P2.0口。第三章 软件设计3.1 主程序系统结构图系统初始化模块按键模块非法抢答模块正确抢答模块调整抢答时间.LED显示块(图3.1软件系统结构图)3.2软件任务分析软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印8,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。3.3 程序流程图在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。LED 开始键按下?按下抢答键?复位键按下?系统复位 显示犯规去抖动非法抢答处理显示犯规正常抢答 显示抢答Y YY 初始化(图3.2 程序设计流程图)第四章 总结与展望4.1 总结本文研究与设计的六路多功能抢答器采用了通用的电子元器件,利用AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。计分接收的单片机部分利用汇编语言编写。设计时,首先通过在线编程,然后具体安装,仿真,完全实现了设计功能。本设计中,利用常规的单片机扫描识别的方法。通过硬件电路的具体应用和系统的仿真研究得出,本设计不仅安装简单、成本低,更重要的是工作性能稳定,是一个实用、创新型的工程设计。由于采用汇编语言设计电路,所以本设计在编程成功后,硬件电路基本上不需要调试就可正常使用。即使在设计完毕交给用户使用后,对系统的功能改进或升级也只是通过改写程序来完成,极大地方便了用户或设计者对电路更新。4.2 展望回头再看看该设计,还可以将设计的扩展功能增强:1、可以设计声控装置,在主持人说开始时,系统自动完成清零并开始计时的功能。2、在主持人读题的过程中,禁止抢答,可以在主持人控制的开关上另接一个与图2一样的电路,即可实现“违规者可见”的功能,即在主持人读题时如果有人违反比赛规定抢先按动按钮,显示器可以显示是哪个参赛队抢先,便于作出相应的处理。如果提供相应的器材及时间上的宽限,一定可以完成上述扩展功能,进一步完善作品。经过这半个学期的努力,在老师和同学的帮助下终于彻底的做完了毕业设计的所有工作。通过这次的毕业设计,我能运用已学的知识解决我在设计中遇到的问题,使自己的动手能力和思考问题的能力得到了很大的提高。在做设计的过程中我查阅了很多的资料,并认真的阅读这些与我的设计相关的资料,从而我的专业涵养得到了提高,知识的储备量也有所增加。在做设计时,我复习了很多专业课的知识,这使得我的专业知识在离校之前得到了巩固。由于我的毕业设计需要绘图,我在同学的帮助下学习使用DXP绘图工具,并且现在能熟练的运用其进行绘图,我认为这是我在整个设计工程中得到的最好的回报。整个设计通过了软件和硬件上的调试、仿真。我想这对于自己以后的学习和工作都会有很大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!同时,该设计也有不足之处,缺少了答题计分等功能。我将会在以后的学习中继续学习。参考文献:(1) 李朝青 单片机原理及接口技术 第三版 2008;(2) 朱宇光 单片机应用新技术 电子工业出版社;(3) 余发山 单片机原理及应用技术 中国矿业大学出版社 2003;(4) 郑有正 单片机原理及应用 四川大学出版社;(5) 杨刚、龙海燕等 现代电子技术 电子工业出版社 2004;(6) 冀振燕 LJML系统分析设计与应用案例 人民邮电出版社 2003;(7) 陈越等 ISD全系列单片语音录放电路设计与应用 电子工业;(8) 杨晓辉、张彤、姜俊海、智能抢答器的设计与制作 2000年06期;(9) 沈庆阳、郭庭吉 8051单片机实践与应用 清华大学出版社;(10) 杨凌霄 微型计算机原理及应用 中国矿业大学出版社 2004;(11) 张国雄 李醒飞 测控电路 第四版;附录:程序列表:#include #define uchar unsigned char#define uint unsigned intsbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24;sbit ledbell=P20; sbit led0=P31;sbit led1=P32; sbit led2=P33;sbit led3=P34;sbit led4=P35;sbit led5=P36;sbit led6=P37;bit kaishi,jieshu,success;uintt;uchar a0,a1,a2,t1;uchar code table=0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x0c,0xbf; void delay(uint count) ;uchar keychuli();uchar key();void display(uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar);void ini();void qiangda();void weigui();void main()uchar t4;ini();while(1)display(16, 16, a2, a1, 16, 16, 16, a0);if(jieshu=0) switch(key()case 0:break; case 2:kaishi=1; led0=0;TR0=1; t=420; ledbell=0;break; case 4:led0=1;a0=1;if(kaishi=1)led3=0;ledbell=0;qiangda();led3=1;elseweigui();break; case 5:led0=1;a0=2;if(kaishi=1)led4=0;ledbell=0;qiangda();led4=1;elseweigui();break; case 6:led0=1;a0=3; if(kaishi=1)led5=0;ledbell=0;qiangda();led5=1;elseweigui();break; case 7:led0=1;a0=4; if(kaishi=1) led6=0;ledbell=0;qiangda(); led6=1;elseweigui();break;else P3=0xff;led1=0;ledbell=0;while(!(key()=8)delay(10);t4+;if(t4=40)t4=0;ledbell=ledbell;ini();void ini()P3=0xff;TMOD=0x01,TH0=0x3c,TL0=0xb0;EA=1,ET0=1,TR0=0;kaishi=0,jieshu=0;success=0;a0=17,a1=16,a2=16;void qiangda()uchar t3;TR0=1;t=419;while(!jieshu)display(16, 16, a2, a1, 16, 16, 16, a0);if(key()=3) success=1;jieshu=1;P3=0xff;led1=0;ledbell=0;if(success!=1)P3=0xff;Led2=0;ledbell=0;while(!(key()=8)delay(20);t3+;if(t3=50)t3=0;ledbell=ledbell;ini();void weigui()led2=0;ledbell=0;display(16, 16, 16, 16, 16, 16, 16, a0);while(!(key()=8)display(16, 16, 16, 16, 16, 16, 16, a0);display(16, 16, 16, 16, 16, 16, 16, a0);ledbell=0;display(16, 16, 16, 16, 16, 16, 16, a0);display(16, 16, 16, 16, 16, 16, 16, a0);ledbell=1;ini();uchar keychuli() uchar k; P1=0xff; k=P1; k=k; k=(k&0xff); return(k); uchar key() uchar keyzhi,keyzhii; keyzhi=keychuli(); if(keyzhi!=0) display(16, 16, a2, a1, 16, 16, 16, a0); display(16, 16, a2, a1, 16, 16, 16, a0); keyzhi=keychuli(); if(keyzhi!=0) keyzhii=keyzhi; while(keyzhi!=0) display(16, 16, a2, a1, 16, 16, 16, a0); display(16, 16, a2, a1, 16, 16, 16, a0); keyzhi=keychuli(); keyzhi=keyzhii; switch(keyzhi) case 0:return 0;break;case 0x01:return 2;break;case 0x02:return 3;break;case 0x04:return 4;break;case 0x08:return 5;break;case 0x10:return 6;break;case 0x20:return 7;break;case 0x40:return 8;break;case 0x80:return 9;break;void timer0() interrupt 1 using 3TH0=0x3c,TL0=0xb0;t-;if(t=417)ledbell=1;if(t=19) /中断400次为20s TR0=0;led1=0;led0=1;jieshu=1;t1=t/20;a2=t1/10;a1=t1%10;void delay(uint count) uint j; while(count-!=0) for(j=0;j82;j+); void display(uchar a7,uchar a6,uchar a5,uchar a4,uchar a3,uchar a2,uchar a1,uchar a0)P0=tablea0;LS138A=1; LS138B=1; LS138C=1;delay(1);P0=tablea1;LS138A=0; LS138B=1; LS138C=1;delay(1); P0=tablea2;LS138A=1; LS138B=0; LS138C=1;delay(1); P0=tablea3;LS138A=0; LS138B=0; LS138C=1;delay(1);P0=tablea4;LS138A=1; LS138B=1; LS138C=0;delay(1);P0=tablea5;LS138A=0; LS138B=1; LS138C=0;delay(1);P0=tablea6;LS138A=1; LS138B=0; LS138C=0;delay(1);P0=tablea7;LS138A=0; LS138B=0; LS138C=0;delay(1);
展开阅读全文