Ayarlar menüsü nasıl yapılır???

Başlatan nicksiz88, 16 Mart 2010, 19:00:23

nicksiz88

Arkdaşlar loadcell den adc gelen degeri lcd görebiliyorum ama şu sıkıntım var kalibrasyon klein arkdaşım cvp verdi ama verilen cvp anlamadım tekrar sorma ihtiyacı duydum benim istedigim tam olarak yönetim paneli .Bütün herşeyi degiştirebilecegim bir panel bu nasıl yapılır bilmiyorum sizden hazır kod verin demiyorum sadece fikir istiyorum hangi kitapda bu konu anlatılır yoksa bu şekilde panel yerine bizim okulda gördügümüz buton led devresi gibi mi yapılıyor onu merak ediyorum.Lütfen yardım ederseniz sevinirim
Her şeyin bi fiyatı, her insanın bi değeri vardır. Fiyatı olmayan eşyaya çöp, Değeri olmayan insana; "giderken kapıyı ört" denir

Klein

Bu kod  işini görür. Ama CCS'e uygulamak sana kalmış.  

float calib_menu_temp=0;

const char calibmsg[][]={ 
						  "Sensor basIncI  \0Sensor pressure \0",//0						
						  "Sensor offset   \0Sensor offset   \0",//1
						  "Sensor span     \0Sensor span     \0",//2
						  "Filtre offset   \0Filter offset   \0",//3
						  "Filtre span     \0Filter span     \0",//4
						  "Sensor tipi     \0Sensor type     \0",//5				
						  "AyarlarI sIfIrla\0Load defaults   \0" //6
						};		

void calibmenu(void){
	if(updateflag){
		updateflag=0;
		printstr(row1,0,menutitle[10]+sys_langindex);
		printstr(row2,0,calibmsg[menulevel]+sys_langindex);
	}

	if(keypress){
		keypress=nopress;
		updateflag=1;
			switch(key){
				case key_dn : if(menulevel<5) menulevel++;break;
				case key_up : if(menulevel) menulevel--;break;
				case key_esc: progmode=viewmenu_index;break;
				case key_ent:
							switch(menulevel){
								case 0: calib_menu_temp=(float)sensor_pressure;
										break;
								case 5: calib_menu_temp=(float)sensor_polarity;
										break;
							}
							progmode=calibset_index;
							break;
			}
	}
}

void calibsetmenu(void){
static float csetmn_minval,csetmn_maxval,csetmn_plusval;
static unsigned int actuel_int_val;
	if(ad_view_flag){ad_view_flag=0; updateflag=1;}	
	if(updateflag){
		updateflag=0;
		printstr(row1,0,calibmsg[menulevel]+sys_langindex);
		switch(menulevel){
			case 0: 
					csetmn_minval=1;csetmn_maxval=1000;csetmn_plusval=1.0;
					sprintf(dispbuf,"%3.0f Bar",calib_menu_temp);
					break;
			case 1:
					sprintf(dispbuf,"%3.2f  %5d",prs_offset,prs_int_val);
					break;
			case 2:
					sprintf(dispbuf,"%3.2f  %5d",prs_span,prs_int_val);
					break;
			case 3:
					sprintf(dispbuf,"%3.2f  %5d",flt_pressure,flt_int_val);
					break;
			case 4:
					sprintf(dispbuf,"%3.2f  %5d",flt_pressure,flt_int_val);
					break;
			case 5:
					csetmn_minval=0;
					csetmn_maxval=1;
					csetmn_plusval=1;
					sprintf(dispbuf,"%s",polaritymsg[(char)calib_menu_temp]+sys_langindex);
					break;
			case 6: sprintf(dispbuf,"%s",loaddefmsg[sys_language]);
		}
		sprintstr(row2,0,16,dispbuf);
	}

	if(keypress){
		keypress=nopress;
		updateflag=1;
			switch(key){
				case key_dn : if(calib_menu_temp>csetmn_minval) calib_menu_temp -=csetmn_plusval;break;
				case key_up : if(calib_menu_temp<csetmn_maxval) calib_menu_temp +=csetmn_plusval;break;
				case key_esc: progmode=calibmenu_index;break;
				case key_ent: 
						switch(menulevel){
							case 0:
									sensor_pressure=calib_menu_temp;
									ee_write_int(prs_max_adr,sensor_pressure);
									break;
							case 1: 
									prs_offset=(float)prs_int_val;
									ee_write_float(prs_offset_adr,&prs_offset);
									break;
							case 2: 
									prs_span=(float)prs_int_val;
									ee_write_float(prs_span_adr,&prs_span);
								break;
							case 3: 
									flt_offset=(float)prs_int_val;
									ee_write_float(flt_offset_adr,&flt_offset);
									break;
							case 4: 
									flt_span=(float)prs_int_val;
									ee_write_float(flt_span_adr,&flt_span);
								break;
							case 5: 
								sensor_polarity=(int)calib_menu_temp;
								ee_write_int(sns_pol_adr,sensor_polarity);
								break;
						}	
				break;
			}
	}
}


/****************************  Main Loop *******************
	if(progmode != lastprogmode){
		lastprogmode=progmode;
		updateflag=1;
	}

	switch(progmode){
		case 0: viewmenu();break;ana ekran
		case 1: mainmenu();break; // ana menü 
		case 2: calibmen();break; kalibrasyon menüsü
		case 3: calibsetmenu();break;
   }