课程设计---8路抢答器设计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
需求分析: 本设计要求完成8路抢答器设计,控制8个知识竞赛的抢答按钮,控制用数字显示抢到的台,抢答台上用LED显示抢到/未抢到,手动复位,等功能,我们采用89S52单片机做为主控CPU,外接一个7段共阴极数码管来显示抢到的台,接8个LED来显示是否抢到台,8个按键用来抢答,用单片机的复位脚来直接控制复位。此设计关键问题是判断是哪个强到的台,抢到台以后其他选手在复位前抢答无效。我们在这设计时采用循环等待判断的方法,可以使软件设计简单,复位我们也采用单片机的复位脚来控制,可以近一步简化软件设计。 总体方案设计 硬件总体框图: 软件结构图: 3. 详细设计 1)Protel电路原理图: 总图: 按键电路: 8个独立按键连接到P1脚,平时没按下时为P1脚为高电平,一旦有按键按下,P1脚的P1.0—P1.7就会有相应的引脚被拉底。此时软件就可以检测判断是那个按键按下。 数码管显示电路: 为了显示抢答到的选手好,设计中采用了一个共阴极数码管接到P0,因为P0为开漏的,所以加了一个排阻进行拉高,电路如下: LED显示: 为了让选手知道自己抢到或未抢到,设计中在P2口连接了8个LED,平时P2口为高电平,LED熄灭,当有选手按键后,软件设计让相应的LED点亮,电路如下: 复位电路: 复位电路采用了单片机的复位端,这样设计可以简化软件的量,使程序更加简洁化。 元件清单: Part Type Designator Footprint 1K R9 10K RES 12.000MHZ Y1 22u C1 30p C2 30p C3 80C52 U1 DIP-40 470 R5 470 R4 470 R7 470 R6 470 R3 470 R8 470 R1 470 R2 DPY_7-SEG_DP DS1 LED LED4 LED LED1 LED LED2 LED LED3 LED LED6 LED LED8 LED LED5 LED LED7 SW-PB Reset 软件流程图: 程序清单: /********************************************************************************************************** ** Copyright(c) 2007 贵州大学 ** 文件描述: 8路抢答器 ** 当前版本:V1.0 ** 作 者: 彭凌华 ** 完成时间:2007/12/1 ** 适应芯片: * 89c52 ********************************************************************************************************/ #include AT89X52.H #define uchar unsigned char #define uint unsigned int code unsigned char ledmap[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 }; //数码管显示值 void main(void) { uchar Key; while ( P1==0xff);//等待按键 Key=P1; switch(Key) { case 0xfe: P0=ledmap[0];P2^0=0;break; //按键1 case 0xfd: P0=ledmap[1];P2^1=0;break; //按键2 case 0xfb: P0=ledmap[2];P2^2=0;break; //按键3 case 0xf7: P0=ledmap[3];P2^3=0;break; //按键4 case 0xef: P0=ledmap[4];P2^4=0;break; //按键5 case 0xdf: P0=ledmap[5];P2^5=0;break; //按键6 case 0xbf: P0=ledmap[6];P2^6=0;break; //按键7 case 0x7f: P0=ledmap[7];P2^7=0;break; //按键8 default:break; } while(1); //等待复位 } 元件布局图:

文档评论(0)

li455504605 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档