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

📄 new0401.c

📁 jklf jkalflka kfl akl fkasl
💻 C
📖 第 1 页 / 共 2 页
字号:
			break;
		 }
		 case 1:		//时
		 {
			zf_flag=0;
			disnum(num0+alarm_hour1/10*16,32,2);
			disnum(num0+alarm_hour1%10*16,40,2);
			break;
		 }
		 case 2:		//分
		 {
			zf_flag=0;
			disnum(num0+alarm_min1/10*16,56,2);
			disnum(num0+alarm_min1%10*16,64,2);
			break;
		 }
	 }
	 zf_flag=bit_temp;
}
//======================
//显示:闹钟模式设置 振动|声音|关闭
//======================
void freshdis3(uchar posit)
{
	bit bit_temp;
	bit_temp=zf_flag;
	switch(posit)
	{
		case 0:				//关闭
		{
			zf_flag=1;
			dishz(char3,8,0);
			dishz(char4,24,0);
			dishz(char10,40,0);
			dishz(char11,56,0);
			dishz(char12,72,0);
			dishz(char13,88,0);
			disnum(space,32,2);
			disnum(space,72,2);
			disnum(space,80,2);
			disnum(space,88,2);
			disnum(space,96,2);
			zf_flag=0;
			dishz(char5,40,2);
			dishz(char6,56,2);
			break;
		}
		case 1:			//声音
		{
			zf_flag=0;
			dishz(char14,40,2);
			dishz(char15,56,2);
			break;
		}
		case 2:			//振动
		{
			zf_flag=0;
			dishz(char1,40,2);
			dishz(char2,56,2);
			break;
		}
	}
	 zf_flag=bit_temp;
}
//==================
//显示: 闹钟设置2 00日00:00
//==================
void freshdis4(uchar posit)
{
	bit bit_temp;
	bit_temp=zf_flag;
	switch(posit)
	{
		case 0:
		{
			disnum(space,0,0);
			disnum(space,8,0);
			disnum(space,16,0);
			disnum(space,88,0);
			disnum(space,96,0);
			disnum(space,104,0);
			disnum(space,72,2);
			disnum(space,80,2);
			disnum(space,88,2);
			disnum(space,104,2);
			disnum(space,112,2);
			dishz(char3,24,0);
			dishz(char4,40,0);
			dishz(char12,56,0);
			dishz(char13,72,0);
			disnum(num2,88,0);
			disnum(num0+alarm_day/10*16,32,2);
			disnum(num0+alarm_day%10*16,40,2);
			dishz(char9,48,2);
			if(conver)
			{disnum(num0+alarm_hour2/10*16,64,2);
			 disnum(num0+alarm_hour2%10*16,72,2);}
			else
			{alarm_hour=alarm_hour2>12? (alarm_hour2-12):alarm_hour2;
			 disnum(num0+alarm_hour2/10*16,64,2);
			 disnum(num0+alarm_hour2%10*16,72,2);
			}
			disnum(colon,80,2);
			disnum(num0+alarm_min2/10*16,88,2);
			disnum(num0+alarm_min2%10*16,96,2);
			break;
		 }
		 case 1:		//日
		 {
			zf_flag=0;
			disnum(num0+alarm_day/10*16,32,2);
			disnum(num0+alarm_day%10*16,40,2);
			break;
		 }
		 case 2:		//时
		 {
			zf_flag=0;
			disnum(num0+alarm_hour2/10*16,64,2);
			disnum(num0+alarm_hour2%10*16,72,2);
			break;
		 }
		 case 3:		//分
		 {
		 	zf_flag=0;
			disnum(num0+alarm_min2/10*16,88,2);
			disnum(num0+alarm_min2%10*16,96,2);
			break;
		 }
	 }
	 zf_flag=bit_temp;
}
//=================
//按键处理
//=================
void keydo(void)
{
	switch(shift)
	{
		case 0:		//正常显示
			freshdis1(0);
			break;
		case 1:		//校时间
			if(clr==1)
			{
				freshdis1(0);
				clr=0;
			}
			freshdis1(change+1);
			break;
		 case 2:		//闹钟1调节
			if(clr==1)
			{
				freshdis2(0);
				clr=0;
			}
			freshdis2(change+1);
			break;
		case 3:		//闹钟2调节
			if(clr==1)
			{
				freshdis4(0);
				clr=0;
			}
			freshdis4(change+1);
			break;
		case 4: 	//闹钟模式
			if(clr==1)
			{
				freshdis3(0);
				clr=0;		
			}
			freshdis3(change);
			break;
	}
}


