基于单片机的数字电子时钟设计.doc

基于单片机的数字电子时钟设计.doc

ID:61414614

大小:15.50 KB

页数:5页

时间:2021-01-27

基于单片机的数字电子时钟设计.doc_第1页
基于单片机的数字电子时钟设计.doc_第2页
基于单片机的数字电子时钟设计.doc_第3页
基于单片机的数字电子时钟设计.doc_第4页
基于单片机的数字电子时钟设计.doc_第5页
资源描述:

《基于单片机的数字电子时钟设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于单片机的数字电子时钟设计以上是proteus里的原理图。以下是程序:#include  sbitksec=P1^1;sbitkmin=P1^2;sbitkhour=P1^3;sbitpkey=P3^2;unsignedcharsecshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;unsignedintnum=0,sec=0,min=0,hour=0;unsignedcharcodetable[10]={          

2、      0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XD8,0X80,0X90    };voiddelay(unsignedint);voidkeyscan();voiddisplay();voidinit(void){TMOD=0x01;//定时器0工作在方式1   TH0=(65536-50000)/256;//定时50ms,定时器0高8位初值   TL0=(65536-50000)%256;//定时50ms,定时器0低8位初值   EA=1;   ET0=

3、1;//开启中断允许寄存器   TR0=1;//使TR0置位,启动定时器,定时器便开始计数,计数溢出时,自动进入中断服务程序//开启外部中断,并使得低电平触发EX0=1;             //????INT0???IT0=0;             //????INT0(?????)}voidmain(){  init();  IE=;    //0X8A=,打开外部中断和定时器中断  while(1)     {display();//调用显示函数      keyscan();//

4、键盘扫描程序     }}voiddelay(unsignedintz){unsignedintx,y;for(x=z;x>0;x--)  for(y=110;y>0;y--);}//延时函数//时钟设置子程序,定时器中断程序voidtime0()interrupt1{num++;//计数加1TH0=(65536-50000)/256;   //重装初值TL0=(65536-50000)%256;}//LED显示程序voiddisplay(){if(num==20)  {num=0;   sec

5、++;//如果num=20,则一秒时间到,秒加1   if(sec==60)    {sec=0;     min++;//如果sec=60,则一分钟时间到,分加1     if(min==60)       {min=0;        hour++;//如果min=60,则一小时时间到,小时加1        if(hour==24)          {hour=0;           min=0;           sec=0;//到了23点59分59秒时候最后归零         

6、  }        }     }  }secge=sec%10;//秒求余secshi=sec/10;//秒求模minge=min%10;//分求余minshi=min/10;//分求模hourge=hour%10;//小时求余hourshi=hour/10;//小时求模P0=0x80;  //OXFE是什么?位选?选中,最后一位,秒?P2=table[secge];//段选delay(4);P0=0x40;  //,选中秒的第十位P2=table[secshi];delay(4);P0=0

7、x20;  //,选中分的个位P2=table[minge];delay(4);P0=0x10;  //,选中分的十位P2=table[minshi];delay(4);P0=0x08;//,选中小时的个位P2=table[hourge];delay(4);P0=0x04;//,选中小时的十位P2=table[hourshi];delay(4);}//按键控制子程序,将出去暂停键之外的其他键放在键盘扫描程序里,暂停键放在外部中断0里面,为了保证记住上一个状态voidkeyscan(){if(ks

8、ec==0)  {delay(5);   if(ksec==0)     {sec++;      if(sec>=60)      sec=0;      }     while(!ksec);}if(kmin==0)   {delay(5);    if(kmin==0)      {min++;       if(min>=60)       min=0;       }while(!kmin);    }if(khour==0)   {delay(5);    if(khour==0) 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。