单片机六路抢答器C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机六路数显计时抢答器c语言程序#include
#define uint unsigned int
#define uchar unsigned char
unsigned char code
table[]={0xc0,0xf9,0xa4,
0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xc0};
sbit start=P3^6;
sbit reset=P3^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
sbit key6=P1^5;
sbit key7=P1^6;
sbit key8=P1^7;
sbit jia=P3^4;
sbit jian=P3^5;
bit action = 0;
uchar second=10,a[7]={0};
uchar timer0_count = 0;
uchar number=0;
uchar number_display = 0;
uchar k;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
void display(uchar number,uchar second) {
P2 = 0x01;
P0 = table[second];
delay(1);
P2 = 0x02;
P0 = table[number];
delay(1);
P2 = 0x04;
P0 = table[a[0]];
delay(1);
P2 = 0x08;
P0 = table[a[1]];
delay(1);
P2 = 0x10;
P0 = table[a[2]];
delay(1);
P2 = 0x20;
P0 = table[a[3]];
delay(1);
P2 = 0x40;
P0 = table[a[4]];
delay(1);
P2 = 0x80;
P0 = table[a[5]];
delay(1);
}
void start_keyscan()
{
void fengling();
while(start == 0)
{
key7=0;
display(number_display,second);
if(start == 1)
{
key7=1;
action = 1;
TR0 = 1;
}
}
}
uchar key_scan8()
{
if(key1 == 0)
{
delay(8);
if(key1 == 0)
{
number = 1;
number_display = number;
}
}
if(key2 == 0)
{
delay(8);
if(key2 == 0)
{
number = 2;
number_display = number;
}
}
if(key3 == 0)
{
delay(8);
if(key3 == 0)
{
number = 3;
number_display = number;
}
}
if(key4 == 0)
{
delay(8);
if(key4 == 0)
{
number = 4;
number_display = number;
}
}
if(key5 == 0)
{
delay(8);
if(key5 == 0)
{
number = 5;
number_display = number;
}
}
if(key6 == 0)
{
delay(8);
if(key6 == 0)
{
number = 6;
number_display = number;
}
}
if(number_display != 0)
{
return number_display;
}
else
{
return 0;
}
}
void reset_keyscan()
{
if(reset == 0)
{
delay(8);
if(reset == 0)
{
number_display = 0;
second=10;
}
}
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=0;
P2=0x00;
while(1)
{
reset_keyscan();
start_keyscan();
if(jia==0&&a[number-1]<9)
{
delay(10);
while(jia==0)
display(number_display,second);
a[number-1]=a[number-1]+1;
}
if(jian==0&&a[number-1]>0)
{
delay(10);
while (jian==0)