Заголовок сообщения: Задача. Бегущая строка на МК PIC16F877
Добавлено: Пн май 17, 2021 21:10:38
Родился
Зарегистрирован: Пн май 17, 2021 21:02:56 Сообщений: 13
Рейтинг сообщения:0
Доброго времени суток, господа! Есть задача, создать бегущую строку с основными требованиями: - Индикация динамическая; - Число знакомест >10; - Данные считаются уже зашитыми в память МК. Сообщение должно выводится при нажатии на кнопку. ( аля подключили 3 кнопки и на нажатие каждой выводит определенное сообщение); - Сообщение должно состоять из 20+- символов, включая пробелы; - Код asm, без Си. И самая загвоздка, что не должны использоваться любые аппаратные решения, аля max7219, сдвиговых регистров и тд. Т.е. тупая задача. Нужно взять допустим память типо 24с64, при необходимости. Зашить в нее там 5 сообщений. Сделать 5 кнопок, и при нажатии на одну из них выводится определенное сообщение( брать 24с64 не обязательно впринципе просто для примера) PIC16f877 не обязателен тоже, но как по мне он оптимален. LCD нельзя Итак. Я не прошу делать всю работу за меня конечно же, я уважаю время каждого, но буду очень рад если мне помогут разрешить проблемы с которыми я столкнулся. Первое. Хотел делать изначально на матричных индикаторах, но без дешифраторов, сдвиговых регистров, драйверов можно реализовать там 2 матрицы 8х8.. Повторюсь, весь алгоритм индикации должен быть в МК. Если я просто не разобрался, и есть варианты как подключить больше 2-3 матриц без всяких приблуд, буду благодарен! Суть: Решил взять семисегментные. PORTB,C,D Позволяют подключить порядка 14, если учитывать еще подключение в ПОРТуБ 24С64. Индикация выполняется через прерывания ( нашел примерный код ), сам пытался делать через паузы, понял что бегущая через паузы это гиблое дело. Да, с прерываниями я могу просто вручную задать "по тупому" каждый сдвиг вручную прописывая значения для каждого знакоместа. Но хотелось бы понять как реализовать вывод по человечески в цикле и как реализовать считывание определенного сообщения. Т.е. хочу нажать на кнопку и чтобы начало выводится уже предзаписанное сообщение с помощью какого-либо цикла Простите там за тавтологию. И еще одно, должны быть кнопки аля "+" и " -" которые должны регулировать скорость строки. Но это уже позже.
PS/Всем выделившим время огромное спасибо.
Код программы, исходник и proteus8 схема для 4 индикаторов прилагаю.
;запись двоичного числа 11010011 в регистр movlw b'11010011' ;OPTION_REG, тем самым устанавливаем внутренний movwf OPTION_REG ;источник тактового сигнала для TMR0 bcf STATUS,RP0 ;включаем предделитель перед TMR0 ;устанавливаем коэффициент предделителя 1:16 ; clrf shet ;обнуление регистра shet, перед запуском ;прерываний по переполнению TMR0, выполняется ;однократно, после включения питания ; clrf datind1 ;очистка регистров вывода информации на clrf datind2 ;индикаторы, равнозначно выключению clrf datind3 ;индикаторов, так как индикаторы с общим clrf datind4 ;катодом ; bcf INTCON,T0IF ;сброс флага прерывания по переполнению TMR0 bsf INTCON,T0IE ;разрешение прерываний по переполнению TMR0 bsf INTCON,GIE ;разрешение глобальных прерываний ;
goto m1 ;//---------- pause movlw .6 ;запись числа 6 в регистр Sec2 movwf Sec2 p4 movlw .218 ;запись числа 218 в регистр Sec1 movwf Sec1 p3 movlw .255 movwf Sec ;запись числа 255 в регистр Sec p2 decfsz Sec,F ;декремент с условием регистра Sec goto p2 ;регистр Sec не равен нулю: переход на метку p2 decfsz Sec1,F ;регистр Sec равен нулю: декремент с условием ;регистра Sec1 goto p3 ;регистр Sec1 не равен нулю: переход на метку p3 decfsz Sec2,F ;регистр Sec1 равен нулю: декремент с условием ;регистра Sec2 goto p4 ;регистр Sec2 не равен нулю: переход на метку p4 return ;регистр Sec2 равен нулю: выход из подпрограммы ; ;
;//---------- ( почему то работает не корректно) перескакивает не на тот символ постоянно tablica ;Таблица выборки для индикатора !!!с общим АНОДОМ!!! Точка нам не нужна, везде гасим
; andlw 0x0F ;Маскируем ненужные биты (чтобы случайно не выскочить за предел таблицы) addwf PCL,f ;Прибавляем значение аккумулятора к счетчику команд PCL. Тем самым выполняя смешение в таблице retlw b'11000000';0 retlw b'11111001';1 ;В соответствии со схемой определяем к какой ножке порта В какой сегмент подключен. retlw b'10100100';2 retlw b'01001111';3 retlw b'10011001';4 retlw b'10010010';5 retlw b'10000010';6 retlw b'11111000';7 retlw b'10000000';8 retlw b'10010000';9 retlw b'11111111';+ retlw b'10111111';- retlw b'11111111' ;A retlw b'11111111' ;B retlw b'11111111' ;C retlw b'11111111' ;D retlw b'11111111' ;E retlw b'11111111' ;F end ;конец всей программы
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Боюсь наш новый друг не совсем представляет себе суть работы. делал такую херь себе лет 15 назад, на 877 камне, 8х40 точек на матричных индюках и регистрах сдвига. вешал на заднее стекло своей ржавой шестерки в качестве стопаря. показывал он вякого типа такого весело было...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Задача. Бегущая строка на МК PIC16F877
Добавлено: Вт май 18, 2021 10:56:17
Родился
Зарегистрирован: Пн май 17, 2021 21:02:56 Сообщений: 13
Рейтинг сообщения:0
Было бы очень здорово. Мне тут подсказали, что я ужасно составил описание. Ещё раз просто вкратце. Простая учебная задача, без необходимости разработки реального устройства. Есть МК, есть индикатор, есть там 5 кнопок. Нажимаю первую кнопку на индикацию выводится первое сообщение в виде бегущей строки. Вторую, второе.. использовать аппаратные дешифраторы для управления индикаторами запрещено. Число знакомест 10-14. Число символов в сообщении 20+-. Lcd дисплей нельзя.
ну тогда это не бугчая строка, а последовательное отображение знаков на группе 7-ми сегментных индюках. преобразования символа в код поджигания индюка и так по кругу.
и занания добытые собственными силами остаются с нами очень на долго.
Добавлено after 2 minutes 33 seconds: массивы, указатели, циклы. и ни каких проблем
ну тогда это не бугчая строка, а последовательное отображение знаков на группе 7-ми сегментных индюках. преобразования символа в код поджигания индюка и так по кругу.
и занания добытые собственными силами остаются с нами очень на долго.
Добавлено after 2 minutes 33 seconds: массивы, указатели, циклы. и ни каких проблем
Ну ладно. Скажем что нужно разработать не бегущую строку. А управляющий контроллер 'бегущая строка'. Буду рад если вы более подробно распишите алгоритм.
Добавлено after 4 minutes 17 seconds: И есть ли способ без сдвиговых регистров подключить допустим 10 светодиодных матрич 7х5 с одному pic16f877?
Для развертки остаются правила - лапки на сегмент и лапки на позицию (если не хитровывернутый вариант развертки) т.е. 8 сегментных (с учетом запятой) и N позиционных. Для растрово-точечного лапок МК совершенно маловато (при удобоваримой яркости для дневного света). Без сдвиговх регистров там не обойтись. Разве что использовать в качестве точек WS2812 или подобные светики. Но там быстродействие МК весьма высокое должно быть, ПИК877 может и не потянуть...
регистры сдвига позволяют двумя лапками потра дергать произвольное количество столбцов, упрешся в тайминги.
877ой имеет 33 лапки на 5 портов. если обходиться только ими, то 7 уйдет на коммутацию строк, отстальные 26 на столбцы. т.е 5шт 5х7 прицепишь и одна лапка на прочие нужны. но работать не буит, т.к. в строке тока не все светики не хватит, нужны буферы.
ненрав регисты сдвига, используй дешифраторы. ток нафига не понятно.
Заголовок сообщения: Re: Задача. Бегущая строка на МК PIC16F877
Добавлено: Вт май 18, 2021 12:12:48
Родился
Зарегистрирован: Пн май 17, 2021 21:02:56 Сообщений: 13
Рейтинг сообщения:0
Я вас услышал. Дешифраторы для управления брать нельзя. Значит без сдвиговых всё-таки не обойтись. Как я понимаю у меня есть 2 варианта. Либо брать 7 сегментные и втупую выводить по одному символу. Либо брать матричный индикатор и сдвиговые регистры и через видеопамять смещать текст?
Вариант: RB под сегменты или точки в матрице, RC и RD под знакоместа (итого 16 мест, а надо всего 10). Еще и А и Е остаются. Что за огород начали городить с этими регистрами/дешифраторами?.... upd 25 лапок помимо восьми для точек/сегментов. Если переложить на матрицу, то получается 4 полноценных знакоместа.
Заголовок сообщения: Re: Задача. Бегущая строка на МК PIC16F877
Добавлено: Вт май 18, 2021 12:56:47
Родился
Зарегистрирован: Пн май 17, 2021 21:02:56 Сообщений: 13
Рейтинг сообщения:0
Стих просто максимально в тему.
Да изначально было задание Аля 10 7х5 матриц, нажимаешь кнопку выводим сообщение. Без аппаратных дешифраторов и типо без сдвиговых, рулить индикаторами должен МК. Я не особо разобрался как быть в такой ситуации и решил взять 7 сегм.
Ну уж если посадомазохизьму... 7 точек = столбец 5 точек = строчка 10 линий на коммутатор позиций итог 22 лапки МК. яркость и стабильность изображения конечно "их бин Песец" (как и ключи в обвязке коммутации), но для 40-лапки вполне теоретически возможно...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения