Jump to content

Paska_2

Members
  • Content Count

    314
  • Joined

  • Last visited

Community Reputation

2 Обычный

About Paska_2

  • Rank
    Постоялец
  • Birthday 12/31/1990

Контакты

  • ICQ
    425040373

Информация

  • Пол
    Мужчина
  • Город
    Вологда

Электроника

  • Стаж в электронике
    Не связан с электроникой

Recent Profile Visitors

5732 profile views
  1. Нет, собираю на Меге16. До того как подключить на порт В дисплея я туда весил светодиодный индикатор, который вполне успешно работал, так что думаю ничего не мешает. Помимо этого на эти выходы напаяны светодиодики, так что я могу видеть когда сигнал туда идёт. Выявилась ещё одна странность: после очистки индикатора он перестаёт двигать курсором вообще когда посылаешь на выход данные, пока командой не сдвинешь курсор вправо... Схожу, пожалуй, завтра в магазин, куплю какой нибудь другой...
  2. Да, благодарю за понимание, так мого лучше =) Вот текст, сильно не пинать , это черновик, что бы освоить включение дисплея. #include <avr/io.h> #include <avr/delay.h> int main(void) { DDRA = 0xff; //порт А - ВЫХОД, данные 0-7 PORTA = 0xff; //на всех выводах единицы DDRB = 0xff; //порт В - ВЫХОД, управление. Е-0,R/W-1, Aо-2. PORTB = 0x00; //на всех выводах нули DDRD = 0x00; //порт Д - ВХОД PORTD = 0xff; //на порте Д единички _delay_ms (50); //задержка при включении дисплея PORTA = 0b00110000; //готовим данные на выход. инициализация. PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //ждем 50мс. PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //ждем 50мс. PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //ждем 50мс. PORTA = 0b00111000; //установка параметров, 8 бит, 0 страница знакогенератора PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //задержка на обработку дисплея PORTA = 0b00001000; //выкл. дисплей PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //задержка на обработку дисплея PORTA = 0b00000001; //очистка дисплея PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //задержка на обработку дисплея PORTA = 0b00000110; //установка режима ввода данных PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); //задержка на обработку дисплея PORTA = 0b00001110; //включаем дисплей, курсор подчёркивание PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //задержка на обработку дисплея PORTA = 0b00010100; //курсор вправо PORTB = 0b00000101; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (50); //задержка на обработку дисплея PORTA = 0x00; while (1) { // Бесконечный цикл if ((PIND & (1<< PD7)) == 0) { PORTA = 0b00000011; //курсор на исходную PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E и A0 _delay_ms (500); //задержка на обработку дисплея PORTA = 0x00; } if ((PIND & (1<< PD6)) == 0) { PORTA = 0b00110101; //пишем = PORTB = 0b00000100; //Ao _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000101; //Ао и Е _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); PORTA = 0b00011111; //пишем = PORTB = 0b00000100; //Ao _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000101; //Ао и Е _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); PORTA = 0b00011101; //пишем = PORTB = 0b00000100; //Ao _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000101; //Ао и Е _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); PORTA = 0b01011101; //пишем = PORTB = 0b00000100; //Ao _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000101; //Ао и Е _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); PORTA = 0b01010111; //пишем = PORTB = 0b00000100; //Ao _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000101; //Ао и Е _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); } if ((PIND & (1<< PD5)) == 0) { PORTA = 0b00010111; //сдвиг курсора вправо PORTB = 0b00000001; //отправляем. импульс на E _delay_ms (50); //задержка на обработку дисплея PORTB = 0b00000000; //убираем импульс с E _delay_ms (500); //задержка на обработку дисплея PORTA = 0x00; } } }
  3. Вы уж извините, но давайте хотя бы ставить знаки препинания, если уж лень начать предложение с большой буквы и написать его начало... Если это вопрос, то имеете ввиду после 71 поста моего? После того я вообще всё забросил, т.е. началась сессия, а потом каникул... то да сё, и вобшем сейчас все делаю с нуля... Предложили такой вариант: я вывожу "пустые" символы, т.е. пробелы, но это отпало после того, как я сделал что бы МК выводил 5 символов подряд с разным кодом. Всё тоже...
  4. Всем привет. Не хочу создавать новую тему, так что задам свой вопрос связанный с дисплейчиком тут. Проблема, собственно, в том, что символы не хотят выводиться на дисплей, хотя курсор после отправки символа и команды на вывод уходит вправо, т.е. якобы он нарисовал получается. Все инициализируется, команды дисплея выполняются (сдвиг туда сюда, вкл, выкл - это всё ок), дисплей нормальный, ( на компе прогу писал и через ЛПТ вывододил информацию на него), но сомволы не прорисовываются =( Может кто сталкивался с такой проблемой? Код если надо то выложу, хотя показыть студно всё биты вручнею выставляю...
  5. 2Meshin Статейка бы не помешала =) я пока решил попробывать собрать что по проще - на 25гд-26, а потом за 75гдн возьмусь.
  6. 2Meshin Спасибо, тогда буду по подобию С-90 воять, размерчики вобщем то найду. по поводу последнего поста: у настакой продаётся под маркировкой 50гдн-2
  7. Спасибо за ответ. На счёт частоты ФИ не знаю, планирую и в гараже его использовать, и плюс слушаю рок и хочу что бы басовый бараба звучал чуть выделяясь. Вот заинтересовала фраза "В 40 литрах, на 30 герцах, 100 труба должна иметь 565 мм длины. " Впринцепе можно сделать ФИ 40 литров, при этом Lфи=56см при D=10? многовато, но реально)
  8. Доброго часа. Имеется динамик 75гдн-1 Qts=0,21 Fs=31Гц (разминался 2 дня, упала на 5 Гц, думаю больше не упадёт) Vas не измерялся. Судя по JBL самое оптимальное это бандпасс 4 пеорядка, 40/15, фазик на 30 Гц, но беда в том, что при диаметре ФИ 10 см, длина ео получается равна 144 см. Вот и вопрос, правильно ли посчитала мне прога длину или нет? Хотя если считать в ручную, то тоже что то около этого выходит... ЗЫ 80л ФИ делать не охота, саб в машинку...
  9. да, 3 вывод это контраст. Максимальный контраст будит если мы его закоротим на землю, а не увидим мы ничего илбо при висящем в воздухе 3 выводе, либо если подаим + питания, но так делать нельзя, как говорит разработчик, индикатору может настать.... жопа Сегодня сутра скачал какую то прогу - тестер индикаторов через ЛПТ порт, всё подключил, и ..о чудо - заработало)) Но появились другие проблемы =) Вобщем, будим разбираться =)
  10. Индикатор MT-16S01A вроде как, но на нём самом написано SPC-16010D-SYR http://www.lcdinfo.ru/html.cgi/txt/lcd/lcm/melt/char/MT-16S1A.htm ---- с сайта производителя Если на дисплее выводятся квадратики, то я так понял, это значит что дисплей не инициализирован, хотя как пишет производитель, если инициализация прошла, то квадратики останутся, и что бы они ушли надо подать команду на очистку дисплея...
  11. Привет =) Тож недавно перешёл на программирование МК. Для экспериментов выбрал МК AVR, кодю на С++, толком его не знаю, до этого писал комповские проги на VB. Успехи какие-никакие имею =), сейчас мучаюсь с подключением LCD модуля к МК и параллельно идёт строительство сверлильного станка с ЧПУ =)
  12. Здравствуйте, извиняюсь, что вклиниваюсь, но вопрос по теме, а новую создавать не охото Имею индикатор 16*1, в результате попыток подключения и включения его был спален контроллер , вот теперь купил второй и не охото его сразу палить... Вобщем, вопрос в следующем: при подаче на индикатор питания (и на 3 ногу минус питания для контрастности) на его 4 ножке (RS), 5 (R/W) и 12 (5 бит данных) появляются единички , а на дисплее появляются 8 прямоугольничков (из 16 почемуто ) Это нормально? Мне кажется от этого прошлый МК и умер, т.к. все выводы на нём были назначены как выходы, с нулями на концах по умолчанию. Вот даже не знаю как и инициализировать его в таком состоянии(
  13. О, спасибо =) заработало всё.
  14. Добрый вечер/утро/день. Вообще задача выглядит так: на порт МК поступают данные (используются все 8 бит) и необходимо эти данные записать в массив ну или сохранить в памяти для последующего пользования. Проблема: не могу заставить МК считать полностью все 8 бит за раз, как узнать состояние конкретно бита понятно, а вот всё... Может кто-нибудь подскажет как заставить МК запомнить то, что в данный момент находится на порту? Что-то ничего подобного нигде не могу найти МК - mega16, программирую на C++ в AVR_Studio.
×
×
  • Create New...