Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР.

 
Опции темы

Вопросы по Си.

Непрочитано 19.11.2006, 23:23  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Вопросы по Си.

Нужно выводить текст на ЛСД. Каждый текст имеет свое имя (Mes9,Mes10,Mes11 и т.д.)
Мне нужно заменить цифры в этих именах на переменную. Чтобы написав lcd_putsf(Mes,a,) вывелось сообщение с номером который соответствовал значению переменной,если переменная а=10 то вывелось сообщение Mes10 и так далее. Как это правильно сделать? Компилятор CodeVision.

flash unsigned char Mes9[]={111,178,112,101,183,186,97,32,58,0};
flash unsigned char Mes10[]={128,111,191,99,97,227,186,97,32,58,0};
flash unsigned char Mes11[]={0,66,174,67,79,84,65,32,75,79,72,66,69,166,69,80 ,65,0};
flash unsigned char Mes12[]={0,186,111,112,112,101,186,191,184,112,121,185,19 1,101,32,0};
flash unsigned char Mes13[]={0,111,191,99,97,227,186,97,0};

void main (void)
unsigned char a;
lcd_putsf (Mes9); нужно заменить Mes9 на Мes’a’(это для примера, как правильно делается я не знаю)
Zemlyanov вне форума  
Сказали "Спасибо" Zemlyanov
a1ex64 (26.04.2010)
Непрочитано 19.11.2006, 23:33  
ShaxTep
Частый гость
 
Регистрация: 05.11.2006
Сообщений: 15
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
ShaxTep на пути к лучшему
По умолчанию

Попробуйте использовать матрицу,т.е mes[0][5]='mes0';
mes[1][5]='mes1';...
А потом вместо первого индекса подставлять переменную mes[a].
Думаю,должно работать.
ShaxTep вне форума  
Сказали "Спасибо" ShaxTep
a1ex64 (26.04.2010)
Непрочитано 20.11.2006, 03:16  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

матрица двумерная или двумерный массив - array смотри в help
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Сказали "Спасибо" avr123-nm-ru
a1ex64 (26.04.2010)
Непрочитано 20.11.2006, 11:35  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Примерчик не помешал бы мне.
Zemlyanov вне форума  
Сказали "Спасибо" Zemlyanov
a1ex64 (26.04.2010)
Непрочитано 20.11.2006, 15:01  
Snixers
Прописка
 
Регистрация: 14.02.2006
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Snixers на пути к лучшему
По умолчанию

Создай массив ссылок и будет счасьте К примеру так
const unsigned char*flash MONTH[]={"Январь","Февраль",
"Март","Апрель","Май","Июнь","И� �ль","Август",
"Сентябрь","Октябрь","Ноябрь" ,"Декабрь"};
Snixers вне форума  
Сказали "Спасибо" Snixers
a1ex64 (26.04.2010)
Непрочитано 20.11.2006, 15:36  
paha1956
Временная регистрация
 
Регистрация: 17.05.2006
Сообщений: 71
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
paha1956 на пути к лучшему
По умолчанию

Есть простой вариант "в лоб":

Код:
puts_lcd(char n)
{
switch (n)
  {
  case  9: lcd_putsf (Mes9);  break;
  case 10: lcd_putsf (Mes10); break;
  ...
  case  N: lcd_putsf (MesN);  break;
  }
}
Дёшево и сердито.
Можно ещё создать массив указателей на строки:

Код:
char mas0[]={...........};
char mas1[]={................};
...
char masN[]={......};

char *Point_Mas[N]

Point_Mas[0]=mas0;
Point_Mas[1]=mas1;
...
Point_Mas[N]=masN;
А потом вызывать функцию, как lcd_putsf(Point_Mas[n]);
__________________
"Имею честь иметь Вашу честь в своём доме..."
paha1956 вне форума  
Сказали "Спасибо" paha1956
a1ex64 (26.04.2010)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по PROTEUS-у Advanced_LAMER Proteus 372 19.09.2021 01:20
Вопросы по ENC28J60 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 46 22.07.2009 14:50
Вопросы по TMS470R1xx rear Микроконтроллеры, АЦП, память и т.д 2 22.09.2008 18:05
Вопросы по ICD2 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 113 31.03.2008 10:49
вопросы по АСУТП voda2000 Proteus, KiCAD и другие ECAD 0 24.02.2005 14:45


Часовой пояс GMT +4, время: 03:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.