⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 四路抢答器程序.txt

📁 基于单片机控制的4路抢答器程序
💻 TXT
字号:
#include<reg51.h>
#define uchar unsigned char 
#define uint unsigned int
sbit P2_0=P2^0;//扬声器输出
sbit P2_2=P2^2;//主持人开关控制
uchar GroupNo;
uchar code Seg7code[9]={0x3f,0x06,0x5b,0x4f,0x66};//0到4的代码

void delay1ms(void)//延迟 
{uchar i;
 for(i=250;i>0;i--);
}

void ShowG(uchar no)//显示出第几个人按下按键
{P1=Seg7code[no];}

uchar KeySweep(void)//键盘扫描,获取组数
{uchar temp,no=0;
 if(P3!=0x00)
  {delay1ms();
   if(P3!=0x00)
    temp=P3;
  }
 while(temp!=0)
  {temp=temp>>1;//扫描右移
   no++;
  }
 return no;//返回第几个按键按下
}

void timer0_isr(void) interrupt 1//t0中断
{TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 P2_0=~P2_0;
}
void main()//主函数部分
{TMOD=0x02;//设置TMOD的工作方式  工作在定时器方式2
 TH0=(65536-50000)/256;//预置计数初值
 TL0=(65536-50000)%256;
 ET0=1;
 TR0=1;
 while(1)
 {P3=0x00;
  ShowG(0);//没有按键按下时数码管显示0
  while(P3==0x00);
  GroupNo=KeySweep();//调用键盘扫描函数
  ShowG(GroupNo);//调用显示函数
  EA=1;//进入中断服务程序
  while(P2_2==1);
  delay1ms();
  while(P2_2==1);//主持人开关清零
  EA=0;
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -