LCD 1602 и иже с ним запустить не получилось: на экране мусор.
Пробовал на разные выводы цеплять - не помогло. Хотя каждая из них индивидуально работает правильно.
Изменение скорости результата не дало. Лезть в ассм не стал - я его не знаю.
Потом попробую написать свою ПП для работы с этими ЖКИ.
Дисплей 1602 и иже с ними
Сообщений 1 страница 10 из 10
Поделиться12024-04-30 18:05:52
Поделиться22024-05-01 18:33:16
LCD 1602 и иже с ним запустить не получилось: на экране мусор.Пробовал на разные выводы цеплять - не помогло. Хотя каждая из них индивидуально работает правильно.Изменение скорости результата не дало. Лезть в ассм не стал - я его не знаю.Потом попробую написать свою ПП для работы с этими ЖКИ.
Может, такой подход поможет ? Кириллица на китайских OLED дисплеях
Тут, правда, работа с настройками, но что мешает этим же способом впихивать данные ?
Набор используемых операторов невелик, несложно портировать в Ассм...
Поделиться32024-05-01 20:18:40
Тут, правда, работа с настройками, но что мешает этим же способом впихивать данные ?
Не, тут иное: Видно, что какие-то команды прошли в LCD (например, скроллинг вправо работает), но вместо символов - ооо/-* и прочее
Поделиться42024-05-01 21:11:12
Не, тут иное: Видно, что какие-то команды прошли в LCD (например, скроллинг вправо работает), но вместо символов - ооо/-* и прочее
Эти дисплеи чувствительны к временнЫм параметрам, может это сыграло ?
Буфер команд у них не всесильный...
Или BUSY отслеживать...
Поделиться52024-05-01 21:17:43
Эти дисплеи чувствительны к временнЫм параметрам, может это сыграло ?
Буфер команд у них не всесильный...
Или BUSY отслеживать...
ну, ценность Баском именно в родных библиотеках!
а так да, самому написать придётся ...
Поделиться62024-05-01 21:36:29
ну, ценность Баском именно в родных библиотеках!
а так да, самому написать придётся ...
Вот я к тому и веду...
Если писать свою LIB, то учитывать характеристики прибора.
Я тогда (по ссылке выше) раза с пятого только в нужную задержку попал...
Кстати, предлагаю использовать необходимые фрагменты оттуда, чтоб не изобретать "с ноля".
Поделиться72024-05-01 21:44:59
даташиты есть с 2004 года )) тогда на PIC и ассме только так и работал...
Это потом PICbasic и полеГше стало именно благодаря библиотекам! ))
Поделиться82024-05-02 23:27:19
Попробовал снова вернуться к теме Lcd1602
Проверил его на AVR, снял сигналы.
Запустил STC - вообще иные сигналы! И по длительности, и по командам! Близко в документации не приближено!
Надо писать свой код с нуля.
Странно, конечно, но факт! ЖКИ древний, компилятор обновлён в 2013 году - явно кто-то проверил бы и заметил ляпы...
ps
нашел версию компилятора постарее: 2.0.14.0 - проблемы те же.
Отредактировано Александр Д. (2024-05-03 16:30:21)
Поделиться92024-05-09 12:25:55
Замедлил МК как только мог: запустил STC на 32 КГц
Не работает LCD1602
Поделиться102024-05-09 23:25:26
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)