Автор Arduino Project Hub под ником pdio рассказывает, как управлять дисплеем от автомагнитолы при условии, что на одной плате с ним установлен драйвер LC75829. Лицензия - GPL версии 3 или больше по вашему выбору.
Чтобы разобраться, какие куда подавать сигналы, мастер скачивает даташит на микросхему с сайта производителя. Хотя в его случае обозначение на чипе не содержит суффикса PE или PW, даташит подошёл. Затем находит цоколёвку 20-выводного разъёма на плате, и определяет, к каким его ножкам подключены входы микросхемы: DI, CE, CL, VDD и GND. На этот же разъём же выведены линии с "джека" для подключения внешних источников, USB-разъёма, фотоприёмника, но они мастера пока не интересуют. Ему нужны только выводы чипа, управляющего дисплеем.
Способ подключения дисплея в зависимости от типа Arduino мастер указывает в следующем фрагменте второго, отлаженного скетча:
// UNO
// pin8 PB0
// pin9 PB1
// pin10 PB2
// MEGA
// pin8 PH5
// pin9 PH6
// pin10 PB4
Ну а первый, неоптимальный, но реально заработавший скетч выглядит так:
byte data[321] = {1,0,0,0,0,0,1,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1, 0,0,0,0, 0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0, 1,0,0,0,0,0,1,0, 1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1, 1,0,0,0,0,0,1,0, 1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1, 0,0,0,0,0,0,0,0, 0,0,0, 0,0,0, 0,0, 0,0,0, 0,0,0, 1,0, 1,0,0,0,0,0,1,0, 1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1, 0,0,0, 0,0,0, 0,0, 0,0,0, 0,0,0, 1,1};
void PrintData(){
tick = 1;
comehere:
if(data[tick-1] == 0){
PORTB = PORTB & B11111011; // DATA DOWN
PORTB = PORTB | B00000001; // CLK UP
}
else{
PORTB = PORTB | B00000100; // DATA UP
PORTB = PORTB | B00000001; // CLK UP
}
delayMicroseconds(1);
if(tick == 8 || tick == 88 || tick == 168 || tick == 248){
PORTB = PORTB | B00000010; // CE UP
delayMicroseconds(1);
}
if(tick == 80 || tick == 160 || tick == 240){
PORTB = PORTB & B11111101; // CE DOWN
delayMicroseconds(1);
}
PORTB = PORTB & B11111110; // CLK DOWN
if(tick < 320){
tick++;
goto comehere;
}
PORTB = PORTB & B11111101; // CE DOWN
delay(10);
}
Выводы Arduino, к которым подключается драйвер дисплея, при этом определены так (для Uno):
// pin8 PB0
// pin9 PB1
// pin10 PB2
#define CLK 8
#define CE 9
#define DATA 10
Второй вариант скетча выложен сюда. В нём есть и шрифт, и возможность выводить этим шрифтом текст. Но следует учитывать, что даже если на имеющейся у вас плате с дисплеем от автомагнитолы установлен такой же драйвер, у дисплея сегменты могут быть расположены совсем по-другому. А значит, придётся сначала определить экспериментально, как именно они расположены, и поправить скетч. А затем - реализовать в нём те дополнительные функции, которые нужны вам. Такой дисплей вместе с драйвером может стать частью разнообразных самоделок на Arduino, Raspberry Pi и иных платформах: часов, метеостанций, термостатов, игр, кодовых замков, и др.
Источник (Source)