Site hosted by Angelfire.com: Build your free website today!

Menu Principal

pampita videos Introdução
el juego sims para bajar Inicialização
flash mx keygen Comandos
tutoriales dreamwaver mx Gerador de Caracteres CGRAM
tutoriales dreamwaver mx Exemplos com 8051
tutoriales dreamwaver mx LCD Desingner 1.0
tutoriales dreamwaver mx Simulador
tutoriales dreamwaver mx Download
tutoriales dreamwaver mx Sobre o autor


  

 
  


 


Os exemplos abaixo foram elaborados para o microcontrolador Atmel AT89S8252 que é 100% compatível com 8051.

A linguagem de programação que utilizo para microcontoladores é C e o ambiente de programação Keil uVision 2.30. Você pode baixar a minha biblioteca de rotinas para LCD aqui.
 

/************************************************************
Arquivo:lcdlib.c
Autor:Fred Cox Junior
Data:02/02/2003
Descrição:biblioteca de funções para display LCD
baseado no controlador HD44780 (linguagem C para 8051)

*************************************************************/
/**********************************************************/
/*Colocar aqui os includes*/
#include <AT898252.h>
#include <ctype.h>
#include <stdio.h>


/*********************************************************/
/*** Definição de pinos de controle do LCD ***/

#define LCDEN P3_6 //Pino que habilita o LCD
//LCDEN=1 Display habilitado
//LCDEN=0 Display Desabilitado
#define LCDRW P3_7 //Pino de leitura e escrita do LCD
//LCDRW=1 Leitura no LCD
//LCDRW=0 Escrita no LCD
#define LCDRS P3_2 //Pino do registrador de Instrução/Dados
//LCDRS=1 Seleciona registrador de instrução
//LCDRS=0 Seleciona registrador de Dados
#define LCDDados P2 //Barramento de dados do LCD
/*************************************************************/
/************* Declaração de Funções *************/
void LCDClear(void);
void delayms(int ms);
void autentica(void);
void init_display(void);
void LCDCursorOff(void);
void LCDCursorOn(void);
void LCDEscreve(char *texto);
void LCDXY(int X,int Y);
void Fonte5x10(void);


/*********************************************************/
//Função para autenticar comandos no LCD
void autentica(void){
LCDEN=0;
delayms(1);
LCDEN=1;
}

/*******************************************************************/

/*********************************************************/
//Função que escreve um ponteiro de caracteres no display
void LCDEscreve(char *texto){
unsigned int i; //Variável local utilizada como indice
LCDRS=1; //Seleciona registrador de dados
LCDRW=0; //Seleciona escrita no LCD
i=0; //Zera variável de índice
while(texto[i]!=0x00){
LCDDados=texto[i];
autentica(); //Escreve no display
i++;
}
}
/*********************************************************/
//desliga o cursor
void LCDCursorOff(void){
LCDRS=0;
LCDRW=0;
LCDDados=0x0C; //Liga:
//O cursor
//o Display
autentica();

}

/*********************************************************/
//liga o cursor
void LCDCursorOn(void){
LCDRS=0;
LCDRW=0;
LCDDados=0x0F; //Liga:
//O cursor
//o Display
autentica();

}


/*************************************************************/
//Função para posicionar o cursor X=linha Y=Coluna
void LCDXY(int X,int Y){
LCDRS=0;
LCDRW=0;
//Verificando a linha correspondente
if (X==1){
LCDDados=0x80; //Linha 0 coluna 0
autentica();
}
if (X==2){
LCDDados=0xC0; //Linha 0 coluna 0
autentica();
}
//Escrevendo na coluna
LCDDados=LCDDados+Y; //Soma o valor da linha com a coluna
autentica();
}

/*************************************************************/
//Função para inicializar o LCD
void init_display(void){
//Apagando o display
delayms(1);
delayms(1);
LCDRS=0; //Seleciona registrador de instrução
LCDRW=0; //Seleciona modo de escrita
LCDDados=0x01; //Carrega comando para apagar
autentica(); // Autentica comando
//Fazendo seleção de função
LCDDados=0x38; //Seleciona:
// Fonte de 5x7 dots pixels
// Barramento de 8 bis
// 2 linhas
autentica();
//Controlando display on/off
LCDDados=0x0F; //Liga:
//O cursor
//o Display
autentica();
//Controlando o modo de entrada de dados
LCDDados=0x06;
autentica();
LCDDados=0x01; //Carrega comando para apagar
autentica(); // Autentica comando
LCDDados=0x80; //Linha 0 coluna 0
autentica();
}


/*********************************************************/
//Função que atrasa o processamento em millisegundos
void delayms(int ms){
unsigned int tms=0; //Variável local de índice
TMOD=0X01; //Timer0 no modo 1
while(tms<=ms){
TH0=0xFC;
TL0=0x17;
TR0=1; //Liga o timer
while(!TF0){} //Fica esperando overflow
TR0=0;
TF0=0;
tms++;
}
}
/*************************************************************/

//Função que Apaga o display
void LCDClear(void){
delayms(1);
delayms(1);
LCDRS=0; //Seleciona registrador de instrução
LCDRW=0; //Seleciona modo de escrita
LCDDados=0x01; //Carrega comando para apagar
autentica(); // Autentica comando
LCDDados=0x80; //Linha 0 coluna 0
autentica();

}
/*************************************************************/
//Função que escreve um caracter customizado
void LCD_Esc_Custom(char cod[7],int end,int lin,int col){
int i; //Variável de índice
//Variável contendo os endereços da CGRAM
char endereco[6];
endereco[0]=64;
endereco[1]=72;
endereco[2]=80;
endereco[3]=88;
endereco[4]=96;
endereco[5]=104;
endereco[6]=112;
//Definindo um caracter customizado
LCDRS=0; //prepara o LCD para receber instruções
LCDRW=0;
LCDDados=endereco[end]; //Carrega endereco da CGRAM
autentica();
LCDRS=1; //prepara para escrever dados na CGRAM
i=0; //Zera veriável de índice
for (i=0;i<=7;i++){
LCDDados=cod[i];
autentica();
}
//Escrevendo dados na DDRAM
LCDXY(lin,col); //Linha 1 coluna 0
LCDRS=1;
LCDRW=0;
LCDDados=end;
autentica();


}


 

(c)1999-2003 Fred Cox Junior fredcoxjr@terra.com.br
Todos os direitos reservados
.

Construa caracteres customizados com o LCD Desingner 1.0. Clique aqui para baixar.
Veja a página de exemplos com microcontrolador 8051!
Não deixe de visitar o meu site sobre microcontroladores. Microcontroladores - Ferramentas e projetos.