Vous êtes sur la page 1sur 5

#include <c8051f340.

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

char Frase1[13]= {'N','U','N','O',' ','A','l','F','R','E


char Frase2[11]= {'M','I','C','R','O',' ','1','5','.','2
char Frase3[13]= {'1','.','T','E','M','P','E','R','A','T
char Frase4[11]= {'2','.','D','I','S','T','A','N','C','I
char Frase5[14]= {'3','.','L','U','M','I','N','O','S','I
char Frase6[5]= {'t','e','s','t','1'};
char Frase7[5]= {'t','e','s','t','2'};
char Frase8[5]= {'t','e','s','t','3'};

unsigned char tag=0;


unsigned char tag2=0;
unsigned char define=0;
void troca(void) __interrupt(0){
//EX0=0;
tag++;
/* if (tag==6)
tag=1; */
delay();
IE0=0;
}
void troca2(void) __interrupt(2){
// EX1=0;

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++);
}

void main (void)


{
//configuraes especficas do c8051f340
P2MDOUT = 0x0C;
// define P2_2 e P2_3 como sadas digita
is em push-pull
XBR1
= 0x40; // permite a crossbar
OSCICN
= 0x83;
// configura oscilador interno pa
ra 12MHz,
PCA0MD
&= ~0x40;
// desactiva o watch dog timer
PCA0MD
= 0x00;
IT01CF
= 0x10;
ConfiguraLCD();
Escreve_Frase(Frase1,13);
mudaLinha();
Escreve_Frase(Frase2,11);
IT0=1; // TRANSICAO POR NIVEL
//IT1=1;
IE=0b10000101;
//IP=0b00000101;
while(1)
{
define=tag2;
if(define==1)
{
define=0;
if(tag==4)
{
Escreve_Frase(Frase6,13);
}
if(tag==6)
{
Escreve_Frase(Frase7,13);
}
if(tag==8)
{
Escreve_Frase(Frase8,13);

}
}

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);
}

Vous aimerez peut-être aussi