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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.10.2008, 22:41  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

каким образом внутри массива строк может появиться 0 ?
только обозначая его окончание. Эта стандартная практика в си
http://ru.wikipedia.org/wiki/%D0%A1%...82%D0%B8%D0%BF
еще почитайте (чуть отклоняясь от темы ) венгерская запись.
Это элеметарно, Ватсон...
Реклама:
urry вне форума  
Непрочитано 13.10.2008, 01:03  
Solncevorot
Частый гость
 
Регистрация: 15.08.2006
Сообщений: 23
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Solncevorot на пути к лучшему
По умолчанию

Сообщение от urry
каким образом внутри массива строк может появиться 0 ?
только обозначая его окончание. Эта стандартная практика в си
http://ru.wikipedia.org/wiki/%D0%A1%...82%D0%B8%D0%BF
еще почитайте (чуть отклоняясь от темы ) венгерская запись.
Это элеметарно, Ватсон...
Кажется, начинаю понимать. 0 - это конец строки, его нельзя путать с символом ноль, потому как это разные вещи. Правильно я понял? То есть, конец строки это 0х00?
Solncevorot вне форума  
Непрочитано 13.10.2008, 07:54  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

Сообщение от Solncevorot
Halex07
Кстати, да, в help`е я нашу прагму не нашел, то-то было удивление.
Видел в инете еще один совет как сделать отображение русских текстов на жки возможным, но он, как оказалось, был ложным. Советовали подправить библиотеку lcd.lib , а конкретно, заменить строку
_lcd_write_data(0x2;
на:
_lcd_write_data(0x2A);
Это оказалась чушь. Во всяком случае, у меня на CVAVR не сработало, да и выглядит совет, мягко говоря, неубедительно.
Не сработало, конечно, менять надо на 0x2С. Совет то наверное был мой, но касается он измененияФОНТА с матрицы 5х7 по умолчанию на 5х10 для отображения нижних хвостов в русских буквах. А для этого в иниацилизации LCD надо установить бит выбора режима матрицы, т.е. второй (счет битов с 0). Третий бит отвечает зза четырехпроводный интерфейс - отсюда 28, включаем там же режим 5х10 - получаем 2С. Читать надо документацию на HD44780, а не слепо верить в чудеса.
Во вложении проект для протеуса 7.2.sp6 с CAVR. И в отдельных папках соответствующие исправленные файлы для CAVR. Скопируйте их в соответствующие папки вашего CAVR as is (т.е. не меняя имен). В Ваших программах вместо
#include ‹lcd.h›
используем:
#include ‹lcd510.h›
если нужны хвостики в Ц и Щ.
Что касается #pragma ЭТО ДИРЕКТИВА КОМПИЛЯТОРА (при компиляции сделать то-то и то-то), также как и #include (включить при компиляции такой-то файл), существуют они независимо от Вашего желания. Видно у Вас и Си не все в порядке.
Дак и напоследок, полезно иногда посещать сайты производителей:
http://www.atmel.ru/Software/Software.htm
скачайте HD-44780.EXE - формирует готовые массивы для СИ с русской символикой. Просто набираете текст и получаете в буфер готовый массив, вставляемый в том-же CAVR. В начале массива коментарий с содержимым - это лучще, чем гадать на иероглифах LCD20.

Прикрепленный файл: 8231297.rar
Halex07 вне форума  
Непрочитано 13.10.2008, 19:34  
Solncevorot
Частый гость
 
Регистрация: 15.08.2006
Сообщений: 23
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Solncevorot на пути к лучшему
По умолчанию

Да, с С у меня не все в порядке, я в программировании вообще неопытен.
Спасибо. Я, кстати, и не обратил внимание, что хвостов у букв Ц,Щ, нету... А так очень полезная ваша библиотека.
По поводу #pragma я не понимаю. Для чего она нужна, неужели нельзя было без нее обойтись разработчикам компилатора? Вот чем они руководствовались, создавая эту диррективу?
Solncevorot вне форума  
Непрочитано 13.10.2008, 21:34  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

Сообщение от Solncevorot
По поводу #pragma я не понимаю. Для чего она нужна, неужели нельзя было без нее обойтись разработчикам компилатора? Вот чем они руководствовались, создавая эту диррективу?
Такое впечатление, что мы говорим на разных языках...
Еще раз повторюсь #pragma - это директива комиляторУУ при переводе программы в машинные коды, то есть в то, чтовы шьете в МК, произвести такие-то и такие-то действия с исходным кодом. И придумали их не для того чтобы Вас запутать, а для того, чтобы Вам жисть облегчить. Вы пишете на стандартном Си, а при переводе в конкретном компиляторе Си в микропрограмму - компилятор использует эти директивы. Они есть и в IAR и в ImageCraft ICC и в компиляторах для МК PIC. Это не прихоть разработчика конкретно CAVR. Иначе при переходе с одного компилятора на другой Вам пришлось изучать кучу особенностей каждого. Теперь понятно???
Halex07 вне форума  
Непрочитано 19.02.2009, 15:23  
Schranz
Прохожий
 
Регистрация: 31.01.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Schranz на пути к лучшему
По умолчанию

помогите мне написать код для индикации на LCD секундомера. На C++. КОМПИЛЯТОР Keil uVision 8.0

Вот моя вся прога

#include ‹at898252.h›
#include ‹absacc.h›
unsigned int msec; //переменная мсек
unsigned int sec; // переменная сек.
int msecINT;
int stop;

void Start (void)
{
if (P1_1==0);
{
stop=1;
}
}

void Reset (void)
{if(P1_3==0);
{
sec=0; msec=0;
}
}
void StopT (void)
{
if (P1_2==0);
{
stop=0;
}
}

void TimerC4et4uK(void)
{
TH1=0xF8;
TL1=0x30;
TMOD=0x10;
IE=0x88;
TR1=1;
}
void O6PA6OT4uK(void) interrupt 3
{
TR1=0;
TH1=0xF8;
TL1=0x30;
TR1=1;
if(stop=0);
if (msec›999) msec++;
else
{
msec=0;
}
if(sec‹6039) sec++;
else
{
sec=0;
}
}

void main(void)
{
TimerC4et4uK();
Start();
StopT();
Reset();
while(1);
{
МНЕ ТУТ НУЖНО НАПИСАТЬ КОД ДЛЯ ИНДИКАЦИИ!!! а я незнаю как это зделать помогите!!!!!!!! Чтото типо msec/10 msec%10 sec/10 sec%10 Я просто незнаю как написать
}
}
Schranz вне форума  
Непрочитано 19.02.2009, 18:43  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

В Keil не силен, но почитай на Радиокоте вот это, может пригодится:
http://radiokot.ru/articles/25/
Halex07 вне форума  
Непрочитано 20.02.2009, 09:02  
nagano
Прописка
 
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
nagano на пути к лучшему
По умолчанию

Привет, я делаю вот так, может пригодится:
Код:
const unsigned char ruscoder[64] = { //массив для перекодировки из ASCII в KOI-8R-----------------------------------------------------
 0x41, 0xA0, 0x42, 0xA1, //0xC0...0xC3 ‹=› А Б В Г
 0xE0, 0x45, 0xA3, 0x33, //0xC4...0xC7 ‹=› Д Е Ж З
 0xA5, 0xA6, 0x4B, 0xA7, //0xC8...0xCB ‹=› И Й К Л
 0x4D, 0x48, 0x4F, 0xA8, //0xCC...0xCF ‹=› М Н О П

 0x50, 0x43, 0x54, 0xA9, //0xD0...0xD4 ‹=›  Р С Т У
 0xAA, 0x58, 0xE1, 0xAB, //0xD5...0xD7 ‹=›  Ф Х Ц Ч
 0xAC, 0xE2, 0xAC, 0xAE, //0xD8...0xDB ‹=›  Ш Щ Ъ Ы
 0x62, 0xAF, 0xB0, 0xB1, //0xDC...0xDF ‹=›  Ь Э Ю Я

 0x61, 0xB2, 0xB3, 0xB4, //0xE0...0xE4 ‹=›  а б в г
 0xE3, 0x65, 0xB6, 0xB7, //0xE5...0xE7 ‹=›  д е ж з
 0xB8, 0xA6, 0xBA, 0xBB, //0xE8...0xEB ‹=›  и й к л
 0xBC, 0xBD, 0x6F, 0xBE, //0xEC...0xEF ‹=›  м н о п

 0x70, 0x63, 0xBF, 0x79, //0xF0...0xE4 ‹=›  р с т у
 0xE4, 0xD5, 0xE5, 0xC0, //0xF5...0xE7 ‹=›  ф х ц ч
 0xC1, 0xE6, 0xC2, 0xC3, //0xF8...0xEB ‹=›  ш щ ъ ы
 0XC4, 0xC5, 0xC6, 0xC7  //0xFC...0xEF ‹=›  ь э ю я
 };

 void __lcd_ruscoder_puts (unsigned char *message) //функция перекодировки ASCII в KOI-8R и вывод на LCD-----------------
{ //sprintf (message, "Привет дружище! :)"); //сначало надо использовать sprintf -  строчку ASCII в массив, и сразу добавляется 0 в конец строчки
 unsigned char i, j; //для цикла и длины

 j = strlen(message); //определяем длину строчки

 for (i = 0; i ‹ (j + 1); i++) //массив ASCII в массив KOI-8R, j + 1 - что бы вывести конец строки - 0
     {
      if (message [i] › 192) //если кирилица
	     {
	      message [i] = ruscoder [(message [i] - 192)]; //используем массив перекодировки
	      };
	  };

 lcd_puts (message); //выыодим на LCD
 } //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nagano вне форума  
Непрочитано 20.02.2009, 09:04  
nagano
Прописка
 
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
nagano на пути к лучшему
По умолчанию

Ну и пример:
Код:
sprintf (lcd_buffer, "t%u- не t-датчик!", k + 1);
lcd_gotoxy (0, k);
__lcd_ruscoder_puts (lcd_buffer);
Удачи!
nagano вне форума  
Непрочитано 20.02.2009, 20:20  
Vov123
Вид на жительство
 
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
Vov123 на пути к лучшему
По умолчанию

Может кому пригодится-Перекодировщик Win-текста сообщений для ЖКИ-контроллера HD44780

Прикрепленный файл: 5828252.rar
Vov123 вне форума  
Сказали "Спасибо" Vov123
kiNlA (03.01.2011)
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CodeVisionAVR, LCD + русские буквы jogick Микроконтроллеры, АЦП, память и т.д 8 05.07.2009 12:47
как вывести буквы на дисплей andron-kip Микроконтроллеры, АЦП, память и т.д 4 27.10.2008 00:28
подскажите как вывести значение ацп на индикатор ctefan Микроконтроллеры, АЦП, память и т.д 13 06.04.2007 10:59
как вывести на LCD данные из буфера? goooblin Микроконтроллеры, АЦП, память и т.д 11 02.04.2007 10:01
Как вывести из ступора DS1307? Muzicant Микроконтроллеры, АЦП, память и т.д 4 09.10.2006 19:28


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot