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

📄 sky_main.c

📁 公共广播系统:定时开机,定时广播,定时关机
💻 C
📖 第 1 页 / 共 4 页
字号:
	{
		case 1:
			Circulationset();
			break;
		case 2:
			OpenStopdayluset();
			break;
		case 3:
			ClockTimeset();
			break;
	}
}

void KeyVoiceset(void)
{
	data UINT8 v,temp;

	clearRAM(0,8);
	Display_Line(8,3,4,0);
	v=EEPROMByteRead0(0);
	Delay1(100);
	while(1)
	{
		temp=KeyScan();
		if(count2>2400)
		{
			Function=0;
			return;
		}
		ClearWatchDog();
		switch(temp)
		{
			case ENTER:
				EEPROMByteWrite0(0,v);
				Voice=v;
				Display_Save(6,30);
				Beep1(3);
				break;
			case ESC:
				return;
			case UP:
			case DOWN:
				if(v==0)
					v=1;
				else
					v=0;
				break;
		}
		if(v==1)
			HzDisplay(system[0],3,96,1);
		else
			HzDisplay(system[1],3,96,1);
	}
}

bit Confirmation(void)
{
	bit flag=0;
	data UINT8 temp,i,j;
	
	clearRAM(0,8);
	for(j=0;j<2;j++)
	{
		SetRAMAddr(j+3,0);
		for(i=0;i<112;i++)
		{
			if(i==64)
			SetRAMAddr(j+3,0);
			SingleData(i,confirm[j][i]);
      	}
	 }
	while(1)
	{
		temp=KeyScan();
		if(count2>2400)
		{
			Function=0;
			return(0);
		}
		ClearWatchDog();
		switch(temp)
		{
			case ENTER:
				return(flag);
			case ESC:
				return(0);
			case UP:
			case DOWN:
				if(flag==0)
					flag=1;
				else
					flag=0;
				break;
		}
		if(flag==1)
			HzDisplay(system1[0],3,112,1);
		else
			HzDisplay(system1[1],3,112,1);
	}
	
}
void DisinfectNum(void)//清除ok
{
	data UINT8 day,j,lu,flag=1;
    data UINT8 temp,num=0,i;
	data UINT16 addr;

	clearRAM(0,8);
	lu=0;
	day=Week;
	Display_Line(7,0,6,0);
	Display_Line(9,4,6,0);
	while(1)
	{
		temp=KeyScan();
		if(count2>2400)
		{
			Function=0;
			return;
		}
		ClearWatchDog();
		switch(temp)
		{
			case MOVE:
				num++;
				if(num==2)
					num=0;
				flag=1;
				break;
			case UP:
				switch(num)
				{
					case 1:
						if(day==6)
							day=0;
						else
							day++;
						break;
					case 0:
						if(lu==14)
							lu=0;
						else
							lu++;
						break;
				}
				flag=1;
				break;
			case DOWN:
				switch(num)
				{
					case 1:
						if(day==0)
							day=6;
						else
							day--;
						break;
				    case 0:
						if(lu==0)
							lu=14;
						else
							lu--;
						break;
				}
				flag=1;
				break;
			case ENTER:
				flag=Confirmation();
                clearRAM(0,8);
            	for(j=0;j<4;j++)
	           {
	             	SetRAMAddr(j+2,24);
               		for(i=24;i<104;i++)
            		{
               			if(i==64)
            				SetRAMAddr(j+2,0);
            			SingleData(i,WAIT[j][i-24]);
                  	}
            	 }
				if(flag==1)
				{
					addr=(day*900+lu*60)*6+0x80;
					for(i=0;i<60;i++)
					{
						EEPROMByteWrite0(addr+i*6,23);
						Delay1(1500);
						EEPROMByteWrite0(addr+i*6+1,59);
						Delay1(1500);
						EEPROMByteWrite0(addr+i*6+2,59);
						Delay1(1500);
						EEPROMByteWrite0(addr+i*6+3,23);
						Delay1(1500);
						EEPROMByteWrite0(addr+i*6+4,59);
						Delay1(1500);
						EEPROMByteWrite0(addr+i*6+5,59);
						Delay1(1500);
						ClearWatchDog();
                        if(i%4==0)
                        {
                                if(i==0)
                        	       	SetRAMAddr(7,0);
                        		if(i==32)
                    	       		SetRAMAddr(7,0);
                                for(j=0;j<8;j++)
                        		  SingleData(i*2+j,0xff);
                        }    
					}
					Beep1(3);
				}
                clearRAM(0,8);
                flag=1;
		      	Display_Line(7,0,6,0);
            	Display_Line(9,4,6,0);
                break;
			case ESC:
				Function=0;
				return;
		}
		if(flag==1)
		{
			flag=0;
			if(num==1)
				HzDisplay(WEEK1[day], 4,80,1);
			else
				HzDisplay(WEEK1[day], 4,80,0);
			if(num==0)
				Num_Display(lu+1, 4,32,1);
			else
				Num_Display(lu+1, 4,32,0);
		}
	}
}

void SysSet(void)//本机设置ok
{
	static data UINT8 row=1;
	data UINT8 temp,flag=0;

	clearRAM(0,8);
	MenuDisplay(2,row);
	while(1)
	{
		temp=KeyScan();
		if(count2>2400)
		{
			Function=0;
			clearRAM(0,8);
			return;
		}
		ClearWatchDog();
		switch(temp)
		{
			case MOVE:
				row++;
				if(row>2)
					row=1;
				MenuDisplay(2,row);
				break;
			case ENTER:
				flag=1;
				break;
			case ESC:
				Function=0;
				return;
		}
		if(flag==1)
		{
			flag=0;
			break;
		}
	}
	switch(row)
	{
		case 1:
			DisinfectNum();
			break;
		case 2:
			KeyVoiceset();
			break;
	}
}


void Contral8255(UINT8 num,bit flag)
{
	data UINT8 temp;
	
	if(num<7)
	{
		if(flag==1)
		{
			Pbvalue|=CLOSEOPENB[num];//&
		}
		else
		{
			temp=~CLOSEOPENB[num];
			Pbvalue&=temp;//|
		}
		write_XDATA(0xf9,Pbvalue);
	}
	else if(num<15)
	{
		if(flag==1)
		{
			Pcvalue |=CLOSEOPEN[num-7];//&
		}
		else
		{
			temp=~CLOSEOPEN[num-7];
			Pcvalue &=temp;	//|
		}
		write_XDATA(0xfa,Pcvalue);
	}
}

void LedContral(UINT8 num,bit flag)
{
	if(flag==1)
	{
		switch(num)
		{
			case 0:
				Led1=0;
				return;
			case 1:
				Led2=0;
				return;
			case 2:
				Led3=0;
				return;
			case 3:
				Led4=0;
				return;
			case 4:
				Led5=0;
				return;
			case 5:
				Led6=0;
				return;
			case 6:
				Pavalue &=0xfe;
				write_XDATA(0xf8, Pavalue);
				return;
			case 7:
				Pavalue &=0xfd;
				write_XDATA(0xf8, Pavalue);
				return;
			case 8:
				Pavalue &=0xfb;
				write_XDATA(0xf8, Pavalue);
				return;
			case 9:
				Pavalue &=0xf7;
				write_XDATA(0xf8, Pavalue);
				return;
			case 10:
				Pavalue &=0xef;
				write_XDATA(0xf8, Pavalue);
				return;
			case 11:
				Pavalue &=0xdf;
				write_XDATA(0xf8, Pavalue);
				return;
			case 12:
				Pavalue &=0xbf;
				write_XDATA(0xf8, Pavalue);
				return;
			case 13:
				Pavalue &=0x7f;
				write_XDATA(0xf8, Pavalue);
				return;
			case 14:
				Pbvalue&=0xfe;
				write_XDATA(0xf9, Pbvalue);
				return;
			 default:
				break;
		}
	}
	else
	{
		switch(num)
		{
			case 0:
				Led1=1;
				return;
			case 1:
				Led2=1;
				return;
			case 2:
				Led3=1;
				return;
			case 3:
				Led4=1;
				return;
			case 4:
				Led5=1;
				return;
			case 5:
				Led6=1;
				return;
			case 6:
				Pavalue |= 0x01;
				write_XDATA(0xf8, Pavalue);
				return;
			case 7:
				Pavalue |= 0x02;
				write_XDATA(0xf8, Pavalue);
				return;
			case 8:
				Pavalue |=0x04;
				write_XDATA(0xf8, Pavalue);
				return;
			case 9:
				Pavalue |=0x08;
				write_XDATA(0xf8, Pavalue);
				return;
			case 10:
				Pavalue |=0x10;
				write_XDATA(0xf8, Pavalue);
				return;
			case 11:
				Pavalue |=0x20;
				write_XDATA(0xf8, Pavalue);
				return;
			case 12:
				Pavalue |=0x40;
				write_XDATA(0xf8, Pavalue);
				return;
			case 13:
				Pavalue |=0x80;
				write_XDATA(0xf8, Pavalue);
				return;
			case 14:
				Pbvalue |=0x01;
				write_XDATA(0xf9, Pbvalue);
				return;
			default:
				break;
		}
	}
}

void Beep1(UINT8 num)
{
	data UINT8 i;
	for(i=0;i<num;i++)
	{
		MUNIC=1;
		Delay1(5000);
		MUNIC=0;
		Delay1(5000);
	}
}
void Init8255(void)
{
	write_XDATA(0xfb,0x80);
	write_XDATA(0xf8,0x00);
	write_XDATA(0xf9,0x00);//0xfe
	write_XDATA(0xfa,0x00);//0xff
	P1 &=0x03;
}
void main(void)
{
	data UINT8 key,i,temp;
    data UINT8 k,j;
	data UINT16 addr;
	CPUInitial();
	Delay1(200);
	Beep1(3);
	InitLcd();
	Delay1(400);
	Voice=EEPROMByteRead0(0x0);
	Delay1(200);
	clearRAM(0,8);
	LOGO();
	clearRAM(0,8);
	for(j=0;j<4;j++)
	{
		SetRAMAddr(j+2,24);
		for(i=24;i<104;i++)
		{
			if(i==64)
				SetRAMAddr(j+2,0);
			SingleData(i,WAIT[j][i-24]);
      	}
	 }
	temp=EEPROMByteRead0(0xffff);
	Delay1(2000);
	if(temp !=0xaa)
	{
		for(k=0;k<0x80;k++)
		{
			EEPROMByteWrite0(k,0x01);
			Delay1(1000);
			ClearWatchDog();
		}
		for(i=0;i<7;i++)
		{
			for(k=0;k<15;k++)
			{
				for(j=0;j<60;j++)
				{
					addr=(i*900+k*60+j)*6+0x80;
					EEPROMByteWrite0(addr,23);
					Delay1(1500);
					EEPROMByteWrite0(addr+1,59);
					Delay1(1500);
					EEPROMByteWrite0(addr+2,59);
					Delay1(1500);
					EEPROMByteWrite0(addr+3,23);
					Delay1(1500);
					EEPROMByteWrite0(addr+4,59);
					Delay1(1500);
					EEPROMByteWrite0(addr+5,59);
					Delay1(1500);
					ClearWatchDog();
				}
			}
		}
		EEPROMByteWrite0(0xffff,0xaa);
	}
	Init8255();
	for(i=0;i<15;i++)
		Luopencloseflag[i]=0;
	Beep1(3);
	Timer0_Init();	
	ET0 = 1;
	clearRAM(0,8);
	ClearWatchDog();
	while(1)
	{
		switch(Function)
		{
			case 0:
				MainMenu();//主菜单选择ok
				changflag=1;
				break;
			case 1://时钟ok
				if(SecondFlag==1)
				{
					SecondFlag=0;
					if(changflag==1)
					{
						clearRAM(0,8);
						changflag=0;
						Time_display(5,Hour,Minute,Second,3);
						Date_display(Week,Year,Month,Date,3);
				    }
					Num_Display(Second,5,80,0);
					if(MinuteFlag==1)
					{
						Num_Display(Minute,5,48,0);
						MinuteFlag=0;
						if(HourFlag==1)
						{
							Num_Display(Hour,5,16,0);
							HourFlag=0;
							if(DateFlag==1)
							{
								Num_Display(Date,3,80,0);
								DateFlag=0;
								Msingle_font_pattern(Time_offset[Week],0,32,0);
								if(MonthFlag==1)
								{
									Num_Display(Month,3,48,0);
									MonthFlag=0;
									if(YearFlag==1)
									{
									     Num_Display(Year,3,16,0);
										 YearFlag=0;
									}
								}
							}
						}
					}
					if(Second%2==1)
					{
						for(i=0;i<15;i++)
						{
							if(Luopencloseflag[i]==1)
								LedContral(i,0);
						}
					}
					else
					   OnOffContral();
				}
				key=KeyScan();
				if(key==ENTER)
					Function=0;
				break;
			case 2://日期时间设置ok
				DateTimeSet();
				break;
			case 3://定时参数设置
			      ClockSet();
				break;
			case 4://本机设置
				SysSet();
				break;
			default:
				break;
		}
		ClearWatchDog();
	}//while end
}






























⌨️ 快捷键说明

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