LCD1602A tela azul/tela verde amarelada/cor azul/com luz de fundo 5V display LCD 1602 tela LCD

30 dias
110 dias
Mín. R$ 2.520 (600 un.)
Produto 5.0
Fornecedor 4.0

Variantes

Blue screen
Blue screen with pin header
Shell
Especificações do produto
Marca
xtj
Especificações e modelos
Blue screen, Yellow-green screen, Blue screen with pin header, Yellow-green screen with pin header, Shell
Marca
xtj
Especificações e modelos
Blue screen, Yellow-green screen, Blue screen with pin header, Yellow-green screen with pin header, Shell
Marca
xtj
Especificações e modelos
Blue screen, Yellow-green screen, Blue screen with pin header, Yellow-green screen with pin header, Shell
Detalhes do produto
O texto nas imagens pode ser traduzido

Se você precisar de correspondênciaPlaca Adaptadora de Interface IIC/I2C para ArduinoPor favor, clique aqui para comprar:

https://item.taobao.com/item.htm?spm=686.1000925.0.0.2e4c79dbvFAfgD&id=560963121961

Copie e baixe as informações necessárias:http://pan.baidu.com/s/1c0ARSIk

tamanho do vidro

1602 usa uma interface padrão de 16 pinos, onde:

Pino 1: VSS é a fonte de alimentação de aterramento

Pino 2: VDD conectado à fonte de alimentação positiva de 5V

Pino 3: V0 é o terminal de ajuste de contraste do display LCD. O contraste é mais fraco quando conectado à fonte de alimentação positiva e mais alto quando conectado à fonte de alimentação terra. Quando o contraste for muito alto, serão produzidas “imagens fantasmas”. O contraste pode ser ajustado através de um potenciômetro de 10K durante o uso.

Pino 4: RS é a seleção do registro. Quando o nível é alto, o registro de dados é selecionado. Quando o nível está baixo, o registro de instrução é selecionado.

Pino 5: R/W é a linha de sinal de leitura/gravação. Quando RS e RW estão baixos, você pode escrever instruções ou exibir endereços. Quando RS está baixo e RW alto, você pode ler o sinal de ocupado. Quando RS está alto e RW está baixo, você pode gravar dados.

Pino 6: O terminal E é o terminal de habilitação. Quando o terminal E salta de um nível alto para um nível baixo, o módulo LCD executa o comando.

Pinos 7 a 14: D0 a D7 são linhas de dados bidirecionais de 8 bits.

Pino 15: Pólo positivo de alimentação de luz de fundo

Pino 16: Pólo negativo de alimentação de luz de fundo

A memória geradora de caracteres (CGROM) dentro do módulo LCD 1602 armazenou 160 gráficos de caracteres matriciais diferentes, conforme mostrado na Tabela 1. Esses caracteres incluem: algarismos arábicos, letras inglesas maiúsculas e minúsculas, símbolos comuns e kana japonês, etc. personagem tem um código fixo. Por exemplo, o código para a letra maiúscula "A" em inglês é 01000001B (41H). Ao exibir, o módulo exibe os gráficos de caracteres matriciais no endereço 41H, e podemos ver a letra “A”.

A seguir está o programa para exibir a letra “A” na primeira posição do caractere da segunda linha do módulo LCD: ORG 0000H

RS EQU P3.7; Determine o método de conexão de hardware específico
RW EQU P3.6 ; Determine o método específico de conexão de hardware
E EQU P3.5 ; determine o método específico de conexão de hardware

MOV P1,#00000001B; Limpe a tela e redefina o cursor
ACALL HABILITAR; Sub-rotina de comando de escrita de chamada

MOV P1,#00111000B; Definir modo de exibição: matriz de pontos 5x7 de 2 linhas e 8 bits
ACALL HABILITAR ; Sub-rotina de comando de escrita de chamada

MOV P1,#00001111B; Display ligado, cursor ligado, cursor pode piscar
ACALL HABILITAR ; Sub-rotina de comando de escrita de chamada

MOV P1,#00000110B; O texto não se move e o cursor se move automaticamente para a direita
ACALL HABILITAR ; Sub-rotina de comando de escrita de chamada

MOV P1,#0C0H; escreva o endereço inicial do display (a primeira posição da segunda linha)
ACALL HABILITAR ; Sub-rotina de comando de escrita de chamada

MOV P1, #01000001B; código para a letra A

SETBRS;RS=1
CLR RW ;RW=0 ; Preparar para escrever dados
CLR E ;E=0 ;Executar comando de exibição
ACALL DELAY ;Determinar se o módulo LCD está ocupado?
SETB E ;E=1 ;Exibição completa, programa para

AJMP $

