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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于-单片机8路抢答器课程设计报告.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于-单片机8路抢答器课程设计报告.doc

1、 - 单片机原理及接口技术 课程设计报告 设计题目: 基于单片机的8路抢答器 学 号: ×××××× 姓 名: ×× 指导教师: ××× 信息与电气工程学院

2、 二零一五年七月 - word.zl - - 基于单片机的8路抢答器 单片机把我们带入了智能化的电子领

3、域,许多繁琐的系统假设由单片机进展设计,便能收到电路更简单、功能更齐全的良好效果。假设把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统那么是一个具有“生命〞的电子系统。 而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件构造给予了抢答系统“身躯〞,而单片机的应用程序赋予了其新的“生命〞,使其在传统的抢答器面前具有电路简单、本钱低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进展抢答,抢到题的选手来答复下列问题。抢

4、答器不仅考验选手的反响速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,表达了公平公正的原那么。 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个8路抢答器。该系统应满足的功能要求为: (1) 设计一个可供8人进展的抢答器; (2) 系统设置复位按钮,按动后,重新开场抢答; (3) 抢答器开场时数码管显示序号0,选手抢答实行优先显示,优先抢答选手的编号一直保持到主持人将系统去除为止。抢答后显示优先抢答者序号,同时发出音响。,并且不出现其他抢答者的序号; (4) 抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间可设定

5、在1~99秒〔本例中设置为20s〕,当主持人启动“开场〞开关后,定时器开场减计时,数码管显示倒计时的时间,同时蜂鸣器有短暂的声响; (5) 设定的抢答时间,选手可以抢答,这时定时器停顿工作,显示器上显示选手的和抢答时间。并保持到主持人按复位键; (6) 当设定的时间到,而无人抢答时,本次抢答无效,扬声器报警发出声音,并制止抢答,定时器上显示00。 主要硬件设备:AT89C51单片机、4位数码管、蜂鸣器等…… 2. 整体方案设计 8路抢答器以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个抢答器的硬件系统。在主持人按下开场抢答的按钮之后,倒计时开场并在

6、数码管上显示出来,选手按下抢答按钮进展抢答,送入单片机进展数据处理。最先抢答的选手编号会通过数码管显示出来,同时完毕抢答,不再显示其他选手编号和倒计时时间。再次按下开场抢答按钮时,开场下一次的抢答。8路抢答器的原理图如图2-1所示。 选 手 电 路 89C51 控制输入 数码显示电路 蜂鸣器电路 信号采集 主持人电路 图2-1 基于单片机的8路抢答器原理图 本系统硬件主要由按键、蜂鸣器、显示系统等几局部组成。各模块的主要功能如下: (1) 按键的功能是把抢答选手编号和开场抢答信号送入单片机; (2) 蜂鸣器的功能是抢答完毕后进展报警提示; (3)

7、 显示系统的功能是显示抢答选手编号以及倒计时时间。 系统的整体设计方案设计图如图2-2所示。 图2-2 系统的整体方案设计图 整体电路原理图如下: 图2-2 系统的整体电路原理图 如下图,电路左上角局部为时钟电路和复位电路,用于给单片机提供时钟信号以及复位。 电路左下角局部为选手抢答电路,按下8个按钮中的一个即可进展抢答,同时将信号发送给单片机并由单片机进展显示输出。此局部为输入环节。 电路右上角局部为显示电路,进展显示已经开场抢答的时间和抢答选手编号,此处采用7段数码管共阳接法,四个反向器用于提供位选信号。当没有选手抢答时,此处显示抢答倒计时;开场有人抢答后

8、此处显示抢答选手的编号并停顿计时。 电路右下角为蜂鸣器局部,当有选手进展抢答或者抢答倒计时完毕后,蜂鸣器会发声报警,进展提示。 3. 系统硬件电路设计 3.1 时钟电路 单片机必须在时钟的驱动下才能工作.在单片机部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机部的各个单元,决定单片机的工作速度。 图3-1 外部震荡源电路 一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对

9、振荡器的频率进展微调。C1,C2的典型值为30PF。 单片机在工作时,由部振荡器产生或由外直接输入的送至部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。如时钟频率为12MHz,即fosc=12MHz,那么时钟周期为1/12µs。 3.2 复位电路 单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下图: 图3-2 复位电路 值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知存放器及存储器的值都恢复到了初始值,而

10、前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进展硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。 3.3 显示电路 本设计所用的为4位8段共阳数码管,由P0控制显示数字,P2.0~P2.3控制位选信号。最高位显示选手编号,低两位显示倒计时时间。 显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。 使用数码管应该注意位选信号,以及共阳和共阴的区别。 其与单片机的接口电路如图3-3所示。 图3-3 数码

11、管与单片机的接口电路 3.4 键盘扫描电路 键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否那么,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。 图3-4 独立键盘 它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬

12、件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺〞 现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺〞脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是那么为有效按键,否那么无效。 3.5 蜂鸣器 由于蜂鸣器的工作电流一般比拟大,以致于单片机的I/O 口是无法直接驱动的〔但AVR可以驱动小功率蜂鸣器〕,所以要利用放大电路来驱动,一般使用三

13、极管来放大电流就可以了。 当有选手进展抢答或者抢答倒计时完毕时,蜂鸣器进展报警提示。 驱动电路如图3-4所示。 图3-4 蜂鸣器电路 4. 系统程序设计 4.1 主程序流程图 当主持人按下开场按钮后,计时器开场倒计时显示。假设有选手抢答,计时终止并显示抢答选手的编号。本轮抢答完毕。 只有当主持人再次按下开场按钮后,才能进展下一轮的抢答。 系统主程序流程图如图4-1所示。 图4-1 主程序流程图 4.2 倒计时时间显示流程图 当主持人按下开场按钮之后,计时器开场显示倒计时,每过一秒减一。当倒计时完成后,假设还没有人进展抢答,数码管显示00,抢答完毕。其流程图

14、如下: 图4-2 倒计时时间显示流程图 4.3 选手抢答流程图 当主持人按下开场按钮之后,8位选手进展抢答。当其中某一位选手进展抢答后,数码管显示抢答选手的编号并锁定,此时其他选手无法再次抢答,本次抢答完毕。直到主持人再次按下开场按钮后,才能进展下一轮抢答。 具体流程图如下: 图4-3 抢答选手显示程序流程图 5. 系统调试 5.1 Proteus软件仿真调试 在proteus中新建工程,搭好电路,保存。然后在AT89C51单片机中加载C语言编写程序生成的hex文件。 点击左下角的运行按钮〔或Debug-Run Simulation〕,按下完毕按钮完毕仿真

15、 开场仿真后,倒计时显示如图5-1. 图5-1 抢答开场,进展倒计时 例如3号选手抢答后,显示如图5-2. 图5-2 2号选手进展抢答 假设倒计时完毕仍无人抢答,显示如图5-3. 图5-3 倒计时完毕,仍无人抢答 5.2 结果分析 抢答器仿真模拟结果与实际抢答一致,可以进展8路抢答。 6. 程序清单 #include // 包含51单片机存放器定义的头文件 #define N 20 unsigned char code Tab[11]={0xc0,0x

16、f9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //0xbf为“-〞 //数码管显示0~9的段码表 unsigned char int_time; //记录中断次数 unsigned char second; //储存秒 unsigned char num; //记录抢答选手编号 char flag1=0; //复位标志 /********************************************************************* 对按键

17、的接口进展定义了K1、K2、K3、K4、K5,K6,K7,K8分别为P1.0-P1.7 *********************************************************************/ sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit K5=P1^4; sbit K6=P1^5; sbit K7=P1^6; sbit K8=P1^7; sbit B0=P3^6;//蜂鸣器控制 sbit KA=P3^0;//主持人开场 /************

18、 函数功能:快速动态扫描延时 ************************************************************************/ void delay(void) { int i; for(i=0;i<3000;i++) ; } /*********************************************************************** 函数功能:显示秒

19、 入口参数:k 出口参数:无 ************************************************************************/ void DisplaySecond(unsigned char k) { P2=0xf7; //P2.3引脚输出低电平, 第4位点亮 P0=Tab[k%10]; //显示个位 delay(); P0=0xff; //***************************************** P2=0xfb; //

20、P2.2引脚输出低电平, 第3位点亮 P0=Tab[k/10]; //显示十位 delay(); P0=0xff; //************************************ P2=0xfd; //P2.1引脚输出低电平, 第2位点亮 P0=Tab[10]; //显示“-〞 delay(); P0=0xff; //******************************* P2=0xfe; //P2.0引脚输出低电平, 第3位点亮 P0=Tab[num]; //显示抢答选手编号 d

21、elay(); P0=0xff; } ///***************复位函数******************* void _reset() { while(1) { if(KA==0) /*复位开关按下*/ { delay(); /*按键去抖动*/ if(KA==0) /*复位开关按下*/ flag1=1; } if(flag1) //出现复位,返回原程序 { /

22、/flag1=0; break; } } } /******************************************************************** * 名称 : key() * 功能 : 进展了独立键盘的键盘扫描,并且二极管发光,扬声器发声 * 输入 : 无 * 输出 : 无 **********************************************************************/ void key() { if(K1==0)

23、 /*开关0按下*/ { delay(); /*按键去抖动*/ if(K1==0) /*开关0按下*/ { //void _stop(); num=1; B0=1; DisplaySecond(N-second); P2=0xfe; P0=Tab[num]; while(!K1); /*等待按键k0释放*/ _reset(); /*死循环只显示本按键号*/

24、 } /* 1号选手抢答成功 ,数码管显示1,蜂鸣器响*/ } if(K2==0) { delay(); /*按键去抖动*/ if(K2==0) { //void _stop(); num=2; B0=1; DisplaySecond(N-second); //显示抢答选手 P2=0xfe; P0=Tab[num]; while(!K2)

25、 /*等待按键k1释放*/ _reset(); } } if(K3==0) /*开关2按下*/ { delay(); /*按键去抖动*/ if(K3==0) { num=3; B0=1; DisplaySecond(N-second); P2=0xfe; P0=Tab[num]; while(!K3);

26、 /*等待按键k2放*/ _reset(); /*死循环只显示本按键号*/ } /* 3号选手抢答成功,数码管显示3,蜂鸣器响*/ } if(K4==0) /*开关3按下*/ { delay(); /*按键去抖动*/ if(K4==0) { num=4; B0=1; DisplaySecond

27、N-second); //显示抢答选手 P2=0xfe; P0=Tab[num]; while(!K4); /*等待按键k3放*/ _reset(); } /* 4号选手抢答成功,数码管显示4,蜂鸣器响*/ } if(K5==0) /*开关5按下*/ { delay(); /*按键去抖动*/ if(K5==0)

28、 /*开关5按下*/ { num=5; B0=1; DisplaySecond(N-second); P2=0xfe; P0=Tab[num]; while(!K5); /*等待按键k5释放*/ _reset(); /*死循环只显示本按键号*/ } /* 5号选手抢答成功 ,数码管显示5,蜂鸣器响*/ } if(K6==0)

29、 /*开关6按下*/ { delay(); /*按键去抖动*/ if(K6==0) /*开关6按下*/ { num=6; B0=1; DisplaySecond(N-second); P2=0xfe; P0=Tab[num]; while(!K6); /*等待按键k6释放*/ _reset(); /*死循环只显示本按键号*/ }

30、 /* 6号选手抢答成功 ,数码管显示6,蜂鸣器响*/ } if(K7==0) /*开关7按下*/ { delay(); /*按键去抖动*/ if(K7==0) /*开关7按下*/ { num=7; B0=1; DisplaySecond(N-second); //显示抢答选手 P2=0xfe; P0=Tab[num];

31、 while(!K7); /*等待按键k7释放*/ _reset(); //while(1) ; /*死循环只显示本按键号*/ } /* 7号选手抢答成功 ,数码管显示7,蜂鸣器响*/ } if(K8==0) /*开关8按下*/ { delay(); /*按键去抖动*/ if(K8==0) /*开关8按下*/ {

32、 num=8; B0=1; DisplaySecond(N-second); P2=0xfe; P0=Tab[num]; while(!K8); /*等待按键k8释放*/ _reset(); /*死循环只显示本按键号*/ } /* 8号选手抢答成功 ,数码管显示8,蜂鸣器响*/ } } void main(void) //主函数 { while(1) {

