Arduino + 2X12 LCD para emular una unidad de visualización defectuosa Kenwood HF rig

4

Tengo un equipo HF con un mal inicio de pantalla (controlador LC7582A y pantalla LCD personalizada con 9 indicadores numéricos de siete segmentos y algunos iconos para un total de aproximadamente 100 segmentos). Los pines de entrada del controlador LCD son CE CLK y DATA. Recogí de la hoja de datos que espera unos 105 bits del flujo de datos. Tengo una idea aproximada de que tengo que crear un "búfer de recepción" de aproximadamente cien bits, luego averiguar y determinar qué bits son para los segmentos indicadores numéricos, qué bits son para un indicador de señal de 10 segmentos y los otros íconos (AM, LSB, USB, TX, RX, etc.) y una vez que haya "descifrado" el flujo. páselas a un búfer de pantalla LCD para luego ingresar a una pantalla LCD o pantalla OLED genérica. Estoy empezando a pensar, podría tener que abordar este proyecto en dos pasos: construir un sistema para decodificar y ordenar los bits de flujo y, más tarde, después de conocer el "protocolo" de flujos, construir el sistema completo. La razón por la que obtuve esta plataforma fue forzarme a aprender finalmente la programación de Arduino o microcontrolador. Si alguien me puede indicar algunas referencias (bocetos, etc.) para que empiece en la dirección correcta o me dé algunos consejos, ¡realmente lo apreciaría!

    
pregunta Mon DU1FV

1 respuesta

1

Eso suena como un proyecto interesante para jugar con Arduino y MCU. Espero que no sea demasiado tarde y que sigas trabajando en el proyecto.

Si tiene un osciloscopio, es posible que desee comenzar a echar un vistazo a las líneas de datos y SCK, ¿hay algún pin CS o CE para la selección de chips? Verifique también los voltajes en esos pines para asegurarse de que nada se queme ...

Si no tiene acceso a un osciloscopio, es posible que pueda usar Arduino y una interrupción externa. Básicamente, creará un software SPI esclavo muy simple, algo así debería hacerlo:

(No he intentado compilar este código, es posible que necesite algunos ajustes)

//Connect your Data to the pinMISO.
int pinSCK = 7;
int pinMISO = 8;

//Variables used inside interrupt functions needs to be volatile
volatile uint8_t myByte = 0;
volatile uint8_t bitCounter = 0;

int8_t byteCounter = 0;

void setup() {
  pinMode(pinSCK, INPUT);
  pinMode(pinMISO, INPUT);

  //This tells Arduino to execute bitRead() every time the pinSCK goes from LOW to HIGH. In other works, it'll get executed every clock.
  attachInterrupt(pinSCK, bitRead, RISING);

  //Add some serial output so you can debug on screen and don't worry with the second part of you code for now.
  Serial.begin(115200);
}

//This function will be called every time the interrupt is triggered, it's important to keep it very simple to run fast!
void bitRead() {
  //Left shit one bit, this assume the communication is MSB first
  myByte <<= 1;

  //Append the read value of the pinMISO to our byte (it'll be 0 or 1). I think I need to cast to (uint8_t) as digitalRead returns an int.
  myByte |= (uint8_t)digitalRead(pinMISO);

  //Increment our bit counter
  bitCounter++
}

void loop() {
  if(bitCounter == 8) {
    Serial.print("New byte [ "); Serial.print(byteCount); Serial.print("] "); Serial.println(myByte, bin);

    //Increment our byte counter
    byteCounter++;

    //Reset myByte and bitCounter for the next byte
    myByte = 0;
    bitCounter = 0;

}

Este es solo un ejemplo ... Espero que la velocidad de SCK sea lo suficientemente lenta para que funcione el código y que la comunicación esté utilizando un múltiplo de 8 bits. Un problema aquí podría ser la "impresión" que se interpone en el camino, por lo que es posible que necesite crear un búfer de bytes e imprimir desde el búfer.

Puedes usar un ejemplo similar solo para contar cuántos bits obtienes y crear el tamaño de búfer correcto. Con este código, debería poder decodificar la pantalla y comenzar a pensar cómo escribir la segunda parte para imprimir en la pantalla de reemplazo.

Dependiendo de su caso, es posible que pueda usar el SPR de hardware de AVR como esclavo. Pero eso podría ser un poco difícil de entender si está empezando con MCU. Eche un vistazo en esta página: enlace

¡Buena suerte!

    
respondido por el Talk2

Lea otras preguntas en las etiquetas