{
// инициализация дисплея
Caption();
LCD_xy(1,2);
LCD_string("Uop=");
PrintJKI(Uop,2);
LCD_xy(2,0);
LCD_string("ADCH1=");
PrintJKI(ADCH1,0);
LCD_xy(2,11);
LCD_string("T1=");
PrintJKI(T1,2);
LCD_xy(3,0);
LCD_string("ADCH2=");
PrintJKI(ADCH2,0);
LCD_xy(3,11);
LCD_string("T2=");
PrintJKI(T2,2);
// цикл меню
for(;;){
__delay_ms(STDDEL);
// обработка клавиатуры
SkanKlav(0);
if(bnID==13){ // C - выход
MenuMainInit();
return;
}
if(bnID==11){ // A-ввод Uop
LCD_xy(1,2);
LCD_string1(TCLEAR10);
_Uop=EnterFloat(_Uop,5,1,6);
Uop=_Uop;
LCD_xy(1,2);
LCD_string("Uop=");
PrintJKI(Uop,2);
}
}
}
//----------------------------------------------------------------------------float EnterFloat(float outsave,unsigned char Ns,unsigned char x,
unsigned char y)
// Ns-количество символов, выводимых при вводе (размер поля ввода)
{
// переменные функции
unsigned char id=0; // есть точка или нет
float del; // делитель для дробного
float out=0;
// очищение пространства под ввод
LCD_xy(x,y);
for(id=1;id<=Ns;id++) LCD_char(' ');
id=0;
LCD_xy(x,y);
LCD_inst(0x0F);
for(;;){
__delay_ms(STDDEL);
SkanKlav(0);
if(bnID==16){ // "."-ввод после точки
id=1;
del=10;
LCD_string(".");
}
if((bnID>=1)&&(bnID<=10)&&(id==0)){ // изменение целых значений
if(bnID!=10){
if(out==0){
out=bnID;
LCD_data(bnID);
}
else{
out=out*10+bnID;
LCD_data(bnID);
}
}
else{
out=out*10;
LCD_data(0);
}
}
if((bnID>=1)&&(bnID<=10)&&(id==1)){ // изменение значений после точки
if(bnID!=10){
if(out==0){
out=bnID/del;
LCD_data(bnID);
}
else{
out=out+bnID/del;
del=del*10;
LCD_data(bnID);
}
}
else{
del=del*10;
LCD_data(0);
}
}
if(bnID==11){ // A - вернуть значение
LCD_inst(0x0C);
return out;
}
if(bnID==13){ // C - отмена ввода
LCD_inst(0x0C);
return outsave;
}
}
}
//----------------------------------------------------------------------------void Caption()
{
LCD_inst(1);
LCD_xy(0,7);
LCD_string1(TKOKHNO);
}
//----------------------------------------------------------------------------void MenuKalibr()
{
// инициализация дисплея
Caption();
// ADCH=
LCD_xy(1,1);
LCD_string1(TADCH);
PrintJKI(D,0);
// Т=
LCD_xy(1,10);
LCD_string1(TT1);
PrintJKI(T,2);
// вывести...
LCD_xy(2,1);
LCD_string1(MenuCtn1);
// выход/измен
LCD_xy(3,1);
LCD_string1(MenuCtn2);
// рабочий цикл
for(;;){
__delay_ms(STDDEL);
SkanKlav(0);
if(bnID==13){ // C - выход
MenuMainInit();
return;
}
if(bnID==1){ // 1 - ввод _T1
// шапка
Caption();
LCD_xy(1,0);
LCD_string1(MenuCtn3);
LCD_xy(3,0);
LCD_string1(RedBt);
// ввод ADCH1
LCD_xy(2,0);
LCD_string1(TADCH1); // ADCH1=
ADCH1=(unsigned int)EnterFloat(ADCH1,5,2,6);
//ADCH1=_ADCH1;
// ввод T1
LCD_xy(2,0);
LCD_string1(TCLEAR10);
LCD_xy(2,2);
LCD_string1(TT1); // T1=
T1=EnterFloat(T1,5,2,5);
MenuMainInit();
return;
}
if(bnID==2){ // 2 - ввод _T2
// шапка
Caption();
LCD_xy(1,0);
LCD_string1(MenuCtn3);
LCD_xy(3,0);
LCD_string1(RedBt);
// ввод ADCH2
LCD_xy(2,0);
LCD_string1(TADCH2); // ADCH2=
ADCH2=(unsigned char)EnterFloat(ADCH2,5,2,6);
//ADCH2=EnterInt(ADCH2,5,2,6);
// ввод T2
LCD_xy(2,0);
LCD_string1(TCLEAR10);
LCD_xy(2,2);
LCD_string1(TT2); // T2=
T2=EnterFloat(T2,5,2,5);
MenuMainInit();
return;
}
}
}
//-------------------------------------------------------------------В файле lcd.c добавлена функция для вывода на дисплей значения с плавающей точкой(и не только):
//-------------------------------------------------------------------// ФУНКЦИЯ КОХНО К.С.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.