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

下载本文档

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

文档简介

摘要该抢答器由单片机以及外围电路组成。设计分为五个模块:抢答按钮输入电路、数码管输出电路、发光二极管显示电路、蜂鸣器报警电路、清零电路。抢答器按钮输入电路用于输入抢答信号;数码管输出电路用于输出抢答到的队伍的编号;发光二极管显示电路用于显示抢答到的队伍;蜂鸣器报警电路用于警告违规抢答者;清零电路用于数码管的清零,使进行下一次抢答。一、 设计要求1 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮s0s3表示。2 设置一个系统清除reset和抢答控制开关start,该开关由主持人控制。3 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。4 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定。当主持人启动开始键后,定时器进行减计时。5 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。6 如果定时时间已到,无人抢答,本次抢答无效,系统通过一个指示灯报警并禁止抢答。二、总体设计1.1设计模块图如图:发光二极管显示抢答队伍数码管显示电路单片机sct89c52抢答器按钮输入电路蜂鸣器报警电路清零电路按钮1.2 根据图1,本设计需要器件清单元件数量元件数量元件数量蜂鸣器1个电位器若干二极发光管4只开关6只单片机最小系统板一块12m晶振只电阻,电容若干51系列89c52芯片一块两位数码管1个2原理分析及说明单片机的p2.0p2.3为输入口,接抢答按键开关,当有某个按键按下时,对应口的电位跳低,被单片机检测到并执行相应的程序,让数码管显示以及使接在p2.4p2.7二极管发光,用于显示所抢答到的队伍。p0.0p0.7口接数码管,用于显示哪个组抢到,并以该队的队伍数值编号方式显示出来。电路中,轻触开关reset为复位开关,按下reset,可以让系统复位。在下一次抢答前,主持人按下抢答控制开关start,各个组的抢答按键才有用,否则,抢答按键没有作用。p1.0口接蜂鸣器,用于警告错误抢答,要注意在端口出来需要接pnp型三极管。1. 抢答器供4名选手比赛,分别用4个按钮s0 s3表示。这个功能只需要通过管脚分配把按钮分配到实验版上的拨动开关s0到s3,让每个选手拨动开关后产生相应的信号即可。不同的选手拨动按钮发出信号通过单片机进行编码,编码后输出信号进行下一步的译码和锁存。2. 设置一个系统清除reset和一个抢答控制开关start,该开关由主持人控制。reset开关接至单片机复位端,高电平清零。start开关接至,下降沿到来结束中断,控制开始抢答。3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止,并且具有锁存功能,可以在一个选手按下按钮后进行锁存,其他的选手不能在抢答。4. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号,并保持到主持人将系统清除为止。选手进行抢答,通过编码锁存译码,显示出来。当某个选手抢答有效,通过中断程序就可以进行禁止其他选手的抢答,同时把该选手的号码显示在数码管上。5. 如果定时时间已到,无人抢答,本次抢答无效。上图为单片机工作的基本电路,左上角为稳压电路,中间为复位电路,下部为晶振电路,接线按图接就可。总电路图三、 硬件介绍主控芯片介绍mcs-51 系列中的各种芯片引脚是互相兼容的,其中stc89c52单片机是高性能的单片机,它具有8位微处理器,128bit片内ram,8k的片内rom,4个八位的并行i/o接口p0-p3,两个定时/计数器及五个中断源的中断控制系统。再不接任何外围电路的情况下可以实现大部分较为复杂的逻辑控制功能,进行外部ram扩展还可以用于数据采集,点阵显示屏控制等方面应用。对于存储量要求不高的实际应用,stc89c52是一种不可多得高性能的单片机,被广泛应用于各个领域。stc89c52单片机的每个端口都是8位准双向口,每一条i/o线都能独立的用作输入或输出。每个端口都包括一个锁存器,一个输出驱动器和输入缓冲器。再无片外扩展存储器系统中,这四个端口都可以作为准双向i/o口使用。再具有片外扩展存储器的系统中,p2口送出高8位地址p0口位双向总线,送出低八位地址和数据的输入/输出;p3口是一个多功能端口各个引脚具有第二功能。(p3.0为串行口输入,p3.1位串行口输入,p3.2为外部中断0输入,p3.3为外部中断1输入,p3.4为定时器0的外部输入,p3.5为定时器1 的外部输入,p3.6位片外数据存储器“写选通控制”输出,p3.7为片外数据存储器“读选存储器”输出)。芯片引脚排列如图所示。stc89c52引脚功能说明:vcc:电源电压gnd:地p0口:p0口是一组8位漏极开路型双向i/o口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个ttl逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在flash编程时,p0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,p1接收低8位地址。p2口:p2是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流i。在访问位地址的外部数据存储器(如执行:movx ri 指令)时,p2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。flash 编程或校验时,p2也接收高位地址和其它控制信号。p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的p3口将用上拉电阻输出电流i。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能。rst:复位输入。当振荡工作时,rst引脚出现两个机器周期上高电平将使单片机复位。wdt益出将使该引脚输出高电平,设置sfr auxr 的 disrto 位(地址8eh)可打开或关闭该功能。disrto 位缺省为reset输出高电平打开状态。ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ale仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ale脉冲。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位禁位后,只有一条movx 和movc指令ale才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ale无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c52由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的psen信号。ea/vpp:外部访问允许。欲使cpu公访问外部程序存储器(地址0000hffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部程序存储器中的指令。flash存储器编程时,该引脚加上12v的编程电压vpp。xtal1:振荡器反相放大器及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。四、 软件设计/*this program is written by anzhg in april 13, 2012.*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit key1 = p20;/定义按键位置 独立按键模式 sbit key2 = p21;sbit key3 = p22;sbit key4 = p23;sbit led1 = p24;sbit led2 = p25;sbit led3 = p26;sbit led4 = p27;sbit latch1 = p11;/定义锁存使能端口 段锁存sbit latch2 = p12;/定义锁存使能端口 位锁存sbit spk = p10;unsigned char code led = 0xf9,0xa4,0xb0,0x99;/数码管显示代码数组bit flag = 0;/子程序声明voiddelayms( unsigned int x );void sound( void );void flicker( unsigned int temp );void main()unsignedint j, k = 50;inttempr, tempw, a=6;while( !flag )p0 = 0; p2 = 0xff;/将按键输入引脚置为高电平if( p2 != 0xff )/去抖程序delayms( 15 );if( p2 != 0xff )p0=0x01;latch2 = 1; latch2 = 0;switch( p2 ) /判断p2脚输入,并将对应标号显示在数码管上case 0xef: sound(); p0=led0; latch1 = 1; latch1 = 0;while( a ) led1 = 0; delayms(500); led1 = 1; delayms(500); a-; break;case 0xdf: sound(); p0=led1; latch1 = 1; latch1 = 0;while( a ) led2 = 0; delayms(500); led2 = 1; delayms(500); a-; break;case 0xbf: sound(); p0=led2; latch1 = 1; latch1 = 0;while( a ) led3 = 0; delayms(500); led3 = 1; delayms(500); a-; break;case 0x7f: sound(); p0=led3; latch1 = 1; latch1 = 0;while( a ) led4 = 0; delayms(500); led4 = 1; delayms(500); a-; break;default: break;/interupt;tempr = p0; p2 = 0xff;while( flag )if( p2 != 0xff )switch( p2 ) /判断p2脚输入,并将对应标号显示在数码管上case 0xef: tempw = led0; break;case 0xdf: tempw = led1; break;case 0xbf: tempw = led2; break;case 0x7f: tempw = led3; break;default: break;/*警告音程序段开始*/while(k-)for(j=0;j200;j+)delayms(1); spk=!spk;spk = 0;/防止一直给喇叭通电造成损坏for(j = 0; j 200; j+)delayms(1); /*警告音程序段结束*/while( 1 )p0 = 0xfe; latch2 = 1; latch2 = 0;p0 = tempr;latch1 = 1; latch1 = 0;delayms( 500 );p0 = 0xfe; latch2 = 1; latch2 = 0;p0 = tempw; latch1 = 1; latch1 = 0;de

温馨提示

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

评论

0/150

提交评论