ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:363.44KB ,
资源ID:6577983      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6577983.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机微机原理课程设计八路抢答器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机微机原理课程设计八路抢答器.docx

1、单片机微机原理课程设计八路抢答器微机原理与接口技术课程设计报告基于STC89C52防违规八路抢答器院 系 :专业(班级):姓名:学号:指导教师:职称:完成日期: 2013 年 12 月 25 日目 录1 引 言 12 总体方案论证与设技 12.1 主控模块的选型和论证 12.2 显示模块的选型和论证 22.3 按键模块的选型和论证 22.4 系统整体设计概述 32.5 系统使用说明 43 系统硬件电路设计 43.1 主控模块 43.1.1 单片机芯片介绍 53.1.2 单片机最小系统 63.2 数码管模块设计 63.2.1 数码管原理介绍 73.2.2 数码管电路设计 73.3 键盘模块设计

2、83.4 蜂鸣器模块设计 84 系统软件设计 94.1 系统软件总体设计 94.2 程序设计原理 105 系统调试 115.1 硬件调试 1152 调试结果 126 总 结 127 致 谢 13参 考 文 献 13附录A 系统整体原理图 15附录B 实物图 16附录C 系统源程序 17基于STC89C52防违规八路抢答器1 引 言随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢

3、答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。1.1 本系统主要研究内容本系统设计制作一个基于单片机的8路抢答器。能实现以下几种功能:(1)键盘扫描,显示当前按键。(2)检测是否有参赛者违规操作,如果在主持人按下开始按键以前按下则利用蜂鸣器报警并显示参赛者编号。 (3)当主持人按下开始按键后,计数器开始倒数,在30秒倒数结束之前如果有参赛者按下按键,则在数码管上显示参赛者编号和剩余的时

4、间。2 总体方案论证与设技2.1 主控模块的选型和论证该系统采用51系列单片机STC89C52作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。2.2 显示模块的选型和论证采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于本设计而言一个LCD1602的液晶屏即可,价格较高2.3 按键模块的选型和论证方案一:采用常见的独立按键输入模式,根据需要一共要用9个按键进行功能输

5、入。方案二:采用矩阵键盘作为输入,矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组. 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 键模块使用的是多位独立按键,按键一端接IO口,一端接地,由于单片机的IO口都有内部

6、上拉,因此当按键没有按下的时候,IO检测到的时候高电平,当按键按下的时候,相当于IO短接地,因此这时候单片机检测到的电平为低电平,通过检测不同时刻的IO口状态就可以判断按下的是那个按键。2.4 系统整体设计概述本系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、数码管显示等功能的控制,起到总控和协调各模块之间工作的作用。单片机通过驱动蜂鸣器发响声。系统由单片机.数码管、蜂鸣器报警模块、按键模块所组成。 2-1系统结构框图 2.5 系统使用说明本程序为8位抢答器的设计程序具体要求如下: 要求有违例抢答的判别,即在主持人未发出可以抢答的指令前进行抢答的,要能给出违例抢

7、答的声音提示;当参赛者成功抢答之后,能用五寸以上的数码管显示抢答成功的组别,并给出抢答成功的提示音;主持人发出可以开始抢答指令30秒以后,如果无人进行抢答,能发出与抢答成功不同的声音进行提示,并同时用两位数码管显示倒计时的情况3 系统硬件电路设计3.1 主控模块主控模块模块在整个系统中起着统筹的作用,需要检测键盘,温度传感器等各种参数,同时驱动液晶显示相关参数,在这里我们选用了51系列单片机中的STC89C52单片机作为系统的主控芯片。51系列单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel

8、 等大公司。因此市面上出现了各式各样的均以51 为内核的单片机。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51一致的。STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。图3-1 STC89C52单片机结构图3.1.1 单片机芯片介绍 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技

9、术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89SC52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护

10、方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程。 图3-2 单片机最小系统3.1.2 单片机最小系统STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I

11、/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.2 数码管模块设计3.2.1 数码管原理介绍数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按

