Домашняя страничка Стефурак П.Б. Подключение дисплея Siemens CX65 к компьютеру через USB.
 
 
  
  
 
Промзона \ Подключение дисплея Siemens CX65 к компьютеру через USB.
Вывод картинки в формате bmp или jpg на дисплей 132x176 точек, подключенный через USB.
 
Сломался у меня телефон Siemens CX65, остался от него дисплей, 132х176 точек, 16бит цвет (остальное тоже осталось, но интереса вызывает меньше).
Его описание нашлось у нашего немецкого товарища Christian Kranz. которое он сделал аж в 2005 году.
В общем там (Using the Siemens S65 в формате PDF) все просто, будем грузить в дисплей картинку с PC через USB интерфейс на основе библиотеки VUSB Objective Development Software GmbH .
Схема:
Схема типовая, подобные я реализовывал в проектах например IR дистанционное управление компьютером, плеером Media Player Classic или
эмулятор лямбда зонда (датчика кислорода) Chery Tigo, к коим и отсылаю за подробностями.
В отличии от схемы Christian Kranz, питание дисплея так же заведено на порт C , что позволяет им манипулировать.
Подсветка дисплее требует от 10в до 15в, для формирования этого напряжения используется стандартная схема, в качестве генератора
используется аппаратный ШИМ ATMega8.
Более подробно смотри исходник.
Программирование прошивкой - через USB HIDboot (кнопка "Prog" именно за тем, смотри) или ISP.
В железе это выглядит так:
Устройство опознается ОС Windows как стандартное HID Device, никаких драйверов не нужно!.
Со стороны PC дисплеем управляет программа hid_lcd.
Аргументы командной строки программы hid_lcd:
power - управление питанием дисплея и его подсветки, true - включает, false - выключает. По умолчанию power=true.
picture - картинка в формате bmp или jpg, для загрузки в дисплей. Имя файла с путем и расширением.
Размер картинки может быть любым, программа сама его подгонит под размеры дисплея.
Если картинку загрузить и обработать не удалось, в дисплей будет загружено тестовое изображение.
brightness - управление уровнем подсветки дисплея (от 0 до 100) в %%. По умолчанию уровень
не задается. После включения дисплея уровень подсветки около 40%.
show_form - по умолчанию, программа тихо стартует, отрабатывает и закрывается, если хочется посмотреть
подробности обмена с дисплеем, show_form=true
Примеры использования:
hid_lcd.exe - если дисплей выключен, он будет включен и инициализирован, картинка никакая не грузится.
hid_lcd.exe power=false - не важно в каком режиме дисплей, его питание будет отключено, и подсветка тоже.
hid_lcd.exe picture=1.jpg - если дисплей выключен, он будет включен и инициализирован, картинка 1.jpg грузится.
hid_lcd.exe brightness=100 - если дисплей выключен, он будет включен и инициализирован, яркость установлена на 100% картинка никакая не грузится.
hid_lcd.exe picture=с:\temp\temp.jpg power=true brightness=100 show_form=true - включение дисплея, установка яркости на 100%, загрузка картинки с:\temp\temp.jpg с показом на экране всего процесса.
Самая серьезная проблема этой реализации - низкая скорость. В дисплей грузится 47кб данных (176x132x2 + служебные посылки), что занимает около 15сек.
Собственно а зачем тогда это мозга терзание?
Ну во первых интересно, а во вторых это делалось как продолжение проекта простая web камера,
чтобы не держать открытым web браузер, низкая скорость в данном случае не помеха, так как картинки все равно быстрее не обновляются:
- дома:
c USB камеры картинка попадает web серверу
web сервер отдает последнюю картинку по протоколу HTTP
- на работе:
программа re_client периодически запрашивает домашний web сервер, грузит с него последнее изображение
запускает hid_lcd.exe picture=последнее полученное изображение
на бывшем дисплее телефона Siemens CX65 видим то, что было снято домашней USB камерой!