欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

八路抢答器设计

程序员文章站 2022-06-09 11:18:56
...

随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。本文设计出以STC89C52RC单片机为核心的八路抢答器。

所需元器件如下:
STC89C52RC芯片 *1
10K电阻 *1
200Ω电阻 *7
10uF 电解电容 *1
22pF 瓷片电容 *2
12MHz晶振 *1
按键 *10
单位7段数码管 *1
74LS08 *1
74LS21 *1

代码如下:

#include<reg52.h>
#define uint unsigned int
#define uchar signed char
sbit kai_key=P3^7;   //定义裁判开始按键
void delay(uint x)   //延时函数
{
	uchar i;
	while(x--)
	{
		for(i=0;i<120;i++);
	}
}

void main()    //主函数
{
	IT0=1;       //设置外部中断0边沿触发方式
	EX0=1;       //设置中断允许位
	P1=0xff;     //P1端口各位写“1”
	P0=0x76;     //初始化数码管,显示字型“H”
	while(1)
	{
		if(kai_key==0) //判断裁判开始键是否按下
		{
			delay(50);    //延时去抖
			if(kai_key==0)//判断裁判开始键是否按下
			{
				while(kai_key==0)//等待按键松开
				EA=1;     //开外部中断
				P0=0x3f;   //数码管显示“0”
			}
		}
	}
}
void qdq_int0(void)interrupt 0 using 1
{
	uchar key;
	EA=0;         //关外部中断
	key=(P1&0xff);  //读取按键
	switch(key)  //根据键值显示相应键号
	{
		case 0xfe: P0=0x06;break;
		case 0xfd: P0=0x5b;break;
		case 0xfb: P0=0x4f;break;
		case 0xf7: P0=0x66;break;
		case 0xef: P0=0x6d;break;
		case 0xdf: P0=0x7d;break;
		case 0xbf: P0=0x07;break;
		case 0x7f: P0=0x7f;break;
	}
}

仿真电路图如下:

八路抢答器设计

相关标签: 单片机设计