CONVERSOR ANALOGO/DIGITAL I. CONVERSOR ANALOGO/DIGITAL La conversión implementada por los microcontroladores PIC16F cuenta con una resolución de 10 bits, lo que permite obtener un número con un rango de 0 a 1023, que es proporcional a los valores de referencia, que por defecto son 0 voltios y 5 voltios. Esto significa que si una entrada análoga, tiene una tensión de 0 voltios su resultado es 0, y si la tensión es de 5 voltios el resultado de la conversión es 1023 de igual manera si la tensión es de 2.5 voltios, el resultado será 511. El PIC16F877A tiene 8 entradas de señal análoga multiplexadas, lo que significa que el módulo de conversión interna del microcontrolador es sólo uno, y los múltiples canales se pueden leer pero no al mismo tiempo. Para realizar este tipo de conversiones el compilador MikroC Pro for PIC cuenta con la librería ADC Library. Está librería cuenta con la función denominada ADC_Read(). Esta función retorna el resultado de la conversión del canal especificado por el parámetro entre paréntesis. Diagrama de bloques: La placa dispone de 16 pines enumerados, la función de los pines se muestra en la siguiente tabla: II. LIBRERÍA LCD – LIBRARY DE MIKROC III. DIAGRAMA ESQUEMATICO (“HOLA MUNDO”) LCD1 RV1 LCD 'HOLA MUNDO' C1 10k 2 100% 22pF X1 U1 4MHZ 13 14 1 C2 22pF 2 3 4 5 6 7 8 9 10 R1 1 ET 10k OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 D0 D1 D2 D3 D4 D5 D6 D7 7 8 9 10 11 12 13 14 RS RW E 4 5 6 1 2 3 VSS VDD VEE LM016L LCD_RS at RB0_bit; LCD_EN at RB1_bit; LCD_D4 at RB4_bit; LCD_D5 at RB5_bit; LCD_D6 at RB6_bit; LCD_D7 at RB7_bit; LCD_RS_Direction at LCD_EN_Direction at LCD_D4_Direction at LCD_D5_Direction at LCD_D6_Direction at LCD_D7_Direction at TRISB0_bit; TRISB1_bit; TRISB4_bit; TRISB5_bit; TRISB6_bit; TRISB7_bit; void main() { Lcd_Init(); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,4,"HOLA MUNDO"); Lcd_Out(2,4,"PIC16F877A"); } DIAGRAMA ESQUEMATICO (RUTINA LCD_CHR Y CONVERSION) LCD1 RV1 10k C1 100% 22pF X1 4MHZ C2 22pF U1 13 14 2 3 4 5 6 7 8 9 10 R1 1 OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 D0 D1 D2 D3 D4 D5 D6 D7 7 8 9 10 11 12 13 14 RS RW E 4 5 6 VSS VDD VEE LM016L 1 2 3 V. sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit 2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: CODIGO FUENTE MIKROC (“HOLA MUNDO”) 1 IV. VI. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: CODIGO FUENTE MIKROC (RUTINA LCD_CHR Y CONVERSION) //RUTINA Lcd_Chr sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at sbit LCD_EN_Direction at sbit LCD_D4_Direction at sbit LCD_D5_Direction at sbit LCD_D6_Direction at sbit LCD_D7_Direction at TRISB0_bit; TRISB1_bit; TRISB4_bit; TRISB5_bit; TRISB6_bit; TRISB7_bit; unsigned short i, dato; char txt[4]; void main() { Lcd_Init(); //Inicializa el LCD Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor Lcd_Out(1,1,"CARACTER:"); while(1){ for(i=33; i<=255; i++){ Lcd_Chr(1,12,i); //Imprime el caracter correspondiente al nro dato=i; ByteToStr(dato, txt); //Convertir a cadena ASCII en decimal Lcd_Out(2,1,"NRO DE CHR:"); Lcd_Out(2,12,txt); //Imprime el nro correspondiente al caracter delay_ms(500); } } }