C51单片机四路抢答器
- 格式:doc
- 大小:259.98 KB
- 文档页数:11
目录一、摘要 (3)二、方案设计 (4)2.1、设计要求 (4)2.2、总体法案设计 (4)三、硬件电路设计 (5)3.1、元器件简介 (5)3.2、独立式按键电路 (7)3.3、时钟电路设计 (6)3.4、指示灯电路设计 (7)四、制作以调试 (8)4.1系统程序设计 (8)4.2主程序流程图主程序流程图 (8)4.3程序清单 (9)五、心得与体会 (11)六、参考文献 (12)一、摘要单片机作为一种工具,现在已经广泛的应用于智力和只是竞赛场合。
本次设计是基于单片机51系列的理论知识综合运用AT89C52单片机设计的简易四路抢答器。
利用AT89C52单片机的外围接口来实现抢答系统,利用单片机的定时器/计数器计数和定时的原理,将软、硬件有机的结合起来,使得系统能正确的记时,发光二极管能正常的闪烁。
同时系统能够实现:在抢答过程中只有在主持人按下开始抢答键开始之后抢答才有效,如果在开始抢答之前抢答视为无效。
在抢答成功之后发光二极管会变成闪烁状态与提示选手开始回答问题。
同时还有主持人控制的系统复位键,以实现系统的复位。
还有按键锁定,在一个选手抢答成功或者法规状态下其他按键无效。
通过这次的设计,对51系列的单片机的运用有了更深一层次的了解,也提高了我们的动手能力,加深我们对单片机的映像,为我们以后的学习打下一定的基础。
二、方案设计2.1、设计要求(1)、总共4个按键,四个供四个选手用作“抢答”操作。
(2)、用1个发光二极管用作开始抢答的指示灯,用4个发光二极管分别显示4个选手的抢答状态。
(3)、开始抢答后,哪个选手抢答键最先按下,该选手的抢答指示灯点亮,表示抢答成功,此时其他选手再按键为无效,抢答成功后开始3秒计时,到时指示灯变为闪烁,以提示选手选手抢答后必须3秒内回答问题。
2.2、总体法案设计方案:依据课题要求,基于AT89C52单片机制作的抢答器,其最大的好处就是处理快,准确性高、可靠性好、控制功能强。
采用51系列的单片机AT89C52作为控制中心,系统可以完成运算控制、信号的控制以及显示的功能。
选手通过按键开光作为输入信号完成输入信号的触发,主持人根据选手的输入信号准确的判断最先按下的选手且屏蔽其他的抢答信号,让选手作答。
使用外部中断方式来实现开始抢答,运用按键复位来实现系统的复位,其系统原理框图如下:图1系统原理框图三、 硬件电路设计3.1、元器件简介AT89C52单片机,低电压高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash 只读程序存储器和256 bytes 的随机存取数据存储器(RAM )。
无需扩展外部程序存储器。
如右图(2)其中:CVV :供电电压。
图2 AT89C52引脚图GND :接地。
P0口:P0口为一个8位漏级开路双向I/O 口,每脚可吸收8TTLAT89C52单片机选手按键抢答开光 选手抢答指示灯内部时钟电路门电流。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
P3口也可作为AT89C51的一些特殊功能口:P3.0 RXD(串行输入口);P3.1 TXD(串行输出口);P3.2 /INT0(外部中断0);P3.3 /INT1(外部中断1);P3.4 T0(记时器0外部输入);P3.5 T1(记时器1外部输入);P3.6 /WR(外部数据存储器写选通);P3.7 /RD(外部数据存储器读选通)。
RST:复位输入。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器,不管是否有内部程序存储器。
当/EA端保持高电平时,此间内部程序存储器。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.2、独立式按键电路如右图(图3)4个独立式按键K1—K4分别接在P3口的P3.0—P3.3另外一端接地。
当有一键按下时相应的口线的电平发生变化,单片机进行扫描确定哪个键按下。
图3 独立按键模块3.3时钟电路设计如右图(图4)示,为时钟电路,单片机必须在时钟驱动下才能正常的工作,在单片机内部有一时钟振荡电路,只需外接一个振荡源就可以一定的时钟信号送到各个单元,采用12MHz的晶振,其时钟周期为1/12us,电路中两个电容C1和C2的作用:一是帮组振荡器起振;二是对振荡器的频率进行微调,它们的值都为30PF。
图4时钟模块3.4指示灯电路设计图5 数码管模块上图(图5)为指示灯电路,采用共阳极的方式,为低电平是发光二级管亮,即发光二级管的正极接上500Ω的保护电阻在接到高电平,另外一端接到单片机的P0口的P0.0—P0.4,当其对应的按键按下时,相应的二极管就会被点亮。
四、软件实际4.1系统程序设计在抢答过程中,有多个信号输入主电路中,单片机内部的寄存器工作,并识别、记录第一个抢答的人,同时内部的定时器开始工作,记录有关的时间信号,在整个抢答过程中,显示电路还要根据现场的实际情况来相应的显示输入信号。
4.2主程序流程图主程序流程图如下:4.3程序清单#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit K1 = P3^0; sbit K2 = P3^1;sbit K3 = P3^2; sbit K4 = P3^3;//K1~K4分别对应S17~S20 sbit BEEP = P3^5; //蜂鸣器控制端口P35uchar temp;void beep(); //蜂鸣器void delay0(uchar x); //x*0.14MS/******************************************//* 延时子程序*//******************************************/void delay1(uchar x){ uchar j;while((x--)!=0){ for(j=0;j<125;j++){;}}}void delay(uint ms){uchar t;while(ms--){for(t = 0; t < 120; t++);}}void beep(){unsigned char i;for (i=0;i<100;i++){delay0(4);BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器delay1(250); //延时}void delay0(uchar x) //x*0.14MS{unsigned char i;while(x--){for (i = 0; i<13; i++) {}}}/******************************************/ /* 主程序*/ /******************************************/ main(){P0 = 0xff;P1 = 0xff;while(1){P0 = 0xc0; //显示“0”P1 = 0x01;P3 = 0xff; //置P3.0-3.3为输入状态_nop_();temp = P3;while(temp==0xff){temp = P3;temp=temp&0xff;}if(K1==0){ beep();P0 = 0xf9; //显示“1”delay(2000);}else if(K2==0){ beep();P0 = 0xa4; //显示“2”delay(2000);}else if(K3==0){ beep();P0 = 0xb0; //显示“3”delay(2000);}else if(K4==0){ beep();P0 = 0x99; //显示“4”delay(2000);}}}五、心得与体会为期两周的单片机实训就落下了帷幕,在这两个星期的实训中,不仅检验了我对所学知识的掌握程度,也培养了我如何去把握一件事情,如何去做一件事情,又如何去完成一件事情。
通过这次的设计,让我对单片机的知识又有了近一步的了解,让我在多方面都有了一定的提高。
通过这次设计,综合运用本专业所学习的课程的理论,设计工作的实际训练从而提高我们的独立的工作能力,巩固我们所学的知识,提高了我们我们的独立思考能力。
在设计的过程中,我遇上了许多的问题,但是我没有放弃,在不明白的地方,及时的查阅材料,问老师,问同学,顺利地编写程序,仿真,调试。
通过这次的实训在软件方面在进一步学习了汇编程序编译环境keil uVision2,在此、我感谢此次实训带我们的老师,还有那些在实训中帮助我的同学。
参考文献【1】、《单片机原理及接口技术》胡健机械工业出版社【2】、《51系列单片机》实验指导书杜礼霞应用技术学院11。