欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于MCS51单片机的四路抢答器Word格式.docx

    • 资源ID:4492809       资源大小:294.67KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MCS51单片机的四路抢答器Word格式.docx

    1、 数码管显示模块:数码管显示模块由一片MAX7219和3个数码管组成。其中U5用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有人犯规抢答,U6U7显示“FF”。 蜂鸣器模块:蜂鸣器在主持人发出可以抢答信号、有人按下抢答按键和倒计时时间到等3种情况下发出蜂鸣声。 13.3.2 程序设计typedef unsigned char uchar;sbit LE=P14;sbit KEY5=P37;sbit DIN=P2 /定义P2.5控制MAX7219的串行数据输入端sbit LOAD=3; /定义P2.4控制MAX7219的载入使能端sbit CLK=2; /定义P2.3控制MAX

    2、7219的时钟信号sbit BUZ=P01;#define TIMER_HBYTE -50000/256 /定时50ms#define TIMER_LBYTE -50000%256uchar intr_counter; /设定的时间用需要产生的中断次数表示uchar bdata byte; /在bdata区定义一个变量,便于位操作sbit byte_7=byte7;bit foul_flg; /是否有人犯规标志bit time_over_flg; /是否倒计时超时标志bit key_flg; /是否有人在规定时间内按键标志void max7219_reset(void); /初始化MAX721

    3、9void write_reg(uchar,uchar); /向控制寄存器写数据void write_digit(uchar,uchar); /向字型寄存器写数据void send_data(uchar); /底层的硬件驱动uchar set_time(void); /函数功能:设置倒计时时间bit control_key(void);检测主持人是否按键uchar get_key_num(void);检测哪个参赛者按键void display_time(void);显示倒计时剩余时间void foul_handle(uchar);犯规处理void key_handle(uchar);按键处理v

    4、oid time_over_handle(void);超时处理void init_t0(void);初始化T0定时器void delay_20ms(void);延时20ms,按键去抖动void buz_on(void)蜂鸣器响500msvoid main(void) uchar key_number; max7219_reset(); while(1) foul_flg=0; /设置初始环境 time_over_flg=0; TR0=0; /禁止T0运行 write_digit(DIGIT0,LED_code0x0);/上电后3个数码管全部显示0 write_digit(DIGIT1,LED_

    5、code0x0); write_digit(DIGIT2,LED_code0x0); while(control_key()=1)&(foul_flg=0) /如果主持人没有按键key_number=getkey_num(); /检查是否有人犯规 if(key_number=0) /如果没有,进行下一次循环 continue; else /如果有人犯规 foul_handle(); /犯规处理 foul_flg=1; /设置犯规标志 if(foul_flg=1) while(control_key()=1); /等待主持人按键以进入下一轮 /主持人按键后进入下一轮 /如果没有人犯规,必定是主持

    6、人允许答题 intr_counter=set_time(); /读取倒计时时间 init_t0(); /定时器T0开始计时 buz_on(); /蜂鸣器响500ms while(time_over_flg=0&key_flg=0) key_number=getkey_num(); /在规定时间内检查是否有按键 if(key_number!=0) /如果有key_handle(key_number);/按键处理 key_flg=1; /设置有人按键答题标志 /停止T0运行 /否则循环检测display_time(); /并显示剩余时间 if(key_flg=1) /如果有人在规定时间内答题 wh

    7、ile(control_key=1); /倒计时时间到仍无人按键 time_over_handle(); /超时处理bit control_key(void) /检测主持人是否按键 if(KEY5=1) /如果KEY5为高,说明没有按键 return 1; /返回1,表示没有按键动作 /如果KEY5为低,说明可能有按键动作 delay_20ms(); /延时20ms,去抖动 /如果20ms后KEY5变为高电平,是干扰 /返回1 /如果20ms后仍为低电平,确认有按键动作 return 0; /返回0uchar set_time(void) /根据设置决定倒计时时间 uchar intr_cou

    8、nter; if(P36=0) intr_counter=200; /10s else if(P35=0) intr_counter=160; /8s else if (P34=0) intr_counter=120; /6s else if (P33=0) intr_counter=80; /4s else intr_counter=200; /如果没有设置,默认为10s return intr_counter;uchar get_key_num() /检测哪个参赛者按键 uchar key_state=0; key_state=P1; key_state&=0x0f; /读取P1端口的低4

    9、位 if(key_state=0x0f) /若均为高电平,说明无人按键return 0; else key_state=0xff; if(key_state&0x01) return 1; /如果KEY1被按下,返回1 else if(key_state&0x02) return 2; /如果KEY2被按下,返回20x04) return 3; /如果KEY3被按下,返回3 else return 4; /如果KEY4被按下,返回4void foul_handle(uchar key_number) write_digit(DIGIT0,key_number); /显示犯规者号码 write_

    10、digit(DIGIT1,0x0f); /显示“FF” write_digit(DIGIT2,0x0f); /蜂鸣器响void time_over_handle(void) write_digit(DIGIT0,0x0); /显示“0” write_digit(DIGIT1,0x0e); /显示“EE” write_digit(DIGIT2,0x0e);void key_handle(uchar key_number) /按键处理 /显示按键者号码void display_time(void) /显示倒计时剩余时间 uchar number; write_digit(DIGIT0,LED_co

    11、de0); number=int_counter/20; /秒数 write_digit(DIGIT1,number/10); /秒数的十位数字 write_digit(DIGIT2,number%10); /秒数的个位数字 uchar i; BUZ=0; /开蜂鸣器 for(i=1;i=25;i+) /延时500ms delay_20ms;1 /关蜂鸣器void init_t0(void) TMOD=0x01 /T0选择工作方式1,16位定时器 TH0=TIMER_HBYTE; /定时时间为50ms TL0=TIMER_LBYTE; EA= /使能CPU中断 ET0=1; /使能T0溢出中断

    12、 TR0=1; /T0运行void isr_t0(void) interrupt 1 /T0中断服务函数 intr_counter-; /中断次数 if(intr_counter=0) /倒计时时间到time_over_flg=1; /设置超时标志/禁止T0运行void delay_20ms(void) /延时20msvoid max7219_reset(void)void write_reg(uchar reg,uchar sdata) /写入命令void write_digit(uchar digit,uchar number) /显示数字void send_data(uchar byte

    13、) /MAX7219的驱动程序 电子抢答器已被人们所熟知,在一些电子类的杂志中也经常介绍,许多电子抢答器都采用了逻辑电路进行设计,在本文中,我们介绍一款利用51系列单片机作为主控制器的单片机6路抢答器的制作。当系统工作后,6路抢答者中只要有一人按下抢答键,系统的数码管便显示按键者的编号,同时喇叭中响起动听的音乐声,表示抢答成功。当有几个人同时按键时,由于在时间上必定存在先后,系统将对第一个按下者进行锁存,显示的编号也是第一个按下者,其他按键者将不能响应,以便公平地选择第一个抢答者。当确定了抢答成功者后,裁判只要按下复位键,系统便停止音乐,返回到抢答状态,进行下一轮抢答。一、设计与分析从设计所要

    14、完成的任务与要求来看,需要显示6路输入,用一只数码管便可以完成,对于7段数码管,占用7个单片机的I/O口,考虑6路输入,占用6个I/O端口,一个端口用于控制音乐电路的工作,这样,只需14个I/O便可以完成电路硬件的安排。为此,我们可以选用51系列单片机中的简易型产品AT89C2051来作为中央处理器。这款单片机的I/O作为输出时,具有较大的吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O就可以直接驱动,能简化硬件电路的设计。经以上分析,我们设计出这款多路抢答器的电路原理图如图1:图2为电源部分原理图。图根据原理图,我们设计的PCB线路板图如图3:二、硬件电路的制作与调试在电子产

    15、品的制作中,如能按较佳的安装与调试步骤进行制作,将大大提高制作成功的概率。特别是对一些初学者,还不具备分析电路中的故障能力时,这一点尤为重要。1、 电源部分的制作。按图2的原理图,将电源部分的各元件焊上,注意极性不要搞错,对于1N4007二极管,电流从没有白线处流向有白线处,对于电解电容,有一条白线且标有-的为负极,元件在没有剪脚前,长的为正,短的为负。发光二极管也是长的为正,短的为负。这部分元件焊好后,不要忙于焊其他元件,先进行测试。接上电源变压器,用万用表测整流后的电压值,即7905的1、2脚之间电压值,正常应为10到14V间。然后再测7905第1、3脚间的电压值,正常应为:4.9到5.1

    16、V间。同时查看发光二极管是否亮。由于发光二极管(集成电路)容易被静电击穿,因此在焊接时的时间不要太长,最好将电烙铁的外壳接地。若两处电压异常,仔细查看整流二极管有没有接反或虚焊,三端稳压管有没有插反;若两处电压正常,而发光管不亮,查看发光管有没有接反,经以上检测后,若都正常,说明电源部分制作完成且工作正常,接下来就可以制作其他单元电路了。2、 显示电路的制作。将R3到R9及共阳数码管焊好,再将20脚的集成电路插座焊上,这样这部分电路就制作完成了。接下来对这部分电路进行测试,接上电源,数码管全灭,用一导线的一端与地线相连,另一端依次碰集成电路插座的19脚到13脚,一边碰一边查看数码管,正常时可以

    17、看到每碰一个脚,对应一段数码管灯亮。若不亮,仔细查看与该脚相连的电阻及数码管是否虚焊。3、 音乐电路的制作。音乐集成电路是CMOS电路,很容易受到静电攻击而损坏,因此在焊接时动作一定要快,时间过长一则容易使铜皮脱落,再则容易损坏器件。先将两只三极管及相关的电阻焊好,最后再焊音乐集成电路。在焊音乐电路时,先用剪下来的电阻引脚将音乐片上标有B、E处及电源正端引出,然后再焊到线路板上。焊好后的音乐芯片见图4。这部分元件焊好后,进行音乐电路部分的调试。先不接喇叭,用一导线一端接地,另一端碰20脚插座的第11脚,此时用万用表测量CW1两端电压,正常应在3.4到3.65V间。若电压不正常,查看9012三极管有没有焊反,相应的元件是否有虚焊。正常后,断电,接上喇叭。再次上电,用同样的方法进行测试,应听到喇叭发出音乐声。若只听到吱、吱、吱的声音,说明音乐片损坏,换一完好的音乐芯片即可。4、 整机调试将烧录好程序的AT89C2051芯片插上(我们提供的芯片中已烧录好程序),注意方向不要插错(反插容易损坏芯片),芯片上有一个小三角的标记处为1脚。


    注意事项

    本文(基于MCS51单片机的四路抢答器Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开