33、 num=0; TMOD=0x01; //使用定时器T0 TH0=(65536-46083)/256; //将定时器计时时间设定为46083×1.085微秒 //=50000微秒=50毫秒 TL0=(65536-46083)%256; EA=1; //开启总中断 ET0=1; //定时器T0中断允许 TR0=1; //启动定时器T0开场运行 int_time=0; //中断次数初始化

34、 second=0; //秒初始化 while(1) { key(); DisplaySecond(N-second); //调用秒的显示子程序 if(flag1) { flag1=0; break;} } } } //******************************************************** //函数功能:定时器T0的中断效劳程序 //******************************************************

35、 void interserve(void ) interrupt 1 using 1 { TR0=0; //关闭定时器T0 int_time ++; //每来一次中断,中断次数int_time自加1 if(int_time==20) //够20次中断,即1秒钟进展一次检测结果采样 { int_time=0; //中断次数清0 second++; //秒加1 if(second==N) //秒等于N就完毕 { EA=0;

36、 ET0=0; TR0=0; _reset(); return; } } TH0=(65536-46083)/256; //重新给计数器T0赋初值 TL0=(65536-46083)%256; TR0=1; //启动定时器T0 } 7.小结 制作此次试验,开场很苦恼,无从下手。后来和同组同学讨论,决定首先借助于网络资料。网络上的资源大多并不完善,甚至有些根本看不懂。此时真的恩头疼。于是回想之前实验课上所学习的知识,寻找借鉴例题。零零散散下载摘录很多东西。又结合抢答比赛的实

37、际应用,开场起草最初的设计草案。想法很多,设计也几近完整,然而很多功能却无法实现。于是小组讨论决定按照草案一步步依次解决,边解决边定稿最后设计方案。中间遇到很多问题,困难。这时我们才了解到对知识的掌握还有许多的生疏和欠缺。然而此时懊悔已经于事无补。我们只能不停在网络上搜索查找学习,尽量弥补自身知识的缺乏。渐渐完善此设计。 有时候在自己创立的元器件的管脚上无法实现连线。应该是管脚的间距太小了。因为在ISIS中,每个元器件的管脚都要占据一块区域〔就像自己的保护区一样,不容别人随意侵犯〕,该区域会排斥外部的走线。解决问题的方法是在走线的同时按住 “CTRL〞键,直到走线绕过狭窄的保护区。当然最根本

38、的方法是重新编辑元器件,把其管脚间距调大一些。   主持人按键来控制总开关,主持人按下开关那么选手开场抢答,此时数码管开场20s倒计时,并且选手们必须在规定的时间进展抢答,假设过了20秒还没抢答那么抢答失效,选手们假设有一个在规定的时间抢答成功那么其余的选手不可以再抢答,即该选手抢答成功。 在这次试验设计中,我发现了自己知识上的缺乏,和理论时间上的差距。通过完成试验,使我对本科知识有了更深入的了解,提高了实践的操作能力。同时,也规了我对报告文体格式的掌握。并让我了解到认真,刻苦,遇到不放弃,不退缩便可以看到曙光的真理。我们现在掌握的知识还有限,还有很多东西需要我们学习。   - word.zl

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服