Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Большие цифры lcd 1602


Большие цифры lcd 1602

Сообщений 1 страница 7 из 7

1

Добрый день всех с Наступающим! Подскажите пожалуйста код для вывода времени большими цифрами на lcd.http://s8.uploads.ru/t/9Igfl.jpg

0

2

ra4yem написал(а):

Добрый день всех с Наступающим! Подскажите пожалуйста код для вывода времени большими цифрами на lcd.

Здесь Исследование LCD на базе HD44780 ( только вывод информации!).
Или здесь http://bascomavr.ru/viewtopic.php?id=957

0

3

В приемнике, частота выводится на LCD1602.  Сделал большие цифры. Все выводится красиво
http://s8.uploads.ru/t/NzRBk.jpg
http://s8.uploads.ru/t/kORLM.jpg
Но, если частота была больше 100,0 и переключаемся на частоту меньше 100,0, первая единица продолжает светить.
http://sd.uploads.ru/t/LI5gJ.jpg
Как убрать?

КОД
Код:
  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

0

4

Andrusha написал(а):

В приемнике, частота выводится на 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)

0

5

Сам же и отвечу подробно. Создается еще один символ " пробел ".

Код:
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 

Теперь показывает правильно.

0

6

Можно и так, тем более если работает... ;)

0

7

Оба варианта работают, но оставлю свой, потому как сам до него дошел. Спасибо за помощь.

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Большие цифры lcd 1602