欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 九路搶答實驗課程設計 [打印本頁]

作者: mtl13479920110    時間: 2017-6-8 19:29
標題: 九路搶答實驗課程設計
#include <reg51.h>

/********定義按鍵引腳********/
sbit key_One = P2^3;
sbit key_Two = P2^2;
sbit key_Three = P2^1;
sbit key_Four = P2^0;

unsigned char code num[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //0~9數(shù)字的8421編碼
unsigned char code wei[] = {0x7f,0xbf,0xdf,0xef};  //數(shù)碼管位選編碼
char number = 0;  //要顯示的數(shù)字
unsigned char key_Buff;   //按鍵鍵值緩沖值

/********函數(shù)聲明********/
void delay(int z);
void display(int x);
char key_Scan();

void main()
{
    while(1)
    {
        key_Buff = key_Scan();     //將按鍵值存入緩沖區(qū)
        switch(key_Buff)   //判斷緩沖區(qū)的值
        {
            case 0: break;
            case 1: number++;    //按鍵1按下,number自加一并將按鍵
                    if(number >= 255)
                        number = 255;   //number值大于255不再自加
                    key_Buff = 0;  //按鍵值緩沖區(qū)清零,防止下次按鍵未按下還再次進入
                    break;   
            case 2: number--;
                    if(number <= 0)
                        number = 0;
                    key_Buff = 0;
                    break;
            case 3: break;
            case 4: break;
        }
        display(number);  //數(shù)碼管顯示
    }
}

/***************************************/
/**函數(shù)名: delay(z)
/**函數(shù)功能: 粗略延時
/**輸入?yún)?shù): z表示要延時的毫秒數(shù)
/**示例: delay(300) //粗略延時300毫秒
/***************************************/
void delay(int z)
{
    int x,y;

    for(x=z; x>0; x--)
        for(y=110; y>0; y--);
}

/***************************************/
/**函數(shù)名: display()
/**函數(shù)功能: 數(shù)碼管顯示函數(shù)
/**輸入?yún)?shù): x:要顯示的數(shù)
/**示例: display(1234); //顯示1234
/***************************************/
void display(int x)
{
    unsigned char ge, shi, bai, qian;

    /*************************/
    /**提取x的個十百千位
    /**‘/’為取模運算
    /**‘%’為求余運算
    /*************************/
    qian = x/1000 %10;  
    bai = x/100 %10;   
    shi = x/10 %10;     
    ge = x/1 %10;     

    P0 = ~num[qian];    //顯示千位
    P2 = wei[0];        //第0個數(shù)碼管顯示
    delay(2);           //延時2毫秒
    P0 = ~num[bai];     //顯示百位
    P2 = wei[1];
    delay(2);
    P0 = ~num[shi];     //顯示十位
    P2 = wei[2];
    delay(2);
    P0 = ~num[ge];      //顯示個位
    P2 = wei[3];
    delay(2);
    P0 = 0xff;          //數(shù)碼管消隱
}

/***************************************/
/**函數(shù)名: key_Scan()
/**函數(shù)功能: 按鍵掃描函數(shù)
/**輸入?yún)?shù): 無
/**返回參數(shù): 按鍵的鍵值
/**示例: key_Buff = key_Scan();
/***************************************/
char key_Scan()
{
    char key_Value = 0;  //按鍵鍵值,用于返回鍵值使用

    P2 = 0x0f;    //將按鍵引腳電平拉高

    if(key_One == 0)  //檢測按鍵1是否被按下
    {
        delay(10);    //延時消抖
        while(key_One == 0)   //按鍵1確定被按下
        {
            key_Value = 1;    //按鍵鍵值置1
            display(number);  //調(diào)用顯示函數(shù),防止按鍵一直被按下時數(shù)碼管不顯示
        }
    }
    if(key_Two == 0)   //按鍵2的檢測
    {
        delay(10);
        while(key_Two == 0)
        {
            key_Value = 2;
            display(number);
        }
    }
    if(key_Three == 0)
    {
        delay(10);
        while(key_Three == 0)
        {
            key_Value = 3;
            display(number);
        }
    }
    if(key_Four == 0)
    {
        delay(10);
        while(key_Four == 0)
        {
            key_Value = 4;
            display(number);
        }
    }
    return key_Value;  //返回鍵值
}







歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1