Apoio técnico para realização das práticas do Curso de Eletrônica da Escola Estadual Parobé
terça-feira, 2 de outubro de 2012
Programa para LCD
#include <REGX52.H>
#define LCD_data P2
#define LCD_rs P1_0
#define LCD_rw P1_1
#define LCD_en P1_2
void LCD_busy(void);
void LCD_poweron(void);
void LCD_command(unsigned char var);
void LCD_senddata(unsigned char var);
void LCD_sendstring(unsigned char *var);
void LCD_init(void);
void main(void)
{
unsigned char msg[] ="Escola America";
LCD_poweron(); // tempo de 15ms
LCD_init();
LCD_command (0x80); // Seta endereço de comando no CGRAM do LCD
LCD_sendstring(msg);
while(1);
}
void LCD_busy()
{
unsigned char i,j;
for(i=0;i<50;i++)
for(j=0;j<255;j++); //tempos para escrever no display
}
void LCD_poweron()
{
unsigned int i;
for (i=0;i<22500; i++); //tempo que define velocidade da mensagem
}
void LCD_command(unsigned char var)
{
LCD_data = var; //Function set: define par o lcd duas linhas, 8-bit, e tamanho do caracter 5x8 dots
LCD_rs = 0; //Seleta comando RS comand register
LCD_rw = 0; //instruçao de registro de leitura e escrita
LCD_en = 1; //habilita em 1 desabilita em 0 Enable H->L
LCD_en = 0;
LCD_busy(); //espera o lcd processar suas informaçoes
}
void LCD_sendstring(unsigned char *var)
{
while(*var) //espera fim da string - till string ends
LCD_senddata(*var++); //envia os caracteres uma vez - send characters one by one
}
void LCD_senddata(unsigned char var)
{
P2 = var; //Coloca os dados 0 a7 na P2 - Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs = 1; //Seleciona o registro de dados - Selected data register
LCD_rw = 0; //Seleciona LCD para escrever - We are writing
LCD_en = 1; //habilita LCD - Enable H->L
LCD_en = 0;
LCD_busy(); //Espera o lcd processar seus dados - Wait for LCD to process the command
}
void LCD_init(void)
{
LCD_data = 0x38; //Function set: 2 Line, 8-bit, 5x8 dots
LCD_rs = 0; //Selected command register
LCD_rw = 0; //We are writing in data register
LCD_en = 1; //Enable H->L
LCD_en = 0;
LCD_busy(); //Wait for LCD to process the command
LCD_data = 0x0F; //Display ligado e cursor piscando - Display on, Curson blinking command
LCD_rs = 0; //Selected command register
LCD_rw = 0; //We are writing in data register
LCD_en = 1; //Enable H->L
LCD_en = 0;
LCD_busy(); //Wait for LCD to process the command
LCD_data = 0x01; //limpa lcd - Clear LCD
LCD_rs = 0; //Selected command register
LCD_rw = 0; //We are writing in data register
LCD_en = 1; //Enable H->L
LCD_en = 0;
LCD_busy(); //Wait for LCD to process the command
LCD_data = 0x06; //Entra no modo deslocamento dos caracterres - Entry mode, auto increment with no shift
LCD_rs = 0; //Selected command register
LCD_rw = 0; //We are writing in data register
LCD_en = 1; //Enable H->L
LCD_en = 0; //Enable H->L
LCD_busy();
}
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário