找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2073|回复: 1
收起左侧

四路抢答器

[复制链接]
ID:212343 发表于 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

评分

参与人数 1黑币 +8 收起 理由
wuli韬韬 + 8 淡定

查看全部评分

回复

使用道具 举报

ID:266910 发表于 2017-12-26 09:56 | 显示全部楼层
你好,你可以解释一下你的按钮键吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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