原创 数字时钟

2009-3-26 19:56 2139 1 2 分类: MCU/ 嵌入式

1 实验任务 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1       开机时,显示120000的时间开始计时;


2       P0.0/AD0控制“秒”的调整,每按一次加1秒;


3       P0.1/AD1控制“分”的调整,每按一次加1分;


4       P0.2/AD2控制“时”的调整,每按一次加1个小时;



#include<reg51.h>
unsigned char code table1[]={0x3f,0x06,0x5b,0x4f,
                               0x66,0x6d,0x7d,0x07,
                               0x7f,0x6f};
unsigned char table2[]={0xfe,0xfd,0xfb,0xf7,
                             0xef,0xdf,0xbf,0x7f};
sbit a="P1"^0;
sbit b="P1"^1;
sbit c="P1"^2;
unsigned char t,z,k,n,m;
unsigned char s,h;
unsigned char second,minute,shi;
unsigned int i,d=500;
void delay(z)
{
  int i,j;
  for(i=0;i<z;i++)
  for(j=0;j<100;j++);
}
void uint()
{
  shi="12";
  TMOD="0x01";
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
 
  EA="1";
  ET0=1;
  TR0=1;
}
void display()
{
  P2=table2[4];
      P0=table1;
      delay(10);
      P2=table2[5];
      P0=table1[k];
       delay(10);
      P2=table2[2];
      P0=table1[m];
      delay(10);
      P2=table2[3];
      P0=table1[n];
       delay(10);
      P2=table2[0];
      P0=table1;
      delay(10);
      P2=table2[1];
      P0=table1[h];
       delay(10);
       }
void main()
{
  uint();
 while(1)
 {   
     if(a==0)
   {
     delay(100);
      if(a==0)
        {
         
          second++;
           i="second/10";
            k="second"%10;
          TR0=0;
          P2=table2[4];
          P0=table1;
            delay(100);
           P2=table2[5];
          P0=table1[k];
            delay(10);
         
        
         }
      
      
       while(a==0);
       TR0=1;
      if(second==60)
        {
          second="0";
          minute++;
            if(minute==60)
               minute="0";
        }
        }
      if(b==0)
      {
        delay(100);
        if(b==0)
          {
         
            minute++;
            m="minute/10";
            n="minute"%10;
            TR0=0;
            P2=table2[2];
            P0=table1[m];
            delay(100);
            P2=table2[3];
            P0=table1[n];
            delay(10);
         
        
         }
      
      
       while(b==0);
       TR0=1;
      if(minute==60)
        {
          minute="0";
           m="minute/10";
            n="minute"%10;
          shi++;
           if(shi==24)
             shi="0";
        }
        }
      if(c==0)
      {
        delay(100);
        if(c==0)
          {
         
            shi++;
            s="shi/10";
            h="shi"%10;
            TR0=0;
            P2=table2[0];
            P0=table1;
            delay(100);
            P2=table2[1];
            P0=table1[h];
            delay(10);
         
        
         }
      
      
       while(c==0);
       TR0=1;
      if(shi==24)
        {
          shi="0";
           s="shi/10";
            h="shi"%10;
         
        
        }
        }
       
     display();   
   
    
    }
  
  }
   void time0(void) interrupt 1 using 1
   {   
      TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      
    
       t++;
      if(t==20)
        {
          t="0";
           second++;
           if(second==60)
           {
             second="0";
             minute++;
             if(minute==60)
              {
                shi++;
                if(shi==24)
                  shi="0";
              }
          }
        }
        i="second/10";
        k="second"%10;
        m="minute/10";
        n="minute"%10;
        s="shi/10";
        h="shi"%10;
       }


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1457811 2009-3-26 20:15

支持一下,我以前也做过,一起加油!
相关推荐阅读
用户1501082 2009-04-20 15:16
LED点阵是怎么制作的?
引言 单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为...
用户1501082 2009-04-20 15:14
窜口驱动74LS165
串口驱动74LS165 //-------------------------------------库函数声明,管脚定义---------------------------------------...
用户1501082 2009-04-08 13:18
ds18b20
却衅鱀S18B20资料(转载)2009-03-12 18:41美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器,在其内部使用了在板(ON-B0...
用户1501082 2009-04-08 13:18
ds18b20
度传感器DS18B20资料(转载)2009-03-12 18:41美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器,在其内部使用了在板(ON-B...
用户1501082 2009-03-28 20:50
请高手帮帮忙哈
我这个程序应该没什么问题吧,为什么在仿真软件PROTUS上LCD1602显视不出来,但是有明显的数据输入信号,管脚上显示#include<reg52.h>#define uchar uns...
EE直播间
更多
我要评论
1
1
关闭 站长推荐上一条 /3 下一条