//=================                  //**********我加的 
//   音乐子程序                           //**********我加的
//=================                   //**********我加的
void music(uchar mus)                 //**********我加的  
{ 
    uchar mus;                                      //**********我加的
    switch(mus)                           //**********我加的  
    {                                //**********我加的
        case 0:                      //**********我加的
        {
            
            
             
//=================
//按键扫描函数
//=================
void keyscan(void)		
{
	uchar full_mouth;
	if(key1==0)			//key1切换
	{
		delay5ms(2);
		if(key1==0)
		{
			while(key1==0);	
			if((alarm_hour1==hour)&&(alarm_min1==minute)||((alarm_day==day)&&(alarm_hour2==hour)&&(alarm_min2==minute)))		//在闹钟响时按此键关闭
			{
				alarm_switch=0;
				disnum(space,8,2);
				disnum(space,16,2);
			}
			now_second=second;
			clr=1;
			disp_flag=0;
			change=0;
			shift++;	//shift=0,1,2,3分别表示'正常/校时/校闹1/校闹2/闹模
			if(shift>=6)shift=0;		//**********把5改为6加了个”转换 “ 
			if(shift!=0)disp_flag=0;
			else disp_flag=1;
		}
	}
	else if(key2==0)			//key2切换
	{
		delay5ms(2);
		if(key2==0)
		{
			while(key2==0);
			if((alarm_hour1==hour)&&(alarm_min1==minute)||((alarm_day==day)&&(alarm_hour2==hour)&&(alarm_min2==minute)))			//在闹钟响时按此键关闭
			{
				alarm_switch=0;
				disnum(space,8,2);
				disnum(space,16,2);
			}
			now_second=second;
			clr=1;
			disp_flag=0;
			change++;
			switch(shift)
			{
				case 1:		//校时
					if(change>=7)change=0;
					break;
				case 2:		//校闹1
					if(change>=2)change=0;
					break;
				case 3:		//校闹2
					if(change>=3)change=0;
					break;
				case 4:		//闹模
				{
					if(change>=3)change=0;
					switch(change)
					{
						case 0:		//关闭
							alarm_switch=0;
							disnum(space,8,2);
							disnum(space,16,2);
							TR1=0;
							break;
						case 1:		//声音
							alarm_switch=1;
							dishz(char17,8,2);
							mode=1;
							break;
						case 2:		//振动							
							alarm_switch=1;
							mode=1;
							dishz(char16,8,2);
							break;                             									
					}
					break;	
				}
				case 5:		//*********加的********转换
					if(conver)conver=0;//*********加的
					else conver=1;//*********加的
					dishz(char18,8,2);//*********加的
					dishz(char19,16,2);//*********加的
					break;    //*********加的
				 case 6:     //***********选曲
                             alarm_switch=1;//********加的 
                             made=0;         //********加的 
                             dishz(char20,8,2);
                             disnum(num0+mus*16,16,2);//********加的 
                             break;             //********加的 
                             
			}	
		}
	}
	else if(key3==0)				//key3数字的递增
	{
		delay5ms(2);
		if(key3==0)
		{
			if(shift==0){black=0;freshdis2(0);}						//只显示闹钟时间
			while(key3==0);	
			now_second=second;
			clr=1;
			disp_flag=0;
			switch(shift)
			{
				case 1:		//校时
				{			
					switch(change)
					{
						case 0:
							hour++;	
							if(hour>=24)hour=0;
							break;
						case 1:
							minute++;
							if(minute>=60)minute=0;
							break;
						case 2:
							second=0;
							break;
						case 3:
							week++;
							if(week>=7)week=0;
							break;
						case 4:
							year++;//*******下面这句我删了原句是:if(year>=2051)year=1982;
							break;							
						case 5:
							mouth++;
							if(mouth>=13)mouth=1;
							break;
						case 6:
							day++;

							if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)
							{
								full_mouth=32;
							}
							else if(mouth==2)
							{
								if((year%4==0&&year%100!=0)||(year%400==0)){full_mouth=29;}//*******我把括号里的year%4改了
								else{full_mouth=30;}
							}
							else{full_mouth=31;}
							if(day>=full_mouth)
							{day=1;}
							break;					
					}
					break;
				}
				case 2:		//校闹1
				{	
					switch(change)
					{
						case 0:		//时
							alarm_hour1++;
							if(alarm_hour1>=24)alarm_hour1=0;		//*******这里需要24/12转换吗?我觉得不用吧
							break;
						case 1:		//分
							alarm_min1++;
							if(alarm_min1>=60)alarm_min1=0;
							break;
					}
					break;
				}
				case 3:			//校闹2
				{	
					switch(change)
					{
						case 0:          //日
							alarm_day++;	
							if(alarm_day>=32)alarm_day=1;
							break;
						case 1:		//时
							alarm_hour2++;
							if(alarm_hour2>=24)alarm_hour2=0;
							break;
						case 2:		//分
							alarm_min2++;
							if(alarm_min2>=60)alarm_min2=0;
							break;
					}
				}
				case 6:              //*********选曲
                {
                    mus++;
                    if(mus>=4)mus=0;
                }
		}
	}	
	keydo();
}
//=============
//闹钟频率产生
//说明:1khz的响四声,停四声时间的声响
//=============
void timer1(void)interrupt 3
{
	TH1=8;
	TL1=0x18;
	i++;
	if(i>=10)
	{
		i=0;
		j++;
		m=~m;
		if(j>=7){j=0;n=~n;}
	}
	if(m&&n)
	{
		sound=~sound;//*******这句是什么意思?要加音乐的话怎么办呢?我没看懂这个中断,我要在这里加个音乐子程序,还没找到合适的。
	}
}
//===========
//定时函数
//===========
void timer0(void) interrupt 1
{
	suchar i;
	uchar full_mouth;
	TH0=0x3c;
	TL0=0xb0;
	if(i>=200)       //***********应该把20改为200吧
	{
		i=0;
    	second++;
		if(second>=60)
		{
			second=0;
			minute++;
			if(minute>=60)
			{
				minute=0;
				hour++;
				if(hour>=24)
				{
					hour=0;
					day++;
					week++;
					if(week>7)week=1;
					if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)
					{
						full_mouth=32;
					}
					else if(mouth==2)
					{
					     if((year%4==0&&year%100!=0)||(year%400==0)){full_mouth=29;}//*******我把括号里的year%4改了					
						else{full_mouth=30;}
					}
					else{full_mouth=31;}
					if(day>=full_mouth)
					{
						day=1;
						mouth++;
						if(mouth>=13)
						{
							mouth=1;
							year++;
						}
					}
				}
			}
		}
	}
	i++;
}
main()
{                                                                                           
	TMOD=1;
	ET0=ET1=EA=1;
	TR0=1;
	TH0=0x3c;
	TL0=0xb0;
	TH1=8;
	TL1=0x18;
	year=1980;//****要求是1980开始
	now_second=-4;
	mouth=day=alarm_day=1;
	zf_flag=1;
	disp_flag=alarm_switch=0;
	conver=1;			//**********我加的
	lcd_reset();
	clear();
	while(1)
	{
		keyscan();					//按键扫描函数
		if(alarm_switch==1)									//是否开闹钟?
		{
			if((alarm_hour1==hour)&&(alarm_min1==minute)||((alarm_day==day)&&(alarm_hour2==hour)&&(alarm_min2==minute)))			//闹钟时间到
			{
				if(mode==1)					//声音
				{
					TR1=1;
					moto=1;
				}
				else						//振动
				{
					moto=0;
					TR1=0;
				}			
			}
			else 						//关闭
			{
				TR1=0;
				moto=sound=1;
			}
		}
		else 
		{
			moto=sound=1;
			TR1=0;
		}
		if(disp_flag==1)
		{freshdis1(0);}
		if(second<=(now_second+3)){black=0;}
		else{black=1;now_second=-4;}
	}
}

⌨️ 快捷键说明

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