标题: 四路抢答器 [打印本页]

作者: 564654654    时间: 2017-7-22 08:27
标题: 四路抢答器
#include <REGX51.H>
#define uint  unsigned int
#define uchar unsigned char
#define P P0
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 led1 = P3^0;
sbit led2 = P3^1;
sbit led3 = P3^2;
sbit led4 = P3^3;
sbit wei1 = P2^0;
sbit wei2 = P2^1;
sbit beep1 = P2^3;
uint i = 30,j = 0,k = 0,counter = 0;
uchar code shuzu[]={                //共阴极数码管
        0x3F,0x06,0x5B,0x4F,
//  0    1    2    3
        0x66,0x6D,0x7D,0x07,
//  4    5    6    7       
        0x7F,0x6F};
//  8    9

//uchar code shuzu[]={0xc0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
void delayms(uint x)
{
        uint i,j;
        for(i = x;i > 0;i--)
                for(j = 110;j > 0;j--);
}
void display()
{
        wei1 = 0;        wei2 = 1;
        P = shuzu[i/10];
        delayms(10);        P = 0x00;

        wei1 = 1;        wei2 = 0;
        P = shuzu[i%10];
        delayms(10);        P = 0x00;
}
void beep()
{
        beep1 = !beep1;
        delayms(100);
        beep1 = !beep1;
        delayms(100);
        beep1 = !beep1;
        delayms(100);
        beep1 = !beep1;
        delayms(100);
        beep1 = !beep1;
        delayms(100);
        beep1 = !beep1;
        delayms(100);
}
void key()
{
        if(key1 == 0)
        {
                delayms(10);
                if(key1 == 0)
                {
                        TR0 = !TR0;
                        while(!key1);
                }
        }
        if(key2 == 0&&j == 0)
        {
                delayms(10);
                if(key2 == 0)
                {
                        j++;        k++;
                        led1 = 0;
                        beep();
                        while(!key2);
                }
        }
        if(key3 == 0&&j == 0)
        {
                delayms(10);
                if(key3 == 0)
                {
                        j++;        k++;
                        led2 = 0;
                        beep();
                        while(!key3);
                }
        }
        if(key4 == 0&&j == 0)
        {
                delayms(10);
                if(key4 == 0)
                {
                        j++;        k++;
                        led3 = 0;
                        beep();
                        while(!key4);
                }
        }
        if(key5 == 0&&j == 0)
        {
                delayms(10);
                if(key5 == 0)
                {
                        j++;        k++;
                        led4 = 0;
                        beep();
                        while(!key5);
                }
        }
        if(key6 == 0)
        {
                delayms(10);
                if(key6 == 0)
                {
                        P1 = 0xff;
                        beep1 = 0;
                        led1 = led2 = led3 = led4 = 1;
                        i = 30;
                        j = k = 0;
                        TR0 = 0;
                        while(!key6);
                }
        }
}
void main()
{
        P1 = 0xff;
        beep1 = 1;
        led1 = led2 = led3 = led4 = 1;
        TMOD = 0X01;
        TH0 = (65536 - 50000)/256;
        TL0 = (65536 - 50000)%256;
        EA  = 1;
        ET0 = 1;
        while(1)
        {
                display();
                key();
        }
}
void Timer0(void) interrupt 1
{
        TH0 = (65536 - 50000)/256;
        TL0 = (65536 - 50000)%256;
        counter++;
        if(counter%20 == 0)
        {
                i--;
                if(k == 1)
                {
                        k++;
                        i = 10;
                }
                if(i == 0)
                        TR0 = 0;
        }
}



应该很简单,看着玩玩吧

QQ图片20170722082404.png (6.41 KB, 下载次数: 131)

QQ图片20170722082404.png

作者: WEI电子    时间: 2017-12-26 09:56
你好,你可以解释一下你的按钮键吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1