最新文章专题视频专题问答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
当前位置: 首页 - 正文

简单的51单片机电子时钟

来源:动视网 责编:小OO 时间:2025-09-30 08:44:19
文档

简单的51单片机电子时钟

仿真图:C程序;#include#defineuintunsignedint#defineucharunsignedcharsbitk1=P3^5;sbitk2=P3^6;sbitk3=P3^7;ucharcodeduan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//显示数组ucharhc[8];//缓存数组ucharjishu,jishu1=0,k,set,shan,a,b,c,time;//变量定义charshi
推荐度:
导读仿真图:C程序;#include#defineuintunsignedint#defineucharunsignedcharsbitk1=P3^5;sbitk2=P3^6;sbitk3=P3^7;ucharcodeduan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//显示数组ucharhc[8];//缓存数组ucharjishu,jishu1=0,k,set,shan,a,b,c,time;//变量定义charshi
仿真图:

C程序;

#include

#define uint unsigned int

#define uchar unsigned char

sbit k1=P3^5;

sbit k2=P3^6;

sbit k3=P3^7;

uchar code duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//显示数组

uchar hc[8];   //缓存数组

uchar jishu,jishu1=0,k,set,shan,a,b,c,time;  //变量定义

char shi,fen,miao;   //时分秒定义(必须为char不然按键会显乱码)

//====延时子程序=====//

void delay(uint t)   

{

  uchar i;

  while(t--)

for(i=110;i>0;i--);

}

//====按键子程序===//

void key()

{

//====调节选择===//

 if(k1==0)

 {

  delay(5);

  while(k1==0);

  if(++set==4) set=0;

 }

//====时分秒,加调整=====//

 if(k2==0)

 {

   delay(5);

   while(k2==0);

   if(set==1)

   {

       if(++miao==60) miao=0;

   }

   if(set==2)

   {

       if(++fen==60) fen=0;

   }

   if(set==3)

   {

       if(++shi==24) shi=0;

   }

 }

//====时分秒,减调整=====//

 if(k3==0)

 {

  delay(5);

  while(k3==0);

  if(set==1)

  {

if(--miao<0)    miao=59;

  }    

  if(set==2)                    

   { 

if(--fen<0) fen=59;

   }

   if(set==3)

   {  

if(--shi<0) shi=23;

   }

 }

//====调整闪烁====//

 if(set==1)     a=0xff*shan;         else{a=0;} 

 if(set==2)     b=0xff*shan;         else{b=0;}

 if(set==3)     c=0xff*shan;         else{c=0;}

}

//=====中断初始化===//

void init()

{

  TMOD=0x01;

  TH0=(65535-5000)/256;

  TL0=(65535-5000)%256;

  EA=1;

  ET0=1;

  TR0=1;

}

//=====选择中断  方式1=====//

void tint(void) interrupt  1

{

  TH0=(65535-5000)/256;

  TL0=(65535-5000)%256;

  //===10秒无操作跳出时间调整====//

  if(set!=0)

  {if((k1==0)||(k2==0)||(k3==0))  time=0;

if(time>=10)    {set=0;time=0 ;  }

  }     

//====时分秒即时==//

    jishu++;

 if(jishu==40)    

 {jishu=0;

   shan=!shan;   //控制闪烁变量

  if(++k==4) 

 { k=0;

  

      time++;

  if(++miao==60)

  {

   miao=0;

   if(++fen==60)

   {

    fen=0;

    if(++shi==24)

    shi=0;

    }

   }

  }

 }     

//=====显示位分离,存入缓存数组 ====// 

 hc[0]=    c|shi/10;

 hc[1]=    c|shi%10;

 hc[2]=10;

 hc[3]=b|fen/10;

 hc[4]=b|fen%10;

 hc[5]=10;

 hc[6]=a|miao/10;

 hc[7]=a|miao%10;

jishu1++;

 if(jishu1==8) 

 jishu1=0;     

 P2=(P2+1)%8;     //138位扫描

 P0=duan[hc[jishu1]];   //显示段扫描

}

void main()

{

  init();  //中断初始化

  P2=0x00;   //138初始位校正(去掉显示会后移一位)

 while(1)

 {

  key();  //按键程序

  }

}

文档

简单的51单片机电子时钟

仿真图:C程序;#include#defineuintunsignedint#defineucharunsignedcharsbitk1=P3^5;sbitk2=P3^6;sbitk3=P3^7;ucharcodeduan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//显示数组ucharhc[8];//缓存数组ucharjishu,jishu1=0,k,set,shan,a,b,c,time;//变量定义charshi
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top