51+DS1302+DS18B20+LCD1602-显示时间-温度-可调?- 百度文库

}

void init() { uchar num; lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); delay(5); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(5);

}

write_com(0x80+0x40); for(num=0;num<15;num++) { write_date(table1[num]);

delay(5);

}

}

void Write1302(uchar dat) {

5

uchar i;

SCLK=0; //SCLKΪд׼ delay1(2); //΢ȴʹӲ׼ for(i=0;i<8;i++) //д8λ {

DATA=dat&0x01; //ȡdatĵ0λд1302 delay(2); //΢ȴʹӲ׼ SCLK=1; //д delay1(2); //΢ȴʹӲ׼ SCLK=0; //SCLKγ

dat>>=1; //datĸλ1λ׼дһλ } }

void WriteSet1302(uchar Cmd,uchar dat) {

RST=0; //ֹݴ

SCLK=0; //ȷдǰSCLK RST=1; //ݴ

delay1(2); //΢ȴʹӲ׼ Write1302(Cmd); //д Write1302(dat); //д

SCLK=1; //ʱӵƽ֪״̬ RST=0; //ֹݴ }

uchar Read1302(void)

6

{

uchar i,dat;

delay(2); //΢ȴʹӲ׼ for(i=0;i<8;i++) //8λ {

dat>>=1; //datĸλ1λΪȶֽڵλ if(DATA==1) //1 dat|=0x80; //1ȡдdatλ SCLK=1; //SCLKڸߵƽΪ½ض delay1(2); //΢ȴ

SCLK=0; //SCLKγ½ delay1(2); //΢ȴ }

return dat; //ݷ }

uchar ReadSet1302(uchar Cmd) {

uchar dat;

RST=0; //RST

SCLK=0; //ȷдǰSCLK RST=1; //ݴ Write1302(Cmd); //д dat=Read1302(); //

SCLK=1; //ʱӵƽ֪״̬ RST=0; //ֹݴ

7

return dat; //ݷ }

void Init_DS1302(void) {

WriteSet1302(0x8E,0x00); //д״̬Ĵ֣д벻ָ WriteSet1302(0x80,((0/10)<<4|(0))); //дĴ֣дijʼֵ WriteSet1302(0x82,((45/10)<<4|(45))); //дּĴ֣дֵijʼֵ WriteSet1302(0x84,((15/10)<<4|(15))); //дСʱĴ֣дСʱijʼֵ WriteSet1302(0x86,((29/10)<<4|(29))); //дռĴ֣дյijʼֵ WriteSet1302(0x88,((11/10)<<4|(11))); //д¼Ĵ֣дµijʼֵ WriteSet1302(0x8c,((10/10)<<4|(10))); //nian WriteSet1302(0x8a,((4/10)<<4|(4))); }

void DisplaySecond(uchar x) {

uchar i,j; i=x/10; j=x;

write_com(0xc7); write_date(0x30+i); write_date(0x30+j); }

void DisplayMinute(uchar x) {

uchar i,j; i=x/10;

8

ϵͷ779662525#qq.com(#滻Ϊ@) ICP20003344-4