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

📄 123.c

📁 这是一个波形选择菜单
💻 C
📖 第 1 页 / 共 2 页
字号:
					wr_lcd(0x25);
					//////////////////////////////////////
					for(i=0;i<2;i++	)					 //00
						{
							wr_zhiling(0xf9,0x16-i,0x20);
							wr_lcd(num[numd[i]]);
						}
				/*	wr_zhiling(0xf9,0x14,0x20);		 //写个小数点.
					wr_lcd(0x2e);
					for(i=2;i<4;i++)					//00
						{
							wr_zhiling(0xf9,0x15-i,0x20);
							wr_lcd(num[numd[i]]) ;
						} */
				  //////////////////////////////////////
			
				break;

			   case 2:									//频率	   	
				wr_lcd(0xf4);
				for(i=0;i<2;i++)
					{
						wr_zhiling(0xf0,i,0);
						wr_lcd(set0[2*i]);
						wr_lcd(set0[2*i+1]);
					}
					////////////////////////////////////////////////////														  //显示频率的数值
					 	if(v==0)
							{	
								for(i=0;i<5;i++)					//.00HZ
									{
										wr_zhiling(0xf9,0x13+i,0);
										wr_lcd(unit0[i]);		
									}
								
								for(i=0;i<5;i++)
									{
										wr_zhiling(0xf9,0x12-i,0);
										wr_lcd(num[numf[i]]);
									}
							}
						if(v==1)
							{
								for(i=0;i<6;i++)				  //.00Khz
									{
										wr_zhiling(0xf9,0x12+i,0);
										wr_lcd(unit2[i]);		
									}
								for(i=0;i<5;i++)
									{
										wr_zhiling(0xf9,0x11-i,0);
										wr_lcd(num[numf[i]]);
									} 
							}
				 //////////////////////////////////////////////////////////////////////
				for(i=0;i<2;i++)					   		//幅度	
					{
						wr_zhiling(0xf0,i,1);
						wr_lcd(set1[2*i]);
						wr_lcd(set1[2*i+1]);
					}
					for(i=0;i<3;i++)							//VPP
					{
						wr_zhiling(0xf9,0x15+i,0x10);
						wr_lcd(unit1[i]);
					}
						//////////////////////////////////////////////////////////////
					for	(i=0;i<2;i++)							 // 00.00
						{
							wr_zhiling(0xf9,0x14-i,0x10);
							wr_lcd(num[numr[i]]);
						}
				
					wr_zhiling(0xf9,0x12,0x10);		 //写个小数点.
					wr_lcd(0x2e);

					for(i=2;i<4;i++)						//00
						{
							wr_zhiling(0xf9,0x13-i,0x10);
							wr_lcd(num[numr[i]]);
						}  
				   //////////////////////////////////////////////////////////////////
				wr_lcd(0xfa);
			   	for(i=0;i<3;i++)							//占空比  	
					{
						wr_zhiling(0xf0,i,2);
						wr_lcd(set2[2*i]);
						wr_lcd(set2[2*i+1]);
					}
				wr_lcd(0xfa);
					wr_zhiling(0xf9,0x17,0x20);		   //%
					wr_lcd(0x25);
					//////////////////////////////////////
					for(i=0;i<2;i++	)					 //00
						{
							wr_zhiling(0xf9,0x16-i,0x20);
							wr_lcd(num[numd[i]]);
						}
				/*	wr_zhiling(0xf9,0x14,0x20);		 //写个小数点.
					wr_lcd(0x2e);
					for(i=2;i<4;i++)					//00
						{
							wr_zhiling(0xf9,0x15-i,0x20);
							wr_lcd(num[numd[i]]) ;
						}  */
				  //////////////////////////////////////
			
				break;
		}


}
/***************************************************************************/



															    
/**********************键盘扫描***********************/
uchar keyscan()
{
	 
	uchar k_new,k;
	P2=0xff;											//先置位按键端口;
    k_new=0x00;	
	k=0;
    k_new=P2;												//将按键端口状态送给k_new;
	if(k_new!=0xff)												//判断是否有按键按下
	{	
		delay(200);											//按键去抖
		k_new=P2;
		if(k_new!=0xff)											//再次判断是否有按键按下,有则执行
		{
			switch(k_new)
			{

				case 0xfe:			  //下
					k = 1;
					break;
				case 0xfd:			  //上
					k = 2;
					break;
				case 0xfb:			  //进入子菜单
					k = 3;
					break;
				case 0xf7:			 //返回上一级菜单
					k = 4;
					break;
				default:
					k = 0;
					break;	
			}		
		}
	}

    return(k);   											     //无键按下 无键按下返回0;
	
}



void main()
{
	uchar r=0,s=0,t=0,u,i;	//s为主菜单,按键返回值;t为一级子菜单,按键返回值;把一级菜单中菜单选中状态赋给u;
	int_init();		 //中断初始化
	serial_init();	
	lcd_init();		//液晶初始化
	delay(10);
	wr_lcd(0xf4);


	start();

	delay(5000);

	wr_lcd(0xf4);
	main_menu(temp);
	
	while(1)
		{
			s=keyscan();
			delay(200);										//调入按键扫描程序
			switch(s)
				{
					case 1: 									 //菜单向下移动,但需要更多的菜单,*****可以采用,当一屏满时,可以上移16格,然后在显示,上移时则下移16格
						temp++;
						main_menu(temp);
						if(temp==4)
							{
								temp=0;
								main_menu(temp);
							}
						break;
					case 2: 									//菜单往上移动
						temp--;
						if(temp==-1)
							{
								temp=3;
								main_menu(temp);
							}
						main_menu(temp);
						break;									
					case 3:										//进入子菜单  ,进入子菜单后,*****嵌套键盘扫描,当有返回键时返回,否则停在此处显示
						sub_menu1(temp1);			 //一级子菜单标志,当temp1=0,选中是频率
						while(1)
							{
								//sub_menu1(temp1);
								t=keyscan();  
								delay(200);
								switch(t)
									{
										case 1:			  //向下移
											temp1++;
											if(temp1==3)
												{
													temp1=0;
													sub_menu1(temp1);
												}
											 sub_menu1(temp1);
											 break;
										case 2:				 //向上移
											temp1--;
											if(temp1==-1)
												{
													temp1=2;
													sub_menu1(temp1);
												}
											 sub_menu1(temp1);

											break;
										case 3:				 //二级菜单配置
											u=temp1;		//temp1为选中的一级子菜单的标志
											display_data(u,f,range,duty,w);

											switch(u)												  /************构想,这里也是采用按键,按键不放数值一直递增***************/
												{
													case 0:		      //频率数值设置
														while(1)				//调用函数获得数值,然后显示
															{
																r=keyscan();
															
																
																switch(r)
																	{
																		case 1:			   //按键递增	   //HZ级别
																			if(w==0)
																				{	
																			
																					if(f<60)
																						f++;
																					if (f>=60&&f<100)
																						f=f+10;
																					if(f>=100&&f<1000)
																					 	f=f+100;
																					if(f>=1000&&f<10000)
																						f=f+1000;
																					if(f>=10000&&f<50000)
																						f=f+10000;
																					if(f==50000)
																						{
																							f=0;
																							w=1;
																						}				 
																				
																						
																				}
																			display_data(u,f,range,duty,w);
																			if(w==1)					   //按键递增,KHZ级别
																				{
																					if(f<100)
																						f++;
																					if(f>=100&&f<1000)
																					 	f=f+100;
																					if(f>=1000&&f<10000)
																						f=f+1000;
																					if(f==10000)
																						{
																							f=0;
																							w=0;
																						}
																					display_data(u,f,range,duty,w);
																				}	 			 	
																			break;

																		case 2:					 //递减
																		if(w==0)
																			{	
																			
																				if(f<100)
																					f--;
																				if(f>=100&&f<1000)
																					f=f-100;
																				if(f>=1000&&f<10000)
																					f=f-1000;
																				if(f>=10000&&f<50000)
																					f=f-10000;
																				if(f==65535)
																					{
																						f=10000;
																						w=1;
																					}				 
																				
																						
																			}
																		display_data(u,f,range,duty,w);
																		if(w==1)					   //按键递减,KHZ级别
																			{
																				if(f<=10000)
																					f=f-1000;
																				if(f>100&&f<=1000)
																				 	f=f-100;
																				if(f<=100)
																					f=f--;
																				if(f==0)
																					{
																						f=50000;
																						w=0;
																					}
																				display_data(u,f,range,duty,w);
																			}

																	}
																  if(r==4)
																  	{
																		 r=0;
																		 sub_menu1(temp1);
																		 break;
																	}
																  if(flag==1)		//////////////////////////////
																  	
																	{
																		delay(200);
																		flag=0;
																			while(TI)  ;
																			SBUF=w;
																			while(!TI);
																			TI=0;
																		for(i=0;i<5;i++)
																			{
																				while(TI)  ;
																				SBUF=numf[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xbb;
																			while(!TI);
																			TI=0;
																		for(i=0;i<4;i++)
																			{
																				while(TI)  ;
																				SBUF=numr[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xcc;
																			while(!TI);
																			TI=0;
																		for(i=0;i<2;i++)
																			{
																				while(TI)  ;
																				SBUF=numd[i];
																				while(!TI);
																				TI=0;	
																			}
																	} 		
															}
														break;
													case 1:			  //幅度大小设置
																	  //调用函数获得数值,然后显示
														while(1)				//调用函数获得数值,然后显示
															{
																r=keyscan();
															
																switch(r)
																	{
																		case 1:
																		
																			range=range+2;
																			P10=~P10;

																			
																			display_data(u,f,range,duty,w);

																			break;

																		case 2:
																			if(range>=2)
																				range=range-2;
																			display_data(u,f,range,duty,w);
																			break;

																	}
																  if(r==4)
																  	{
																		 r=0;
																		 sub_menu1(temp1);
																		 break;
																	}
																	if(flag==1)		/////////////////////////
																  	
																	{
																			delay(200);
																			flag=0;
																			while(TI)  ;
																			SBUF=w;
																			while(!TI);
																			TI=0;
																		for(i=0;i<5;i++)
																			{
																				while(TI)  ;
																				SBUF=numf[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xbb;
																			while(!TI);
																			TI=0;
																		for(i=0;i<4;i++)
																			{
																				while(TI)  ;
																				SBUF=numr[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xcc;
																			while(!TI);
																			TI=0;
																		for(i=0;i<2;i++)
																			{
																				while(TI)  ;
																				SBUF=numd[i];
																				while(!TI);
																				TI=0;	
																			}
																	} 		
															}								  	
														break;
													case 2:			  //占空比设置
																	  //调用函数获得数值,然后显示	
														while(1)				//调用函数获得数值,然后显示
															{
																r=keyscan();
															
																switch(r)
																	{
																		case 1:
																			
																			duty++;
																			if(duty==100)
																				duty=0;
																			display_data(u,f,range,duty,w);
																			break;

																		case 2:
																			if(duty>=1)
																				duty--;
																				display_data(u,f,range,duty,w);
																			break;

																	}
																  if(r==4)
																  	{
																		r=0;
																		sub_menu1(temp1);
																		break;	
																	}
																if(flag==1)		/////////////////////////////
																  	
																	{		
																			delay(200);
																			flag=0;
																			while(TI)  ;
																			SBUF=w;
																			while(!TI);
																			TI=0;
																		for(i=0;i<5;i++)
																			{
																				while(TI)  ;
																				SBUF=numf[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xbb;
																			while(!TI);
																			TI=0;
																		for(i=0;i<4;i++)
																			{
																				while(TI)  ;
																				SBUF=numr[i];
																				while(!TI);
																				TI=0;	
																			}
																			while(TI)  ;
																			SBUF=0xcc;
																			while(!TI);
																			TI=0;
																		for(i=0;i<2;i++)
																			{
																				while(TI)  ;
																				SBUF=numd[i];
																				while(!TI);
																				TI=0;	
																			}
																	} 		
															}
														break;		 	
												}		

											break;
									
									
									
									/*	case 4:				 //返回上一级菜单
											main_menu(temp);
											break;	*/			

									}
								
								if(t==4)
									{
										t=0;
										temp1=0;			  //跳出一级子菜单后,temp1=0;
										main_menu(temp);	  //跳出一级子菜单后,显示进入时的主菜单;temp为进入主菜单选中时进入一级子菜单的标志
										break;

									}
								   		
										
							}

					
						//last_form(temp);
						break;				
					case 4:										//返回主菜单
						main_menu(temp);
						break;	
							
				}
		}
}
void  inx()interrupt 0
{
	flag=1;
}

⌨️ 快捷键说明

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