Даташит
Достался прибор КРУ-мнемо. Исполнение мега328, данный дисплей. Схемно подключен 4-wire SPI.
Может кто занимался данным дисплеем?
Помогите с дисплеем PG-5664ASGG.
Сообщений 1 страница 8 из 8
Поделиться12022-05-26 09:15:20
Поделиться22022-05-26 09:23:17
4.1. Commands
Refer to the Technical Manual for the SSD1322
http://microsin.net/adminstuff/hardware … oller.html
https://docs.rs/ssd1322/0.2.2/ssd1322/c … index.html
Отредактировано Александр Д. (2022-05-26 09:24:50)
Поделиться32022-06-05 17:14:09
не могу. во-первых, в стадии переезда, во-вторых, работа и на чемодане в командировку.
Поделиться42022-06-09 15:29:29
Как бы разобрался. Остается роблема со шрифтами. В Font Editor нужно поворачивать против часовой стрелки. Макушками налево. Двухбайтовые еще, и половишки местами менять.
Нарисовал только цифровые. Может кто подскажет чего по шрифтам?
$regfile = "m328pdef.dat" $crystal = 16000000 $baud = 19200 $hwstack = 160 $swstack = 160 $framesize = 60 '=============================================================================== Config Portb.0 = Output : Res Alias Portb.0 Config Portb.1 = Output : Cs Alias Portb.1 Config Portb.2 = Output : Dc Alias Portb.2 Config Portb.3 = Output : Ser_data Alias Portb.3 Config Portb.5 = Output : Ser_clk Alias Portb.5 'конфигурируем SPI в программном режиме. SCLK (pin 2) - PORTA.3; SDA (pin 3) - PORTA.4; Din не используется 'Config Spi = Soft , Dout = Portb.3 , Ss = None , Clock = Portb.5 'Spiinit '=============================================================================== Dim Digit_str As String * 254 Dim T_str As String * 5 Dim T As Word Dim W_str As String * 5 Dim W As Word Dim Длина_колонки As Byte Dim Продолжение As Bit Dim X As Byte '=============================================================================== Declare Sub Ssd1322reset Declare Sub Ssd1322init Declare Sub Ssd1322clear Declare Sub Commandout(byval Значение As Byte) Declare Sub Dataout(byval Значение As Byte) Declare Sub Ssd1322bmpout Declare Sub Ssd1322print(byval Data_строка As String) Declare Sub Ssd1322position(byval 1322x As Byte , Byval 1322y As Byte) '=============================================================================== Call Ssd1322reset Call Ssd1322init Call Ssd1322clear 'Config Timer1 = Timer , Prescale = 8 'On Timer1 Pulse 'Enable Interrupts ' разрешаем все прерывания 'Enable Timer1 'Start Timer1 '************************************************************************************************************ Главный_цикл: Incr T T_str = Str(t) : T_str = Format(t_str , "00000") Decr W W_str = Str(w) : W_str = Format(w_str , "00000") Длина_колонки = 8 Продолжение = 0 Commandout &H75 : Dataout &H0 : Dataout &H07 Digit_str = "0123456789 9876543210:0123456789" Call Ssd1322print(digit_str) Commandout &H75 : Dataout &H09 : Dataout &H10 Digit_str = " " Call Ssd1322print(digit_str) Commandout &H75 : Dataout &H12 : Dataout &H19 Digit_str = "0123456789:9876543210 0123456789" Call Ssd1322print(digit_str) Commandout &H75 : Dataout &H1B : Dataout &H22 Digit_str = T_str + " " + W_str + " " + T_str + " " + W_str Call Ssd1322print(digit_str) Длина_колонки = 48 Commandout &H75 : Dataout &H24 : Dataout &H3B Digit_str = "15:29:57" Call Ssd1322print(digit_str) Длина_колонки = 8 Продолжение = 1 Commandout &H75 : Dataout &H24 : Dataout &H2B Digit_str = "0123456789" Call Ssd1322print(digit_str) X = 58 Commandout &H75 : Dataout &H2D : Dataout &H34 Digit_str = "0123456789" Call Ssd1322print(digit_str) X = 58 Commandout &H75 : Dataout &H36 : Dataout &H3D Digit_str = T_str + " " + W_str Call Ssd1322print(digit_str) Waitms 10 Goto Главный_цикл '****************************************************************************************** $include "Ssd1322end_v6.bas" '**************************************Передаем данные**************************************
$nocompile
'===============================================================================
'===============================================================================
Sub Ssd1322reset
Res = 0
Wait 1
Res = 1
End Sub
'-------------------------------------------------------------------------------------------------------------------------
Sub Ssd1322init
Commandout &HFD 'Доступ к интерфейсу дисплея
Dataout &H12
Commandout &HAE 'Вкючает режим сна
Commandout &HB3 'Задает частоту генератора
Dataout &HD0
Commandout &HCA 'Задает режим мультиплексирования от 16MUX до 128MUX
Dataout &H3F
Commandout &HA2 'Устанавливает вертикальную прокрутку COM в значение от 0 до 127. После сброса устанавливается значение 00h.
Dataout &H00
Commandout &HA1 'Устанавливает значение регистра начальной строки RAM дисплея в значение от 0 до 127. После сброса значение этого регистра равно 00h.
Dataout &H00
Commandout &HA0 'Set Re-map and Dual COM Line mode
Dataout &H14
Dataout &H11
Commandout &H15 'Устанавливает адреса начального и конечного столбца.
Dataout &H1C
Dataout &H5B
Commandout &H75 'Устанавливает адреса начальной и конечной строки.
Dataout &H0
Dataout &H3F
Commandout &HB5 'Установить состояние портов ввода/вывода.
Dataout &H00
Commandout &HAB 'разрешить работу внутреннего регулятора для VDD
Dataout &H01
Commandout &HB4 'Display Enhancement A
Dataout &HA0 '
Dataout &H1F 'FD
Commandout &HC1 'задает значение тока контрастности в диапазоне 0..255.
Dataout &HDF
Commandout &HC7 'Управляет уровнем тока для всех яркостей, так что задает общий уровень контрастности дисплея.
Dataout &H0F
'D3310commandout &HB9 'Сбрасывает таблицу градаций яркости в состояние по умолчанию (линейная таблица с нарастанием яркости от GS0 до GS1)
Commandout &HB8
Dataout &H00
Dataout &H01
Dataout &H03
Dataout &H06
Dataout &H0A
Dataout &H10
Dataout &H1A
Dataout &H28
Dataout &H37
Dataout &H47
Dataout &H58
Dataout &H6A
Dataout &H7F
Dataout &H96
Dataout &HB4
commandout &H00
Commandout &HB1 'задает период фазы 1 (длительность фазы сброса заряда) в диапазоне 5..31 тактов DCLK.
Dataout &HE8
Commandout &HD1 ' нормальное состояние (после сброса).
Dataout &HA2
Dataout &H20
Commandout &HBB ' Установить уровень напряжения предзаряда
Dataout &H1F
Commandout &HB6 ' устанавливает длительность второго периода предзаряда.
Dataout &H08
Commandout &HBE 'Установка уровня напряжения для не выбранного состояния COM
Dataout &H07
Commandout &HA9 'Отмена режима частичного отображения.
Commandout &HA6 'Set Display Mode
Commandout &HAF 'Выход из режима сна
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------
Sub Ssd1322clear 'Обнуление дисплея
Local Пиксель As Word '
Commandout &H5C 'Разрешение записи в память
For Пиксель = 1 To 4096
Dataout &H00
Dataout &H00
Next Пиксель
End Sub
'-------------------------------------------------------------------------------------------------------------------------------------
Sub Commandout(byval Значение As Byte)
'Cs = 0 '
'Dc = 0 '
'Spiout D3310value , 1
Ser_data = 0
Ser_clk = 0
Cs = 0
Dc = 0 'Режим ввода моманды
Shiftout Ser_data , Ser_clk , Значение , 1
Cs = 1 '
End Sub
'--------------------------------------------------------------------------------------------------------------------------------------
Sub Dataout(byval Значение As Byte)
'Cs = 0 '
'Dc = 1 '
'Spiout D3310value , 1
Ser_data = 0
Ser_clk = 0
Cs = 0
Dc = 1 'Режим ввода данных
Shiftout Ser_data , Ser_clk , Значение , 1
Cs = 1 '
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Sub Ssd1322print(byval Data_строка As String * 30)
Local Количество_символов As Byte 'Holds the length of D3310string
Local Символ As String * 1 'Holds each consecutive character in turn during display output
Local Выбор_символа As Byte 'Loop variable for the string
Local Колонка As Byte 'Loop variable for the columns
Local Column As Byte 'Display column output
Local Xend As Byte
Local I As Byte
Local H As Byte
Local L As Byte
Local Col As Byte
Количество_символов = Len(data_строка) 'Establish the number of characters
For Выбор_символа = 1 To Количество_символов 'Loop through the string
If Выбор_символа = 1 And Продолжение = 0 Then
X = 28
Else
X = X + 2
End If
Xend = X + 1
Commandout &H15 : Call Dataout(x) : Call Dataout(xend) : Commandout &H5C '
Символ = Mid(data_строка , Выбор_символа , 1) 'Get the current character
If Длина_колонки = 8 Then
Select Case Символ
Case "0" : Restore Zero
Case "1" : Restore One
Case "2" : Restore Two
Case "3" : Restore Three
Case "4" : Restore Four
Case "5" : Restore Five
Case "6" : Restore Six
Case "7" : Restore Seven
Case "8" : Restore Eight
Case "9" : Restore Nine
Case " " : Restore Spacesign
Case ":" : Restore Colon
End Select
End If
If Длина_колонки = 48 Then
Select Case Символ
Case "0" : Restore Ноль
Case "1" : Restore Один
Case "2" : Restore Два
Case "3" : Restore Три
Case "4" : Restore Четыре
Case "5" : Restore Пять
Case "6" : Restore Шесть
Case "7" : Restore Семь
Case "8" : Restore Восемь
Case "9" : Restore Девять
Case " " : Restore Пробел
Case ":" : Restore Двоеточие
End Select
End If
For Колонка = 1 To Длина_колонки 'Read and print each column
Read Column
H = Column.7 : If H = 1 Then H = &HF0 : If H = 0 Then H = &H00
L = Column.6 : If L = 1 Then L = &H0F : If L = 0 Then L = &H00
Col = H + L
Call Dataout(col)
H = Column.5 : If H = 1 Then H = &HF0 : If H = 0 Then H = &H00
L = Column.4 : If L = 1 Then L = &H0F : If L = 0 Then L = &H00
Col = H + L
Call Dataout(col)
H = Column.3 : If H = 1 Then H = &HF0 : If H = 0 Then H = &H00
L = Column.2 : If L = 1 Then L = &H0F : If L = 0 Then L = &H00
Col = H + L
Call Dataout(col)
H = Column.1 : If H = 1 Then H = &HF0 : If H = 0 Then H = &H00
L = Column.0 : If L = 1 Then L = &H0F : If L = 0 Then L = &H00
Col = H + L
Call Dataout(col)
If Колонка = 24 Then
X = X + 2
Xend = X + 1
Commandout &H15 : Call Dataout(x) : Call Dataout(xend) : Commandout &H5C
End If
Next Колонка
Next Выбор_символа
End Sub
'=================================================================================================
'Digits
Zero:
Data 60 , 102 , 102 , 102 , 102 , 102 , 60 , 0 ' 0
One:
Data 24 , 56 , 56 , 24 , 24 , 24 , 60 , 0 ' 1
Two:
Data 60 , 102 , 6 , 12 , 16 , 102 , 126 , 0 ' 2
Three:
Data 60 , 102 , 6 , 28 , 6 , 102 , 60 , 0 ' 3
Four:
Data 14 , 22 , 38 , 102 , 126 , 6 , 6 , 0 ' 4
Five:
Data 124 , 96 , 124 , 6 , 6 , 102 , 60 , 0 ' 5
Six:
Data 60 , 96 , 124 , 102 , 102 , 102 , 60 , 0 ' 6
Seven:
Data 126 , 102 , 6 , 6 , 12 , 24 , 24 , 0 ' 7
Eight:
Data 60 , 102 , 102 , 60 , 102 , 102 , 60 , 0 ' 8
Nine:
Data 60 , 102 , 102 , 102 , 62 , 6 , 60 , 0 ' 9
'Special characters
Spacesign:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Colon:
Data 0 , 24 , 24 , 0 , 24 , 24 , 0 , 0 ' :
'=================================================================================================
Ноль:
Data 0 , 15 , 31 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 31 , 15 , 0 ' 0
Data 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 248 , 240 , 0
Один:
Data 0 , 7 , 15 , 31 , 31 , 27 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 31 , 31 , 0 ' 1
Data 0 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 192 , 248 , 248 , 0
Два:
Data 0 , 31 , 63 , 120 , 120 , 120 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15 , 30 , 60 , 120 , 120 , 127 , 127 , 0 ' 2
Data 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 120 , 240 , 224 , 192 , 128 , 0 , 0 , 0 , 60 , 60 , 252 , 252 , 0
Три:
Data 0 , 31 , 63 , 120 , 120 , 120 , 0 , 0 , 0 , 0 , 0 , 15 , 15 , 0 , 0 , 0 , 0 , 0 , 120 , 120 , 120 , 63 , 31 , 0 ' 3
Data 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 56 , 240 , 240 , 56 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 248 , 240 , 0
Четыре:
Data 0 , 0 , 1 , 3 , 7 , 15 , 30 , 60 , 120 , 112 , 96 , 127 , 127 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ' 4
Data 0 , 120 , 248 , 248 , 248 , 248 , 120 , 120 , 120 , 120 , 120 , 120 , 252 , 252 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 0 , 0
Пять:
Data 0 , 127 , 127 , 120 , 120 , 120 , 120 , 120 , 120 , 127 , 127 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 120 , 120 , 120 , 63 , 31 , 0 ' 5
Data 0 , 252 , 252 , 0 , 0 , 0 , 0 , 0 , 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 248 , 240 , 0
Шесть:
Data 0 , 31 , 63 , 124 , 120 , 120 , 120 , 120 , 120 , 127 , 127 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 63 , 31 , 0 ' 6
Data 0 , 252 , 252 , 0 , 0 , 0 , 0 , 0 , 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 248 , 240 , 0
Семь:
Data 0 , 127 , 127 , 120 , 120 , 120 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 0 ' 7
Data 0 , 252 , 252 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 120 , 240 , 224 , 192 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 0
Восемь:
Data 0 , 31 , 63 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 56 , 31 , 31 , 56 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 63 , 31 , 0 ' 8
Data 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 56 , 240 , 240 , 56 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 248 , 240 , 0
Девять:
Data 0 , 31 , 63 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 120 , 63 , 31 , 0 , 0 , 0 , 0 , 0 , 0 , 127 , 127 , 0 ' 9
Data 0 , 240 , 248 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 60 , 252 , 252 , 60 , 60 , 60 , 60 , 60 , 124 , 248 , 240 , 0
Пробел:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Двоеточие:
Data 0 , 0 , 0 , 0 , 0 , 3 , 3 , 3 , 3 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 3 , 3 , 3 , 0 , 0 , 0 , 0 , 0 ' :
Data 0 , 0 , 0 , 0 , 0 , 192 , 192 , 192 , 192 , 0 , 0 , 0 , 0 , 0 , 0 , 192 , 192 , 192 , 192 , 0 , 0 , 0 , 0 , 0
Отредактировано rom-i (2022-06-09 16:42:50)
Поделиться52022-06-10 15:22:35
ну круто же! ))
уважаю!
Поделиться62022-06-10 15:23:42
В Font Editor нужно поворачивать против часовой стрелки
а может команда есть на поворот?
обычто бывает
Rotate, Mirror и их комбинации
Поделиться72022-06-10 18:38:38
Александр Д.
а может команда есть на поворот?
обычто бывает
Rotate, Mirror и их комбинации
Очень много еще не допонимаю в программировании. Но в данном случае пробовал брать байты прямиком с файла Font, и использовать Lookup. Диспла заполняется почти две секунды. Как будто на печатной машинке печатаютя.
Ведь 8192 байта нужно время послать по SPI. Байт 2 пикселя. Поэтому остановился на готовой таблице, и брать данные с помощью Restore, и Read. Судя как изменяютс переменные цикл проходит 10-20мсек. Полное обновление всего дисплея.
По этому таблицу готовить нужно зарание, так проще МК.
Не разобрался еще с байтами инсталяции, что касается свечения самих светодиодов. Первые пиксели в столбике, одиночные, строчки в один пиксель светятся в два раза тусклее следующих. Именно в столбике.
На фотке невидно. Камера сглаживает все это.
Отредактировано rom-i (2022-06-10 18:44:44)
Поделиться82022-06-24 19:57:32
Всем доброго здоровья!!!
Продолжаю тему.
Как перемещать символ в текстовой строке?
Умею только переписывая стороку.
Перемещать на пиксель для меня сложно.
На символ. Просто примерный подход.
Отредактировано rom-i (2022-06-24 20:05:40)
