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