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

📄 dds.c

📁 用89C52+DS1302+1602液晶做的多功能音乐播放器(多级菜单)
💻 C
字号:
#include<reg52.h>
#include<lcd.h>
#include<1302.h>
#include<music_code.h>
#include<SoundPlay.h>
#include<dds.h>
uchar code time[]={'0','1','2','3','4','5','6','7','8','9'};
uchar code get_up[]="Time to Get up!";
uchar code str[]="Never frown,even when you are sad,because you never know who is falling in love with your smile! To the world you may be one person,but to one person you may be the world ";
uchar code menu[4][10]={{"Time Set"},{"Music"},{"Books"},{"Ring Set"}};
void main()
{
	ini();
	open();
	delay(255);
	delay(255);
	delay(255);
	delay(255);
	write_order(0x01);
	init_ds1302();
	set_ds1302(time_add,initial_time);
	while(1)
	{
		read_ring();
		if(ring_time[0]==now_time[0]&&ring_time[1]==now_time[1]&&ring_time[2]==now_time[2])
		{
			timeup();
		}
		detect();
		write_order(0x80+0x04);		
		for(i=0;menu[key][i]!=0;i++)
		{
			write_date(menu[key][i]);
		}
		get_ds1302();
		write_order(0x80+0x40);
		write_date(time[now_time[4]>>4]);
		write_date(time[now_time[4]&0x0f]);
		write_date(0x01);
		write_date(time[now_time[3]>>4]);
		write_date(time[now_time[3]&0x0f]);
		write_date(0x00);
		write_date(' ');
		write_date(' ');
		write_date(time[now_time[2]>>4]);
		write_date(time[now_time[2]&0x0f]);
		write_date(':');
		write_date(time[now_time[1]>>4]);
		write_date(time[now_time[1]&0x0f]);
		write_date(':');
		write_date(time[now_time[0]>>4]);
		write_date(time[now_time[0]&0x0f]);
		if(key==2)
		{
		
			sum=0;
			book();

		}
		if(key==1)
		{
			music();

		}
		if(key==3)
		{		
			alamn();
	
		}
		if(key==0)
		{	
			time_set();
	
		}
	}
}
void detect()
{
	uchar temp;
	temp=P1;
	temp=temp&0x0f;
	if(temp!=0x0f)
	{
		switch(temp)
		{
			case 0x0e:
				while(temp!=0x0f)
			{
				temp=P1;
				temp=temp&0x0f;
			}
			if(key==0)
			{
				key=4;
			}
			key--;
			flag=1;
			write_order(0x01);
			break;
			case 0x0d:
				while(temp!=0x0f)
			{
				temp=P1;
				temp=temp&0x0f;
			}
			key++;
			flag=2;
			if(key==4)
			{
				key=0;
			}
			write_order(0x01);
			break;
			case 0x0b:
				while(temp!=0x0f)
			{
				temp=P1;
				temp=temp&0x0f;
			}
			flag=3;
			write_order(0x01);
			break;
			case 0x07:
				while(temp!=0x0f)
			{
				temp=P1;
				temp=temp&0x0f;
			}
			flag=4;
			write_order(0x01);
			break;
		}
	}

}
void page(uchar k)
{
	write_order(0x80);
	for(i=k*32;i<k*32+16&&str[i]!='\0';i++)
	{
		write_date(str[i]);
	}
	write_order(0x80+0x40);
	for(i=k*32+16;i<k*32+32&&str[i]!='\0';i++)
	{
		write_date(str[i]);
	}
}

void book()
{			
	
			flag=0;
			detect();
			if(flag==3)
			{
			flag=0;
			page(sum);
			while(flag!=4)
			{
				detect();
				if(flag==1)
				{
					flag=0;
					if(sum!=0)
					{
					sum--;
					}
					page(sum);
				}
				if(flag==2)
				{
					flag=0;
					if(sum<5)
					{
						sum++;
					}
					page(sum);
				}
			}
			key=2;
			}
}

void alamn()
{
			flag=0;
			detect();
			if(flag==3)
			{
				flag=0;
				while(flag!=4)
				{					
					write_order(0x80+0x02);
					write_date(time[move[0]]);
					write_date(time[move[1]]);
					write_date(':');
					write_date(time[move[2]]);
					write_date(time[move[3]]);
					detect();
					if(flag==1)
					{
						flag=0;
						move[1]++;
						
						if(move[1]==10)
							{
								move[1]=0;
								move[0]++;
							}
						
						if(move[0]==2)
						{
							if(move[1]==4)
							{
								move[1]=0;
								move[0]=0;
							}
						}
						ringgo[2]=move[0]<<4|move[1];
					}
					if(flag==2)
					{
						flag=0;
						move[3]++;
						if(move[3]==10)
						{
							move[3]=0;
							move[2]++;
							if(move[2]==6)
							{
								move[2]=0;
							}
						}
						ringgo[1]=move[2]<<4|move[3];
					}
					if(flag==3)
					{
						set_ds1302(alamn_add,ringgo);
						flag=4;
					}
					
				}
				key=3;
			}
}

void time_set()
{
			flag=0;
			detect();
			if(flag==3)
			{
				flag=0;
				while(flag!=4)
				{					
					write_order(0x80+0x02);
					write_date(time[set[0]]);
					write_date(time[set[1]]);
					write_date(':');
					write_date(time[set[2]]);
					write_date(time[set[3]]);
					detect();
					if(flag==1)
					{
						flag=0;
						set[1]++;
						
							if(set[1]==10)
							{
								set[1]=0;
								set[0]++;
							}
						
						if(set[0]==2)
						{
							if(set[1]==4)
							{
								set[1]=0;
								set[0]=0;
							}
						}
						timego[2]=set[0]<<4|set[1];
					}
					if(flag==2)
					{
						flag=0;
						set[3]++;
						if(set[3]==10)
						{
							set[3]=0;
							set[2]++;
							if(set[2]==6)
							{
								set[2]=0;
							}
						}
						timego[1]=set[2]<<4|set[3];
					}
					if(flag==3)
				{
					set_ds1302(time_add,timego);
					flag=4;
				}
				}
				key=0;	
			}
}

void timeup()
{	
			write_order(0x01);
			write_order(0x80+0x00);
			for(i=0;get_up[i]!='\0';i++)
			{
				write_date(get_up[i]);
			}
	
				InitialSound();
				switch(ring_song)
						{
							case 0:Play(tale,0,3,300);break;
							case 1:Play(coral,0,3,300);break;
							case 2:Play(Meet,0,3,300);break;
							case 3:Play(Love,0,3,340);break;
						}
				write_order(0x01);
}

void music()
{
	if(flag==3)
			{
				flag=0;	
				write_order(0x01);							
				while(flag!=4)
				{
						detect();
						write_order(0x80);
						for(i=0;song[key][i]!='\0';i++)
					{						
						write_date(song[key][i]);
					}
					if(flag==3)
					{
						InitialSound();
						switch(key)
						{
							case 0:Play(tale,0,3,300);break;
							case 1:Play(coral,0,3,300);break;
							case 2:Play(Meet,0,3,300);break;
							case 3:Play(Love,0,3,340);break;
						}
						ring_song=key;
						while(!esc);
					}                             
				}
				write_order(0x01);
				key=1;	
			}
}

⌨️ 快捷键说明

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