- Вложения
-
- IMG_22.jpg
- (111.98 КБ) 598 скачиваний
-
- IMG_20160525_072447.jpg
- (112.57 КБ) 589 скачиваний
-
- SDS00002.jpg
- (55.08 КБ) 555 скачиваний
ЖК
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Знакомый торгаш отдал мне на барахол уймище китайских весов, и в каждых весах по 2 дисплея (3 шестизнака на плате) Управляется всё это дело по 3м пинам CS WR DA. Сначала подозревал что там сдвиговые регистры или что-то простое в таком духе, но после отключения дисплея от весов на ходу на дисплей больше ничего не выводилось, при том что проц посылает дальше дату на ЖК, это наталкивает на мысль что нужен инитиалайз... На осце удалось поймать 1ю посылку на ЖК после включения весов, жёлтый луч WR(CS) и синий DATA. Проанализировал и пробовал послать с атмени на ЖК такую же пачку, но что-то не прокатило... Скрины прикрепляю. Может кто знает, что за контроллер там китайские братья впихнули? Дисплеев таких штук 20 есть и все рабочие, хочется применить.
- Реклама
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Ничего не получается с этими дисплеями... Неужели их никто не юзал? Этих же весов сломанных на любом рынке просто уйма... 
Ежли весы "реестровые" можно попросить схемку/описание у сервисников по всеовой/кассовой технике и/или у изготовителя/производителя.
Вероятность использования типового контроллера весьма высока.
Попробовать самодельный протокол из возможных вариантов.
Ни и метод тест - перехвата протокола самодельным логическим анализатором на действующем образце тех весов вполне реален.

