Sei sulla pagina 1di 3

/*Cabecera*****************************************************/

// Conexiones del mdulo LCD


sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Final de las conexiones del mdulo LCD
// Declarar variables
unsigned char ch;
unsigned int adc_rd;
char *text;
long tlong;
int i=20;
void main() {
INTCON = 0; // Todas las interrupciones deshabilitadas
ANSEL = 0x04; // Pin RA2 se configura como una entrada analgic
a
TRISA = 0x04;
ANSELH = 0; // Los dems pines se configuran como digitales
TRISB=0X00;
TRISD=0X00;
//PORTA=0X00;
PORTB=0X00;
PORTD=0X00;
Lcd_Init(); // Inicializacin del visualizador LCD
Lcd_Cmd(_LCD_CURSOR_OFF); // Comando LCD (apagar el cursor)
Lcd_Cmd(_LCD_CLEAR); // Comando LCD (borrar el LCD)
text = " LABORATORIO"; // Definir el primer mensaje
Lcd_Out(1,1,text); // Escribir el primer mensaje en la primera lnea
text = " ELECTRONICA A"; // Definir el segundo mensaje
Lcd_Out(2,1,text); // Definir el primer mensaje
Delay_ms(2000);
text = " SALUDOS"; // Definir el primer mensaje
Lcd_Out(1,1,text); // Escribir el primer mensaje en la primera lnea
text = "ING.EFREN HERRE"; // Definir el segundo mensaje
Lcd_Out(2,1,text); // Definir el primer mensaje
Delay_ms(2000);
text = " AYUDANTE"; // Definir el primer mensaje
Lcd_Out(1,1,text); // Escribir el primer mensaje en la primera lnea
text = " SR.VICTOR ARCE"; // Definir el segundo mensaje
Lcd_Out(2,1,text); // Definir el primer mensaje
Delay_ms(2000);
text = "BANDA TRAN-CLAS"; // Definir el segundo mensaje
Lcd_Out(1,1,text); // Definir el primer mensaje
text = " MOSTRAR"; // Definir el segundo mensaje
Lcd_Out(2,1,text); // Definir el primer mensaje
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);

text = " MOTOR BANDA";
Lcd_Out(1,1,text);
text = " VEL ANGULAR"; // Definir el tercer mensaje
Lcd_Out(2,1,text);
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);

text = " VELOCIDAD ";
Lcd_Out(1,1,text);

ADCON1 = 0x82; // Voltaje de referencia para la conversin A/D e
s VCC
TRISA = 0xFF; // Todos los pines del puerto PORTA se configur
an como entradas
Delay_ms(2000);
text = "V(RPM) :"; // Definir el tercer mensaje

while (1) {
//RB0_bit=1;//activa motor banda
RD5_bit=1;//activa led banda
RD6_bit=1;
if (RA0_bit==1) { //si sensor detecta objeto blanco
RD4_bit=1;
RD5_bit=0;
RD6_bit=0;//led palanca
while (1) {
if (RA0_bit==1) {
for (i=20;i>=1;i--) {
//RB7_bit=1;
RD7_bit=1;
delay_us(1250);// angulo 90 gra
dos //1500
RD7_bit=0;
delay_us(18500); //18500
}
}
else {
for (i=20;i>=1;i--) {
//RB7_bit=1;
RD7_bit=1;
delay_us(1750);// angulo 120 gr
ados // 1750
RD7_bit=0;
delay_us(18250); //18250
}
// RB7_bit=0;
break;
}
}
RD4_bit=0; //0
RD5_bit=1;
RD6_bit=1;//led palanca
}
while (RA1_bit==1) {
RD4_bit=0; //0
RD5_bit=0;
}
RD4_bit=0; //0
RD5_bit=1;
RD6_bit=1;
}
while (1) {
adc_rd = ADC_Read(2); // Conversin A/D. Pin RA2 es una entrada.
Lcd_Out(2,1,text); // Escribir el resultado en la segunda lnea
tlong = (long)adc_rd * 5000; // Convertir el resultado en milivoltios
tlong = tlong / 1023; // 0..1023 -> 0-5000mV
ch = tlong / 1000; // Extraer voltios (miles de milivoltios)
// del resultado
Lcd_Chr(2,9,48+ch); // Escribir resultado en formato ASCII
Lcd_Chr_CP('.');
ch = (tlong / 100) % 10; // Extraer centenas de milivoltios
Lcd_Chr_CP(48+ch); // Escribir resultado en formato ASCII
ch = (tlong / 10) % 10; // Extraer decenas de milivoltios
Lcd_Chr_CP(48+ch); // Escribir resultado en formato ASCII
ch = tlong % 10; // Extraer unidades de milivoltios
Lcd_Chr_CP(48+ch); // Escribir resultado en formato ASCII
Lcd_Chr_CP('V');
Delay_ms(1);
}
}

Potrebbero piacerti anche