按键与静态数码管

#include<reg51.h>
#include<intrins.h>

#define GPIO_LED P2                  //将P2口另外取名为GPIO_LED
#define GPIO_KEY P0

void Delay10ms(unsigned int);           //误差 0us

/*******************************************************************************
* 函数名           : main
* 函数功能         : 主函数
* 输入             : 无
* 输出              : 无
*******************************************************************************/

unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
void main(void)
{
    //unsigned char n;
    int i,j;
    j=~DIG_CODE[0];
    
    while(1)
    {
        GPIO_LED = j;
        if(GPIO_KEY!=0xFF)
        {
            Delay10ms(1);
            if(GPIO_KEY==0xFE)//1111 1110
            {
                j=~DIG_CODE[1];
            }    
            if(GPIO_KEY==0xFD)//1111 1101
            {
                j=~DIG_CODE[2];
            }
            if(GPIO_KEY==0xFB)//1111 1011
            {
                j=~DIG_CODE[3];
            }
            if(GPIO_KEY==0xF7)//1111 0111
            {
                j=~DIG_CODE[4];
            }                
            if(GPIO_KEY==0xEF)//1110 1111
            {
                j=~DIG_CODE[5];
            }
            if(GPIO_KEY==0xDF)//1101 1111
            {
                j=~DIG_CODE[6];
            }
            if(GPIO_KEY==0xBF)//1011 1111
            {
                j=~DIG_CODE[7];
            }
            if(GPIO_KEY==0x7F)//0111 1111
            {
                j=~DIG_CODE[8];
            }
            while((i<50)&&(GPIO_KEY!=0xFF))     //检测按键是否松开
            {
                Delay10ms(1);
                i++;
            }
            i=0;
        }
    }    
}
/*******************************************************************************
* 函数名         : Delay10ms
* 函数功能           : 延时函数,延时10ms
* 输入           : 无
* 输出              : 无
*******************************************************************************/
void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

 

posted @ 2013-11-30 00:02  何长春  阅读(363)  评论(0编辑  收藏  举报