Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » »Радиолюбитель
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио

Ответ
 
Опции темы
Старый 21.03.2012, 03:11   #991   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
Изучил тему по согласованию уровней, спасибо Вам! Заказал микросхему: sn74lvc2t45, без доставки 94 рубля, как раз на 2-а входа/выхода.
Есть еще специализированные микросхемы трансляторы уровня сигнала: TXS0101-TXS0108 (последняя цифра обозначает количество вводов/выводов), но их достать тяжелее.
Пришла микросхема, сразу скажу, что направление для согласование уровней задается с помощью ножки "DIR", если DIR посадить на массу (низкий уровень) то направление будет от порта В к А, если DIR=1 (или напряжению питания VccA), то направление от порта А к В.
Также данная микросхема позволяет работать в обоих направлениях, но будет доступен только один вход/выход, хотя у нее их 2-а.
Еще предупрежу на всякий случай, микросхема мелкая 3х3мм для SMD монтажа, поэтому паять ее тяжеловато.
Результат порадовал, при напряжении питания PIC +5V, от модема получаю четкие ответы, т.е. микросхема справилась с поставленной задачей.
  Ответить с цитированием
Старый 21.03.2012, 10:53   #992   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Сегодня столкнулся со следующей проблемой компилятора (mikroC PRO for PIC v.5.4.0):
0 434 Demo Limit Demo Limit



Кто то решил подобную проблему?

Вопрос более не актуален...

Последний раз редактировалось Teeen; 21.03.2012 в 11:47.
  Ответить с цитированием
Старый 21.03.2012, 21:55   #993   
Форумец
 
Сообщений: 9
Регистрация: 22.01.2012

BARS_21 вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
1. На какой частоте запускается Ваш проект в Протеусе?
2. Какая частота указана в настройках проекта MikroC?
3. На какой частоте реально работает контроллер?
Ответ в этих трех вопросах, когда все они придут к одному значению, тогда все и встанет на место.
1. 4 MГц
2. 4 MГц
Конфиг 0x3F11
3. как замерить не знаю ( используется внутренний тактовый генератор).

Tимп=Tпаузы=примерно 140 секунд.

petrd выложите пожалуста в архиве рабочий пример данной программы для контроллера 16f819 b 12f683 (12f675)
  Ответить с цитированием
Старый 22.03.2012, 08:41   #994   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от BARS_21 Посмотреть сообщение
как замерить не знаю ( используется внутренний тактовый генератор).
Tимп=Tпаузы=примерно 140 секунд.
Все временные задержки, например, delay_ms(1000), компилятор рассчитывает относительно частоты указанной в настройках проекта.
Для PIC16F819. У Вас внутренний генератор работает на частоте по умолчанию (31,25 кГц), т.е. в 124 раз медленнее задуманного, а задумали 4 МГц. Поэтому надо внутренний генератор переключить на 4 МГц. А можно ничего и не делать, просто в настройках проекта указать частоту 31,25 кГц, откомпилировать, прошить и все должно заработать как надо. Несложно, тренируйтесь. И если есть сомнения смотрим в раздел DS про осциллятор.

Код:
void main()
{

OSCCON = 0x60;     // переключили тактовую с 31,25 кГц на 4 МГц
while (!IOFS_bit) continue; // ждем когда частота застабилизируется

TRISB=0;          // настроили выводы PORTB на вывод
PORTB=0;        // записали в PORTB  0
while(1){         // организовали вечный цикл
PORTB=~PORTB;    // инверсия уровней на выводах PORTB
delay_ms(1000);  // задержка на 1000 мс = 1 сек
}
}// main

Последний раз редактировалось petrd; 22.03.2012 в 10:30.
  Ответить с цитированием
Старый 22.03.2012, 11:45   #995   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, подскажите пожалуйста, принятые на RX UART складываю во временный буфер. Принимаю данные ч/з прерывание:
Цитата:
void interrupt() {
// fInt=0;
if(RCIE_bit && RCIF_bit){
if (FERR_bit){
err=RCREG;
}
if (OERR_bit)
{
ModemAnswer[i]=RCREG;
i++;
ModemAnswer[i]=RCREG;
i++;
CREN_bit = 0;
CREN_bit = 1;
}
else{
ModemAnswer[i]=RCREG;
i++;
ModemAnswer[i]='\0';
}
}
}
//------------------------------------------------------------------------------
каким образом реализовать программно, что прерывания более не возникают, предположим от 100 до 500 мс? А то никак не получается отследить окончание заполнения буфера....

