当前位置 - 股票行情交易網 - 國際漫評 - 基於單片機51系列及DS1302時鐘芯片數字電子鐘的制作。求電路總原理圖、PCB圖、程序以及元件清單。

基於單片機51系列及DS1302時鐘芯片數字電子鐘的制作。求電路總原理圖、PCB圖、程序以及元件清單。

這是1602電路,和時鐘電路。

元件基本差不多。電路如圖

#include?<intrins.h>

#define?uchar?unsigned?char

#define?uint?unsigned?int

sbit?ds1302_RST?=P2^0;

sbit?ds1302_IO? =P2^1;

sbit?ds1302_SCLK=P2^2;

sbit?ACC0=ACC^0;

sbit?ACC7=ACC^7;

sbit?A1=P3^0;

sbit?A2=P3^1;

sbit?A3=P3^2;

sbit?A4=P3^3;

sbit?A5=P3^4;

sbit?A6=P3^5;

sbit?key1=P3^6;

sbit?key2=P3^7;

uchar?now_time[3],wei,d[3]={0,0,0};

uchar?code?s[]={?0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

};

void?delay(uint?x)

{

uchar?i;

for(x;x>0;x--)

for(i=0;i<100;i++);

}

void?disp()

{

P1=s[now_time[2]/16];

A1=d[2];

delay(5);

A1=1;

P1=s[now_time[2]%16];

A2=d[2];

delay(5);

A2=1;

P1=s[now_time[1]/16];

A3=d[1];

delay(5);

A3=1;

P1=s[now_time[1]%16];

A4=d[1];

delay(5);

A4=1;

P1=s[now_time[0]/16];

A5=d[0];

delay(5);

A5=1;

P1=s[now_time[0]%16];

A6=d[0];

delay(5);

A6=1;

}

/***********************************************************************/

uchar? read_Byte()

{

uchar?i;

for(i=8;i>0;i--)

{

?ACC=ACC>>1;

?ACC7=ds1302_IO;

?ds1302_SCLK=1;

?ds1302_SCLK=0; ?

}?

return(ACC);

}

void? write_Byte(uchar?tdata)

{

uchar?i;

ACC=tdata;

for(i=8;i>0;i--)

{

?ds1302_IO=ACC0;

?ds1302_SCLK=1;

?ds1302_SCLK=0;

?ACC=ACC>>1;

}

}

/***********************************************************************************/

void?write_data_ds1302(uchar?taddr,uchar?tdata)

{

ds1302_RST=0;

ds1302_SCLK=0;

ds1302_RST=1;

write_Byte(taddr);

write_Byte(tdata);?

ds1302_RST=0;

ds1302_SCLK=1;

}

uchar?read_data_ds1302(uchar?taddr)

{?

uchar?tdata;

ds1302_RST=0;

ds1302_SCLK=0;

ds1302_RST=1;

write_Byte(taddr);

tdata=read_Byte();?

ds1302_RST=0;

ds1302_SCLK=1;

return(tdata);

}

/***********************************************************************************/

void?get_ds1302()?

{

uchar?k;

uchar?taddr?=?0x81;

for?(k=0;?k<3;?k++)

{

now_time[k]?=?read_data_ds1302(taddr);

taddr+=2;

}

}

/***********************************************************************************/

void?init_ds1302()

{

ds1302_RST=0;

ds1302_SCLK=0;

A1=1;

A2=1;

A3=1;

A4=1;

A5=1;

A6=1;?

write_data_ds1302(0x80,0x00);

}

/***********************************************************************************/

void? Time();

/***********************************************************************************/

main()

{?

init_ds1302();

while(1)

{

disp();

get_ds1302();

if(key1==0);

? {?delay(10);

if(key1==0)

Time();

? }

}?

}

void?timer()?interrupt?3

{

uchar?i;i++;

TH1=(65535-50000)/256;

TL2=(65535-50000)%256;

if(i==50)

{

d[wei]=1;

}

if(i==100)

{?i=0;

d[wei]=0;

}

}

/***********************************************************************************/

void Time()

{?

uchar?temp;

uint?r=0,p=1;?

wei=2;

TMOD=0x01;

EA=1;

ET1=1;

TH1=(65535-50000)/256;

TL2=(65535-50000)%256;

TR1=1;

for(r=0;r<50;r++)

disp();

while(?key1?)

{?

wei=2;

disp();

if(key2==0)

{

disp();

if(key2==0)

{

temp=now_time[2]/16*10+now_time[2]%16;

?temp++;

?if(temp>=24)

? temp=0;

?now_time[2]=temp/10*16+temp%10;

?write_data_ds1302(0x84,now_time[2]);?

}

while(!key2);

}?

}?

? wei=1;

?d[2]=0;

for(r=0;r<50;r++)

disp();

?

while(key1?)

{?disp();

if(key2==0)

{?

?disp();

?if(key2==0)

? {

temp=now_time[1]/16*10+now_time[1]%16;

temp++;

if(temp>=60)

temp=0;

now_time[1]=temp/10*16+temp%10;

write_data_ds1302(0x82,now_time[1]);?

? }

while(!key2);

}?

}

? wei=0;

d[1]=0;

for(r=0;r<50;r++)

disp();

while(key1?)

{

disp();

if(key2==0)

{

?now_time[0]=0;

?write_data_ds1302(0x80,now_time[0]);?

}?

} TR1=0;

d[0]=0;

for(r=0;r<30;r++)

disp();

}

按圖安裝即可,祝妳成功。