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

📄 text1.c

📁 单片机开发
💻 C
📖 第 1 页 / 共 2 页
字号:
	clock_out(ord);
	clock_out(dd);
	clock_Rst=0;
	clock_clk=1;
}
//设置1302的初始时间
void Init_1302(){//(2008年1月1日00时00分00秒星期二)
	if(read_clock(0xc1) != 0xf0)
	{
		write_clock(0x8e,0x00);//允许写操作
		write_clock(0x8c,0x08);//年
		write_clock(0x8a,0x03);//星期
		write_clock(0x88,0x05);//月
		write_clock(0x86,0x28);//日
		write_clock(0x84,0x00);//小时
		write_clock(0x82,0x33);//分钟
		write_clock(0x80,0x40);//秒
		write_clock(0x90,0xa5);//充电
		write_clock(0xc0,0xf0);	//判断是否初始化一次标识写入
		write_clock(0x8e,0x80);//禁止写操作
	}
}
//常用时钟数据读取
void read_clocks()
{
	timedata[0] = read_clock(0x81);//读取秒数据
	timedata[1] = read_clock(0x83);//读取分钟数据
	timedata[2] = read_clock(0x85);//小时
	timedata[3] = read_clock(0x87);//日
	timedata[4] = read_clock(0x89);//月
	timedata[5] = read_clock(0x8b);//星期
	timedata[6] = read_clock(0x8d);//年

}




void set_display(uchar com, uchar dat)   //调整时间时显示函数
{
	lcd_wcom(com);
	lcd_wdat(dat/16+0x30);	
	lcd_wdat(dat%16+0x30);
}
set_selfdisplay(uchar com, uchar dat)    //调整星期时自定义字符显示函数
{
	lcd_wcom(com);
	lcd_wdat(dat);
}
void int_checkbutton()			//初始化按键
{
	k1=1;
	k2=1;
	k3=1;
	k4=1;
}


				
	

		


void int_t0() interrupt 1 using 1        //定时中断
{	
	TH0=0x3c;
	TL0=0xb0;
	i++;
	if(i==10)
	{
		i=0;
						//更新显示数据
		display();
			
			
	}
	
}

//********************************************//
//**************主程序************************//
void main()
{	
	TMOD=0x01;                //设置定时中断
	TH0=0x3c;
	TL0=0xb0;
	EA=1;
	ET0=1;
	TR0=1;	
	int_display();		//初始化显示
	int_checkbutton();	//按键初始化
	Init_1302();		//1302初始化
	while(1)
	{		
				
			if(k1==0)					//调整模式键按下
			{
				delay(30);	
				if(k1==0)
				{	 
					while(!k1);			//确定按下
					sett++;
					TR0=0;
					beeper(1);
							if(sett==1)	//按下的次数不同,光标移动到不同的调整位置处
						{	
							lcd_wcom(0x0f);
							lcd_wcom(0x83);
								
						}
							if(sett==2)
						{
							lcd_wcom(0x86);
						}
							if(sett==3)
						{
							lcd_wcom(0x89);
						}
							if(sett==4)
						{
							lcd_wcom(0x8c);
						}
							if(sett==5)
						{
							lcd_wcom(0xc1);
						}
							if(sett==6)
						{
							lcd_wcom(0xc4);
						}
							if(sett==7)
						{
							lcd_wcom(0xc7);
						}
							if(sett==8)     //第八次按下模式键,退出调整,恢复走时显示
						{
							sett=0;
							lcd_wcom(0x0c);
							TR0=1;
						}
				}
					

			}if(sett!=0)
					{
						if(k2==0)		//增加键按下	
						{
							delay(30);	//延时消抖
								if(k2==0)	
							{
								while(!k2);
								beeper(1);	//按键放开之后蜂鸣器叫一下,表示确定
								if(sett==1)	//根据按下的次数调整相应的项目
								{	uchar item ;
									item=timedata[6];
									item=(item/16)*10+item%16;
									item++;			//年份加一
									if(item==100)item=0;
									item=(item/10)*16+item%10;	
									set_display(0x82,item);	//调整时显示
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x8c,item);
									lcd_wcom(0x83);
								}
								if(sett==2)
								{	uchar item ;
									item=timedata[4];
									item=(item/16)*10+item%16;
									item++;			//月份加一
									if(item==13)item=0;
									item=(item/10)*16+item%10;	
									set_display(0x85,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x88,item);
									lcd_wcom(0x86);
								}
								if(sett==3)
								{	uchar item ;
									item=timedata[3];
									item=(item/16)*10+item%16;
									item++;			//日加一
									if(item==32)item=0;
									item=(item/10)*16+item%10;	
									set_display(0x88,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x86,item);
									lcd_wcom(0x89);
								}
								if(sett==4)
								{	uchar item ;
									item=timedata[5];
									item=(item/16)*10+item%16;
									item++;			//星期加一
									if(item==8)item=1;
									item=(item/10)*16+item%10;	
									set_selfdisplay(0x8c,disp_self(item%16));
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x8a,item);
									lcd_wcom(0x8c);
								}
								if(sett==5)
								{	uchar item ;
									item=timedata[2];
									item=(item/16)*10+item%16;
									item++;			//小时加一
									if(item==24)item=0;
									item=(item/10)*16+item%10;	
									set_display(0xc0,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x84,item);
									lcd_wcom(0xc1);
								}
								if(sett==6)
								{	uchar item ;
									item=timedata[1];
									item=(item/16)*10+item%16;
									item++;            //分加一
									if(item==60)item=0;
									item=(item/10)*16+item%10;	
									set_display(0xc3,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x82,item);
									lcd_wcom(0xc4);
								}
								if(sett==7)
								{	uchar item ;
									item=timedata[0];
									item=(item/16)*10+item%16;
									item++;			//秒加一
									if(item==60)item=0;
									item=(item/10)*16+item%10;	
									set_display(0xc6,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x80,item);
									lcd_wcom(0xc7);
								}
							}
						}
						if(k3==0)          //下面这段是减按钮的程序,和加按钮程序差不多
						{		//唯一不同就是++变成--,还有就是上限变成了下限
							delay(30);
								if(k3==0)
							{
								while(!k3);
								beeper(1);
								if(sett==1)
								{	uchar item ;
									item=timedata[6];
									item=(item/16)*10+item%16;
									item--;     
									if(item==0)item=99;
									item=(item/10)*16+item%10;	
									set_display(0x82,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x8c,item);
									lcd_wcom(0x83);
								}
								if(sett==2)
								{	uchar item ;
									item=timedata[4];
									item=(item/16)*10+item%16;
									item--;
									if(item==-1)item=12;
									item=(item/10)*16+item%10;	
									set_display(0x85,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x88,item);
									lcd_wcom(0x86);
								}
								if(sett==3)
								{	uchar item ;
									item=timedata[3];
									item=(item/16)*10+item%16;
									item--;
									if(item==-1)item=31;
									item=(item/10)*16+item%10;	
									set_display(0x88,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x86,item);
									lcd_wcom(0x89);
								}
								if(sett==4)
								{	uchar item ;
									item=timedata[5];
									item=(item/16)*10+item%16;
									item--;
									if(item==0)item=7;
									item=(item/10)*16+item%10;	
									set_selfdisplay(0x8c,disp_self(item%16));
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x8a,item);
									lcd_wcom(0x8c);
								}
								if(sett==5)
								{	uchar item ;
									item=timedata[2];
									item=(item/16)*10+item%16;
									item--;
									if(item==-1)item=23;
									item=(item/10)*16+item%10;	
									set_display(0xc0,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x84,item);
									lcd_wcom(0xc1);
								}
								if(sett==6)
								{	uchar item ;
									item=timedata[1];
									item=(item/16)*10+item%16;
									item--;
									if(item==-1)item=59;
									item=(item/10)*16+item%10;	
									set_display(0xc3,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x82,item);
									lcd_wcom(0xc4);
								}
								if(sett==7)
								{	uchar item ;
									item=timedata[0];
									item=(item/16)*10+item%16;
									item--;
									if(item==-1)item=59;
									item=(item/10)*16+item%10;	
									set_display(0xc6,item);
									write_clock(0x8e,0x00);//允许写操作
									write_clock(0x80,item);
									lcd_wcom(0xc7);
								}
							}
						}

					}				
	tdat=rd_temperature();			//读温度值
	tem_conv();				//转化温度
	read_clocks();		 		//读时钟数据				
	updata_disp();				//数据送入显示缓冲区

	}
}

⌨️ 快捷键说明

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