Думал такая конструкция будет правильной:
Цитата:
if (!RCIF_bit && i>0){...}
RCIF_bit - в паузах =0 и МК успевает это увидеть.
  Ответить с цитированием
Старый 22.03.2012, 12:31   #996   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
.....каким образом реализовать программно, что прерывания более не возникают, предположим от 100 до 500 мс? А то никак не получается отследить окончание заполнения буфера....
А зачем отслеживать факт не возникновения прерывания?
  Ответить с цитированием
Старый 23.03.2012, 03:17   #997   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
А зачем отслеживать факт не возникновения прерывания?
От модема идут ответы, причем бывают последовательности с задержкой до 200мс, я бы хотел чтобы эти данные попадали в один буфер перед его разбором.
  Ответить с цитированием
Старый 23.03.2012, 09:27   #998   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
От модема идут ответы, причем бывают последовательности с задержкой до 200мс, я бы хотел чтобы эти данные попадали в один буфер перед его разбором.
Попробуйте кольцевой буфер http://microsin.ru/content/view/1098/44/
  Ответить с цитированием
Старый 28.03.2012, 11:39   #999   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
Попробуйте кольцевой буфер http://microsin.ru/content/view/1098/44/
Спасибо.
Проблему решил. Тем кто будет писать разборщик ответов от модема, сразу хочу предупредить, разбирайте на лету (по мере поступления байтов в PIC), сразу как только встретился символ перевода строки 0x0A (LF) или "\n" в С.
Я пытался дождаться окончания приема ответов от модема, но такая технология работает нестабильно! И поэтому от нее пришлось отказаться...
Причем, новый код получился намного компактней и работает быстрее.

Вот такое чудо:
  Ответить с цитированием
Старый 30.03.2012, 09:30   #1000   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, здравствуйте!
Расскажите пожалуйста об организации памяти МК на примере PIC18F... доступным языком. Не могу понять каким образом реализовать следующую конструкцию:
Есть переменная:
Объявления переменных:
Цитата:
char *ModemAnswer; //Буфер для ответа с модема
char FromPhone[]=""; //Номер телефона с которого пришла SMS
Цитата:
ModemAnswer="AT+CMGR=1,0\r\r\n+CMGR: \"REC READ\",\"+79211111111\",\"Dani/1\",\"12/03/02,11:38:59+32\"\r\nsendtemp\r\n\r\nOK\r\n";
Необходимо из нее в другую переменную, например FromPhone поместить часть данных из ModemAnswer (+79211111111), причем так, чтобы значение в ModemAnswer - осталось не тронутым.
Второй вопрос: каким образом очищать переменные после их использования? Т.е. чтобы в них находились не предыдущие значения, а например 0x20 (пробел).
Третий вопрос: если объявлена переменная,
Цитата:
char buff[12]
, то считается первым его индексом 0 или 1?
Четвертый вопрос: каким образом резервируется память под переменные вида char buff[12]; ?

Спасибо! С уважением, Дмитрий.
  Ответить с цитированием
Старый 30.03.2012, 16:00   #1001   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Проблему решил пока так:
Цитата:
char *ModemAnswer;
char FromPhone[]="000000000000";
strncpy(FromPhone, strstr(ModemAnswer,"+79"),12);
вместо "000000000000" - пробелы.
пока вроде работет, но все равно, хотелось бы послушать высококлассных специалистов, которые на пальцах объяснят основы по памяти и переменным.
  Ответить с цитированием
Старый 31.03.2012, 10:45   #1002   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
Расскажите пожалуйста об организации памяти МК на примере PIC18F... доступным языком. ........
Третий вопрос: если объявлена переменная, , то считается первым его индексом 0 или 1?
Четвертый вопрос: каким образом резервируется память под переменные вида char buff[12]; ?
Про работу с памятью вот так в двух словах не рассказать. Откройте Кернигана-Ричи и почитайте про указатели. Должно проясниться.
.......
Отсчет элементов массивов ведется от нуля. А вот количество элементов считается от 1. Объявление char buff[1] - массив, состоящий из 1-го элемента, и дальше обратиться к нему можно, как к buff[0]. Элемент нулевой, но по счету он первый и единственный.
По четвертому вопросу - не понял вопроса.

Пример с указателями - копирование строк (смотреть в симуляторе):
Цитата:
char String_1[] = "Word";
char String_2[5];

char *pPointer_1;
char *pPointer_2;


void main() {

pPointer_1 = &String_1;
pPointer_2 = &String_2;

while(*pPointer_2++ = *pPointer_1++); // коротко! ни хрена не понятно! но работает!

}

Последний раз редактировалось petrd; 31.03.2012 в 20:20.
  Ответить с цитированием
Старый 06.04.2012, 09:07   #1003   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, разобрался, спасибо!
  Ответить с цитированием
Старый 12.04.2012, 08:24   #1004   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Купил на ebay клона PICKit3 за $27.40. Полет нормальный.
  Ответить с цитированием
Старый 16.04.2012, 02:42   #1005   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
Купил на ebay клона PICKit3 за $27.40. Полет нормальный.
Здравствуйте petrd!
А до этого у вас не было PICKit?
  Ответить с цитированием
Старый 16.04.2012, 06:58   #1006   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
А до этого у вас не было PICKit?
До этого были только PICKit 2. Как известно производитель поддержку PICKit2 прекратил, теперь новые контроллеры поддерживаются только PICKit3.
  Ответить с цитированием
Старый 16.04.2012, 10:00   #1007   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
не хочу показаться назойливым, а новые это какая серия или отдельно чипсет?
  Ответить с цитированием
Старый 16.04.2012, 10:27   #1008   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
не хочу показаться назойливым, а новые это какая серия или отдельно чипсет?
Их много и в разных сериях, например, PIC16F1xxx, PIC18FxxKxx, PIC18FxxJxx, PIC24 и т.д. Вообщем, открываем последний MPLAB Configure -> Select Device и тут узнаем, кто, что и как поддерживает.
  Ответить с цитированием
Старый 16.04.2012, 12:07   #1009   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
Их много и в разных сериях, например, PIC16F1xxx, PIC18FxxKxx, PIC18FxxJxx, PIC24 и т.д. Вообщем, открываем последний MPLAB Configure -> Select Device и тут узнаем, кто, что и как поддерживает.
У меня поддерживаются эти серии:


Увеличить фото »»


Увеличить фото »»


Увеличить фото »»

И не пойму, причем тут MPLab, ведь програматор это одно (его прошивку можно обновлять с сайта), а среда разработки, в том числе компилятор - другое. Где я ошибаюсь?
  Ответить с цитированием
Старый 16.04.2012, 14:29   #1010   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
У меня поддерживаются эти серии:........

И не пойму, причем тут MPLab, ведь программатор это одно (его прошивку можно обновлять с сайта), а среда разработки, в том числе компилятор - другое. Где я ошибаюсь?
1. Сможете прошить PICKit2 вот эти - PIC24F32KA302, PIC18F66K80, PIC16F1936, PIC18F87J93?
2. Для PICKit2 давно ничего больше не обновляется: последняя оболочка 2.61, последняя прошивка 2.32, последний Device File - 1.62.14 и больше не будет. Дальше поддержка только PICKit3.
3. MPLAB не причем, он у меня как эталон, если среда последней версии, то там всегда можно получить самые свежие данные какой программматор-отладчик что поддерживает и никуда больше не надо заглядывать. К тому же я в нем работаю.
  Ответить с цитированием
Старый 17.04.2012, 03:34   #1011   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, спасибо за развернутый ответ. Вы профессионально занимаетесь программированием, что понадобились такие модели PIC?
Я то так, развлекаюсь, для дома автоматику собираю и чтобы голова работала... навыки не терять в программировании.

petrd, еще к вам вопрос: почему выбрали именно MPLAB, а не mikroC PRO for PIC ?

Последний раз редактировалось Teeen; 17.04.2012 в 08:13.
  Ответить с цитированием
Старый 17.04.2012, 10:24   #1012   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
Вы профессионально занимаетесь программированием, что понадобились такие модели PIC?

petrd, еще к вам вопрос: почему выбрали именно MPLAB, а не mikroC PRO for PIC ?
Наверное, можно сказать, что профессионально. Да нет, из того что назвал в наличии только PIC16F1936. Просто надо быть ко всему готовым и идти в ногу со временем.

Да нет, вообщем, не выбирал ничего, каждый компилятор для своих задач.
А вообще использую - Hi-Tech PICC (STD), MCC18, MikroC (PRO и 8.2), SDCC. К тому же в MPLAB симулятор нормальный, в отличие от MikroE и железная отладка при помощи PICKit2,3 без всяких cof файлов проводится.
  Ответить с цитированием
Старый 27.04.2012, 05:39   #1013   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd,
поясните пожалуйста работу данного алгоритма:
Цитата:
void LCD_Out_Rus(char row, char column, char *text)
{
const unsigned char russian_HD44780[]={0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45,
0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7,
0x4D, 0x48, 0x4F, 0xA8, 0x50, 0x43,
0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB,
0xAC, 0xE2, 0xAD, 0xAE, 0x62, 0xAF,
0xB0, 0xB1, 0x61, 0xB2, 0xB3, 0xB4,
0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9,
0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE,
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78,
0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3,
0xC4, 0xC5, 0xC6, 0xC7};

if (*text)
{
if (*text > 191)
Lcd_Chr(row, column, russian_HD44780[(*text) - 192]);
else
Lcd_Chr(row, column, *text);
}
else
return;
*text++;
while(*text)
{
if (*text > 191)
Lcd_Chr_Cp(russian_HD44780[(*text) - 192]);
else
Lcd_Chr_Cp(*text);
text++;
}
}
Здесь проверяется каждый байт строки?
Цитата:
if (*text > 191)
пока не достигнут конец строки, т.е. не '\0'
Цитата:
while(*text)
Еще интересно, символы A,B,C,H,P,O,K,M,T,E выводятся на LCD корректно, все остальные символы - нечитабельные, вашу кодировку я попробовал сменить на:

Цитата:
const unsigned char russian_HD44780[]={
0x41, 0xC0, 0x42, 0xC1, 0xE0, 0x45,
0xC3, 0xC4, 0xC5, 0xC6, 0x4B, 0xC7,
0x4D, 0x48, 0x4F, 0xC8, 0x50, 0x43,
0x54, 0xC9, 0xCC, 0x58, 0xE1, 0xCB,
0xCC, 0xE2, 0xCD, 0xCE, 0x62, 0xCF,
0xD0, 0xD1, 0x61, 0xD2, 0xD3, 0xD4,
0xE3, 0x65, 0xD6, 0xD7, 0xD8, 0xD9,
0xDA, 0xDB, 0xDC, 0xDD, 0x6F, 0xDE,
0x70, 0x63, 0xDF, 0x79, 0xE4, 0x78,
0xE5, 0xF0, 0xF1, 0xE6, 0xF2, 0xF3,
0xF4, 0xF5, 0xF6, 0xF7};
не помогло.

Теперь вопрос, все-таки кодировка должна браться из Datasheet LCD или таблицы символов MikroC?

Вывод осуществляю так:
Цитата:
LCD_Out_Rus(1,1,"АБВГДЕЖЗИЙКЛМНОП");
LCD_Out_Rus(2,1,"РСТУФХЦЧШЩЪЫЬЭЮЯ");

Последний раз редактировалось Teeen; 27.04.2012 в 06:01.
  Ответить с цитированием
Старый 27.04.2012, 07:12   #1014   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
Здесь проверяется каждый байт строки?
пока не достигнут конец строки, т.е. не '\0'
Да, терминальный ноль.
Цитата:
Сообщение от Teeen Посмотреть сообщение
Еще интересно, символы A,B,C,H,P,O,K,M,T,E выводятся на LCD корректно, все остальные символы - нечитабельные, вашу кодировку я попробовал сменить на:......не помогло.
Теперь вопрос, все-таки кодировка должна браться из Datasheet LCD или таблицы символов MikroC?
Если бы кодировки совпадали с MikroC то этот огород не нужен бы был.
У Вас видимо в знакогенераторе LCD нет русских символов, индикатор в России куплен или типа с ebay? А то недавно там присмотрел LCD очень дешевые, а когда с продавцом пообщался, то выяснилось, что ни русских символов, ни задней подсветки в них нет, вот потому и дешевые.
Совет. Пишете такую программку: в цикле с задержкой в пару секунд (или инкремент через кнопку) - на одну строку выводите код символа от 0 до 255, а на другую сам символ и всю правду узнаете про свой индикатор без DS ( и код символа и какой этому коду символ сопоставлен).
  Ответить с цитированием
Старый 27.04.2012, 08:29   #1015   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, увы, но вы как всегда правы. Добавил код по вашему совету и... русскими буквами тут и не пахнет! Но подсветка есть (голубая).
Да, действительно я LCD покупал ч/з ebay за 150 рублей.
Посоветуйте, может ссылку дадите на LCD с поддержкой русских букв. Может маркировкой отличаются? На будущее пригодится.
Спасибо!

P.S. сейчас посмотрел ebay не пойму как определить есть ли поддержка RUS для данного LCD или нет...
  Ответить с цитированием
Старый 27.04.2012, 08:50   #1016   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
petrd, увы, но вы как всегда правы. Добавил код по вашему совету и... русскими буквами тут и не пахнет! Но подсветка есть (голубая).
Да, действительно я LCD покупал ч/з ebay за 150 рублей.
Посоветуйте, может ссылку дадите на LCD с поддержкой русских букв. Может маркировкой отличаются? На будущее пригодится.
Спасибо!
ИМХО. Те LCD, что продаются в магазинах на территории России имеют поддержку кириллицы. У меня сейчас лежит - WH1602B-YYK-CTK, русские символы в нем имеются. Во всяком случае у меня пока всегда так. А на ebay подобные LCD какие-то безымянные и узнать правду достаточно сложно.
  Ответить с цитированием
Старый 27.04.2012, 09:09   #1017   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
ИМХО. Те LCD, что продаются в магазинах на территории России имеют поддержку кириллицы. У меня сейчас лежит - WH1602B-YYK-CTK, русские символы в нем имеются. Во всяком случае у меня пока всегда так. А на ebay подобные LCD какие-то безымянные и узнать правду достаточно сложно.
а все удивлялся, что у нас так дорого стоят LCD16x20

Такой как у вас ЖК в Чип&Дип стоит 450 рублей (http://www.chipdip.ru/product1/8694988885.aspx)
и то под заказ

Плюс доставка до нас - рублей 200, нехило за один получается.

Вот нашел по кодировке ЖК фирмы Winstar: http://www.kit-e.ru/articles/displ/2001_06_26.php

Последний раз редактировалось Teeen; 27.04.2012 в 09:29.
  Ответить с цитированием
Старый 27.04.2012, 14:50   #1018   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
а все удивлялся, что у нас так дорого стоят LCD16x20

Такой как у вас ЖК в Чип&Дип стоит 450 рублей (http://www.chipdip.ru/product1/8694988885.aspx)
и то под заказ

Плюс доставка до нас - рублей 200, нехило за один получается.

Вот нашел по кодировке ЖК фирмы Winstar: http://www.kit-e.ru/articles/displ/2001_06_26.php
Покупать В Ч&Д это жесть и обдираловка без зазрения совести.
Пару раз всякое-разное покупал здесь - http://chip-nn.ru/72.php
Цены приличные, доставка почтой 175 руб.
  Ответить с цитированием
Старый 10.05.2012, 06:21   #1019   
Форумец
 
Сообщений: 88
Регистрация: 04.02.2011
Возраст: 44

Teeen вне форума Не в сети
petrd, здравствуйте!
Поясните пожалуйста код:
Цитата:
unsigned short SetTemp;
char *ust = "000";

//Вывод уставки на ЖКИ
ust[0]=SetTemp/100+48;
ust[1]=(SetTemp/10)%10+48;
ust[2]=SetTemp%10+48;
// обрезаем дробную часть уставки
ust[3]=0;
ust[4]=0;
Lcd_Out(1,12,ust);
не понимаю процесса преобразования числа, что из чего берется и как получается?

Нужно получить следующее:
Цитата:
tmin[0]='2';
tmin[1]='7';
если
Цитата:
tmin_value=27;

Последний раз редактировалось Teeen; 10.05.2012 в 06:39.
  Ответить с цитированием
Старый 10.05.2012, 07:40   #1020   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Teeen Посмотреть сообщение
.....
не понимаю процесса преобразования числа, что из чего берется и как получается?.....
char *ust = "000" <- указатель на строку символов ust[3] в RAM, обратиться к ним можно как ust[0], ust[1], ust[2], а если пытаться использовать ust[3], ust[4] и т.д., то можно получить неплохую бяку, поэтому за этим надо следить самому, компилятор тут будет ни причем.
unsigned short SetTemp <- максимальное число 255, т.е. три символа.
Пусть SetTemp = 123, тогда
ust[0]=SetTemp/100+48 <- 123 / 100 = 1, а код цифры "1" в кодовой таблице ASCII - 49 (1+48), в итоге ust[0] = 49.
ust[1]=(SetTemp/10)%10+48 <- 123 / 10 = 12 % 10 = 2, а код цифры "2" в кодовой таблице ASCII - 50 (2+48), в итоге ust[1] = 50.
ust[2]=SetTemp%10+48 <- 123 % 10 = 3, а код цифры "3" в кодовой таблице ASCII - 51 (3+48), в итоге ust[2] = 51.
Думаю разберетесь.
  Ответить с цитированием
Поиск в теме: 



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

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind