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

📄 5588.c

📁 密码箱程序
💻 C
📖 第 1 页 / 共 5 页
字号:
						WriteLCD(18,0x0f);
					}
					else
					{
						WriteLCD(18,0x0c);
					}
					break;
		case SixFlash:
					if(SixLightState)
					{
						WriteLCD(18,0x0f);
					}
					else
					{
						WriteLCD(18,0x0a);
					}
					break;
		case SevenFlash:
					if(SevenLightState)
					{
						WriteLCD(18,0x0f);
					}
					else
					{
						WriteLCD(18,0x06);
					}
					break;
		case other:
					WriteLCD(3,0x08);
					Add10|=0x07;	WriteLCD(10,Add10);
					WriteLCD(12,0x0f);
					WriteLCD(18,0x0f);
					WriteLCD(24,0x0f);
					WriteLCD(28,0x0f);
					WriteLCD(38,0x0f);
					WriteLCD(40,0x0f);
					WriteLCD(44,0x0f);
					WriteLCD(46,0x0f);
					WriteLCD(58,0x0f);
					WriteLCD(73,0x08);
					WriteLCD(89,0x08);
					WriteLCD(106,0x08);
					WriteLCD(107,0x08);
					WriteLCD(115,0x02);
					WriteLCD(116,0x0f);
					WriteLCD(117,0x0f);
					WriteLCD(118,0x0f);
					WriteLCD(119,0x0f);


	}
}



// Write enable must precede all programming modes.
void Ewen(void)
{
	unsigned char temp,InData;

	_93C46_CS=0; 
	_93C46_CLK=0;
	_93C46_CS=1;
	InData=0x98; // 1 00 11XXXXX   8位工作方式
	for(temp=9;temp!=0;temp--)
	{
		_93C46_DATA=InData&0x80;
		_93C46_CLK=1;
		_93C46_CLK=0;
		InData<<=1;
	}
	_93C46_CS=0;
}



// Reads data stored in memory, at specified address.
unsigned char ReadE2prom(unsigned char address) 
{
	unsigned char temp;
	unsigned char result;

	Ewen();
	_93C46_CLK=0; _93C46_DATA=1; // 110 A5-A0
	_93C46_CS=0; _93C46_CS=1;
	_93C46_CLK=1; _93C46_CLK=0;   // 1
	_93C46_DATA=1; // 110 A5-A0
	_93C46_CLK=1; _93C46_CLK=0;   // 1
	address=address&0x7f;
	for(temp=8;temp!=0;temp--)
	{
		_93C46_DATA=address&0x80;
		_93C46_CLK=1; _93C46_CLK=0;
		address<<=1;
	}
	_93C46_DATA=1;//
	for(temp=8;temp!=0;temp--)
	{ // 16
		_93C46_CLK=1;
		result=(result<<1)|_93C46_DATA;
		_93C46_CLK=0;
	}
	_93C46_CS=0;
	return(result);

}


// Writes memory location An - A0.
void WriteE2prom(unsigned char address, unsigned char InData)
{
	unsigned char temp;

	Ewen();
	_93C46_CLK=0; _93C46_DATA=1; // 101 A5-A0
	_93C46_CS=0; _93C46_CS=1;
	_93C46_CLK=1; _93C46_CLK=0;   // 1
	_93C46_DATA=0;
	_93C46_CLK=1; _93C46_CLK=0;
	address=address&0x7f|0x80;
	for(temp=8;temp!=0;temp--)
	{
		_93C46_DATA=address&0x80;
		_93C46_CLK=1; _93C46_CLK=0;
		address<<=1;
	}
	for(temp=8;temp!=0;temp--)
	{
		_93C46_DATA=InData&0x80;
		_93C46_CLK=1; _93C46_CLK=0;
		InData<<=1;
	}
	_93C46_CS=0; _93C46_DATA=1;
	_93C46_CS=1; _93C46_CLK=1;
	while(_93C46_DATA==0)// busy test
	{
		_93C46_CLK=0;
		_93C46_CLK=1;
	}
	_93C46_CLK=0;
	_93C46_CS=0;
}



unsigned char ADC0832(void)
{

	_0832_CS=1;		_0832_CLK=0;	_0832_DATA=0; //ADC0832初始化
	_0832_CS=0;//片选
	_0832_DATA=1; //起始位,DI=1
	_0832_CLK=1;_0832_CLK=0;//第一个脉冲,注意:在负跳变之前加一个DI反转操作
	_0832_DATA=1; //DI置1,设为单通道
	_0832_CLK=1;_0832_CLK=0;//第二个脉冲,
	_0832_DATA=0; //DI置0,选择通道0
	_0832_CLK=1;_0832_CLK=0;//第三个脉冲,
	_0832_DATA=1;
	
	_0832_CLK=1;_0832_CLK=0;//第四个脉冲,
	B7=_0832_DATA; //第四个脉冲下降沿,DO端输出第一位数据,高位在前
	_0832_CLK=1;_0832_CLK=0;
	B6=_0832_DATA; //第五个脉冲下降沿,DO端输出第二位数据,以下雷同
	_0832_CLK=1;;_0832_CLK=0;
	B5=_0832_DATA;
	_0832_CLK=1;_0832_CLK=0;
	B4=_0832_DATA;
	_0832_CLK=1;_0832_CLK=0;
	B3=_0832_DATA;
	_0832_CLK=1;_0832_CLK=0;
	B2=_0832_DATA;
	_0832_CLK=1;_0832_CLK=0;
	B1=_0832_DATA;
	_0832_CLK=1;_0832_CLK=0;
	B0=_0832_DATA;
	_0832_CS=1; //结束这一次转换周期,省去第12至19个脉冲
	return(B); 
}



void time2() interrupt 5	//10ms
{
	TF2=0;

	_10msCount++;
	if(_10msCount==50)
	{
		SecondDotState=0;
		LightState=0;
	}
	if(_10msCount>99)
	{
		_10msCount=0;
		T1CountVal=TH1*256+TL1;
		T0CountVal=TH0*256+TL0;
		TH0=0;
		TL0=0;
		TH1=0;
		TL1=0;
		SamplingComplete=1;
		ReadSecondEnable=1;
		SecondDotState=1;
		LightState=1;
		if(SamplingCount<10)
		{
			SamplingCount++;
		}
		SecondCount++;
		if(SecondCount>59)
		{
			SecondCount=0;
			_1Minute=1;
		}
	}

	if(KnockOut&&!KnockPause)
	{
		KnockCount++;
	}
	if(DelayHeatCountEnable)
	{
		DelayHeatCount++;
		if(DelayHeatCount>1000)
		{
			DelayHeatCount=0;
			DelayHeatCountEnable=0;
			DelayHeatCountComplete=1;
		}
	}
	if(DelayStopWaterCountEnable)
	{
		DelayStopWaterCount++;
		if(DelayStopWaterCount>6000)
		{
			DelayStopWaterCount=0;
			DelayStopWaterCountEnable=0;
			DelayStopWaterCountComplete=1;
		}
	}
	CartoonCount++;
	if(!KnockPin1)
	{
		Knock1Count++;
		if(Knock1Count>5)
		{
			Knock1Count=0;
			KnockPin1=OFF;
		}
	}
	if(!KnockPin2)
	{
		Knock2Count++;
		if(Knock2Count>5)
		{
			Knock2Count=0;
			KnockPin2=OFF;
		}
	}

	if(!beep)
	{
		BeepCount++;
		if(BeepCount>10)
		{
			BeepCount=0;
			if(!WrongState)
			{
				beep=1;
			}
		}
	}

	if(_4_beep)
	{
		_4_beepCount++;
		if(_4_beepCount>280)
		{
			_4_beepCount=0;
			_4_beep=0;
		}
	}

	if(WaterTemperatureShiftFlag)
	{
		WaterTemperatureShiftCount++;
		if(WaterTemperatureShiftCount>200)
		{
			WaterTemperatureShiftCount=0;
			WaterTemperatureShiftFlag=0;
			OldWaterTemperatureVal=255;
		}
	}
}



main()
{
	unsigned char BCD_HighBit,BCD_LowBit;
	unsigned char i;

	ReadClockChip(0x02,1);//读取时钟芯片数据
	ClockBuf[0]=ClockBuf[0]&0x7f;
	WriteClockChip(0x02,1);

	TMOD=0X55;

	SCON=0x90;

	
	EA=1;
	ET2=1;
	RCAP2H=0xd8;//定时10ms
	RCAP2L=0xf0;

	TR0=1;
	TR1=1;

	if(ReadE2prom(7)!=33)
	{
		WriteE2prom(7,33);
		WriteE2prom(10,0);
		WriteE2prom(11,0);
		WriteE2prom(12,0);
		WriteE2prom(13,0);
	}

	TimeSumVal=(unsigned long)ReadE2prom(10)*256*65536;
	TimeSumVal=TimeSumVal+(unsigned long)ReadE2prom(11)*65536;
	TimeSumVal=TimeSumVal+(unsigned long)ReadE2prom(12)*256;
	TimeSumVal=TimeSumVal+(unsigned long)ReadE2prom(13);


	Write_LCD_Command(0x18);
	Write_LCD_Command(0x01);
	Write_LCD_Command(0x03);

	OperateMode=MainMenuMode;
	LowFreOperateMode=LowFreMainMenuMode;
	SaveVal=0x03;
	LowFreSaveVal=0x03;
	ObjectBuf[Cartoon]=1;
	ObjectBuf[MainKey]=1;
	ObjectBuf[LowFreMainKey]=1;
	ObjectBuf[Timer]=0;
	LowWaterTemperatureFlag=1;
	Display(other);
	Display(TimeSum);
	Display(Knock);
	FirstTime=1;


//5322888

	TR2=1;


	while(1)
	{
		switch(CartoonCount)
		{
			case 0:
			case 1:
					CartoonCount=2;
					ObjectBuf[Cartoon]=0;
					Display(Cartoon);
					break;
			case 50:
			case 51:
					CartoonCount=52;
					ObjectBuf[Cartoon]=1;
					Display(Cartoon);
					break;
			case 100:
			case 101:
					CartoonCount=102;
					ObjectBuf[Cartoon]=2;
					Display(Cartoon);
					break;
			case 150:
			case 151:
					CartoonCount=152;
					ObjectBuf[Cartoon]=3;
					Display(Cartoon);
					break;
			case 200:
			case 201:
					CartoonCount=202;
					ObjectBuf[Cartoon]=4;
					Display(Cartoon);
					break;
			case 250:
			case 251:
					CartoonCount=252;
					ObjectBuf[Cartoon]=5;
					Display(Cartoon);
					break;
			case 300:
			case 301:
					CartoonCount=302;
					ObjectBuf[Cartoon]=6;
					Display(Cartoon);
					break;
			case 310:
			case 311:
					CartoonCount=312;
					ObjectBuf[Cartoon]=7;
					Display(Cartoon);
					break;
			case 320:
			case 321:
					CartoonCount=322;
					ObjectBuf[Cartoon]=8;
					Display(Cartoon);
					break;
			case 330:
			case 331:
					CartoonCount=332;
					ObjectBuf[Cartoon]=9;
					Display(Cartoon);
					break;
			case 340:
			case 341:
					CartoonCount=342;
					ObjectBuf[Cartoon]=10;
					Display(Cartoon);
					break;
			case 350:
			case 351:
					CartoonCount=352;
					ObjectBuf[Cartoon]=11;
					Display(Cartoon);
					break;
			case 360:
			case 361:
					CartoonCount=362;
					ObjectBuf[Cartoon]=12;
					Display(Cartoon);
					break;
			case 370:
			case 371:
					CartoonCount=372;
					ObjectBuf[Cartoon]=13;
					Display(Cartoon);
					break;
			case 380:
			case 381:
					CartoonCount=382;
					ObjectBuf[Cartoon]=14;
					Display(Cartoon);
					break;
			case 390:
			case 391:
					CartoonCount=392;
					ObjectBuf[Cartoon]=15;
					Display(Cartoon);
					break;
			case 400:
			case 401:
					CartoonCount=402;
					ObjectBuf[Cartoon]=16;
					Display(Cartoon);
					break;
			case 410:
			case 411:
					CartoonCount=412;
					ObjectBuf[Cartoon]=17;
					Display(Cartoon);
					break;
			case 420:
			case 421:
					CartoonCount=422;
					ObjectBuf[Cartoon]=18;
					Display(Cartoon);
					break;
			case 430:
			case 431:
					CartoonCount=432;
					ObjectBuf[Cartoon]=19;
					Display(Cartoon);
					break;
			case 440:
			case 441:
					CartoonCount=442;
					ObjectBuf[Cartoon]=20;
					Display(Cartoon);
					break;
			case 450:
			case 451:
					CartoonCount=452;
					ObjectBuf[Cartoon]=21;
					Display(Cartoon);
					break;
			case 460:
			case 461:
					CartoonCount=462;
					ObjectBuf[Cartoon]=22;
					Display(Cartoon);
					break;
			case 470:
			case 471:
					CartoonCount=472;
					ObjectBuf[Cartoon]=23;
					Display(Cartoon);
					break;
			case 480:
			case 481:
					CartoonCount=482;
					ObjectBuf[Cartoon]=24;
					Display(Cartoon);
					break;
			case 490:
			case 491:
					CartoonCount=492;
					ObjectBuf[Cartoon]=25;
					Display(Cartoon);
					break;
			case 500:
			case 501:
					CartoonCount=502;
					ObjectBuf[Cartoon]=26;
					Display(Cartoon);
					break;
			case 510:
			case 511:
					CartoonCount=512;
					ObjectBuf[Cartoon]=27;
					Display(Cartoon);
					break;
			case 520:
			case 521:
					CartoonCount=522;
					ObjectBuf[Cartoon]=28;
					Display(Cartoon);
					break;
			case 530:
			case 531:
					CartoonCount=532;
					ObjectBuf[Cartoon]=29;
					Display(Cartoon);
					break;
			case 540:
			case 541:
					CartoonCount=542;
					ObjectBuf[Cartoon]=30;
					Display(Cartoon);
					break;
			case 550:
			case 551:
					CartoonCount=552;
					ObjectBuf[Cartoon]=31;

⌨️ 快捷键说明

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