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

📄 key.c

📁 单片机项目19-电子日历(1602显示)
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit key4 = P3^7;
sbit key2 = P3^5;
sbit key3 = P3^6;
bit key1_s,key4_s,key2_s,key3_s;
uchar key1_flag;
uchar time_tmp[9];
uchar i,cs;
void key(void)
{
	
//设定键按下,第一次跳年,同时年闪烁,第二次调月,月闪烁,一次类推	
	if(key1 == 0)
	{
		delay(300);
		if(key1 == 0)
		{	
			delay(300);
			key1_s = 1;
		}
	}	
	if(key1 == 1 && key1_s == 1)
	{
		key1_s = 0;
		key1_flag++;
		cs++;
		if(key1_flag >= 10)
		key1_flag = 1;
		if(cs == 1)
		
		{
			time_tmp[0] = year;
			time_tmp[1] = moon;
			time_tmp[2] = date;
			time_tmp[3] = xingqi;
			time_tmp[4] = hour;
			time_tmp[5] = min;
			time_tmp[6] = sec;
		}
	}
//确认键按下,正常显示
	if(key1_flag >= 1 && key1_flag < 10)
	{	
		if(key4 == 0)
		{
			delay(300);
			if(key4 == 0)
			{	
				delay(300);
				key4_s = 1;
			}
		}	
		if(key4 == 1 && key4_s == 1)
		{
			key4_s = 0;
			key1_flag = 0;
			cs = 0;
			for(i = 0;i < 7;i++)
			{
				time_tmp[i] = DEC_BCD_conv(time_tmp[i]);
			}
			write_ds1302_add_dat(0x8e,0x00);		 //写允许
			write_ds1302_add_dat(0x8c,time_tmp[0]);	 //写年
			write_ds1302_add_dat(0x88,time_tmp[1]);	 //写月
			write_ds1302_add_dat(0x86,time_tmp[2]);	 //写日
			write_ds1302_add_dat(0x8a,time_tmp[3]);	 //写周
			write_ds1302_add_dat(0x84,time_tmp[4]);	 //写时
			write_ds1302_add_dat(0x82,time_tmp[5]);	 //写分
			write_ds1302_add_dat(0x80,time_tmp[6]);	 //写秒
		 	write_ds1302_add_dat(0x8e,0x80);
		}
	//加键按下	
		if(key2 == 0)
		{
			delay(300);
			if(key2 == 0)
			{	
				delay(300);
				key2_s = 1;
			}
		}	
		if(key2 == 1 && key2_s == 1)
		{
			key2_s = 0;
			time_tmp[key1_flag - 1]++;
			if(time_tmp[0] > 99)time_tmp[0] = 0;
			if(time_tmp[1] > 12)time_tmp[1] = 1;
			if(time_tmp[2] > 31)time_tmp[2] = 1;
			if(time_tmp[3] > 7)time_tmp[3] = 1;
			if(time_tmp[4] > 23)time_tmp[4] = 0;
			if(time_tmp[5] > 59)time_tmp[5] = 0;
			if(time_tmp[6] > 59)time_tmp[6] = 0;
			if(time_tmp[7] > 23)time_tmp[7] = 0;
			if(time_tmp[8] > 59)time_tmp[8] = 0;		
		}	
		if(key3 == 0)
		{
			delay(300);
			if(key3 == 0)
			{	
				delay(300);
				key3_s = 1;
			}
		}	
		if(key3 == 1 && key3_s == 1)
		{
			key3_s = 0;	
			if(time_tmp[0] <= 1)time_tmp[0] = 100;
			if(time_tmp[1] <= 1)time_tmp[1] = 13;
			if(time_tmp[2] <= 1)time_tmp[2] = 32;
			if(time_tmp[3] <= 1)time_tmp[3] = 8;
			if(time_tmp[4] <= 0)time_tmp[4] = 24;
			if(time_tmp[5] <= 0)time_tmp[5] = 60;
			if(time_tmp[6] <= 0)time_tmp[6] = 60;
			if(time_tmp[7] <= 0)time_tmp[7] = 24;
			if(time_tmp[8] <= 0)time_tmp[8] = 60;
			time_tmp[key1_flag - 1]--;		
		}
	}
}

⌨️ 快捷键说明

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