12、能显示多少个“8”可分为1位、2位、4位等等数码管;图3-3 四位数码管内部结构图3.2.2 数码管电路设计如下图所示为一位共阳数码管的硬件电路连接图,由于数码管内部实际为8个LED灯,如果把LED的阴级直接单片机的IO的口,会使LED通过的电流过大从而把数码管烧毁,因此在设计的时候在LED的阴级和单片机的IO之间加上了限流电阻从而起到限流作用。根据经验,这里选取了1K电阻。程序编写的时候我们预先根据要显示的字符,编写了个对应要显示的数组,这样可以使程序更加简化。图3-4 四位共阳数码管硬件电路连接图 3.3 键盘模块设计图3-5 键盘模块电路图3.4 蜂鸣器模块设计本设计带有蜂鸣器报警功能,

13、当主持人没有按下抢答器的时候,用户抢答的话与蜂鸣器发声提醒。图3-6 蜂鸣器驱动电路图4 系统软件设计4.1 系统软件总体设计图4-1系统流程图 开始的时候,系统主持人按下开始按键,如果再没有按下开始按键的时候有用户抢答的话,系统会显示犯规选手和蜂鸣器发声提示,当主持人按下按键的时候,系统进行倒数,如果再倒数的时间内有用户抢答的话会显示选手的编号和剩余时间,如果超过抢答时间,系统会显示FF并蜂鸣器发声。4.2 程序设计原理软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。软件任务分析环节是为软件设计做一个总体规划。从软件

14、的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程,

15、而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。智力竞赛抢答器要求有记忆功能,一次时间设置完,复位后不需重新进

16、行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码。当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功,同时显示其分数,分数的加减可有裁判手动进行。采取独立式键盘,可以实现8路抢答。在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法。臂并通过查表发将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端。通过查表将字型码送给7段数码管显示的数字。软件去抖动,如果“开始键”按下就向下执行,否则就跳到开始。采用发声报警,起到报警作用。 主持人按抢答开始键,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢

17、答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设30s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。 如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会自动进入准备状态,等待主持人按抢答开始进入下次抢答计时。5 系统调试5.1 硬件调试抢答器的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。在本抢答器的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:(1)数码管选用的时候没

18、有注意采用的是共阴还是共阳,导致调试的时候数码管一直不能显示。解决:把共阴数码管换成数码管。(2)最开始的时候以为单片机IO口直接可以驱动蜂鸣器发声,后来调试的时候久久不能出声音。解决:经过查找相关资料,知道扬声器需要三极管来驱动,后来把三极管放大器加上系统便可以正常工作。5.2软件调试1、打开Keil软件后,在Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。 2、为项目文件选择目标器件。 3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。 4、把源文件添加到项目中,用鼠标指在目标工作区的目标

19、1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试 。52 调试结果(1)在测试中遇到LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.(2)LED 数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。经过一系列的问题查找后系统最终能正常工作,并完成所有功能。 6 总 结本文研究设计的八路抢答器采用了通用的电子元器件,利用AT89C51单片机及外围接口实现强大系统

20、,利用单片机的定时器、计数器定时和计数的原理,将软硬件有机的结合起来。理论联系时间,体现出大学生的动手能力。通过查资料和收集有关的文献,培养了自学能力和动手能力。并且有原先的被动接受只是转换为主动寻求只是,这可以收拾学习方法上的一个很大突破。在以往的传统学习模式下,我们可能会记住很多书本知识,但是通过毕业设计,我们学会了如何将学到的知识化为自己的东西,学会了怎么跟好的处理只是和实践相结合的问题,把握重点,攻克难关,学到用到活学活用。在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能还尚未能开发出来。但在以后的工作中,我们会严格要求自己最求完美。回头再看看

21、该设计,还可以将设计的扩展功能增强:1可以设计声控装置,在主持说开始时,系统自动完成清零并开始时的功能。2 增加积分模块,可以设定初始积分,并记录每次抢答完成后的积分。3 将抢答按键使用无线实现,如红外线,是抢答者可以远距离进行抢答,并简化按键模块的线路布置。如果提供相应的器材及时间上的宽限,硬顶可以完成上述扩展功能,进一步完善作品 7 致 谢此次单片机课程设计是在*老师的细心指导下完成的,老师治学严谨的态度,渊博的知识感染着我,是我学习的榜样,使我受益无穷。在此,特向老师表达诚挚的谢意。除此之外,在课程设计过程中,还得到了其他老师、同学的帮助。他们的无私帮助也是我得以完成本次课程设计的关键。

