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

📄 minsys.c

📁 用S52和1602液晶做的可进行设置的多级菜单
💻 C
📖 第 1 页 / 共 2 页
字号:
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
				}
				else
				{
					DispOver();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
				}
				LiuCheng1 = 1;
				LiuCheng1_1 = 1;
				LiuCheng2Enable = 1;
				LiuCheng3Enable	= 1;
				DispWelcome();
			}
		}
	}


//查询流程
	if((LiuCheng2 == 1)&&(LiuCheng2Enable == 1))
	{
		if(KEYB == 0)//按了“上翻/查询”键
		{
			LiuCheng2 = 0;
			LiuCheng1Enable = 0;
			LiuCheng3Enable	= 0;
			DispSearch();

			putchar(0xaa);//发开始码

 			putchar(DataSeclete[1]);//发功能号

			GetAll(DataReceive);//接收查询结果

			DispFindNow(GetShiwei(DataReceive[3]),GetGewei(DataReceive[3]),GetShiwei(DataReceive[2]),GetGewei(DataReceive[2]),DataReceive[0],DataReceive[1]);//显示查询结果
			Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
			Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
			Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
			Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
			Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
	
			LiuCheng2 = 1;
			LiuCheng1Enable = 1;
			LiuCheng3Enable	= 1;
			DispWelcome();
		}
	}

