标题:
ds1302时钟显示加按键可进行调整,为什么我加了以后不好使 求帮助
[打印本页]
作者:
315安
时间:
2020-4-27 17:48
标题:
ds1302时钟显示加按键可进行调整,为什么我加了以后不好使 求帮助
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k2=P1^1;
sbit sclk=P2^6;
sbit io=P2^7;
sbit ce=P2^5;
int ts;
uchar disp[6];
uchar time_data[]={20,3,4,19,16,43,2};
uchar wirte_add[]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};
uchar read_add[]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};
uchar code table_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
void write_ds1302_byte(uchar add) //д×Ö½Ú
{
uchar i;
for(i=0;i<8;i++)
{
sclk=0;
io=add&0x01;
add=add>>1;
sclk=1;
}
}
void write_ds1302(uchar add,dat)
{
ce=0;
sclk=0;
ce=1;
_nop_();
write_ds1302_byte(add);
write_ds1302_byte(dat);
ce=0;
_nop_();
io=1;
sclk=1;
}
uchar read_ds1302(uchar add)
{
uchar i,value;
ce=0;
sclk=0;
ce=1;
_nop_();
write_ds1302_byte(add);
for(i=0;i<8;i++)
{
value=value>>1;
sclk=0;
if(io)
{
value=value|0x80;
}
sclk=1;
}
ce=0;
_nop_();
sclk=0;
_nop_();
sclk=1;
io=1;
return value;
}
void set_rtc()
{
uchar i,j,k;
for(i=0;i<7;i++)
{
j=time_data[i]/10;
k=time_data[i]%10;
time_data[i]=k+j*16;
}
write_ds1302(0x8e,0x00);//È¥³ýд±£»¤
for(i=0;i<7;i++)
{
write_ds1302(wirte_add[i],time_data[i]);
}
write_ds1302(0x8e,0x80);//д±£»¤
}
void read_rtc()
{
uchar i;
for(i=0;i<7;i++)
{
time_data[i]=read_ds1302(read_add[i]);
}
}
void time_pros()
{
disp[0]=time_data[4]/16;//ʱʮλ
disp[1]=time_data[4]%16;//ʱ¸öλ
disp[2]=time_data[5]/16;//·Öʮλ
disp[3]=time_data[5]%16;//·Ö¸öλ
disp[4]=time_data[6]/16;//Ãë
disp[5]=time_data[6]%16;//MIAO
}
void display()
{
uchar i;
for(i=0;i<6;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;//
case(1):
LSA=1;LSB=0;LSC=0; break;//ÏÔʾµÚ1λ
case(2):
LSA=0;LSB=1;LSC=0; break;//ÏÔʾµÚ2λ
case(3):
LSA=1;LSB=1;LSC=0; break;//ÏÔʾµÚ3λ
case(4):
LSA=0;LSB=0;LSC=1; break;//
case(5):
LSA=1;LSB=0;LSC=1; break;//
if(i==1|i==3)
P0=table_du[disp[i]]|0x80;
else
P0=table_du[disp[i]];//
delay(3); //
P0=0x00;//ÏûÒþ
}
}
void change()
{
if(k2==0)
delay(100);
{
if(k2==0)
ts=read_ds1302(0x83);
ts=(ts>>4)*10+ts&0x0f;
ts++;
if(ts>59)
{
ts=0;
}
ts=(ts/10)<<4+(ts%10)&0x0f;
write_ds1302(0x8e,0x00);
write_ds1302(0x82,ts);
write_ds1302(0x8e,0x80);
}
}
void main()
{
while(1)
{
change();
read_rtc();
time_pros();
display();
}
}
复制代码
时钟.zip
2020-4-27 17:48 上传
点击文件名下载附件
下载积分: 黑币 -5
93.75 KB, 下载次数: 2, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1