Académique Documents
Professionnel Documents
Culture Documents
h>
#include <stdio.h>
// este ficheiro <c8051f340.h> distribuido com os ficheiros do trabalho e deve
se colocado em
// C:\Program Files\SDCC\include\mcs51
// para compilar e enviar para a placa colocar em:
// Configure > Configure Compiler > C-language -SDCC> Linker > --code-loc > 0x40
0
// para simular deixar --code-loc sem qualquer valor ou 0x00
void ConfiguraLCD(void);
void Pulsa_Enable(void);
void Escreve_Frase(unsigned char *Frase,unsigned char n);
void mudaLinha(void);
void limpaLCD(void);
void delay(void);
void Led(void);
//valores
/* void ObterLuminosidade(void); */
/* void ObterTemperatura(void); */
/* void ObterDistancia(void); */
#define RS P0_6
#define En P0_7
#define LCD P1
__code unsigned
','D','R','O'};
__code unsigned
','0'};
__code unsigned
','U','R','A'};
__code unsigned
','A'};
__code unsigned
','D','A','D','E'};
__code unsigned
__code unsigned
__code unsigned
define=1;
/* if(tag2==6)
tag2=1; */
delay();
//debouncing
IE1=0; //limpa pedidos de int que possam ter ocorrido entretant
o
}
void delay(void)
{
unsigned char i;
unsigned int j;
for(i=0;i<5;i++)
for(j=0;j<50000;j++);
}
}
}
switch(tag)
{
case 1 :
limpaLCD();
Escreve_Frase(Frase3,13);
tag=2;
break;
case 3 :
limpaLCD();
Escreve_Frase(Frase4,14);
tag=4;
//EX0=1;
break;
case 5 :
limpaLCD();
Escreve_Frase(Frase5,11);
tag=6;
Led();
//EX0=1;
break;
case 7:
limpaLCD();
Escreve_Frase(Frase1,13);
mudaLinha();
Escreve_Frase(Frase2,11);
tag=0;
Led();
//EX0=1;
}
/* switch(tag2)
{
case 1:
limpaLCD();
Escreve_Frase(Frase6,5);
tag2=2;
Led();
//EX0=1;
break;
case 3:
limpaLCD();
//ObterLuminosidade();
tag2=4;
Escreve_Frase(Frase7,5);
//EX0=1;
break;
case 5:
limpaLCD();
//ObterDistancia();
tag2=0;
Escreve_Frase(Frase8,5);
Led();
//EX0=1;
break;
} */
}
}
void ConfiguraLCD(void)
{
RS=0; // seletor de registos> 0: Instruction register (comandos)
1: Data register (Letras)
LCD= 0b00111000; // modo de funcionamento
Pulsa_Enable();
LCD= 0b00001111; // Ligar
Pulsa_Enable();
LCD= 0b00000001; // Limpar
Pulsa_Enable();
LCD= 0b00000010; // Modo de entrada de dados
Pulsa_Enable();
LCD= 0b10000000; // localizao dos dados
Pulsa_Enable();
}
void limpaLCD(void)
{
RS=0; // seletor de registos> 0: Instruction register (comandos)
1: Data register (Letras)
LCD= 0b00000001; // Limpar
Pulsa_Enable();
LCD= 0b10000000; // localizao dos dados
Pulsa_Enable();
}
void Pulsa_Enable(void)
{
unsigned int i;
En=1;
for(i=0;i<10;i++);
En=0;
for(i=0;i<3000;i++); // aprox 2.7 ms
}
void mudaLinha(void)
{
RS=0;
LCD=0b11000000;
Pulsa_Enable();
}
void Escreve_Frase(unsigned char *Frase, unsigned char n)
{
unsigned char i;
RS=1;
for(i=0;i<n;i++)
{
LCD = Frase[i];
Pulsa_Enable();
}
}
void Led(void)
{
unsigned char OnOff;
//troca o estado de um led
OnOff=P2_2;
OnOff= !OnOff;
P2_2 = OnOff;
}
/* void ObterTemperatura(void)
{
/*
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
float luminosidade=0;
unsigned int valorConvertidoADC=500;
unsigned char resultado[16];
luminosidade=valorConvertidoADC*0.644;
printfv2(resultado,"%d",luminosidade);
Escreve_Frase(resultado,16); */
Escreve_Frase(Frase6,5); */
void ObterTemperatura(void)
{
float Temperatura=0;
int valorConvertidoADC=500;
char resultado[16];
Temperatura=valorConvertidoADC*0.66;
printf(resultado,"%d",Temperatura);
Escreve_Frase(resultado,16);
}
void ObterDistancia(void)
{
float Distancia=0;
int valorConvertidoADC=500;
char resultado[16];
Distancia=valorConvertidoADC*0.65;
printf(resultado,"%d",Distancia);
Escreve_Frase(resultado,16);
}