⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 03.c

📁 ds12c887实时时钟
💻 C
字号:
//	工程名称:	DS12CR887实时时钟
//   2008/12/10 
//	功能描述:	万年历,农历和电子钟,具备拨报日期、时间、正点报时、秒表、闹钟等功能。
//	更多功拨报日期、时间、正点报时、秒表、闹钟等功能。进一步添加中...
//======================================================================
//对主函数调用的函数声明
//======================================================================
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

char temp03,aa,bb,cc,dd,ee,ff,gg,hh;

char ge,shi,bai,qian,w2,shiwan,xin;
sbit dula=P2^0;
sbit wela=P2^1;
sbit wela02=P2^2;
sbit dian=P2^3;

sbit dscs=P1^0;
sbit dsas=P1^1;
sbit dsrw=P1^2;
sbit dsds=P1^3;


//======================================================================
//0-f字库
//======================================================================
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};

void displayxq(uchar xin);
void display12(uchar aa,uchar bb);
void display34(uchar cc,uchar dd);
void display56(uchar ee,uchar ff);
void display78(uchar gg,uchar hh);
void display(uchar shi,uchar ge);
void display01(uchar qian,uchar bai);
void display02(uchar shiwan,uchar w2);
void delay(uint z);

/*void write_ds(uchar add,uchar date)
{
	dscs=0;
	dsas=1;
	dsds=1;
	dsrw=1;
	P0=add;
	dsas=0;
	dsrw=0;
	P0=date;
	dsrw=1;
	dsas=1;
	dscs=1;	

	
} */ //写芯片的时候才用write_ds

uchar read_ds(uchar add)
{
 	uchar ds_date;
	dscs=0;
	dsas=1;
	dsds=1;
	dsrw=1;
	P0=add;
	dsas=0;
	dsds=0;
	ds_date=P0;
	dsds=1;
	dscs=1;
	dsas=1;
	return ds_date;	
}

//======================================================================
//显示初始化2008 年12 月10日 星期2  23:11:20//
//======================================================================

/*void init()
{
	//write_ds(10,160);这几行为初始化芯片时钟
    //write_ds(11,06);


	//write_ds(0,00);//秒
	//write_ds(2,28);//分 
	//write_ds(4,18);//时
    //write_ds(6,03);//星期
	//write_ds(7,10);//日
	//write_ds(8,12);//月
	//write_ds(9,0x08);//年后
	//temp03=20;//2008的前两位100年+1不用,固定为20
}*/
//======================================================================
//主函数//
//======================================================================
void main()
{


	//init();
	temp03=20;
	dian=0;	
	while(1)
	{
			
		display(shi,ge);
	    display01(qian,bai);
		display02(shiwan,w2);		
		display78(gg,hh);
		display56(ee,ff);
		display34(cc,dd);
		display12(aa,bb);
		displayxq(xin);
		
	}
	
}
//======================================================================
//延时子程序//
//======================================================================
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
//======================================================================
//星期显示子程序//
//======================================================================
void displayxq(uchar xin)
{
		
		xin=read_ds(6)%10;
		

		wela02=1;
		P0=0x00;
		wela02=0;

		dula=1;
		P0=table[xin];
		dula=0;

		wela=1;
		P0=0x40;
		delay(1);
		wela=0;
		
	
}
//======================================================================
//秒显示子程序//
//======================================================================
void display(uchar shi,uchar ge)
{
		
		ge=read_ds(0)%10;
		shi=read_ds(0)/10;	

		wela02=1;
		P0=0x00;
		wela02=0;

		dula=1;
		P0=table[shi];
		dula=0;

		wela=1;
		P0=0x10;
		delay(1);
		wela=0;
		
		dula=1;
		P0=table[ge];
		dula=0;

		wela=1;
		P0=0x20;
		delay(1);
		wela=0;
}
//======================================================================
//分显示子程序//
//======================================================================
void display01(uchar qian,uchar bai)
{
		qian=read_ds(2)/10;
		bai=read_ds(2)%10;

		wela02=1;
		P0=0x00;
		wela02=0;

		dula=1;
		P0=table[qian];
		dula=0;

		wela=1;
		P0=0x04;
		delay(1);
		wela=0;	

		dula=1;
		P0=table[bai];
		dula=0;

		wela=1;
		P0=0x08;
		delay(1);
		wela=0;	
}
//======================================================================
//时显示子程序//
//======================================================================
void display02(uchar shiwan,uchar w2)
{
		shiwan=read_ds(4)/10;
		w2=read_ds(4)%10;

		wela02=1;
		P0=0x00;
		wela02=0;

		dula=1;
		P0=table[shiwan];
		dula=0;

		wela=1;
		P0=0x01;
		delay(1);
		wela=0;	

		dula=1;
		P0=table[w2];
		dula=0;

		wela=1;
		P0=0x02;
		delay(1);
		wela=0;	
}
//======================================================================
//日期显示子程序//
//======================================================================
void display78(uchar gg,uchar hh)
{
		gg=read_ds(7)/10;
		hh=read_ds(7)%10;
		
		wela=1;
		P0=0x00;
		wela=0;

		dula=1;
		P0=table[gg];
		dula=0;
	
		wela02=1;
		P0=0x40;
		delay(1);
		wela02=0;

		dula=1;
		P0=table[hh];
		dula=0;

		wela02=1;
		P0=0x80;
		delay(1);
		wela02=0;
		
		

		
}
//======================================================================
//月份显示子程序//
//======================================================================
void display56(uchar ee,uchar ff)
{
		ee=read_ds(8)/10;
		ff=read_ds(8)%10;
		
		wela=1;
		P0=0x00;
		wela=0;

		dula=1;
		P0=table[ee];
		dula=0;
	
		wela02=1;
		P0=0x10;
		delay(1);
		wela02=0;

		dula=1;
		P0=table[ff];
		dula=0;

		wela02=1;
		P0=0x20;
		delay(1);
		wela02=0;
		
		

		
}
//======================================================================
//年后两位显示子程序//
//======================================================================
void display34(uchar cc,uchar dd)
{
		cc=read_ds(9)/10;
		dd=read_ds(9)%10;
		
		wela=1;
		P0=0x00;
		wela=0;

		dula=1;
		P0=table[cc];
		dula=0;
	
		wela02=1;
		P0=0x04;
		delay(1);
		wela02=0;

		dula=1;
		P0=table[dd];
		dula=0;

		wela02=1;
		P0=0x08;
		delay(1);
		wela02=0;
		
		

		
}
//======================================================================
//年前两位显示子程序//
//======================================================================
void display12(uchar aa,uchar bb)
{
		aa=temp03/10;
		bb=temp03%10;
		
		wela=1;
		P0=0x00;
		wela=0;

		dula=1;
		P0=table[aa];
		dula=0;
	
		wela02=1;
		P0=0x01;
		delay(1);
		wela02=0;

		dula=1;
		P0=table[bb];
		dula=0;

		wela02=1;
		P0=0x02;
		delay(1);
		wela02=0;
		
}		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -