久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4552|回復: 1
收起左側

51單片機籃球計分器程序

[復制鏈接]
ID:145308 發表于 2016-10-31 11:52 | 顯示全部樓層 |閱讀模式
#include<reg52.h>

#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar secs = 0;
uchar minutes = 1;
uchar LED,num1,num2,num = 4;
uchar  flag1 = 1,flag2 = 0;
uchar m_secs = 24;
uchar key_value = 0;
uchar table[13] = {1,2,3,4,5,6,7,8,9,0,1,2,3};
uchar code LedNum[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar scan_kay(void);
void delay(uchar z);
void INT0_Initial(void)
{
    EX0 = 1;
    IT0 = 1;
    EA = 1;
    P1 = 0xF0;
}

void INT0_Interrupt(void) interrupt 0
{
    uchar temp;
    temp = scan_kay();
    if(temp!=0x7f)
    {
        key_value = temp;
    }
    P1 = 0xF0;
}

void Time0_Initial(void)
{
    TMOD = 0x01;
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    ET0 = 1;
    TR0 = 1;
    EA = 1;
    PT0 = 1;
    PX0 = 0;
}

volatile uchar cnt = 0;
void Time0_Interrupt(void) interrupt 1
{
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    cnt ++;
minutes=11;
    if(cnt==15)
    {
        cnt = 0;
        secs --;
        m_secs --;
        if(flag2==1)
        {
            LED = !LED;
        }
        if(flag2==0)
        {
            LED = 0;
        }
    }
    if(secs>60)
    {
        secs = 59;
        minutes --;
    }
    if(m_secs>24)
    {
        m_secs = 23;
        if(flag1==1)
        {
            flag2 = 1;
        }
        if(flag1==0)
        {
            flag2 = 0;
        }
    }
    if(minutes>60)
    {
        minutes = 11;
        m_secs = 24;
        num ++;
    }
    if(num==4)
    {
        num = 1;
    }
}
void HEXTOBCD(void)
{
    table[0] = LedNum[num];
    table[1] = LedNum[m_secs/10];
    table[2] = LedNum[m_secs%10];
    table[3] = LedNum[minutes/10];
    table[4] = LedNum[minutes%10];
    table[5] = LedNum[secs/10];
    table[6] = LedNum[secs%10];
    table[7] = LedNum[num1/100];
    table[8] = LedNum[num1%100/10];
    table[9] = LedNum[num1%10];
    table[10] = LedNum[num2/100];
    table[11] = LedNum[num2%100/10];
    table[12] = LedNum[num2%10];
}

void Display(uchar *str)
{
    uchar i,temp = 0;
    for(i=0;i<13;i++)
    {
        P0 = 0x00;
        _nop_();
        P2 = temp+i;
        P0 = str[i];
        delay(2);
    }
}
uchar i,j;
void delay(uchar z)
{
for(i=1;i<z;i++)
  for(j=1;j<110;j++);
}

void main()
{
    INT0_Initial();
    Time0_Initial();
    delay(10);
    LED = 0;
    while(1)
    {
        switch(key_value)
     {
            case 12:
      {
                num1 ++;key_value = 0;
                flag1 = 0;
                if(num1>255)
          {
                 num1 = 0;
          }
             break;
      }
            case 13:
      {
                num1 --;key_value = 0;
                flag1 = 0;
                if(num1>255)
          {
                 num1 = 255;
          }
             break;
      }
            case 14:
      {
                num2 ++;key_value = 0;
                flag1 = 0;
                if(num2>255)
          {
                 num2 = 0;
          }
             break;
      }
            case 15:
      {
                num2 --;key_value = 0;
                flag1 = 0;
                if(num2>255)
          {
                 num2 = 255;
          }
             break;
      }
            case 1:
      {
             TR0 = 1;
                key_value = 0;
             break;
      }
            case 2:
      {
                num1 = 0;num2 = 0;
             num = 4;
                secs = 0;minutes = 12;
                m_secs = 24;
                key_value = 0;
             TR0 = 1;
             break;
      }
            case 3:
      {
             TR0 = 0;
                key_value = 0;
             break;
      }
            default:
      {
             break;
      }
     }
        HEXTOBCD();
        delay(5);
        Display(table);
        delay(10);
    }
}
uchar scan_key(void)
{
    uchar i,key_value;
    P1 = 0xFF;
    for(i=0;i<4;i++)
    {
        P1 = ~(1<<i);
        key_value = P1&0xF0;
        if(key_value!=0xF0)
        {
            delay(20);
            key_value = P1&0xF0;
            if(key_value!=0xF0)
         {
                key_value &= 0xF0;
                switch(key_value)
             {
                    case 0x70: key_value = 15-(3-i)*4;break;
                    case 0xb0: key_value = 14-(3-i)*4;break;
                    case 0xd0: key_value = 13-(3-i)*4;break;
                    case 0xe0: key_value = 12-(3-i)*4;break;
                    default: key_value = 0x7f;
             }
                return key_value;
         }
        }
        P1 = 0xFF;
    }
    return 0x7f;
}

uchar scan_kay(void)
{
    uchar key_va1,key_va2;
    key_va1 = scan_key();
    if(key_va1==0x7f)
    {
        return 0x7f;
    }
    do
    {
        key_va2 = scan_key();
    }while(key_va1==key_va2);
    return key_va1;
}

回復

使用道具 舉報

ID:94489 發表于 2016-11-1 19:59 | 顯示全部樓層
學習學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线观看网站 | 操到爽 | 欧美一级特黄aaa大片在线观看 | 国产区久久| 中文字幕在线一区二区三区 | 三级欧美 | 91精品一区二区三区久久久久 | 免费观看黄色一级片 | 久久婷婷香蕉热狠狠综合 | 国产亚洲精品精品国产亚洲综合 | 欧美一区二区三区视频在线观看 | 欧美理论片在线观看 | 99久久免费观看 | 久久久tv| www.伊人.com | 91久久久久久 | 欧美福利在线 | 午夜免费看| 天天插天天操 | 日韩中文字幕在线视频 | 日韩视频精品 | 91在线视频播放 | 中文字幕在线免费视频 | 国产精品一区二区视频 | 久久精品二区亚洲w码 | 成人精品一区 | 一区二区三区成人 | 日韩伦理电影免费在线观看 | 正在播放国产精品 | 日韩中文字幕网 | 麻豆国产一区二区三区四区 | 欧美一区二区 | 亚洲精品久久久久中文字幕二区 | 亚洲精品黄色 | 日本在线精品视频 | 色综合99| 日韩av免费在线观看 | 国产在线观看免费 | 在线观看国产h | 欧美日韩国产在线观看 | 久久久久久毛片免费观看 |