Приветствую! Ни у кого нет случаем примера как организовать бегущую строку для ЖК на базе контроллера HD44780. Может кто уже сталкивался. Выложите пожалуйста.
Бегущая строка для HD44780
Сообщений 1 страница 10 из 10
Поделиться22012-01-02 23:53:39
не совсем понял
если в 1 строку, то делаете переменную из 16 (или сколько надо) символов
и в ней изменяете (перемещаете) символы
Поделиться32012-01-03 00:14:24
Не совсем понятен алгоритм перемещения пробовал Shiftlcd,не то.
Поделиться42012-01-03 10:02:15
есть функция MID
Поделиться52012-01-03 12:51:43
Всё зависит какое перемещение нужно, целыми буквами или сдвиг по пиксельный.
Поделиться62012-01-03 18:36:34
Может у кого то есть кусок кода для бегущей строки...Сдвиг буквами.
Поделиться72012-01-04 00:50:18
Airat
Ну ведь Александр вам уже дал ответ про функцию MID...
banned6
Enable=PORTB.4
RS=PORTB.5
D7=PORTB.0
D6=PORTB.1
D5=PORTB.2
D4=PORTB.3
Config Lcd = 16 * 2 Dim All_str As String * 256 Dim Lcd_str As String * 16 Dim A As Byte Dim B As Byte Cursor = Off , Noblink ' В начале и в конце по 16 пробелов All_str = " 0123456789 ABCDEFGH 0123456789 abcdefgh " Cls Label1: B = Len(all_str) - 16 For A = 1 To B Lcd_str = Mid(all_str , A , 16) Upperline Lcd Lcd_str Waitms 200 Next A Goto Label1 End
Поделиться82012-01-05 14:55:58
Спасибо за код! Еще один вопрос как организовать одновременную работу двух подпрограмм,т.е. опрос кнопок и бегущая строка?
Поделиться92012-01-05 17:06:37
В подпрограмму бегущей строки, в место где происходит постоянный проход кода вставляете опрос кнопок.
Поделиться102012-03-03 20:47:05
Захотел себе в самоделку тож бегущую строку но вариант с задержками и прочем в общем теле не устроил (но за идею огромный СПС, не раз Ваш сайт меня выручал решениями) и решил привязаться к счетчику и к прерыванию по нему (все равно уже он задействован в прошивке), можно также (если надо) сделать порог переполнения счетчика изменяемой переменной и внести пункт в меню- можно будет легко менять скорость прокрутки . Сделал тестовый вариант в протеусе на базе 8 меги- работает. И предложенный pдесь вариант работает и мой. Мож кому облегчит жизнь и упростит задачу Вот полный код моего варианта:
(за чистоту просьба не пинать - новичок и делал очень быстро)
$regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 4 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Config Timer0 = Timer , Prescale = 1024 On Timer0 Scroll Enable Timer0 Enable Interrupts Config Lcd = 16 * 2 Dim Test As String * 16 Dim All_str As String * 256 Dim Lcd_str As String * 16 Dim A As Byte Dim B As Byte Dim Count As Byte Dim Flag As Bit ' флаг на разрешение сдвига Cursor = Off , Noblink Declare Sub Indi ' В начале и в конце по 16 пробелов All_str = " 0123456789 ABCDEFGH 0123456789 abcdefgh " Test = " Scroll String " Cls Do Upperline Lcd Lcd_str Lowerline lcd test If Flag = 1 Then Call Indi Loop Sub Indi Count = 0 Flag = 0 B = Len(all_str) - 16 A = A + 1 Lcd_str = Mid(all_str , A , 16) If A = B Then A = 1 End Sub Scroll: Incr Count If Count = 15 Then Flag = 1 'счетчик Переполняется Где -то 15 Раз В Секунду , Return 'Изменяя Значение Порога Переполнения - Меняем Скорость Прокрутки End
для ленивых (таких как я к примеру
) можно скачать, пощупать и посмотреть
