找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1708|回复: 0
打印 上一主题 下一主题
收起左侧

八路抢答器程序和图

[复制链接]
跳转到指定楼层
楼主
源程序
#include<reg52.h>
#define N 20
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsigned char int_time;
unsigned char second;
unsigned char num;
char flag1=0;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit B0=P3^6;
sbit KA=P3^0;
void delay(void)
{
int i;
for(i=0;i<3000;i++)
;
}
void DisplaySecond(unsigned char k)
{
P2=0xf7;
P0=Tab[k%10];
delay();
P0=0xff;
P2=0xfb;
P0=Tab[k/10];
delay();
P0=0xff;
P2=0xfd;
P0=Tab[10];
delay();
P0=0xff;
P2=0xfe;
P0=Tab[num];
delay();
P0=0xff;
}
void _reset()
{
while(1)
{
if(KA==0)
{
delay();
if(KA==0)
flag1=1;
}
if(flag1)
{
//flag1=0;
break;
}
}
}
void key()
{
if(K1==0)
{
delay();
if(K1==0)
{
//void _stop();
num=1;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K1);
_reset();
}
}
if(K2==0)
{
delay();
if(K2==0)
{
//void _stop();
num=2;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K2);
_reset();
}
}
if(K3==0)
{
delay();
if(K3==0)
{
num=3;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K3);
_reset();
}
}
if(K4==0)
{
delay();
if(K4==0)
{
num=4;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K4);
_reset();
}
}
if(K5==0)
{
delay();
if(K5==0)
{
num=5;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K5);
_reset();
}
}
if(K6==0)
{
delay();
if(K6==0)
{
num=6;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K6);
_reset();
}
}
if(K7==0)
{
delay();
if(K7==0)
{
num=7;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K7);
_reset();
}
}
if(K8==0)
{
delay();
if(K8==0)
{
num=8;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K8);
_reset();
}
}
}
void main(void)
{
while(1)
{
num=0;
TMOD=0x01;
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
EA=1;
ET0=1;
TR0=1;
int_time=0;
second=0;
while(1)
{
key();
DisplaySecond(N-second);
if(flag1){flag1=0;break;}
}
}
}
void interserve(void)interrupt 1 using 1
{
TR0=0;
int_time++;
if(int_time==20)
{
int_time=0;
second++;
if(second==N)
{
EA=0;
ET0=0;
TR0=0;
_reset();
return;
}
}
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
TR0=1;
}

51hei图片20201217215632.jpg (38.21 KB, 下载次数: 50)

连接图

连接图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表