实习报告-单片机抢答器设计_第1页
实习报告-单片机抢答器设计_第2页
实习报告-单片机抢答器设计_第3页
实习报告-单片机抢答器设计_第4页
实习报告-单片机抢答器设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

西安郵電大学单片机课程设计C报告书院(系)名称:自动化学院学生姓名:孙天骜、张梦圆、李咪咪、左鹏飞专业名称:智能科学与技术班级:智能1202时间:2023年10月20日至2023年10月31日目录TOC\o"1-3"\h\u单片机课程设计报告1一、数字抢答器的概述2二、设计任务与要求2三、抢答器原理3四、抢答器方案论证4五、考前须知5六、系统原理图5七、硬件结构设计61.时钟频率电路的设计62.复位电路的设计73.数码管电路的设计84.蜂鸣器电路的设计8八、主程序系统结构图81.系统程序8九、实验心得9一、数字抢答器的概述对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来答复下列问题。抢答器不仅考验选手的反响速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,表达了公平公正的原那么。本实验设计的数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两局部组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。更具有实用性。二、设计任务与要求1、根本要求〔1〕抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S1~S4表示。〔2〕设置一个系统去除和抢答控制开关S,该开关由主持人控制。〔3〕抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统去除为止。〔4〕抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。〔5〕参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统去除为止。〔6〕如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00优点:与普通抢答器相比,本作品有以下几方面优势:1、具有清零装置和抢答控制,可由主持人操纵防止有人在主持人说“开始〞前提前抢答违反规那么。2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对此题弃权。3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。三、抢答器原理该抢答器供不多于四个的抢答比赛使用。每个选手的座位前安装一只抢答按钮开关和一只信号灯。主持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。每当主持人口头发出允许抢答的号令之后,哪个队先按下座位上的按钮开关,封锁其他按钮开关的活动。并且熄灭主持人座位上的状态指示灯和发出3声类似于振铃的提示声,以“声明〞此次抢答动作已经完成。在主持人确认后,按下复原按钮,状态指示灯重新点亮,并且同时发出“笛——〞声,为下一次的抢答作好准备。电路中的蜂鸣器FM是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放大器和喇叭。在FM发声的同时,灯D4也在发光。FM可以看作是一个电容性负载,本身不能流过直流电流。发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音。FM和4只按钮开关SWa~SWd以及4只电阻Ra~Rd都是在演示板的根底上额外添加的。由于RB端口内部具有上拉电阻,只要用软件设置其有效,即可省略在4只端口引脚上外接上拉电阻。四、抢答器方案论证〔1〕抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S1~S4表示。〔2〕设置一个系统去除和抢答控制开关S,该开关由主持人控制。〔3〕抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统去除为止。〔4〕抢答器具有定时抢答功能,且一次抢答的时间由主持人设定30秒。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。〔5〕参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统去除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00〔6〕4路抢答器可以利用硬件电子元器件实现,但电路结构复杂,调试困难,涉及到的外围元件多,不便于安装,实验给实际操作带来很大的麻烦。我们利用单片机可以用很少元件实现相同功能,而且单片机性能稳定,可操作性强。可以只用P0口连接上拉电阻,完成驱动LED的功能,串接按键可以由选手自己控制抢答时机,利用P3口的RXD接74LS164的A,B端,TXD接移位脉冲做时钟信号。利用单片机程序判断选手按键是否有效,但选手违规抢答,利用简单程序显示选手序号,启动蜂鸣器并不间断,告诉主持人有人违规操作,抢答无效。给出相应的延时,选手按正常的操作抢答,软件倒记时,利用74LS164移位存放6段数码管,实现倒记时显示时间,到5秒相应时间提醒选手时间快到了,要及时作答,并启动蜂鸣器。如果有选手在规定的时间以前完成问题,主持人通过按键P2.4复位,开始新的问题作答,因为程序不是很大不需要扩展存储空间,选手按键跳入相应的子程序,答复倒记时,通过单片机实现功能可以更人性化,只需单电源供电更方便,容易实现。电路结构简单,外围扩展的电路不是很多,锻炼我们所学的知识应用到现实生活当中。为我们提供实践的时机。单片机是电子专业开展的方向,更好的使用单片机可以是我们的产品小型化,使用更方便,性能更稳定,功能更齐全,所以我们选用单片机加一定的外围设备实现本次课程设计的要求。五、考前须知为使硬件电路设计尽可能合理,应注意以下几方面:(1)尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替假设干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比假设干普通芯片价格的总和高。(2)留有设计余地。在设计硬件电路时,要考虑到将来修改扩展的方便。因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。(3)程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。(4)I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被无视的问题,而这些问题不是靠单纯的软件措施来解决的。如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。六、系统原理图七、硬件结构设计1.时钟频率电路的设计单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。图3-2外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。如时钟频率为12MHz,即fosc=12MHz,那么时钟周期为1/12µs。2.复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知存放器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。3.数码管电路设计共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp〔小数点〕。但是把数码管直接接入电路时数码管的显示不是很亮,所以在实际的电路焊接时参加了放大器。4.蜂鸣器我们知道,声音的频谱范围约在几十到几千赫兹,假设能利用程序来控制单片机某个口线的“高〞电平或低电平,那么在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音。八、主程序系统结构图1.系统程序抢答器程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbiterror=P1^3;//选手按键sbitk1=P3^0;sbitk2=P3^1;sbitk3=P3^2;sbitk4=P3^3;sbitk=P1^0;//主持人按键开始sbitr=P1^1;sbitbeep=P3^7;//蜂鸣器ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};//0-9代码ucharshiwei,gewei,xuanshou,count,i,second,flag,flagO;bang,time1;uintt,m,n,a,a1,a2,a3,a4;voidmainOne();voidmainTwo();voiddis();voidTimer(){ TMOD|=0x01; TH0=0xd8;//初值55536,计数10000次,每次1US,总计10ms TL0=0xf0; IE=0x82;//这里是中断优先级控制EA=1〔开总中断〕,ET0=1〔定时器0允许中断),这里用定时器0来定时 TR0=1; }voiddelay(uintz)//延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay(ucharshiwei,gewei,xuanshou)//显示函数{ if(flag){ P2=~0xfe;//翻开显示时间十位的位选 P0=shiwei;//显示十位 delay(5); P2=~0xfd; //个位位选 P0=gewei; delay(5); P2=~0xfb;//选手位选 P0=xuanshou; delay(5); }else{ P2=~0xfe;//翻开显示时间十位的位选 P0=~0xf3;//显示十位 delay(5); P2=~0xfd; //个位位选 P0=~0xf3; delay(5); P2=~0xfb;//选手位选 P0=xuanshou; delay(5); }}voiddis(void){ shiwei=~tab[second/10]; gewei=~tab[second%10]; xuanshou=~tab[i]; display(shiwei,gewei,xuanshou);}voidtim(void)interrupt1using1//为定时中断TR0{ TH0=0xd8;//重新赋值 TL0=0xf0; count++; if(count==100)//100*10ms=1秒 { count=0; second--;//秒减1 }}voidinit()//初始化函数{ error=0; r=1; flag=1; flagO=1; bang=1; P2=~0x04; P0=~0xf3; t=0; beep=0; i=0; second=29; a1=1; a2=1; a3=1; a4=1;}voidcheckkey(){ if(k1==0){delay(5);if(k1==0);while(!k1);t=1;} elseif(k2==0){delay(5);if(k2==0);while(!k2);t=2;} elseif(k3==0){delay(5);if(k3==0);while(!k2);t=3;} elseif(k4==0){delay(5);if(k4==0);while(!k2);t=4;}}voidTimeOut(){ TR0=0; if(bang){ beep=1; error=1; time1=50; while(time1--){ delay(10); dis(); } time1=0; bang=0; } beep=0; error=0;}voidmainTwo(){ init(); while(1){ //判断违规 if((k1==0||k2==0||k3==0||k4==0)&&flag){ flag=0; error=1; checkkey(); switch(t) { case1: { i=1;beep=1;delay(300);beep=0; break; } case2: { i=2;beep=1;delay(300);beep=0; break; } case3: { i=3;beep=1;delay(300);beep=0; break; } case4: { i=4;beep=1;delay(300);beep=0; break; } } } if(flag==0){ dis(); } //复位按钮 if(r==0){ init(); } mainOne();}}voidmainOne(){ if(k==0&&flag)//主持人按下开始键 { Timer(); delay(10); while(!k); while(1) { if(r==0){ mainTwo(); } dis(); m=0; n=0; if(second==10||second==20){ beep=1; bang=50; while(bang--){ delay(10); dis(); } beep=0; } if(second==0){ TR0=0;n=1; if(flagO){ beep=1; time1=50; while(time1--){ dis(); delay(10); } flagO=0; beep=0; } if(k==0) {beep=1;delay(500);beep=0;second=29;TR0=1;m=1;} } if(n==0) { if(k1==0||k2==0||k3==0||k4==0) {checkkey();} elseif(k==0){delay(5);if(k==0);while(!k);t=0;i=0;second=29;beep=1;delay

(500);beep=0;TR0=1;} } while(t) { if(m==0)//开关,保证程序只执行一次 { switch(t) { case1: { TR0=1;i=1;second=30;beep=1;delay(300);beep=0; a1=0;a2=1;a3=1;a4=1;m=1;break; } case2: { TR0=1;i=2;second=30;beep=1;delay(300);beep=0; a2=0;a1=1;a3=1;a4=1;m=1;break; } case3: { TR0=1;i=3;second=30;beep=1;delay(300);beep=0; a3=0;a1=1;a2=1;a4=1;m=1;break; } case4: { TR0=1;i=4;second=30;beep=1;delay(300);beep=0; a4=0;a1=1;a2=1;a3=1;m=1;break; } } } if(r==0){ mainTwo(); } if(a1==0)//选手的计时 { a1=0; dis(); if(second==0){ TimeOut(); } if(k1==0){ TR0=0; } } elseif(a2==0) { a2=0; dis(); if(second==0){ TimeOut(); } if(k2==0){ TR0=0; } } elseif(a3==0) { a3=0; dis(); if(second==0){ TimeOut(); } if(k3==0){ TR0=0; } } elseif(a4==0) { a4=0; dis(); if(second==0){ TimeOut(); } if(k4==0){ TR0=0; } } if(k==0){i=0;t=0;second=29;beep=1;delay(500);beep=0;TR0=1;} while(!k); } } }}voi

温馨提示

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

评论

0/150

提交评论