时钟芯片 Dream Cather 第七天

//关于23时59分50秒的时钟程序;

#include<STC15F2K60S2.H>

#include<intrins.h>


#define uchar unsigned char 
#define uint unsigned int

sbit CE=P1^3;
sbit IO=P2^3;
sbit SCLK=P1^7;


uchar code ds[]={50,59,23,10,10,1,16};//可以手动改时间 秒 分 时 


uchar shijian[7];


uchar code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
uchar yi,er,san,si,wu ,liu,qi,ba;


void delayms(int ms);
void allinit();
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);




void writebyte(uchar dat);
void write(uchar add,uchar dat);
void dsinit();
uchar read(uchar add);
uchar readbyte();
void readtime();


void main()
{
allinit();
dsinit();
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
while(1)
{
readtime();
yi=shijian[2]/10;er=shijian[2]%10;san=10;
si=shijian[1]/10;wu=shijian[1]%10;liu=10;
qi=shijian[0]/10;ba=shijian[0]%10;

display1(yi,er);
display2(san,si);
display3(wu,liu);
display4(qi,ba);
}
}




void readtime()
{
uchar i;
uchar add=0x81;
write(0x8e,0x00);
for(i=0;i<7;i++)
{
shijian[i]=read(add);
add=add+2;
}
write(0x8e,0x80);
}




uchar read(uchar add)
{
uchar i,temp;
uchar dat1,dat2;
CE=0;
SCLK=0;
CE=1;
writebyte(add);
for(i=0;i<8;i++)
{
SCLK=0;
temp>>=1;
if(IO)
{
temp|=0x80;
}
SCLK=1;
}

IO=0;

dat1=temp/16;//0XFF 1111 1111
dat2=temp%16;

temp=dat1*10+dat2;

return temp;
}




void writebyte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK=0;
IO=dat&0x01;
SCLK=1;
dat>>=1;
}
}


void write(uchar add,uchar dat)
{
uchar num;

CE=0;
SCLK=0;
CE=1;
writebyte(add);
num=(dat/10<<4)|(dat%10);// 55
writebyte(num);
CE=0;
}




void dsinit()
{
uchar i;
uchar add=0x80;
write(0x8e,0x00);
for(i=0;i<7;i++)
{
write(add,ds[i]);
add=add+2;
}
write(0x8e,0x80);

}


void delayms(int ms)
{
int i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}


void allinit()
{
P2=0XA0;
P0=0X00;//¹Ø±Õ·äÃùÆ÷£¬¼ÌµçÆ÷

P2=0X80;
P0=0XFF;//¹Ø±ÕLEDµÆ

P2=0XC0;
P0=0XFF;//Ñ¡ÔñËùÓÐÊýÂë¹Ü
P2=0XFF;
P0=0XFF;//¹Ø±ÕËùÓÐÊýÂë¹Ü
}


void display1(uchar yi,uchar er)
{
P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X01;//Ñ¡ÔñµÚÒ»¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[yi];
delayms(1);

P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X02;//Ñ¡ÔñµÚ¶þ¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[er];
delayms(1);
}


void display2(uchar san,uchar si)
{
P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X04;//Ñ¡ÔñµÚÈý¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[san];
delayms(1);

P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X08;//Ñ¡ÔñµÚËĸöÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[si];
delayms(1);
}


void display3(uchar wu,uchar liu)
{
P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X10;//Ñ¡ÔñµÚÒ»¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[wu];
delayms(1);

P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X20;//Ñ¡ÔñµÚÒ»¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[liu];
delayms(1);
}


void display4(uchar qi,uchar ba)
{
P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X40;//Ñ¡ÔñµÚÒ»¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[qi];
delayms(1);

P2=0XC0;//´ò¿ªÎ»Ñ¡573   U8
P0=0X80;//Ñ¡ÔñµÚÒ»¸öÊýÂë¹Ü
P2=0XFF;//´ò¿ª¶ÎÑ¡573   U7
P0=tab[ba];
delayms(1);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值