文档介绍:八路抢答器的设计
一、设计要求
(1)设计一个智力抢答器,可同时供8名选手或八个代表队参加比赛,他们的编号分别是1,2,3,4,5,6,7,8,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0,S1,S2,S3,S4,S5,S6,S7。
(2)节目主持人设置一个控制开关,用来控制系统的复位和抢答开始。
(3)抢答器具有数据锁存和显示功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器发出提示声音,此外封锁输入电路,禁止其他选手抢答。优先抢答的选手的编号一直保持到主持人将系统复位为止。
二、总体设计思路
本次设计采用T0外部中断来实现主持人的控制开关,用P0口输出选手的段码,用P2口来读取按键选手号,用P1口来点亮选手相应的发光二极管。
三、硬件设计
原理综述
单片机:使用了AT89C51单片机芯片控制电路。
显示电路:P0口输出选手段码,P1口点亮相应的发光二极管。
按键电路:P3^2管脚接一个开关来实现主持人的控制开关,通过P2口接的按键来读取选手号。
硬件框图
元器件清单
序号
名称
型号
1
单片机
AT89C51
2
数码管
7SEG-MP*1-CA
3
上拉电阻RN1
220
4
上拉电阻RP1
220
5
电阻R1
880
6
电阻R2
220
7
开关(10个)
BUTTON
8
晶振
12M
9
电容(C1、C2)
22pf
10
电容C3
1uf
11
三极管
PNP
12
扬声器
BUZZER
13
发光二极管(8个)
LED_BLUE
硬件原理图
硬件原理图
四、软件设计
程序流程图
主程序流程图
程序及注释
#include<> //
#define uchar unsigned char
#define uint unsigned int //数据类型的宏定义
uchar code seg7[9]={0xff,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80}; //7段数码管0-8断码
uchar act[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //低电平有效的位码
uchar num; //宏定义全局变量num
bit bdata start; //定义开始按键start
sbit bz=P3^3; //
//延时函数***********************************************************
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
{for(j=0;j<121;j++)