Заголовок сообщения: Задача. Бегущая строка на МК 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 ;конец всей программы
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Боюсь наш новый друг не совсем представляет себе суть работы. делал такую херь себе лет 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-лапки вполне теоретически возможно...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения