Mail to Author |
Главная |
|
LM24010Z
Однажды, внезапно, нежданно-негаданно был приобретен графический ЖКИ с контроллером LM24010Z. Настоящий, японский.
Для питания используется +5, -21 В и переменного около 300 В. В комплекте шел преобразователь 24/300 В производства TDK. А сам
ЖКИ сделан Sharp'ом. Даташит на него искался долго, но все же был найден. Внешне ЖКИ выглядит
так, а сзади так.
Далее была собрана схема питания и контроллер ЖКИ был подключен к LPT-порту компьютера для скорейшего испытания.
Параллельный порт позволяет достаточно легко сформировать необходимые последовательности параллельных сигналов. В начале были
вертикальные полосы, написать Hello, World! программно было тяжеловато.
Затем сформировал "шахматное поле". На заднем плане виден преобразователь.
Еще одна фотка.
Пиком мастерства стало формирование картинки на экране. Для этого была написана программа, которая попиксельно
считывает файл картинки и выводит пиксели на ЖКИ. В итоге было получено вот это :)
Фотки имеют невысокую четкость вследствие низкой частоты обновления экрана, LPT не дает большей :(
Ниже приведен код для консольной программы на VB.NET, формирующий "шахматное поле". То, что закомментировано -
формирует вертикальные линии.
Module Module1
Declare Sub Out32 Lib "inpout32.dll" (ByVal PortAddress As Short, ByVal data As Short)
Const S As Short = 1 'D0 of LPT
Const CP1 As Short = 2 'D1 of LPT
Const CP2 As Short = 4 'D2 of LPT
Const D1 As Short = 8 'D3 of LPT
Const D2 As Short = 16 'D4 of LPT
Const D3 As Short = 32 'D5 of LPT
Const D4 As Short = 64 'D6 of LPT
Sub Main()
'Dim k As Short, b As Boolean, a, c As Short
'Do Until 1 = 2
' a = 0
' For i As Integer = 1 To 128
' 'reset CP1 pulse
' If i = 2 Then k = 1 Else k = 0
' Out32(&H378, CP1)
' Out32(&H378, CP1 + S * k)
' Out32(&H378, S * k)
' Out32(&H378, 0)
' If a < 4 Then c = 1 Else c = 0
' For j As Integer = 1 To 60
' 'set CP2
' If b Then Out32(&H378, CP2 + c * D1 + c * D2) Else Out32(&H378, CP2 + c * D3 + c * D4)
' 'Wait(1)
' 'reset CP2
' If b Then Out32(&H378, c * D1 + c * D2) Else Out32(&H378, c * D3 + c * D4)
' 'Wait(1)
' b = Not (b)
' Next
' a += 1
' If a = 8 Then a = 0
' Next
'Loop
''Console.ReadKey()
Dim k As Short, b As Boolean, a, c As Short, d As Short
Do Until 1 = 2
For i As Integer = 1 To 128
'reset CP1 pulse
If i = 2 Then k = 1 Else k = 0
Out32(&H378, CP1)
Out32(&H378, CP1 + S * k)
Out32(&H378, S * k)
Out32(&H378, 0)
If d < 20 Then b = True Else b = False
For j As Integer = 1 To 60
If a < 5 Then c = 1 Else c = 0
'set CP2
If b Then
Out32(&H378, CP2 + D1 * c + D2 * c + D3 * c + D4 * c)
Else
Out32(&H378, CP2 + D1 * (1 - c) + D2 * (1 - c) + D3 * (1 - c) + D4 * (1 - c))
End if
'Wait(1)
'reset CP2
If b Then Out32(&H378, D1 * c + D2 * c + D3 * c + D4 * c)
Else
Out32(&H378, D1 * (1 - c) + D2 * (1 - c) + D3 * (1 - c) + D4 * (1 - c))
End if
'Wait(1)
a += 1
If a = 10 Then a = 0
Next
d += 1
If d = 40 Then d = 0
Next
a = 0
d = 0
Loop
'Console.ReadKey()
End Sub
Private Sub Wait(ByVal mseconds As Integer)
Dim a, b As DateTime
a = DateTime.Now
a = a.AddMilliseconds(mseconds)
Do While DateTime.Compare(a, b) >= 0
b = DateTime.Now
Loop
End Sub
End Module
|
Картинки
Дополнительно
- (11 kb) lm24010z.pdf - даташит на lm24010.
2007©Electricianman
Сайт управляется системой
uCoz