arduino时钟程序_ds1302时钟模块

arduino时钟程序_ds1302时钟模块51单片机电子钟(串口)电子时钟设计1、配置定时器,能够计算时、分、秒(实现电子时钟功能)2、配置单片机按键,实现按键修改时间的功能,能够修改时、分、秒3、通过数码管把时间显示出来。4、当时间计算到23时59分5

51单片机电子钟(串口)   电子时钟设计   1、配置定时器,能够计算时、分、秒(实现电子时钟功能)   2、配置单片机按键,实现按键修改时间的功能,能够修改时、分、秒   3、通过数码管把时间显示出来。   4、当时间计算到23时59分59秒,再加1时间变为0时0分0秒,蜂鸣器报警   5、配置按键,蜂鸣器报警后按下该按键关闭报警。   拓展:
arduino时钟程序_ds1302时钟模块
arduino时钟程序_ds1302时钟模块   1、串口把时间发送到上位机。   2、通过串口发送指令进行修改时间。   #include “reg51.h”   #define uchar unsigned char   #define uint unsigned int   sbit k1=P1^0;//按钮   sbit k2=P1^1;   sbit k3=P1^2;   sbit k4=P1^3;   sbit smg1 =P2^0;//数码管   sbit smg2 =P2^1;   sbit smg3 =P2^2;   sbit smg4 =P2^3;   sbit smg5 =P2^4;   sbit smg6 =P2^5;   sbit beep=P3^3;   //数码管编码   uchar code smgduan0[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//显示0~9,无小数点   uchar code smgduan1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//显示0~9,有小数点   uchar mode=0;//设置切换   uchar flag=0;   uchar time=0,miao=50,fen=59,shi=23;   //延时   void delay(uint i)   {   uint j;   for(j=0;j<i;j++);   }   //主函数   void main()   {   SCON=0X50; //设置为工作方式1   TMOD=0X21; //设置计数器工作方式2   TH1=0XFD;   TL1=0XFD;   TR1=1; //打开计数器   TH0=(65536-50000)/256;//50ms   TL0=(65536-50000)%256;   ET0=1;//打开定时器0中断允许   ES=1;   EA=1;//打开总中断   TR0=1;//打开定时器   while(1)   {   if(!k1)//停止蜂鸣器   {   beep=1;   }   if(!k2)//设置   {   if(mode!=1)   {   mode=1;   flag=0;   }   else   {   if(flag<1)   flag++;   else   {   flag=0;   mode=0;   }   }   while(!k2);   }   if(mode==1)//设置时间   {   if(!k3)//加   {   switch(flag)   {   case 0:   if(shi<23)   shi++;   break;   case 1:   if(fen<59)   fen++;   break;   case 2:   if(miao<59)   miao++;   }   while(!k3);   }   if(!k4)//减   {   switch(flag)   {   case 0:   if(shi>0)   shi–;   break;   case 1:   if(fen>0)   fen–;   break;   case 2:   if(miao>0)   miao–;   }   while(!k4);   }   }   //显示   if(mode==0) //时间显示   {   P0=smgduan0[shi/10];smg1=1;delay(100);smg1=0;   P0=smgduan1[shi%10];smg2=1;delay(100);smg2=0;   P0=smgduan0[fen/10];smg3=1;delay(100);smg3=0;   P0=smgduan1[fen%10];smg4=1;delay(100);smg4=0;   }   P0=smgduan0[miao/10];smg5=1;delay(100);smg5=0;   P0=smgduan0[miao%10];smg6=1;delay(100);smg6=0;   if(mode==1)//设置时间   {   if(flag==0)//小时闪烁   {   if(time<11)   {   P0=smgduan0[shi/10];smg1=1;delay(100);smg1=0;   P0=smgduan1[shi%10];smg2=1;delay(100);smg2=0;   }   else   {   P0=0xff;smg1=1;delay(100);smg1=0;   P0=0xff;smg2=1;delay(100);smg2=0;   }   }   else   {   P0=smgduan0[shi/10];smg1=1;delay(100);smg1=0;   P0=smgduan1[shi%10];smg2=1;delay(100);smg2=0;   }   if(flag==1)//分钟闪烁   {   if(time<11)   {   P0=smgduan0[fen/10];smg3=1;delay(100);smg3=0;   P0=smgduan1[fen%10];smg4=1;delay(100);smg4=0;   }   else   {   P0=0xff;smg3=1;delay(100);smg3=0;   P0=0xff;smg4=1;delay(100);smg4=0;   }   }   else   {   P0=smgduan0[fen/10];smg3=1;delay(100);smg3=0;   P0=smgduan1[fen%10];smg4=1;delay(100);smg4=0;   }   }   //闹钟判断   if((shi==0)&&(fen==0)&&(miao==0))   beep=0;   }   }   //定时器0中断   void Timer0() interrupt 1   {   if(mode==0)//计时   {   if(time<20)   time++;   else   {   time=0;   if(miao<59)   miao++;   else   {   miao=0;   if(fen<59)   fen++;   else   {   fen=0;   if(shi<23)   shi++;   else   shi=0;   }   }   //串口发送   SBUF=shi/10+0x30;while(!TI);TI=0;   SBUF=shi%10+0x30;while(!TI);TI=0;   SBUF=’:’;while(!TI);TI=0;   SBUF=fen/10+0x30;while(!TI);TI=0;   SBUF=fen%10+0x30;while(!TI);TI=0;   SBUF=’:’;while(!TI);TI=0;   SBUF=miao/10+0x30;while(!TI);TI=0;   SBUF=miao%10+0x30;while(!TI);TI=0;   SBUF=0x0d;while(!TI);TI=0;   }   }   if(mode>0)//闪烁定时   {   if(time<20)   time++;   else   time=0;   }   TH0=(65536-50000)/256;//50ms   TL0=(65536-50000)%256;   }   //串口中断   void Usart() interrupt 4   {   uchar i;   i=SBUF;//出去接收到的数据   RI = 0;//清除接收中断标志位   if(i==’Q’)//停止蜂鸣器   {   beep=1;   }   if(i==’W’)//设置   {   if(mode!=1)   {   mode=1;   flag=0;   }   else   {   if(flag<1)   flag++;   else   {   flag=0;   mode=0;   }   }   }   if(mode==1)//设置时间   {   if(i==’E’)//加   {   switch(flag)   {   case 0:   if(shi<23)   shi++;   break;   case 1:   if(fen<59)   fen++;   break;   case 2:   if(miao<59)   miao++;   }   }   if(i==’R’)//减   {   switch(flag)   {   case 0:   if(shi>0)   shi–;   break;   case 1:   if(fen>0)   fen–;   break;   case 2:   if(miao>0)   miao–;   }   }   }   }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/86136.html

(0)
上一篇 2024年 7月 26日 下午7:21
下一篇 2024年 7月 26日 下午7:24

相关推荐

关注微信