Большие цифры lcd 1602
Сообщений 1 страница 7 из 7
Поделиться22017-12-30 13:27:44
Добрый день всех с Наступающим! Подскажите пожалуйста код для вывода времени большими цифрами на lcd.
Здесь Исследование LCD на базе HD44780 ( только вывод информации!).
Поделиться32018-06-28 16:20:11
В приемнике, частота выводится на LCD1602. Сделал большие цифры. Все выводится красиво

Но, если частота была больше 100,0 и переключаемся на частоту меньше 100,0, первая единица продолжает светить. 
Как убрать?
Код:Sub Style Locate 2 , 13 ' точка Lcd Chr(4) Posx = 1 For I = 1 To 4 If Freq < 1000 Then Incoming = Format(incoming , "0 ") Stroka = Mid(incoming , I , 1) Call Digit Next I End Sub Sub Digit: If I = 3 Then Incr Posx Select Case Stroka Case "0": Locate 1 , Posx Lcd Chr(0) ; Chr(1) ; Chr(0) Locate 2 , Posx Lcd Chr(0) ; Chr(2) ; Chr(0) '-------------------------------------- Case "1": Locate 1 , Posx Lcd Chr(1) ; Chr(0) ; " " Locate 2 , Posx Lcd Chr(2) ; Chr(0) ; Chr(2) '-------------------------------------- Case "2": Locate 1 , Posx Lcd Chr(1) ; Chr(3) ; Chr(0) Locate 2 , Posx Lcd Chr(0) ; Chr(2) ; Chr(2) '-------------------------------------- Case "3": Locate 1 , Posx Lcd Chr(1) ; Chr(3) ; Chr(0) Locate 2 , Posx Lcd Chr(2) ; Chr(2) ; Chr(0) '-------------------------------------- Case "4": Locate 1 , Posx Lcd Chr(0) ; " " ; Chr(0) Locate 2 , Posx Lcd Chr(1) ; Chr(1) ; Chr(0) '-------------------------------------- Case "5": Locate 1 , Posx Lcd Chr(0) ; Chr(3) ; Chr(3) Locate 2 , Posx Lcd Chr(2) ; Chr(2) ; Chr(0) '-------------------------------------- Case "6": Locate 1 , Posx Lcd Chr(0) ; Chr(3) ; Chr(3) Locate 2 , Posx Lcd Chr(0) ; Chr(2) ; Chr(0) '-------------------------------------- Case "7": Locate 1 , Posx Lcd Chr(1) ; Chr(1) ; Chr(0) Locate 2 , Posx Lcd " " ; " " ; Chr(0) '-------------------------------------- Case "8": Locate 1 , Posx Lcd Chr(0) ; Chr(3) ; Chr(0) Locate 2 , Posx Lcd Chr(0) ; Chr(2) ; Chr(0) '-------------------------------------- Case "9": Locate 1 , Posx Lcd Chr(0) ; Chr(3) ; Chr(0) Locate 2 , Posx Lcd Chr(2) ; Chr(2) ; Chr(0) '-------------------------------------- End Select If Posx = 9 Then Posx = 14 If Posx = 9 Then Posx = 10 If Posx = 8 Then Posx = 9 If Posx = 5 Then Posx = 8 If Posx = 1 Then Posx = 5 End Sub
Поделиться42018-06-28 16:51:16
В приемнике, частота выводится на LCD1602. Сделал большие цифры. Все выводится красивоНо, если частота была больше 100,0 и переключаемся на частоту меньше 100,0, первая единица продолжает светить. Как убрать?
При выводе в первую позицию ввести дополнительную проверку.
Если "0", то выводить " " (пробелы).
Upd...
Можно так:
Case "0":
If I = 1 Then
Locate 1 , Posx
Lcd " " ' Три "пробела"
Locate 2 , Posx
Lcd " " ' Три "пробела"
Else
Locate 1 , Posx
Lcd Chr(0) ; Chr(1) ; Chr(0)
Locate 2 , Posx
Lcd Chr(0) ; Chr(2) ; Chr(0)
Enf If
Отредактировано Nord (2018-06-28 18:33:54)
Поделиться52018-06-28 18:30:41
Сам же и отвечу подробно. Создается еще один символ " пробел ".
Deflcdchar 6 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' пробел
В подпрограмме прорисовки цифр добавляем проверку условия:
If Freq < 1000 Then ' если частота меньше 100,0 Incoming = Format(incoming , "0 ") ' строка сдвигается вправо на одно знакоместо If I = 1 Then Stroka = " " ' на первом знакоместе " пробел " End If
И добавляем в код:
Select Case Stroka Case " " : Locate 1 , Posx Lcd Chr(6) ; Chr(6) ; Chr(6) Locate 2 , Posx Lcd Chr(6) ; Chr(6) ; Chr(6) End Select
Теперь показывает правильно.
Поделиться62018-06-28 18:35:25
Можно и так, тем более если работает... 
Поделиться72018-06-28 19:07:18
Оба варианта работают, но оставлю свой, потому как сам до него дошел. Спасибо за помощь.