//工作流程
    if((LiuCheng3 == 1)&&(LiuCheng3Enable == 1))
	{
		if(LiuCheng3_1 == 1)
		{
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3 = 0;
				LiuCheng3_1 = 0;
				LiuCheng1Enable = 0;
				LiuCheng2Enable	= 0;
				DispSetTime(GetShiwei(DataBase[3]),GetGewei(DataBase[3]),GetShiwei(DataBase[2]),GetGewei(DataBase[2]),LiuCheng3_1_Sign);
				Delay400Ms();Delay400Ms();	
			}
		}
	}
	else
	{

//第一个子目录  设置时间
		if(LiuCheng3_1 == 0)
		{
			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			LiuCheng3_1_HH = GetShiwei(DataBase[3]);//小时十位
			LiuCheng3_1_HL = GetGewei(DataBase[3]);//小时个位
			LiuCheng3_1_LH = GetShiwei(DataBase[2]);//分钟十位
			LiuCheng3_1_LL = GetGewei(DataBase[2]);//分钟个位

			if(KEYC == 0)//按了“上翻/查询”键
			{
				if(LiuCheng3_1_Sign == 1)
				{
					LiuCheng3_1_HH ++;
					if(LiuCheng3_1_HH > 9)
					{
						LiuCheng3_1_HH -= 10;
					}	
				}
				else if(LiuCheng3_1_Sign == 2)
				{
					LiuCheng3_1_HL ++;
					if(LiuCheng3_1_HL > 9)
					{
						LiuCheng3_1_HL -= 10;
					}	
				}
				else if(LiuCheng3_1_Sign == 3)
				{
					LiuCheng3_1_LH ++;
					if(LiuCheng3_1_LH > 5)
					{
						LiuCheng3_1_LH -= 6;
					}	
				}
				else if(LiuCheng3_1_Sign == 4)
				{
					LiuCheng3_1_LL ++;
					if(LiuCheng3_1_LL > 9)
					{
						LiuCheng3_1_LL -= 10;
					}
				}
				DataBase[3] = LiuCheng3_1_HH*10+LiuCheng3_1_HL;	//把结果统计进数组
				DataBase[2] = LiuCheng3_1_LH*10+LiuCheng3_1_LL;
				DispSetTime(LiuCheng3_1_HH,LiuCheng3_1_HL,LiuCheng3_1_LH,LiuCheng3_1_LL,LiuCheng3_1_Sign);
				Delay400Ms();
			}
	
			if(KEYB == 0)//按了“左翻”键
			{
				LiuCheng3_1_Sign --;
				if(LiuCheng3_1_Sign == 0)
				{
					LiuCheng3_1_Sign = 4;
				}
				DataBase[3] = LiuCheng3_1_HH*10+LiuCheng3_1_HL;	//把结果统计进数组
				DataBase[2] = LiuCheng3_1_LH*10+LiuCheng3_1_LL;
				DispSetTime(LiuCheng3_1_HH,LiuCheng3_1_HL,LiuCheng3_1_LH,LiuCheng3_1_LL,LiuCheng3_1_Sign);
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3_1 = 1;
				LiuCheng3_2 = 0;
				DispSetRevise(DataBase[4]-24);
				Delay400Ms();Delay400Ms();	
			}
		}

//第二个子目录  设置时间修正值
		else if(LiuCheng3_2 == 0)
		{

			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			LiuCheng3_2_Num = DataBase[4]-24;

			if(KEYC == 0)//按了“上翻/查询”键
			{
				LiuCheng3_2_Num ++;
				if(LiuCheng3_2_Num > 9)
				{
					LiuCheng3_2_Num -= 10;
				}	
				DataBase[4] = LiuCheng3_2_Num + 24;	//把结果统计进数组
				DispSetRevise(LiuCheng3_2_Num);
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3_2 = 1;
				LiuCheng3_3 = 0;
				//读取下一个
				if(DataBase[5] < 0x80)//为负时
				{
					LiuCheng3_3_Sign = 0;
					LiuCheng3_3_HH = 0;
					LiuCheng3_3_HL = GetGewei(DataBase[5]);
				}
				else//为正时
				{
					LiuCheng3_3_Sign = 1;
					LiuCheng3_3_HH = GetShiwei(DataBase[5] - 0x80);
					LiuCheng3_3_HL = GetGewei(DataBase[5] - 0x80);
				}
				//显示下一个
				DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
				Delay400Ms();Delay400Ms();	
			}
		}

//第三个子目录	 设置温度上限
		else if(LiuCheng3_3 == 0)
		{

			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			//判断按键
			if(KEYC == 0)//按了“上翻/查询”键
			{
				//改变数值
				if(LiuCheng3_3_WeiZhi == 1)
				{
					if(LiuCheng3_3_Sign == 1)//为正
					{
						LiuCheng3_3_Sign = 0;//变成负以后
						LiuCheng3_3_HH = 0;
					}
					else//为负
					{
						LiuCheng3_3_Sign = 1;//变成正以后
					}	
				}
				else if(LiuCheng3_3_WeiZhi == 2)
				{
					if(LiuCheng3_3_Sign == 1)//符号为正时,取模的最大值为9
					{
						LiuCheng3_3_HH ++;
						if(LiuCheng3_3_HH > 9)
						{
							LiuCheng3_3_HH -= 10;
						}
					}
					else if(LiuCheng3_3_Sign == 0)//符号为负时,取模的最大值为1
					{
						LiuCheng3_3_Sign = 0;
					}
				}
				else if(LiuCheng3_3_WeiZhi == 3)
				{
					LiuCheng3_3_HL ++;
					if(LiuCheng3_3_HL > 9)
					{
						LiuCheng3_3_HL -= 10;
					}
				}
				//保存
				if(LiuCheng3_3_Sign == 0)
				{
					DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL;	//把结果统计进数组
					if(DataBase[5] == 0x00)
					{
						DataBase[5] = 0x80;
					}
				}
				else if(LiuCheng3_3_Sign == 1)
				{
					DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL+0x80;	//把结果统计进数组
				}
				//显示
				DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
				Delay400Ms();
			}

			if(KEYB == 0)//按了“左翻”键
			{
				//移动焦点
				LiuCheng3_3_WeiZhi --;
				if(LiuCheng3_3_WeiZhi == 0)
				{
					LiuCheng3_3_WeiZhi = 3;
				}
				//保存
				if(LiuCheng3_3_Sign == 0)
				{
					DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL;	//把结果统计进数组
					if(DataBase[5] == 0x00)
					{
						DataBase[5] = 0x80;
					}
			
				}
				else if(LiuCheng3_3_Sign == 1)
				{
					DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL+0x80;	//把结果统计进数组
				}
				//显示
				DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3_3 = 1;
				LiuCheng3_4 = 0;
				
				//显示下一个	
				if(DataBase[6] < 0x80)//为负时
				{
					LiuCheng3_4_Sign = 0;
					LiuCheng3_4_HH = 0;
					LiuCheng3_4_HL = GetGewei(DataBase[6]);
				}
				else//为正时
				{
					LiuCheng3_4_Sign = 1;
					LiuCheng3_4_HH = GetShiwei(DataBase[6] - 0x80);
					LiuCheng3_4_HL = GetGewei(DataBase[6] - 0x80);
				}
				DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
				Delay400Ms();Delay400Ms();
				//DataBase[2]分钟,[3]小时,[4]时间修正,[5]温度上限,[6]温度下限,[7]震动灵敏度	
			}
		}

//第四个子目录	 设置温度下限
		else if(LiuCheng3_4 == 0)
		{

			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			//判断按键
			if(KEYC == 0)//按了“上翻/查询”键
			{
				//改变数值
				if(LiuCheng3_4_WeiZhi == 1)
				{
					if(LiuCheng3_4_Sign == 1)//为正
					{
						LiuCheng3_4_Sign = 0;//变成负以后
						LiuCheng3_4_HH = 0;
					}
					else//为负
					{
						LiuCheng3_4_Sign = 1;//变成正以后
					}	
				}
				else if(LiuCheng3_4_WeiZhi == 2)
				{
					if(LiuCheng3_4_Sign == 1)//符号为正时,取模的最大值为9
					{
						LiuCheng3_4_HH ++;
						if(LiuCheng3_4_HH > 9)
						{
							LiuCheng3_4_HH -= 10;
						}
					}
					else if(LiuCheng3_4_Sign == 0)//符号为负时,取模的最大值为1
					{
						LiuCheng3_4_Sign = 0;
					}
				}
				else if(LiuCheng3_4_WeiZhi == 3)
				{
					LiuCheng3_4_HL ++;
					if(LiuCheng3_4_HL > 9)
					{
						LiuCheng3_4_HL -= 10;
					}
				}
				//保存
				if(LiuCheng3_4_Sign == 0)
				{
					DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL;	//把结果统计进数组
					if(DataBase[6] == 0x00)
					{
						DataBase[6] = 0x80;
					}
				}
				else if(LiuCheng3_4_Sign == 1)
				{
					DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL+0x80;	//把结果统计进数组
				}

				//显示
				DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
				Delay400Ms();
			}

			if(KEYB == 0)//按了“左翻”键
			{
				//移动焦点
				LiuCheng3_4_WeiZhi --;
				if(LiuCheng3_4_WeiZhi == 0)
				{
					LiuCheng3_4_WeiZhi = 3;
				}
				//保存
				if(LiuCheng3_4_Sign == 0)
				{
					DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL;	//把结果统计进数组
					if(DataBase[6] == 0x00)
					{
						DataBase[6] = 0x80;
					}
				}
				else if(LiuCheng3_4_Sign == 1)
				{
					DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL+0x80;	//把结果统计进数组
				}

				//显示
				DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3_4 = 1;
				LiuCheng3_5 = 0;
				//显示下一个
			   	LiuCheng3_5_Num = (DataBase[7]-2)/2;
				DispShake(LiuCheng3_5_Num);//震动灵敏度,输入数值0 ~ 9 。灵敏度是25毫秒内震动的次数2-20,设置时对应为0~9,设置值*2+2=灵敏度
				Delay400Ms();Delay400Ms();	
			}
		}

//第五个子目录  设置时间修正值
		else if(LiuCheng3_5 == 0)
		{

			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			if(KEYC == 0)//按了“上翻/查询”键
			{
				LiuCheng3_5_Num ++;
				if(LiuCheng3_5_Num > 9)
				{
					LiuCheng3_5_Num -= 10;
				}	
				DataBase[7] = LiuCheng3_5_Num * 2 + 2;	//把结果统计进数组
				DispShake(LiuCheng3_5_Num);
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				LiuCheng3_5 = 1;
				LiuCheng3_6 = 0;
				//读取下一个
				CalculatePassword(LiuCheng3_password,DataBase[0]);
				//显示
				DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
				DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
				Delay400Ms();Delay400Ms();	
			}
		}

//第六个子目录  设置密码
		else if(LiuCheng3_6 == 0)
		{
			LiuCheng1Enable = 0;
			LiuCheng2Enable	= 0;

			if(KEYC == 0)//按了“上翻/查询”键
			{
				//上翻
				LiuCheng3_password[LiuCheng3_6_Sign -1] ++;
				if(LiuCheng3_password[LiuCheng3_6_Sign-1] > 1)
				{
					LiuCheng3_password[LiuCheng3_6_Sign-1] -= 2;
				}	
				//保存
				ReCalculatePassword(LiuCheng3_password);//把结果统计进数组
				DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
				DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
				Delay400Ms();
			}
	
			if(KEYB == 0)//按了“左翻”键
			{
				//左翻
				LiuCheng3_6_Sign --;
				if(LiuCheng3_6_Sign == 0)
				{
					LiuCheng3_6_Sign = 8;
				}
				//保存
				ReCalculatePassword(LiuCheng3_password);//把结果统计进数组
				DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
				DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
				Delay400Ms();
			}
	
			if(KEYD == 0)//按了“确定/下一步”键
			{
				DispConnect();

				putchar(0xaa);//发开始码

				putchar(DataSeclete[2]);//发功能号	

				putchar(DataBase[0]);//发密码
				temp = getchar();//接收密码回馈
				if(temp == Retry)//判断密码
				{
					DispPasswordError();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
				}
				else
				{
					PutAll(DataBase);//从串口发送一个8位数组(第一个为密码)
					DispOver();
					Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
				}
				LiuCheng3 = 1;
				LiuCheng3_6 = 1;
				LiuCheng1Enable = 1;
				LiuCheng2Enable	= 1;
				DispWelcome();

			}
		}
	}
	
	KEYA = 1;//释放按键
	KEYB = 1;
	KEYC = 1;
	KEYD = 1;

	EA = 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////硬件初始化和主函数

void UART_INIT(void)//串口初始化,不要中断
{
	TMOD = 0x20;
	TL1 = 0x00;	   //300拨特率
	TH1 = 0x00;
	TR1 = 1;
	SCON = 0x50;   //方式1,允许接收
	PCON = 0x00;
}

void main(void)
{ 
	Delay400Ms(); //等待lcm进入工作状态
	LcdReset();	  //工作初始化
	UART_INIT();
	EX0 = 1;      //允许外部中断

	P0 = 0xff;
	P1 = 0xff;
	P2 = 0xff;
	P3 = 0xff;

	EA = 1;

	DispWelcome();

	while(1);
}

⌨️ 快捷键说明

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