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

📄 set.h

📁 本程序能实现数字式可调定时显示复位功能的LCD液晶显示。软件用PROTUES仿真
💻 H
字号:
sbit p30=P3^0;  //设置选中
sbit p31=P3^1;	//增加
sbit p32=P3^2;	//减少
sbit p33=P3^3;  //测试使用
sbit p10=P1^0;


void add_sub(void)
{
	if(!p31)
	{
		tmp++;
		switch(flg)
		{
			case 1:if(tmp>99)tmp=10;break;
			case 2:if(tmp>12)tmp=6;break;
			case 3:if(tmp>31)tmp=15;break;
			case 4:if(tmp>23)tmp=12;break;
			case 5:if(tmp>59)tmp=30;break;
			case 6:if(tmp>59)tmp=30;break;
		}
		while(!p31);
	}
	if(!p32){tmp--;if(tmp<0)tmp=30;while(!p32);}
}

void set_time(void)
{
	if(!p30){flg=flg+1;if(flg>6)flg=0;while(!p30);}
	while(flg)
	{	if(!p30){flg=flg+1;if(flg>6)flg=0;while(!p30);}
		if(flg==1){tmp=dat[0]*10+dat[1];add_sub();DS1302_SetTime(0x8c,tmp);dat[0]=tmp/10;dat[1]=tmp%10;}//year
		if(flg==2){tmp=((Read1302(0x88)&0x70)>>4)*10 + Read1302(0x88)&0x0F;add_sub();DS1302_SetTime(0x88,tmp);dat[3]=tmp/10;dat[4]=tmp%10;}//mounth
		if(flg==3){tmp=((Read1302(0x86)&0x70)>>4)*10 + Read1302(0x86)&0x0F;add_sub();DS1302_SetTime(0x86,tmp);dat[6]=tmp/10;dat[7]=tmp%10;}//day
		if(flg==4){tmp=((Read1302(0x84)&0x70)>>4)*10 + Read1302(0x84)&0x0F;add_sub();DS1302_SetTime(0x84,tmp);dat[9]=tmp/10;dat[10]=tmp%10;}//hour
		if(flg==5){tmp=((Read1302(0x82)&0x70)>>4)*10 + Read1302(0x82)&0x0F;add_sub();DS1302_SetTime(0x82,tmp);dat[12]=tmp/10;dat[13]=tmp%10;}//min
		if(flg==6){tmp=((Read1302(0x80)&0x70)>>4)*10 + Read1302(0x80)&0x0F;add_sub();DS1302_SetTime(0x80,tmp);dat[15]=tmp/10;dat[16]=tmp%10;}//sec
		if(flg==0){break;  }
		noline(2,3,dat);
	}
}

void inv_(void)
{
	char flg2,t;flg2=0;
	t=dat2[15]*10+dat2[16]-dat1[15]*10-dat1[16];	//s
	if(t<0){t+=60;flg2=1;}
	dat3[10]=t%10;
	dat3[9]=t/10;

	t=dat2[12]*10+dat2[13]-dat1[12]*10-dat1[13];	//m
	if(flg2) t-=1;
	flg2=0;
	if(t<0){t+=60;flg2=1;}
	dat3[7]=t%10;
	dat3[6]=t/10;
	t=dat2[9]*10+dat2[10]-dat1[9]*10-dat1[10];	//h
	if(flg2) t-=1;
	flg2=0;
	if(t<0){t+=24;flg2=1;}
	dat3[4]=t%10;
	dat3[3]=t/10;
	t=dat2[6]*10+dat2[7]-dat1[6]*10-dat1[7];	//d
	if(flg2) t-=1;
	flg2=0;
	if(t<0){t+=30;flg2=1;}
	dat3[1]=t%10;
	dat3[0]=t/10;
}

void inv_time(void)
{
	char i;
	if(flg1==0)
	{
		for (i=0;i<17;i++)
		dat1[i]=dat2[i]=dat[i];
	}
	if(flg1==1)
	{
		for (i=0;i<17;i++)
		dat2[i]=dat[i];
	}
	if(!p33 & !flg1)flg1=1;//按下
	if(p33 & flg1)flg1=2;//弹起
	if(!p33 & flg1==2)flg1=0;//再次按下
	inv_();
}






⌨️ 快捷键说明

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