找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 839|回复: 0
打印 上一主题 下一主题
收起左侧

这是我初学做的时钟,可见附件还有码源如下

[复制链接]
跳转到指定楼层
楼主
#include"reg51.h"

#define  uint  unsigned int
sbit    key1=P1^0;
sbit    key2=P1^1;
sbit    key3=P1^2;
unsigned int addNum;
unsigned char Nums,Numm,Numh;  
#define SEGNUM P0
#define WEI    P2            
unsigned char code table[]={0x3f ,0x06 ,0x5b ,0x4f ,0x66 ,0x6d ,
                            0x7d ,0x07 ,0x7f ,0x6f ,0x77 ,0x7c ,
                                                        0x39 ,0x5e ,0x79 ,0x71 ,0x00};
void delay(unsigned int num)
          {
       unsigned i,j;
           for(i=num;i>0;i--)
            for(j=120;j>0;j--);
    }



void main()
        {
      TMOD=0X02;
          TL0=TH0=6;
          ET0=1;        //中断允许位
          EA=1;
          TR0=1;        //TR0置1,开启计时

      IT0=1;  //中断0的中断方式
          EX0=1;        //开通允许位
          IT1=1;        //中断方式
          EX1=1;
          TR0=1;          //启动

while(1)
{               
                if(!key1)
        {  
              delay(10) ;
              if(!key1)
              {
           Numh++;  while(!key1) ;
              }
            }

                if(!key2)
        {  
              delay(10) ;
              if(!key2)
              {
           Numm++;  while(!key2) ;
              }
            }

                if(!key3)
        {  
              delay(10) ;
              if(!key3)
              {
           Nums++;  while(!key3) ;
              }
            }

                WEI=0Xef;
                SEGNUM=table[Nums/10];  //对10取整
                delay(5);
             WEI=0Xdf;
                SEGNUM=table[Nums%10];
                delay(5);

            WEI=0xfb;
            SEGNUM=table[Numm/10];               
        delay(5);
        WEI=0xf7;
        SEGNUM=table[Numm%10];
            delay(5);
            if(Numm==60)
           {
                   Numm=0;
           }

       WEI=0xfe;
           SEGNUM=table[Numh/10];               
       delay(5);
       WEI=0xfd;
       SEGNUM=table[Numh%10];
           delay(5);
               
           }

}
void timer0() interrupt 1
{
    addNum++;
        if(addNum==4000)
        {
        Nums++;
        addNum=0;   
        }
        if(Nums==60)
        {
        Numm++;
        Nums=0;   
        }
       
        if(Numm==60)
        {
        Numh++;
        Numm=0;
         }
                  
        if(Numh==24)
        {
    Numh=0;   
    }
                  
}


HTWN6AHLBU_2Z5YQ`}VI67M.png (50.62 KB, 下载次数: 7)

HTWN6AHLBU_2Z5YQ`}VI67M.png

时钟.rar

59.71 KB, 下载次数: 5, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表