Estoque agora, pague os 80% restantes depois. Entrada de 20% até 30 de setembro.Vamos fazer compras

Display LCD LCD1602 tela azul com luz de fundo 1602A-5v fundo azul palavra branca display

30 dias
110 dias
Mín. R$ 3.400 (400 un.)

Quantidade

1602A Blue Screen

Correspondências exatas por um preço menor

Produtos similares a um preço mais baixo

Especificações do produto
Tipo
LCD Series Products
Marca
Mu Lintai
Modelo
1602A Blue Screen
Especificações
1602A Blue Screen
Tipo de instalação
Surface Mount Type
Campo de aplicação
Industrial Grade
Tipo
LCD Series Products
Marca
Mu Lintai
Modelo
1602A Blue Screen
Especificações
1602A Blue Screen
Tipo de instalação
Surface Mount Type
Campo de aplicação
Industrial Grade
Tipo
LCD Series Products
Marca
Mu Lintai
Modelo
1602A Blue Screen
Especificações
1602A Blue Screen
Tipo de instalação
Surface Mount Type
Campo de aplicação
Industrial Grade
Detalhes do produto
O texto nas imagens pode ser traduzido

Copie e baixe as informações necessárias:

http://pan.baidu.com/s/1dDzimwp

Tamanho do vidro:69,5*21,8*17,8

Texto branco sobre fundo azul

Módulo de exibição de caracteres LCD padrão 16X2 (luz de fundo/tela azul)

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

Pino: VSS é 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. Quando conectado à fonte de alimentação positiva, o contraste é fraco, e quando conectado à fonte de alimentação de aterramento, o contraste é alto. Quando o contraste é muito alto, "imagens fantasmas" serão produzidas. Quando em uso, o contraste pode ser ajustado por meio de um potenciômetro de 10K

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 5: Positivo de energia da luz de fundo

Pino 6: Negativo de energia da 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 segunda posição do caractere 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 de conexão de hardware específico
E EQU P3.5; Determine o método de conexão de hardware específico

MOV P1,#00000001B; Limpe a tela e redefina o cursor
ATIVAR A CHAMADA; chame a sub-rotina do comando de gravação

MOV P1,#00111000B; Definir modo de exibição: matriz de pontos 5x7 de 2 linhas e 8 bits
ACALL ENABLE ;Chama a sub-rotina do comando de escrita

MOV P1,#00001111B; Display ligado, cursor ligado, cursor pode piscar
ACALL ENABLE ;Chama a sub-rotina do comando de escrita

MOV P1,#00000110B; O texto não se move e o cursor se move automaticamente para a direita
ACALL ENABLE ;Chama a sub-rotina do comando de escrita

MOV P1,#0C0H; Escreva o endereço inicial da tela (a segunda posição da linha)
ACALL ENABLE ;Chama a sub-rotina do comando de escrita

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

SETBRS;RS=1
CLR RW; WR=0 ; Prepare-se para gravar dados
CLRE; E = 0; Executar comando de exibição
ATRASO DE CHAMADA; Determinar se o módulo LCD está ocupado?
SETB E; E = 1; Display concluído, programa interrompido

AJMP $

HABILITAR:
CLR RS ;Escrever sub-rotina de comando de controle
CLR RW
CLR E
ATRASO DE CHAMADA
SETB E
RET

ATRASO:
MOV P1,#0FFH ; Subrotina para determinar se o LCD está ocupado
CLR RS
SETB RW
CLR E
NÃO
SETB E
JB P1.7, ATRASO; se P1.7 estiver alto, significa ocupado, então espere 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 se move automaticamente para a direita ao exibir caracteres, sem intervenção manual. Cada vez que um comando é inserido, a subrotina DELAY é chamada para determinar se o módulo LCD está ocupado e, em seguida, o endereço da posição de exibição 0C0H é inserido e o código do caractere A a ser exibido 41H é inserido.


Método de fiação de porta analógica SMC1602A (16*2)
Diagrama de conexão:
-------------------------------------------------- -
|MCL-----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 conecta resistor de 1K ao 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_Dados P1
#define Ocupado 0x80 //Usado para detectar o sinalizador Ocupado na palavra de status LCM

#incluir

void WriteDataLCM (caractere não assinado WDLCM);
void WriteCommandLCM(caractere não assinado WCLCM,BuysC);
caractere não assinado ReadDataLCM(void);
caractere não assinado ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(caractere não assinado X, caractere não assinado Y, caractere não assinado DData);
void DisplayListChar(char não assinado X, char não assinado Y, código de char não assinado *DData);
vazio Atraso5Ms(vazio);
Atraso vazio400Ms (vazio);

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

vazio principal(vazio)
{
Atraso400Ms(); //Começa a esperar, espere o LCM entrar no estado de funcionamento
LCMInit(); //Inicialização do LCM
Atraso5Ms(); //Atrasar por um momento (opcional)

DisplayListChar(0, 5, uctech);
DisplayListChar(0, 0, líquido);
ReadDataLCM(); //A frase de teste não tem sentido
enquanto(1);
}

//Escreve dados
void WriteDataLCM (caractere não assinado WDLCM)
{
ReadStatusLCM(); //Detecção ocupada
LCM_Dados = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //Se a velocidade do cristal for muito alta, você pode adicionar um pequeno atraso após isso
LCM_E = 0; //Atraso
LCM_E = 1;
}

//Escreve instrução
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC é 0 e a detecção de ocupado é ignorada
{
if (CompraC) ReadStatusLCM(); //Verifica 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
caractere não assinado ReadDataLCM (void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
retorno(LCM_Dados);
}

//Lê o status
caractere não assinado ReadStatusLCM(void)
{
LCM_Dados = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
enquanto (LCM_Data & Ocupado); //detecta sinal de ocupado
retorno(LCM_Dados);
}

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

WriteCommandLCM(0x38,1); //Configuração do modo de exibição, começa a exigir cada detecção de sinal de ocupado
WriteCommandLCM(0x08,1); //Desligue a tela
WriteCommandLCM(0x01,1); //Limpar tela
WriteCommandLCM(0x06,1); //Mostra as configurações de movimento do cursor
WriteCommandLCM(0x0C,1); //Exibição e configuração do cursor
}

//Mostra um caractere na posição especificada
void DisplayOneChar(caractere não assinado X, caractere não assinado Y, caractere não assinado DData)
{
S &= 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, o código de endereço + 0x40;
X |= 0x80; // Calcula o código de instrução
WriteCommandLCM(X, 0); //Não detecta sinal de ocupado aqui, envia código de endereço
WriteDataLCM(DData);
}

//Exibe uma string de caracteres na posição especificada
void DisplayListChar(char não assinado X, char não assinado Y, código de char não assinado *DData)
{
caractere não assinado ListLength;

ComprimentoLista = 0;
S &= 0x1;
X&= 0xF; // Limita X para não ser maior que 15, Y para não ser maior que 1
while (DData[ListLength]>0x20) // Sai se o final da string for atingido
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ComprimentoLista]); //Mostra um único caractere
ComprimentoLista++;
X++;
}
}
}

//atraso de 5ms
Atraso vazio 5Ms (vazio)
{
não assinado int TempCyc = 5552;
enquanto(TempCyc--);
}

//atraso de 400ms
Atraso vazio400Ms (vazio)
{
caractere não assinado TempCycA = 5;
não assinado int TempCycB;
enquanto(TempCycA--)
{
TempCicB=7269;
enquanto(TempCycB--);
};

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

Total