Вероятность использования типового контроллера весьма высока.
Попробовать самодельный протокол из возможных вариантов.
Ни и метод тест - перехвата протокола самодельным логическим анализатором на действующем образце тех весов вполне реален.
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
И всё же это что-то близкое к HT1621, нарвался на код на одном из польских сайтов:
$crystal = 8000000
$regfile = "m16def.dat"
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Cspin Alias Portb.0
Rdpin Alias Portb.3
Wrpin Alias Portb.1
Datapin Alias Portb.2
Dim Adres As Word
Dim Dane As Word
Dim Zmienna As Word
Dim Zmiennabyte As Byte
Dim I As Byte
Do
'Bias1 / 3
Zmienna = &B1000010100100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Waitms 20
'sysenable
Zmienna = &B1000000000100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Waitms 20
'lcd enable
Zmienna = &B1000000001100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Loop
Zmienna = &B1010000001111000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 13 , 20
Set Cspin
Waitus 20
Zmienna = Zmienna + &B0000000010000000
Next I
Wait 5 'odczekam i wyczyszcze ekran
Zmienna = &B1010000000000000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 13 , 20
Set Cspin
Waitus 20
Zmienna = Zmienna + &B0000000010000000
Next I
Wait 5
'Lcd Disable
Zmienna = &B1000000001000000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
End
На дисплее хоть и разная ерунда, но уже понятно что инициализация пошла, и не всё так безнадёжно, буду теперь дальше копать.
+Очистка дисплея работает только для 2го и 3го дисплея, на первом остаётся ерунда... нужно играться с адресацией... Пощупал осцилом сигналы на работающих весах - похоже, но в отличии от примеров для 1621 посылается 3 бита (команда записи), потом 6 бит (хз) и дальше пачками по 8 бит я так понял на каждую цифру..
$crystal = 8000000
$regfile = "m16def.dat"
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Cspin Alias Portb.0
Rdpin Alias Portb.3
Wrpin Alias Portb.1
Datapin Alias Portb.2
Dim Adres As Word
Dim Dane As Word
Dim Zmienna As Word
Dim Zmiennabyte As Byte
Dim I As Byte
Do
'Bias1 / 3
Zmienna = &B1000010100100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Waitms 20
'sysenable
Zmienna = &B1000000000100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Waitms 20
'lcd enable
Zmienna = &B1000000001100000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
Loop
Zmienna = &B1010000001111000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 13 , 20
Set Cspin
Waitus 20
Zmienna = Zmienna + &B0000000010000000
Next I
Wait 5 'odczekam i wyczyszcze ekran
Zmienna = &B1010000000000000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 13 , 20
Set Cspin
Waitus 20
Zmienna = Zmienna + &B0000000010000000
Next I
Wait 5
'Lcd Disable
Zmienna = &B1000000001000000
Reset Cspin
Shiftout Datapin , Wrpin , Zmienna , 0 , 12 , 20
Set Cspin
End
На дисплее хоть и разная ерунда, но уже понятно что инициализация пошла, и не всё так безнадёжно, буду теперь дальше копать.
+Очистка дисплея работает только для 2го и 3го дисплея, на первом остаётся ерунда... нужно играться с адресацией... Пощупал осцилом сигналы на работающих весах - похоже, но в отличии от примеров для 1621 посылается 3 бита (команда записи), потом 6 бит (хз) и дальше пачками по 8 бит я так понял на каждую цифру..
- Реклама
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Поборено
Осталось сделать знакогенератор удобный в подпрограмме. 
$crystal = 8000000
$regfile = "m16def.dat"
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Cspin Alias Portb.0
Rdpin Alias Portb.3
Wrpin Alias Portb.1
Datapin Alias Portb.2
Declare Sub Lcdclear
Declare Sub Lcdinit
Declare Sub Lcdoff
Dim Adres As Word
Dim Dane As Word
Dim Wr As Byte
Dim Wa As Byte
Dim Za As Byte
Dim Zb As Byte
Dim Zc As Byte
Dim Zd As Byte
Dim Ze As Byte
Dim Zf As Byte
Dim Zg As Byte
Dim Zh As Byte
Dim Zi As Byte
Dim Zj As Byte
Dim Mi As Byte
Dim Cmdx As Word
Dim I As Byte
Lcdinit
Lcdclear
'Write command
Wr = &B10100000
'Write address
Wa = &B00000000
'Digits
Za = &B01111101 ' 0
Zb = &B01100000 ' 1
Zc = &B00111110 ' 2
Zd = &B01111010 ' 3
Ze = &B01100011 ' 4
Zf = &B01011011 ' 5
Zg = &B01011111 ' 6
Zh = &B01110000 ' 7
Zi = &B01111111 ' 8
Zj = &B01111011 ' 9
Mi = &B10000010 ' - with dp
Do
'Test digits out
Reset Cspin
Waitus 100
Shiftout Portb.2 , Portb.1 , Wr , 0 , 3 , 20
Waitus 100
Shiftout Portb.2 , Portb.1 , Wa , 0 , 6 , 20
Waitus 100
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zj , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zh , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zg , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zf , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Ze , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zd , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zc , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zb , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Za , 0 , 8 , 20
Waitus 20
Set Cspin
Waitms 200
Loop
Sub Lcdinit
'Bias
Cmdx = &B1000010010100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'sysenable
Cmdx = &B1000000000100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'lcd enable
Cmdx = &B1000000001100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
Sub Lcdclear
Cmdx = &B1010000000000000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 13 , 20
Set Cspin
Waitus 20
Cmdx = Cmdx + &B0000000010000000
Next I
End Sub
Sub Lcdoff
'Lcd Disable
Cmdx = &B1000000001000000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
End

$crystal = 8000000
$regfile = "m16def.dat"
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Cspin Alias Portb.0
Rdpin Alias Portb.3
Wrpin Alias Portb.1
Datapin Alias Portb.2
Declare Sub Lcdclear
Declare Sub Lcdinit
Declare Sub Lcdoff
Dim Adres As Word
Dim Dane As Word
Dim Wr As Byte
Dim Wa As Byte
Dim Za As Byte
Dim Zb As Byte
Dim Zc As Byte
Dim Zd As Byte
Dim Ze As Byte
Dim Zf As Byte
Dim Zg As Byte
Dim Zh As Byte
Dim Zi As Byte
Dim Zj As Byte
Dim Mi As Byte
Dim Cmdx As Word
Dim I As Byte
Lcdinit
Lcdclear
'Write command
Wr = &B10100000
'Write address
Wa = &B00000000
'Digits
Za = &B01111101 ' 0
Zb = &B01100000 ' 1
Zc = &B00111110 ' 2
Zd = &B01111010 ' 3
Ze = &B01100011 ' 4
Zf = &B01011011 ' 5
Zg = &B01011111 ' 6
Zh = &B01110000 ' 7
Zi = &B01111111 ' 8
Zj = &B01111011 ' 9
Mi = &B10000010 ' - with dp
Do
'Test digits out
Reset Cspin
Waitus 100
Shiftout Portb.2 , Portb.1 , Wr , 0 , 3 , 20
Waitus 100
Shiftout Portb.2 , Portb.1 , Wa , 0 , 6 , 20
Waitus 100
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zj , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zh , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zg , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zf , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Ze , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zd , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zc , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zb , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Za , 0 , 8 , 20
Waitus 20
Set Cspin
Waitms 200
Loop
Sub Lcdinit
'Bias
Cmdx = &B1000010010100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'sysenable
Cmdx = &B1000000000100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'lcd enable
Cmdx = &B1000000001100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
Sub Lcdclear
Cmdx = &B1010000000000000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 13 , 20
Set Cspin
Waitus 20
Cmdx = Cmdx + &B0000000010000000
Next I
End Sub
Sub Lcdoff
'Lcd Disable
Cmdx = &B1000000001000000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
End
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Тут всё просто, инициализация:
Тянем CS на землю.
Настройка контраста и COM, для этого шлём 12 бит 100001001010
если контраст плохой, стоит поиграться с 11м битом (0=bias 1/2, 1=bias 1/3)
Если не отображается часть сегментов, нужно играться с COM (8 и 9 бит):
2 COM - 00
3 COM - 01
4 COM - 10
Врубаем осцилятор, шлём 12 бит 100000000010
Включение дисплея, шлём 12 бит 100000000110
Нуу и дальше 16 8`битных пачек у меня получилось (щупал осцилографом на рабочих весах)
тоесть 7 сегментов и точка, 1й бит точка, 2-8 сегменты. Чип сам плюсует адрес памяти для символов после каждой 8бит пачки.
Тянем CS к плюсу.
Тянем CS на землю.
Настройка контраста и COM, для этого шлём 12 бит 100001001010
если контраст плохой, стоит поиграться с 11м битом (0=bias 1/2, 1=bias 1/3)
Если не отображается часть сегментов, нужно играться с COM (8 и 9 бит):
2 COM - 00
3 COM - 01
4 COM - 10
Врубаем осцилятор, шлём 12 бит 100000000010
Включение дисплея, шлём 12 бит 100000000110
Нуу и дальше 16 8`битных пачек у меня получилось (щупал осцилографом на рабочих весах)
тоесть 7 сегментов и точка, 1й бит точка, 2-8 сегменты. Чип сам плюсует адрес памяти для символов после каждой 8бит пачки.
Тянем CS к плюсу.
Гымм... смутно... В той теме, что выше указывал мы более дотошно данные выкладывали, хотя также "по-любительски".
А на Денпровес обратиться?
У них также вариант подобных дисплеев применяется...

А на Денпровес обратиться?
У них также вариант подобных дисплеев применяется...
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Я думаю что это именно и есть HT1621, команды все совпадают, о нём уже написано достаточно. Делаю лабораторный БП в корпусе мини ATX, отрезал 3й дисплей и врезал в заглушку си-ди рома, развожу печатку регулятора напряжения на МК


Пока макет "под руками"...
На диапазон допустимого изменения питающего напряжения глянь - от 5 вольтей и до... сохраняет контраст? (не подсветку, а только контраст - подсветка там вроде не должна поддерживать пониженное питание).
Весьма интересно данные узнать (для копилки инфы).

На диапазон допустимого изменения питающего напряжения глянь - от 5 вольтей и до... сохраняет контраст? (не подсветку, а только контраст - подсветка там вроде не должна поддерживать пониженное питание).
Весьма интересно данные узнать (для копилки инфы).
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49
Уже при 4.5 плохо видно, но на плате есть резистор, по дефолту 15К, можно подогнать контраст, вечером попробую на 3.3В подсадить дисплей.
Подкрутка неинтересно... Ибо - ВРУЧНУЮ... На тех, что от старых кассовых аппаратов никаких круток - чей-то в самом блочке самоподстраиваемое.
Ну да и на том спасибки!

Ну да и на том спасибки!
- Сообщения: 14
- Зарегистрирован: Ср май 25, 2016 06:23:49



