📄 ds1305.txt
字号:
#define unsigned char uchar
SBIT clk_ce=P1^3; /*时钟片选*/
SBIT sclk_bit=P2^4; /*时钟脉冲输入端*/
SBIT sdi_bit=P2^6; /*时钟输入引脚*/
SBIT sdu_bit=P2^7; /*时钟输出引脚*/
uchar y_m_d_h_m[6]={0x01,0x05,0x19,0x23,0x10,0x00};
uchar dispclock[]={0x12,0x10,0x10,0x11,0x0d,0x10,0x17,0x0d,0x11,0x10,0x00,0x11,0x12,0x1a,0x11,0x18,0x1a,0x11,0x18};
/*年、月、日、星期、时、分、秒*/
initclock() /*时钟初始化*/
{
sclk_bit=0;
dswr(0x8f);/* 往控制寄存器写0x05*/
dswr(0x05);
dswr(0x90); /*往状态寄存器写0x01 */
dswr(0x01);
dswr(0x91); /*往涓流充电寄存器写0xa5*/
dswr(0xa5);
}
dswr(uchar ac) /*ACC中的数据从高位开始送入ds1305 */
{
uchar i;
clk_ce=1;
sdu_bit=1;
for (i=0;i<8;i++)
{
sdi_bit=(ac&0x80==0x80)?1:0;
sclk_bit=1;
sclk_bit=0;
ac=ac<<1;
}
}
uchar dsrd() /*读时钟*/
{
uchar i,j,ac=0,x;
clk_ce=1;
for (i=0;i<=7;i++)
{
sclk_bit=1;
j=2;
while (j--);
sclk_bit=0;
x=P2;
ac=(x&0x80)>>i ac;/*高位在前,底位在后*/
}
return (ac);
clk_ce=0;
}
clockset() /*时钟设置*/
{
uchar i,j;
sclk_bit=0;
dswr(0x8f);/* 往控制寄存器写0x05*/
dswr(0x05);
clk_ce=0;
sclk_bit=0;
for (i=0x80,j=0;i<=0x86;i++)
if(i!=0x83)
{
clk_ce=1;
dswr(i);/*address*/
dswr(y_m_d_h_m[5-j]);/*data*/
j++;
clk_ce=0;
}
clockwp();
}
clockwp() /*时钟写保护*/
{
clk_ce=1;
dswr(0x8f);
dswr(0x45);
clk_ce=0;
}
clockread() /* 读时钟数据送入clock数组*/
{
uchar i,ac,j,m=1;
for (i=0;i<7;i++)
{
dswr(i);
ac=dsrd() ;
switch (i)
{
case 0:
case 1:
case 2: clock[i]=ac ;break;
case 3: break;
default:clock[i-1]=ac;
}
clk_ce=0;
}
}
clockdisp() /*把时间显示数组中的数据显示*/
{
uchar j=DELAY;
uchar ac,i;
for (i=0;i<=5;i++) /* 把clock 数组中的BCD码转换成clockdisp的非压缩BCD码*/
{
ac=clock[i];
ac= ac>>4;
ac+=0x10;
dispclock[2+3*(5-i)]=ac;
ac=clock[i];
ac=ac & 0x0f;
ac+=0x10;
dispclock[2+3*(5-i)+1]=ac;
}
/*以下是对液晶进行操作*/
data_wri(0);
data_wri(0);
com_wri(0x24);
com_wri(0xb0);
for (i=0;i<19;i++)
{
wait3();
lcd_ce=0;
PLCD_DATA=dispclock[i];
while (j--);
lcd_ce=1;
j=DELAY;
}
lcd_ce=0;
com_wri(0xb2);
lcd_ce=1;
}
clockalarm()
{
uchar set[]={0x87,0x81,0x88,0x81,0x89,0x80,0x8a,
0x80,0x8f,0x05,0x90,0x01,0x91,0xa5};
uchar i,j;
clk_ce=0;
sclk_bit=0;
i=0;
for (j=0;j<7;j++)
{
dswr(set[i++]);
dswr(set[i++]);
clk_ce=0;
i=2;
while (i--);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -