Ligando display 7 segmentos com MAX7219 com Arduíno

Eletrônica

Este é um exemplo muito simples, mas preciso, de como usar esse CI MAX7219 e controlar 8 telas de 7 segmentos. Ele usa comunicação serial, portanto, precisamos apenas de 3 fios para dados, relógio e CS. O modulo e alimentado com 5V .


Primeiro, você precisa de uma exibição de 7 segmentos como imagem abaixo. Isso usa dados seriais para mostrar até 8 números de 0 a 9 e 7 pontos decimais. Para enviar dados, tudo o que precisamos fazer é mudar os bytes no pino de dados.






PARTE 1 - Esquemático


Ok, faça as conexões SPI como abaixo entre os pinos do LCD e do Arduíno. Forneça 5V e conecte o GND também. Para ligar a luz de fundo, você deve conectar o GND ao pino da luz. Em seguida, vá abaixo e faça o download da biblioteca e veja o código de exemplo. Faça o upload do código e teste o LCD.



PARTE 2 - Código de exemplo


Não precisamos de nenhuma biblioteca para este exemplo. Tudo o que precisamos fazer é enviar dados para o chip alterando o valor de cada byte no pino de dados. Para saber quais valores temos que enviar para cada registro, verifique esta folha de dados deste módulo para conhecer o mopre. Depois aplique o código do teste, faça as conexões e faça um teste.


#define MAX7219_Data_IN 2

#define MAX7219_Chip_Select  3

#define MAX7219_Clock 4


byte adr = 0x08;

byte num = 0x00;

int i = 0;


void shift(byte send_to_address, byte send_this_data)

{

  digitalWrite(MAX7219_Chip_Select, LOW);

  shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_to_address);

  shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_this_data);

  digitalWrite(MAX7219_Chip_Select, HIGH);

}


void setup() {

  pinMode(MAX7219_Data_IN, OUTPUT);

  pinMode(MAX7219_Chip_Select, OUTPUT);

  pinMode(MAX7219_Clock, OUTPUT);

  digitalWrite(MAX7219_Clock, HIGH);

  delay(200);


  //Setup of MAX7219 chip

  shift(0x0f, 0x00); //display test register - test mode off

  shift(0x0c, 0x01); //shutdown register - normal operation

  shift(0x0b, 0x07); //scan limit register - display digits 0 thru 7

  shift(0x0a, 0x0f); //intensity register - max brightness

  shift(0x09, 0xff); //decode mode register - CodeB decode all digits


}


void loop() {

  

  //Data transfer

  shift(0x08, 0x00); //digit 7 (leftmost digit) data

  shift(0x07, 0x01);

  shift(0x06, 0x02);

  shift(0x05, 0x03);

  shift(0x04, 0x04);

  shift(0x03, 0x05);

  shift(0x02, 0x06);

  shift(0x01, 0x07); //digit 0 (rightmost digit) data

  delay(1000);

  shift(0x08, 0x07); //digit 7 (leftmost digit) data

  shift(0x07, 0x06);

  shift(0x06, 0x05);

  shift(0x05, 0x04);

  shift(0x04, 0x03);

  shift(0x03, 0x02);

  shift(0x02, 0x01);

  shift(0x01, 0x00); //digit 0 (rightmost digit) data

  delay(1000);

}



Fonte
http://www.electronoobs.com/eng_arduino_tut54.php
Mais Dicas