📄 1302.c
字号:
#include<reg51.h>
#include"3310.h"
#define uchar unsigned char
#define uint unsinged int
/*
#define k1 0xe0
#define k2 0xd0
#define k3 0xb0
#define k4 0x70
*/
sbit clk=P3^1;
sbit io=P3^3;
sbit rst=P3^4;
sbit k1=P1^4;
sbit k2=P1^5;
sbit k3=P1^6;
sbit k4=P1^7;
#define sec 0x80
#define min 0x82
#define hou 0x84
#define dat 0x86
#define mon 0x88
#define day 0x8a
#define year 0x8c
#define _Brush 0xbe
char x[8]={0,0,0,1,1,1,0,0};
char y[8]=0;
uchar bdata temp;
sbit d0=temp^0;
sbit d7=temp^7;
bit point,flat;
uchar cont,cont1,cont2;
unsigned int ax,bx,cx;
void delay(unsigned int j)
{
while(j--);
}
void write8byt(uchar date)
{
uchar i;
temp=date;
for(i=8;i>0;i--)
{
io=d0;
clk=1;
clk=0;
temp>>=1;
}
}
uchar read8byt()
{
uchar i;
for(i=8;i>0;i--)
{
temp>>=1;
d7=io;
clk=1;
clk=0;
}
return temp;
}
uchar chose(uchar date)
{
uchar shi,ge,i;
shi=date/16;
ge=date%16;
i=shi*10+ge;
return i;
}
void W1302(uchar address,uchar ucda)
{
rst=0;
clk=0;
rst=1;
write8byt(address&0xfe);
write8byt(ucda);
clk=1;
rst=1;
}
void DS1302_SetProtect(bit flag)
{
if(flag)
W1302(0x8E,0x80);
else
W1302(0x8E,0x00);
}
void Wbrush1302(uchar address,uchar n,uchar *p)
{
uchar i;
rst=0;
clk=0;
rst=1;
write8byt(address&0xfe);
for(i=0;i<n;i++)
{
write8byt(p[i]);
}
clk=1;
rst=0;
}
void Rbrush1302(uchar address,uchar n,uchar *p)
{
uchar i;
rst=0;
clk=1;
rst=1;
write8byt(address|0x01);
for(i=0;i<n;i++)
{
p[i]=read8byt();
p[i]=chose(p[i]);
}
clk=1;
rst=0;
}
unsigned char buff[9];
void zhh(char a,char b,char c)
{
buff[0] = c/10 + '0';
buff[1] = c%10 + '0';
buff[2] = ':';
buff[3] = b/10 + '0';
buff[4] = b%10 + '0';
buff[5] = ':';
buff[6] = a/10 + '0';
buff[7] = a%10 +'0';
buff[8] = 0;
if(cont==1)
{
if(flat)
{
LCD_WriteStr8(2,65," ");
LCD_WriteStr8(2,71," ");
}
}
if(cont==2)
{
if(flat)
{
LCD_WriteStr8(2,48," ");
LCD_WriteStr8(2,54," ");
}
}
if(cont==3)
{
if(flat)
{
LCD_WriteStr8(2,30," ");
LCD_WriteStr8(2,36," ");
}
}if(cont==4)
{
if(flat)
{
LCD_WriteStr8(0,30," ");
LCD_WriteStr8(0,36," ");
}
}
if(cont==5)
{
if(flat)
{
LCD_WriteStr8(0,48," ");
LCD_WriteStr8(0,54," ");
}
}
if(cont==6)
{
if(flat)
{
LCD_WriteStr8(0,65," ");
LCD_WriteStr8(0,71," ");
}
}
}
void keys()
{
if(k1==0)
{
delay(2000);
if(k1==0)
{
while(k1==0)
{
}
cont++;
if(cont==7)
{
cont=0;
}
}
}
if(k2==0)
{
delay(2000);
if(k2==0)
{
while(k2==0)
{
}
if(cont==1)
{
y[0]++;
if(y[0]==60)
{
y[0]=0;
}
}
if(cont==2)
{
y[1]++;
if(y[1]==60)
{
y[1]=0;
}
}
if(cont==3)
{
y[2]++;
{
if(y[2]==24)
{
y[2]=0;
}
}
}
if(cont==4)
{
y[6]++;
if(y[6]>100)
{
y[6]=0;
}
}
if(cont==5)
{
y[4]++;
if(y[4]>12)
{
y[4]=1;
}
}
if(cont==6)
{
if(y[4]==1||y[4]==3||y[4]==5||y[4]==7||y[4]==8||y[4]==10||y[4]==12)
{
y[3]++;
if(y[3]>31)
{
y[3]=1;
}
}
else
if(y[4]==4||y[4]==6||y[4]==9||y[4]==11)
{
y[3]++;
if(y[3]>30)
{
y[3]=1;
}
}
else
if(y[4]==2)
{
if((y[6]%4)==0)
{
y[3]++;
if(y[3]>29)
{
y[3]=1;
}
}
else
{
y[3]++;
if(y[3]>28)
{
y[3]=1;
}
}
}
}
}
}
if(k3==0)
{
delay(2000);
if(k3==0)
{
while(k3==0)
{
}
if(cont==1)
{
y[0]--;
if(y[0]<0)
{
y[0]=59;
}
}
if(cont==2)
{
y[1]--;
if(y[1]<0)
{
y[1]=59;
}
}
if(cont==3)
{
y[2]--;
if(y[2]<0)
{
y[2]=23;
}
}
if(cont==4)
{
y[6]--;
if(y[6]<0)
{
y[6]=99;
}
}
if(cont==5)
{
y[4]--;
if(y[4]<1)
{
y[4]=12;
}
}
if(cont==6)
{
if(y[4]==1||y[4]==3||y[4]==5||y[4]==7||y[4]==8||y[4]==10||y[4]==12)
{
y[3]--;
if(y[3]<1)
{
y[3]=31;
}
}
else
if(y[4]==4||y[4]==6||y[4]==9||y[4]==11)
{
y[3]--;
if(y[3]<1)
{
y[3]=30;
}
}
else
if(y[4]==2)
{
if((y[6]%4)==0)
{
y[3]--;
if(y[3]<1)
{
y[3]=29;
}
}
else
{
//y[3]>=0;
y[3]--;
if(y[3]<1)
{
y[3]=28;
}
}
}
}
}
}
if(k4==0)
{
delay(2000);
if(k4==0)
{
while(k4==0)
{
}
if(cont!=0)
{
DS1302_SetProtect(0);
Wbrush1302(0xbe,8,y);
DS1302_SetProtect(1);
cont=0;
}
}
}
}
void main()
{
TMOD|=0x10;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
TR1=1;
ET1=1;
EA=1;
DS1302_SetProtect(0);
Wbrush1302(0xbe,8,x);
DS1302_SetProtect(1);
LCD_Init(); //初始化
LCD_ClearScreen(); //清屏
while(1)
{
keys();
}
}
void time() interrupt 3
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
ax++;
if(ax==250)
{
ax=0;
if(cont==0)
{
Rbrush1302(0xbe,8,y);
zhh(y[3],y[4],y[6]);
LCD_WriteStr8(0,0,"Data:");
LCD_WriteStr8(0,30,buff);
zhh(y[0],y[1],y[2]);
LCD_WriteStr8(2,0,"Time:");
LCD_WriteStr8(2,30,buff);
}
if(cont!=0)
{
zhh(y[3],y[4],y[6]);
LCD_WriteStr8(0,0,"Data:");
LCD_WriteStr8(0,30,buff);
zhh(y[0],y[1],y[2]);
LCD_WriteStr8(2,0,"Time:");
LCD_WriteStr8(2,30,buff);
}
LCD_WriteStr8(5,0,"Tel15844208399");
flat=!flat;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -