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

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

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

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



Дисплей 1602 и иже с ними

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

1

LCD 1602 и иже с ним запустить не получилось: на экране мусор.
Пробовал на разные выводы цеплять - не помогло. Хотя каждая из них индивидуально работает правильно.
Изменение скорости результата не дало. Лезть в ассм не стал - я его не знаю.
Потом попробую написать свою ПП для работы с этими ЖКИ.

0

2

Александр Д. написал(а):

LCD 1602 и иже с ним запустить не получилось: на экране мусор.Пробовал на разные выводы цеплять - не помогло. Хотя каждая из них индивидуально работает правильно.Изменение скорости результата не дало. Лезть в ассм не стал - я его не знаю.Потом попробую написать свою ПП для работы с этими ЖКИ.

Может, такой подход поможет ? Кириллица на китайских OLED дисплеях

Тут, правда, работа с настройками, но что мешает этим же способом впихивать данные ?
Набор используемых операторов невелик, несложно портировать в Ассм...

0

3

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

Тут, правда, работа с настройками, но что мешает этим же способом впихивать данные ?

Не, тут иное: Видно, что какие-то команды прошли в LCD (например, скроллинг вправо работает), но вместо символов - ооо/-* и прочее

0

4

Александр Д. написал(а):

Не, тут иное: Видно, что какие-то команды прошли в LCD (например, скроллинг вправо работает), но вместо символов - ооо/-* и прочее

Эти дисплеи чувствительны к временнЫм параметрам, может это сыграло ?
Буфер команд у них не всесильный... ;)
Или BUSY отслеживать...

0

5

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

Эти дисплеи чувствительны к временнЫм параметрам, может это сыграло ?
Буфер команд у них не всесильный... ;)
Или BUSY отслеживать...

ну, ценность Баском именно в родных библиотеках!
а так да, самому написать придётся ...

0

6

Александр Д. написал(а):

ну, ценность Баском именно в родных библиотеках!
а так да, самому написать придётся ...

Вот я к тому и веду... ;)
Если писать свою LIB, то учитывать характеристики прибора.

Я тогда (по ссылке выше) раза с пятого только в нужную задержку попал... ;)
Кстати, предлагаю использовать необходимые фрагменты оттуда, чтоб не изобретать "с ноля". ;)

0

7

даташиты есть с 2004 года )) тогда на PIC и ассме только так и работал...
Это потом PICbasic и полеГше стало именно благодаря библиотекам! ))

0

8

Попробовал снова вернуться к теме Lcd1602
Проверил его на AVR, снял сигналы.
Запустил STC - вообще иные сигналы! И по длительности, и по командам! Близко в документации не приближено! :(
Надо писать свой код с нуля.
Странно, конечно, но факт! ЖКИ древний, компилятор обновлён в 2013 году - явно кто-то проверил бы и заметил ляпы...

ps
нашел версию компилятора постарее: 2.0.14.0 - проблемы те же.

Отредактировано Александр Д. (2024-05-03 16:30:21)

0

9

Замедлил МК как только мог: запустил STC на 32 КГц
Не работает LCD1602

0

10

LCD средствами самого Bascom-51 работает
Неверная инициализация в компиляторе. Сделал свою, поверх "подключил" родное - и работает
Изучил штук 9 даташитов - везде какие-то особенности.
Взял из Bascom-AVR и работает :)

Сейчас сделано очень грязно, абы работало... Потом перепишу
Обновил 12-05-2024
Уменьшен размер кода примерно на 15%.
И не забудьте скачать обновленный 8H1K08.DAT!!
DAT-файл для него: Файлы (обновляется!)

Код:
$regfile = "8H1K08.DAT"                   ' STC registers list
$crystal = 5529600                        ' CPU clock frequence '11059200/2= 5529600

Dim Temp As Byte
Dim I As Byte , A As Byte

P1ie = &B1111_1111                        ' 1: Enable digital pins
P1pu = &B0000_0000                        ' 1: pull-up resistor
P1m0 = &B1111_1111
P1m1 = &B0000_0000                        ' output mode

My_led Alias P1.1

Config Lcdbus = 4 : Config Lcd = 16 * 2   'configure lcd screen 4 bits

Rs_lcd Alias P1.2 : E_lcd Alias P1.3      ' Подключения LCD
D4_lcd Alias P1.4 : D5_lcd Alias P1.5 : D6_lcd Alias P1.6 : D7_lcd Alias P1.7

Config Lcdpin = Pin , _
 Db4 = D4_lcd , Db5 = D5_lcd , Db6 = D6_lcd , Db7 = D7_lcd , Rs = Rs_lcd , E = E_lcd

Gosub Lcd_init                            ' Инициализация LCD
'-----------------------------------------------------------------------------------

Cls                                       'clear the LCD display
Lcd "STC8H1K08 Super#"                    'display this at the top line
Lowerline                                 'select the lower line
Lcd "BASCOM-51 COOL:)"                    'display this at the lower line

Wait 1
For A = 1 To 16
   Shiftlcd Right                         'shift the text to the right
   Waitms 200                             'wait a moment
   My_led = Not My_led
Next

Wait 1

For A = 1 To 16
   Shiftlcd Left                          'shift the text to the left
   Waitms 200                             'wait a moment
   My_led = Not My_led
Next


Do
 My_led = Not My_led
 Waitms 65
Loop


'------------------------------------------------------------------------------
Lcd_init:                                 ' Инициализация LCD
  Rs_lcd = 0 : E_lcd = 0
  D7_lcd = 0 : D6_lcd = 0 : D5_lcd = 0 : D4_lcd = 0

  Waitms 100                              ' Обязательно!

  For A = 0 To 2
   Temp = &B0011_0000
   Gosub Lcd_wr_e
   Waitms 5
  Next

  Temp = &B0010_0000
  Gosub Lcd_wr_e

  Temp = &H28 : Gosub Lcd_send
  Temp = &H8E : Gosub Lcd_send
  Temp = &H06 : Gosub Lcd_send
  Temp = &H0C : Gosub Lcd_send
  Temp = &H01 : Gosub Lcd_send
  Temp = &H80 : Gosub Lcd_send
Return

'------------------------------------------------------------
Lcd_send:
 Waitms 5
 Gosub Lcd_wr_e

 Shift Temp , Left , 4
 Gosub Lcd_wr_e
Return


Lcd_wr_e:                                 '------------------
 D7_lcd = 0 : D6_lcd = 0 : D5_lcd = 0 : D4_lcd = 0
 If Temp.7 = 1 Then D7_lcd = 1            ' Else D7_lcd = 0
 If Temp.6 = 1 Then D6_lcd = 1            ' Else D6_lcd = 0
 If Temp.5 = 1 Then D5_lcd = 1            ' Else D5_lcd = 0
 If Temp.4 = 1 Then D4_lcd = 1            ' Else D4_lcd = 0
 E_lcd = 1 : Delay : E_lcd = 0
 Delay
Return




Отредактировано Александр Д. (2024-05-12 11:30:34)

0