- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Company Logo LOGO 指导教师:耿文波 四路抢答器设计 专业:07级电子信息工程 学生:朱鹏伟,王正伟,王道杰,李文涛,苏方铸 背景:在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。若在抢答中,只靠人的视觉(或者是听觉)是很难判断出哪一组(或哪一个选手)先抢答到题的。利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。本文主要介绍了抢答器的工作原理及设计,以及它的实际用途。 背景 意义:本系统采用单片机作为整个控制核心。控制系统的四个模块为:显示模块、存储模块、语音模块、抢答开关模块。该系统通过开关电路四个按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。系统工作原理本系统采用89c52单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路四个按键输入抢答信号; 利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理, 输出控制信号,单片机控制的智能抢答器设计。 意义 硬件结构 软件设计 初始化部分 Kz= =0 启动中断,数码管开始计时 若有选手抢答 中断停止,数码管显示选手的标号及所用的时间 结束 开始 N Y Y N 软件设计 抢答器定时器中断流程图 定时器0中断 1秒时间到? 中断返回 N 秒加1 数码管显示秒值 Y 软件设计 外部中断程序图 外部中断0中断 K0键按下 K1键按下 K3键按下 K2键按下 中断返回 与K0键对应的发光二极管亮及数码管显示 与K1键对应的发光二极管亮及数码管显示 与K3键对应的发光二极管亮及数码管显示 与K2键对应的发光二极管亮及数码管显示 Y Y Y Y N N N N 软件设计 #includereg52.h sbit k0=P1^0; sbit k1=P1^1; sbit k2=P1^2; sbit k3=P1^3; sbit d0=P1^4; sbit d1=P1^5; sbit d2=P1^6; sbit d3=P1^7; sbit B0=P3^7; sbit l0=P2^0; sbit l1=P2^2; 软件设计 sbit l2=P2^3; sbit l3=P2^4; sbit kz=P3^0; unsigned char qiangdanum=0x3f; unsigned char code table[]={0x3f,0xxx,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char ge=0,shi=0; unsigned int num=0,time=0; void display(); /*显示函数*/ void delay(unsigned int); 软件设计 main() {TMOD=0X01; /*采用方式一,即十六位计数器*/ TH0=(65536-50000)/256; /*设置初始值*/ TL0=(65536-50000)%256; IT0=0; EA=1; ET0=1; /*开启总中断源*/ EX0=1; /*启动外部中断0*/ {while(1) { display(); if(kz==0) TR0=1; 软件设计 if(num==20) { num=0; time++; if(time==60) /*60秒的计时*/ time=0; } } } } void exter0() interrupt 0 /*外部中断程序*/ {EA=0; l0=0; 软件设计 if(k0==0)
文档评论(0)