HABILITAR:
CLR RS ;sub-rotina para escrever comandos de controle
CLR RW
CLR E
ATRASO DE CHAMADA
SETB E
RET

ATRASO:
MOV P1,#0FFH ;Sub-rotina para determinar se o LCD está ocupado
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P1.7,DELAY ;se P1.7 estiver em nível alto indicando ocupado, aguarde em loop
RET

FIM

No início do programa, a função do módulo LCD é inicializada e o formato de exibição é acordado. Observe que o cursor avança automaticamente para a direita ao exibir caracteres, sem intervenção manual. Cada vez que um comando é inserido, a sub-rotina DELAY é chamada para determinar se o módulo LCD está ocupado, então o endereço da posição de exibição 0C0H é inserido e, finalmente, o código 41H do caractere A a ser exibido é inserido.


Método de fiação de porta analógica SMC1602A (16*2)
Diagrama de conexão:
---------------------------------------------------
MMC-----51   MMC-----51   MMC------51
------------------------------------------------
DB0-----P1.0 DB4-----P1.4 RW-------P2.0
DB1-----P1.1 DB5-----P1.5 RS-------P2.1
DB2-----P1.2 DB6-----P1.6 E--------P2.2
DB3-----P1.3 DB7-----P1.7 VLCD conectado a resistor de 1K para GND
---------------------------------------------------

 

[Nota: AT89S52 usa oscilador de cristal de 12M]
=============================================================*/

#define LCM_RW P2_0 //define o pino
#define LCM_RS  P2_1
#define LCM_E   P2_2
#define LCM_Data P1
#define Busy 0x80 //usado para detectar a flag Busy na palavra de status do LCM

#incluir

void WriteDataLCM (caractere não assinado WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);
unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);

código de caractere não assinado uctech[] = {"uctech"};
unsigned char code net[] = {"uctech.icpcn.com"};

vazio principal(vazio)
{
Delay400Ms(); //Começa a esperar até que o LCM entre em estado de funcionamento
LCMInit(); //Inicialização do LCM
Delay5Ms(); //Atraso por um momento (opcional)

DisplayListChar(0, 5, uctech);
DisplayListChar(0, 0, rede);
ReadDataLCM();//Frase de teste sem sentido
enquanto(1);
}

//Escreve dados
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //Verificar Ocupado
LCM_Dados = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //Se a velocidade do oscilador de cristal for muito alta, um pequeno atraso pode ser adicionado aqui
LCM_E = 0; //Atraso
LCM_E = 1;
}

//Escreve instrução
void WriteCommandLCM(unsigned char WCLCM,BuysC) //Ignorar detecção de ocupado quando BuysC for 0
{
if (BuysC) ReadStatusLCM(); //Verifique se está ocupado conforme necessário
LCM_Dados = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}

//Lê os dados
unsigned char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}

//Lê o status
unsigned char ReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy); //Verifica o sinal de ocupado
return(LCM_Data);
}

void LCMInit(void) //inicialização do LCM
{
LCM_Data = 0;
WriteCommandLCM(0x38,0); //Configuração do modo de exibição três vezes, não verifica o sinal de ocupado
Atraso5Ms();
WriteCommandLCM(0x38,0);
Atraso5Ms();
WriteCommandLCM(0x38,0);
Atraso5Ms();

WriteCommandLCM(0x38,1); //Configuração do modo de exibição, comece a exigir cada detecção de sinal ocupado
WriteCommandLCM(0x08,1); //Desliga o display
WriteCommandLCM(0x01,1); //Limpar display
WriteCommandLCM(0x06,1); // Exibe as configurações de movimento do cursor
WriteCommandLCM(0x0C,1); // Configurações de display ligado e cursor
}

//Mostra um caractere na posição especificada
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; // Limita X para não ser maior que 15, Y para não ser maior que 1
se (Y) X = 0x40; //quando a segunda linha deve ser exibida, código do endereço + 0x40;
X = 0x80; // Calcula o código de instrução
WriteCommandLCM(X, 0); //Aqui o sinal de ocupado não é verificado, envia o código do endereço
WriteDataLCM(DData);
}

//Exibe uma string de caracteres na posição especificada
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char TamanhoLista;

Comprimento da lista = 0;
Y &= 0x1;
X &= 0xF; // Limita X para não ser maior que 15, Y para não ser maior que 1
enquanto (DData[ListLength]>0x20) //Se o fim da string for alcançado, saia
{
se (X <= 0xF) //A coordenada X deve ser menor que 0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //Exibe um único caractere
ListLength++;
X++;
}
}
}

//atraso de 5ms
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
enquanto(TempCyc--);
}

//atraso de 400ms
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
enquanto(TempCycA--)
{
TempCycB=7269;
enquanto(TempCycB--);
};

 

Os procedimentos acima são apenas para referência!!

.......
Total