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

標題: 電子時鐘51單片機 [打印本頁]

作者: 860329550    時間: 2017-4-28 10:26
標題: 電子時鐘51單片機
#include<reg51.h>
#include<intrins.h>

#define GPIO_KEY P1
#define SEG P0
#define LED P2


/*138譯碼器位選數碼管*/
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit Beep=P1^5;

typedef unsigned int uint;
typedef unsigned char uchar;

uchar code segduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shi=23,fen=59,miao=50;
uchar KeyValue;
bit flag;
uchar jishu=0;
void delay(uint us)
{
        while(us--);
}

void KeyDown()
{
       
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
        {
                delay(100);//延時10ms進行消抖
                if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
                {       
                        //測試列
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //測試行
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
                        {
                                delay(1000);
                                a++;
                        }
                }
        }
}



void weixuan(uchar se,uint ne)
{
        switch(se)
        {          
                /*1-8位數碼管位選*/
                case 0:LSC=0;LSB=0;LSA=0;break;
                case 1:LSC=0;LSB=0;LSA=1;break;
                case 2:LSC=0;LSB=1;LSA=0;break;
                case 3:LSC=0;LSB=1;LSA=1;break;
                case 4:LSC=1;LSB=0;LSA=0;break;
                case 5:LSC=1;LSB=0;LSA=1;break;
                case 6:LSC=1;LSB=1;LSA=0;break;
                case 7:LSC=1;LSB=1;LSA=1;break;
        }
        SEG = segduan[ne];
        delay(5);
        SEG = 0x00;

}

void dpDisplay()
{
         LSC=0;LSB=1;LSA=0;//case2:
         SEG = 0x40;
         delay(5);
         SEG = 0x00;
         LSC=1;LSB=0;LSA=1;//case5:
         SEG = 0x40;
         delay(5);
         SEG = 0x00;
         
}


void miaoDisplay(uchar num)
{
        uchar n;
        n=num%10;
        weixuan(0,n);
        n=num/10;
        weixuan(1,n);
}

void fenDisplay(uchar num)
{
        uchar n;
        n=num%10;
        weixuan(3,n);
        n=num/10;
        weixuan(4,n);
}

void shiDisplay(uchar num)
{
        uchar n;
        n=num%10;
        weixuan(6,n);
        n=num/10;
        weixuan(7,n);
}

void Timer0_set()
{
        TMOD = 0x01;
        TH0=0x4b;
        TL0=0xfc;
        TR0=1;
}

void main()
{
        void seg1();
        void seg01();
        void seg02();
        void fx4();
        LED = 0xff;
        Timer0_set();       
        while(1)
        {
                KeyValue = 0;
                KeyDown();
                switch(KeyValue)
                {
                   case 2:flag=0;break;
                   case 6:flag=1;break;
                   case 10:shi=23;fen=59;miao=50;break;
                   case 14:shi=0;fen=0;miao=10;break;
                   default:break;
                }
                seg1();       
         
        };
       
}

void seg1()
{
                if(flag==0)
                        seg01();
                if(flag==1)
                        seg02();
                miaoDisplay(miao);
                dpDisplay();               
                fenDisplay(fen);
                shiDisplay(shi);
                fx4();
               
}

void seg01()
{
                   if(TF0==1)
                {        TH0=0x4b;
                        TL0=0xfc;
                        TF0=0;
                        jishu++;
                };
               
                if(jishu==20)
                {
                        jishu=0;
                        miao++;
                };
                if(miao==60)
                {
                        miao=0;
                        if(fen!=59)
                                fen++;
                        if(fen==59)
                        {
                                 fen=0;
                                if(shi!=23)
                                        shi++;
                                if(shi==23)
                                        shi=0;
                        }                       
                };         
       
}

void seg02()
{
                if(TF0==1)
                {        TH0=0x4b;
                        TL0=0xfc;
                        TF0=0;
                        jishu++;
                };
               
                if(jishu==20)
                {
                        jishu=0;
                        miao--;
                };
                if(miao==0)
                {
                        miao=59;
                        if(fen !=0)
                                fen--;
                        if(fen==0)
                        {
                                 fen = 59;
                                if(shi !=0)
                                        shi--;
                                if(shi==0)
                                        shi=23;
                        }                       
                };         

               
}

void fx4()
{
        if(shi==0 && fen==0)
        {
                if(miao<=3)               
                {
                        LED = 0x03;                         
                         Beep=~Beep;
                        delay(5);                         
                }
                else       
                        LED = 0xff;
        }
}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线观看国产精品一区二区 | 日韩国产欧美在线观看 | 男女免费观看在线爽爽爽视频 | 一区二区免费视频 | 黄色在线网站 | 欧美精品一二三区 | 成人免费大片黄在线播放 | 国产在线拍偷自揄拍视频 | 天天欧美 | 麻豆国产一区二区三区四区 | 四虎成人精品永久免费av九九 | 天天看天天操 | www操操 | 久久久久国产精品午夜一区 | 亚洲视频区 | 男女污网站 | 国产一区二区三区 | 日韩视频专区 | 国产日韩欧美在线播放 | av在线黄 | 国产91中文 | h视频在线免费 | 天天插天天搞 | 欧美视频三区 | 亚洲一区二区中文字幕 | 日韩一级黄色片 | 欧美日韩精品在线免费观看 | 午夜一区 | 国产一区二区三区视频 | 国产精品九九视频 | 欧美嘿咻 | 日韩有码在线观看 | av网站免费| 国产伊人精品 | 欧美区在线 | 性高湖久久久久久久久aaaaa | 久久精品99 | 青青久久av北条麻妃海外网 | 日韩视频免费 | 在线观看国产www | 2021狠狠干|