#include<reg52.h>
#include<ds1302.h>
#include<anjian.h>
#include "main.h"
#define uchar unsigned char
#define uint unsigned int
uchar tab[12] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar wei[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar xian[8]={1,1,1,1,1,1,1,1};
uchar chun[8]={1,1,1,1,1,1,1,1};
uchar wz=0,date=0;
uint flag8=0;
uint flag4=0;
uint i=0;
unsigned int count=0;
void delay(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=110;y>0;y--);
}
void led()
{
P2=((P2&0x1f)|0x80);
P0=0xfe;
}
void led1()
{
P2=((P2&0x1f)|0x80);
P0=0xff;
}
void init()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void fenjie()
{
xian[0]=clk[0]%10;
xian[1]=clk[0]/10;
xian[3]=clk[1]%10;
xian[4]=clk[1]/10;
xian[6]=clk[2]%10;
xian[7]=clk[2]/10;
}
void chundate()
{
chun[0]=clk[0];
chun[1]=clk[1];
chun[2]=clk[2];
}
void display()
{
for(i=0;i<8;i++)
{
P2=((P2&0x1f)|0xc0);
P0=wei[i];
P2=P2&0x1f;
if(i==2||i==5)
{
P2=((P2&0x1f)|0xe0);
P0=0xBF;
}
else
{
P2=((P2&0x1f)|0xe0);
P0=tab[xian[i]];
}
P2=P2&0x1f;
delay(5);
}
}
void yiweishan()
{
switch(flag3)
{
case 1:wz=0x80;if(clk[0]==59) clk[0]=-1;date=clk[0];led();break;
case 2:wz=0x80+2;if(clk[1]==59) clk[1]=-1;date=clk[1];led1();break;
case 3:wz=0x80+4;if(clk[2]==23) clk[2]=-1;date=clk[2];led();break;
default:break;
}
}
void zhanting()
{
unsigned char miao=0;
if(flag2!=1)
{
ds_read();
fenjie();
display();
}
if(flag2==1)
{
flag8++;
miao=Ds1302_Single_Byte_Read(0x81);
Ds1302_Single_Byte_Write(0x8e,0x00);
Ds1302_Single_Byte_Write(0x80,miao);
Ds1302_Single_Byte_Write(0x8e,0x80);V
display();
ds_read();
fenjie();
if(flag8==1)
{
chundate();
}
}
}
void main()
{
init();
delay(10);
ds_write();
while(1)
{
key();
key2();
key3();
zhanting();
yiweishan();
fmq();
}
}
void time1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
}
void time0() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
if(flag3==1)
{
xian[0]=11;
xian[1]=11;
}
if(flag3==2)
{
xian[3]=11;
xian[4]=11;
}
if(flag3==3)
{
xian[6]=11;
xian[7]=11;
}
}
蓝桥杯驱动ds1302+闹钟设置+时间设置简易版.zip
需积分: 47 125 浏览量
2018-05-14
21:47:11
上传
评论 1
收藏 52KB ZIP 举报
WeiLeYiKouFan
- 粉丝: 1
- 资源: 5
最新资源
- 359B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 三菱PLC例程源码定長度裁端子机程序
- 355A-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 三菱PLC例程源码电子元件玻璃烘烤机PLC程序
- C#,图论与图算法,有向图(Directed Graph)的环(Cycle)的普通判断算法与源代码
- 351A-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 三菱PLC例程源码电子元件玻璃烘烤机
- C#,精巧实用的代码,图片像素(Bitmap Pixel)的读取与绘制的快速方法与源程序
- 351AN-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- C#,图论与图算法,图最短路径的迪杰斯特拉(Dijkstra)算法与源代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