#define a0 ACC_0//这些是从网上COPY的程序
#define a1 ACC_1
#define a2 ACC_2
#define a3 ACC_3
#define a4 ACC_4
#define a5 ACC_5
#define a6 ACC_6
#define a7 ACC_7
unsigned char sec1,sec2,min1,min2,hou1,hou2,dat1,dat2,mon1,mon2,day,yea1,yea2,tem;
//这些变量一看就知道是用来存放时间的了,请不要头疼
void clock_out(unsigned char dd)
{
ACC=dd;
clock_dat=a0;clock_clk=1;clock_clk=0;
clock_dat=a1;clock_clk=1;clock_clk=0;
clock_dat=a2;clock_clk=1;clock_clk=0;
clock_dat=a3;clock_clk=1;clock_clk=0;
clock_dat=a4;clock_clk=1;clock_clk=0;
clock_dat=a5;clock_clk=1;clock_clk=0;
clock_dat=a6;clock_clk=1;clock_clk=0;
clock_dat=a7;clock_clk=1;clock_clk=0;
}
unsigned char clock_in(void)
{
clock_dat=1;
a0=clock_dat;
clock_clk=1;clock_clk=0;a1=clock_dat;
clock_clk=1;clock_clk=0;a2=clock_dat;
clock_clk=1;clock_clk=0;a3=clock_dat;
clock_clk=1;clock_clk=0;a4=clock_dat;
clock_clk=1;clock_clk=0;a5=clock_dat;
clock_clk=1;clock_clk=0;a6=clock_dat;
clock_clk=1;clock_clk=0;a7=clock_dat;
return(ACC);
}
unsigned char read_clock(unsigned char ord)
{
unsigned char dd=0;
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
dd=clock_in();
clock_rst=0;
clock_clk=1;
return(dd);
}
void write_clock(unsigned char ord,unsigned char dd)
{
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
clock_out(dd);
clock_rst=0;
clock_clk=1;
}
void send(unsigned char add,unsigned char dat)//这些是MAX7219显示程序,绝对好用
我正用稳着,有想要MAX7219显示程序的,尽管拷去。
{
unsigned char i,j,sen;
load=0;
i=0;
while(i <16)
{
if(i <8) sen=add;
else sen=dat;
for(j=0;j <=7;j++)
{
din=sen&0x80;
clok=1;
clok=0;
sen < <=1;
}
i=i+8;
}
load=1;
}
void xianshi()//把读出的数据转换成显示的数据
{
send(0x09,0x0ff);//段码都译码
send(0x0a,0x01);//显示亮度11/32
send(0x0b,0x07);//7dig display
send(0x0c,0x01);//选择NOrmal
send(0x01,sec1);
send(0x02,sec2);
send(0x03,min1);
send(0x04,min2);
send(0x05,hou1);
send(0x06,hou2);
send(0x07,dat1);
send(0x08,dat2);
}
void readdat()//读HT1380数据
{
//读秒
tem=read_clock(0x81);
sec1=tem&0x0f;
tem> > =4;
sec2=tem&0x0f;
//读分
tem=read_clock(0x83);
min1=tem&0x0f;
tem> > =4;
min2=tem&0x0f0;
//读时
tem=read_clock(0x85);
hou1=tem&0x0f;
tem> > =4;
hou2=tem&0x0f0;
//读日期
tem=read_clock(0x87);
dat1=tem&0x0f;
tem> > =4;
dat2=tem&0x0f0;
//读月
tem=read_clock(0x89);
mon1=tem&0x0f;
tem> > =4;
mon2=tem&0x0f0;
//读星期
tem=read_clock(0x8b);
day=tem&0x0f;
//读年
tem=read_clock(0x8d);
yea1=tem&0x0f;
tem> > =4;
yea2=tem&0x0f0;
}
void chushi()//这就是对HT1380的初始化
,不知道对不对
{
write_clock(0x8e,0);//允许写
write_clock(0x80,0);//开时钟并且写秒为0
write_clock(0x82,0);//写分为0
write_clock(0x84,0);//写小时为12
write_clock(0x86,0x01);//写日期为1号
write_clock(0x88,0x01);//写月为1月
write_clock(0x8a,0x06);//写星期为星期六
write_clock(0x8c,0x02);//写年为2000
}
void main()//主程序
{
chushi();//初始化
while(1)
{
readdat();//读HT1380数据
xianshi();//把读出的数据转换成显示的数据
}
}