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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5805|回復: 2
收起左側

基于51單片機電子時鐘的實現

[復制鏈接]
ID:302179 發表于 2018-4-4 20:48 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit we = P2^7;
sbit du = P2^6;
sbit k1= P3^0 ;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
uchar code leddata[]={

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"  
                0x40,  //"-"
                0x00,  //熄滅               
                         };

void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}
void main()
{
                  uchar a;
                uchar sec,min,hour;
                uint year=2016;
                uint mou=12;
                uint day=9;       
                uint Yqian,Ybai,Yshi,Yge,Mshi,Mge,Dshi,Dge;
                uint shi1,ge1,shi2,ge2,shi3,ge3;
                TR0 = 1;       
                TMOD = 0x01;
                TH0 = (65535-5000)/0xff;
                TL0 = (65535-5000)%0xff;//0x4bfc        定時50ms               
                while(1)
                {
                        if(TF0 == 1)
                        {
                                TH0 = (65535-5000)/0xff;
                        TL0 = (65535-5000)%0xff;
                                TF0 = 0;
                                a++;
                        }
                        if(a == 40)
                        {       
                            sec++;
                            a = 0;                               
                        }
                        if(sec==60)
                        {
                            min++;
                            sec=0;       
                        }
                        if(min==60)
                        {
                            hour++;
                            min=0;
                        }       
                        if(hour==60)
                        {
                            hour=0;
                                hour++;
                        }
                        if(hour==24)
                        {
                                day++;
                                hour=0;        
                        }
                        if(day==31)
                        {
                                 mou++;
                                day=0;
                        }
                        if(mou==13)
                        {
                                year++;
                                mou=0;
                        }       
                     shi1=hour%10;
                         ge1=hour/10;
                        shi2=min%10;
                        ge2=min/10;
                        shi3=sec%10;
                        ge3=sec/10;

                        P0 = 0xff;
                        we = 1;
                        P0 = 0xbf;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[ge3];
                        du = 0;       
                        delay(3);            //

                        P0 = 0xff;
                        we = 1;
                        P0 = 0x7f;
                        we = 0;
                               
                        du = 1;       
                        P0 = leddata[shi3];
                        du = 0;       
                        delay(3);            //
                         
                        P0 = 0xff;
                        we = 1;
                        P0 = 0xdf;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[10];
                        du = 0;       
                        delay(3);            //

                        P0 = 0xff;
                        we = 1;
                        P0 = 0xfb;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[10];
                        du = 0;       
                        delay(3);            //
       
                        P0 = 0xff;
                        we = 1;       
                        P0 = 0xef;
                        we = 0;
                                       
                        du = 1;
                        P0 = leddata[shi2];
                        du = 0;       
                        delay(3);            //
                          
                        P0 = 0xff;
                        we = 1;       
                        P0 = 0xf7;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[ge2];
                        du = 0;       
                        delay(3);            //

                            P0 = 0xff;
                        we = 1;       
                        P0 = 0xfd;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[shi1];
                        du = 0;       
                        delay(3);           //

                            P0 = 0xff;
                        we = 1;       
                        P0 = 0xfe;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[ge1];
                        du = 0;       
                        delay(3);
                if(k1==0)               
                {       
                  delay(1000);   //消除抖動 一般大約10ms
                  if(k1==0)         //再次判斷按鍵是否按下
                  {       
                   while(!k1)   //按鍵時顯示日期
                       {
                    Yqian=year/1000;
                        Ybai=year%1000/100;
                        Yshi=year%1000%100/10;
                        Yge=year%10;
                        Mshi=mou/10;
                        Mge=mou%10;
                        Dshi=day/10;
                        Dge=day%10;
               
                          P0 = 0xff;
                        we = 1;
                        P0 = 0xfe;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[Yqian];
                        du = 0;       
                        delay(3);            //

                        P0 = 0xff;
                        we = 1;
                        P0 = 0xfd;
                        we = 0;
                               
                        du = 1;       
                        P0 = leddata[Ybai];
                        du = 0;       
                        delay(3);            //
                         
                        P0 = 0xff;
                        we = 1;
                        P0 = 0xfb;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[Yshi];
                        du = 0;       
                        delay(3);            //

                        P0 = 0xff;
                        we = 1;
                        P0 = 0xf7;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[Yge];
                        du = 0;       
                        delay(3);            //
       
                        P0 = 0xff;
                        we = 1;       
                        P0 = 0xef;
                        we = 0;
                                       
                        du = 1;
                        P0 = leddata[Mshi];
                        du = 0;       
                        delay(3);            //
                          
                        P0 = 0xff;
                        we = 1;       
                        P0 = 0xdf;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[Mge];
                        du = 0;       
                        delay(3);            //

                            P0 = 0xff;
                        we = 1;       
                        P0 = 0xbf;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[Dshi];
                        du = 0;       
                        delay(3);           //

                            P0 = 0xff;
                        we = 1;       
                        P0 = 0x7f;
                        we = 0;       
                               
                        du = 1;
                        P0 = leddata[Dge];
                        du = 0;       
                        delay(3);
                        }
                  }
                  while(!k1);         
            }
          if(k2==0)         
          {
            delay(1000);
                if(k2==0)
                {
                  while(!k2)
                  {
                     uchar i;
                         uchar sec2,Sshi,Sge;
                         Sshi=sec2/10;
                         Sge=sec2%10;
                     TR0 = 1;       
                     TMOD = 0x01;
                     TH0 = (65535-5000)/0xff;
                     TL0 = (65535-5000)%0xff;//0x4bfc        定時50ms       
                         if(TF0 == 1)
                        {
                          
                                TH0 = (65535-5000)/0xff;
                        TL0 = (65535-5000)%0xff;
                                TF0 = 0;
                                i++;
                        }
                        if(i== 160)
                        {       
                            sec2++;
                            i = 0;                               
                        }
                        if(sec2==60)
                        {
                            sec2=0;       
                        }
                        P0 = 0xff;
                        we = 1;
                        P0 = 0xbf;
                        we = 0;
                               
                        du = 1;
                        P0 = leddata[Sshi];
                        du = 0;       
                        delay(3);            //

                        P0 = 0xff;
                        we = 1;
                        P0 = 0x7f;
                        we = 0;
                               
                        du = 1;       
                        P0 = leddata[Sge];
                        du = 0;       
                        delay(3);            //
                         
                  }
                  while(!k2)  ;
                }
          }
          if(k3==0)
          {
            delay(1000);
                 if(k3==0)
                  {
                  while(!k3)
                    { TR0=0;
                          sec--;
                         while(!k3);}
                  }while(!k3);
          }
          if(k4==0)
          {
           delay(1000);
           if(k4==0)
           {
            TR0=1;
           }
          }     
        }

               
}

回復

使用道具 舉報

ID:441102 發表于 2018-12-23 12:44 | 顯示全部樓層
有沒有仿真圖?
回復

使用道具 舉報

ID:544367 發表于 2019-6-10 14:05 | 顯示全部樓層
大佬不帶仿真圖嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表