22、在此,我向他们表示由衷的感谢。我还要感谢我的一些同学,他们在我最需要帮助的时候无私的伸出了援助之手。在此,对于他们的无私帮助我表示深深的感谢。真诚的感谢所有帮助过我的老师们和同学们。参 考 文 献1 彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009年.2 吴运昌模拟电子线路基础广州:华南理工大学出版社,2004年.3 付晓光.单片机原理与应用技术M.北京:清华大学出版社,2004:138-141.4 李维祥.MCS-51单片机原理与应用M.天津:天津大学出版社,2002:55-56.5 李广弟,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,2001:44-47.6

23、 沙占友,葛家怡,马洪涛.集成化智能传感器原理与应用J.北京:电子工业出版社,2004:74-81.7 张伟.单片机原理及应用M.北京:机械工业出版社,2002:174-180.8 李玉峰,倪虹霞.MCS-51系列单片机原理与接口技术M.北京:人民邮电出版社,2004:128-129.9 马忠梅等.单片机的C语言应用程序设计M.北京航空航天大学出版社,2006.10 刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现J.微计算机信息,2007.附录A 系统整体原理图附录B 实物图正面反面附录C 系统源程序/*/抢答器设计 /* #includesbit seg_1 = P10; sb

24、it seg_2 = P13; sbit seg_3 = P12; sbit key_9 = P17; sbit beep = P14; #define dat P0 #define OPEN 0 #define OFF 1 #define Key_port P2 unsigned int T0count=0; unsigned char Time_Left = 30; bit flag1 = 0; bit flag2 = 0; const unsigned char code seg_dat=0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,

25、0xff; unsigned char key_scan(void); void buzzer(unsigned char t); void dis_1(unsigned char num1); void dis_2(unsigned char num2); void delayms(unsigned int i); void delayus(unsigned int i); unsigned char key_scan(void) unsigned char get_port = 0; Key_port = 0xff; key_9 = 1; get_port = Key_port; if(g

26、et_port != 0xff) delayms(10); get_port = Key_port; if(get_port != 0xff) get_port = Key_port; switch (Key_port) case 0xfe:flag2 = 1;return 1; case 0xfd:flag2 = 1;return 2; case 0xfb:flag2 = 1;return 3; case 0xf7:flag2 = 1;return 4; case 0xef:flag2 = 1;return 5; case 0xdf:flag2 = 1;return 6; case 0xbf

27、:flag2 = 1;return 7; case 0x7f:flag2 = 1;return 8; while(!Key_port); if(key_9 = 0) delayms(10); if(key_9 = 0) flag1 = 1; return 9; while(!key_9); return 0;void buzzer(unsigned char t) unsigned char i; for(i = 0;i100;i+) beep = 1; delayus(t); beep = 0; void dis_1(unsigned char num1) seg_1 = OPEN; seg

28、_2 = OFF; seg_3 = OFF; dat = seg_datnum1; delayms(5); dat = seg_dat10; void dis_2(unsigned char num2) unsigned char shi,ge; shi = num2/10; ge = num2%10; seg_1 = OFF; seg_2 = OPEN; seg_3 = OFF; dat = seg_datshi; delayms(5); dat = seg_dat10; seg_1 = OFF; seg_2 = OFF; seg_3 = OPEN; dat = seg_datge; del

29、ayms(5); dat = seg_dat10; void delayms(unsigned int i) unsigned int x,y; for(x = 0;xi;x+) for(y = 0;y100;y+);void delayus(unsigned int i unsigned int x; for(x = 0;xi;x+) ;/主函数void main(void) unsigned char x=0; while(!flag1) x = key_scan(); while(flag2 = 1) buzzer(2); dis_1(x); seg_1 = OFF; seg_2 = OPEN; seg_3 = OFF; dat = 0x74; delayms(5); dat = seg_dat10; seg_1 = OFF; seg_2 = OFF; seg_3 = OPEN; dat = 0x74; delayms(5); dat = seg_dat10; while(flag1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1