最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机 定时器实现24小时时钟程序

来源:动视网 责编:小OO 时间:2025-10-02 10:49:44
文档

单片机 定时器实现24小时时钟程序

#include#include#defineuintunsignedint#defineucharunsignedcharsbitLS138A=P2^2;//定义138译码器的输入A脚由P2.2控制sbitLS138B=P2^3;//定义138译码器的输入脚B由P2.3控制sbitLS138C=P2^4;//定义138译码器的输入脚C由sbitk1=P2^0;sbitk2=P2^1;sbitk3=P2^5;bitflag;ucharsec=0,min=0,hour=12;ucharcount
推荐度:
导读#include#include#defineuintunsignedint#defineucharunsignedcharsbitLS138A=P2^2;//定义138译码器的输入A脚由P2.2控制sbitLS138B=P2^3;//定义138译码器的输入脚B由P2.3控制sbitLS138C=P2^4;//定义138译码器的输入脚C由sbitk1=P2^0;sbitk2=P2^1;sbitk3=P2^5;bitflag;ucharsec=0,min=0,hour=12;ucharcount
#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit LS138A = P2^2;      //定义138译码器的输入A脚由P2.2控制 

sbit LS138B = P2^3;        //定义138译码器的输入脚B由P2.3控制

sbit LS138C = P2^4;     //定义138译码器的输入脚C由

sbit k1=P2^0;

sbit k2=P2^1 ;

sbit k3=P2^5;

bit flag;

uchar sec=0,min=0,hour=12;

uchar count_10ms, DelayCNT;

int m=1;

//此表为 LED 的字模, 共阴数码管 0-9  - 

unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; 

void delay(uint z)

{

int x,y;

for(x=z;x>0;x--)

for(y=20;y>0;y--) ;

void timer()

{

    TMOD=0x01;

    TH0=0xdc;TL0=0x00;

    EA=1;ET0=1;TR0=1;

}

void key()

{ int t;

if(k1==0)

{      

delay(30);

if(k1==0)

  { while(!k1);

    t++;

    m=t%2;

    }

}

}    

/************主函数**********************/ 

main()

{ unsigned int i ;

   unsigned int LedOut[10];

   timer();

  while(1)  //进入循环状态

  {     

      if(m==0)

      {    

          if(k2==0)

        {

        delay(30);

        if(k2==0)

        while(!k2);

        hour++;

        }

     if(hour>=24)

        hour=0;

        if(k3==0)

        { 

         delay(30);

         if(k3==0)

        

         while(!k3);

        min++; 

        }

     if(min>=60)

        min=0;

      }

     LedOut[0]=Disp_Tab[hour/10];

     LedOut[1]=Disp_Tab[hour%10];

     LedOut[2]=Disp_Tab[10];

     LedOut[3]=Disp_Tab[min/10]; 

     LedOut[4]=Disp_Tab[min%10];      

     LedOut[5]=Disp_Tab[10];  

     LedOut[6]=Disp_Tab[sec/10];           

     LedOut[7]=Disp_Tab[sec%10];                  

    

for( i=0; i<9; i++) //实现8位动态扫描循环

     {     

      P0 = LedOut[i];  //将字模送到P0口显示

              

      switch(i)      //使用switch 语句控制位选  也可以是用查表的方式 学员可以试着自己修改                  

         {        

            case 0:LS138A=0; LS138B=0; LS138C=0;  break;         

            case 1:LS138A=1; LS138B=0; LS138C=0;  break;                 

            case 2:LS138A=0; LS138B=1; LS138C=0;  break; 

            case 3:LS138A=1; LS138B=1; LS138C=0;  break; 

            case 4:LS138A=0; LS138B=0; LS138C=1;  break;

            case 5:LS138A=1; LS138B=0; LS138C=1;  break;

            case 6:LS138A=0; LS138B=1; LS138C=1;  break;

            case 7:LS138A=1; LS138B=1; LS138C=1;  break;

          

         }

                delay(10);

      }

         

           

  }   

}    

void timer1() interrupt 1   // 中断函数

{

     TH0=0xdc;TH0=0x00;

     key();

    if(m)

    {

    {

    count_10ms++;

    }

    if(count_10ms==10)

    {

        count_10ms=0;

        sec++;

     if(sec>=60)

        {

            sec=0;

            min++;

         if(min>=60)

            {

                min=0;

                hour++;

             if(hour>=24)

                {

                hour=0;sec=0;min=0;

                }

            }

        }

    }

 

 }

 }

文档

单片机 定时器实现24小时时钟程序

#include#include#defineuintunsignedint#defineucharunsignedcharsbitLS138A=P2^2;//定义138译码器的输入A脚由P2.2控制sbitLS138B=P2^3;//定义138译码器的输入脚B由P2.3控制sbitLS138C=P2^4;//定义138译码器的输入脚C由sbitk1=P2^0;sbitk2=P2^1;sbitk3=P2^5;bitflag;ucharsec=0,min=0,hour=12;ucharcount
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top