inf.lab _9 adc2
Post on 21-Oct-2015
32 Views
Preview:
TRANSCRIPT
1. Objetivo.
Conocer las características y el funcionamiento del ADC del PIC18F4550 utilizando el
puerto Serial.
2. Objetivos de la Prueba.
Realizar un programa para realizar la conversión ADC del canal 0 y enviarla por el
puerto serial.
Realizar un programa para realizar la conversión ADC del canal 0 mostrarla en el
LCD.
Diseñar Hardware y software que tenga las siguientes características:
Teclado matricial 4*4
LCD de 2 filas y 16 columnas
En el LCD debe mostrarse un solo canal ADC, el canal ADC a desplegarse en el
LCD debe ser seleccionado por el teclado.
3. Diagramas de Flujo.
3.1. ADC Propuesto I.
INICIO
char txt[7];
int lectura;
void main()
TRISA = 0x01;
ADC_Init();
ADCON1=0b00001110;
UART1_Init(2400);
UART1_Write_Text("Ejercicio 1");
UART1_Write(10);UART1_Write(1
3);
while (1)
FIN
lectura = ADC_Read(0);
IntToStr(lectura, txt);
UART1_Write_Text(txt);
UART1_Write(10);UART1_Write(13
);
delay_ms(1000);
3.2. ADC Propuesto II.
INICIO
char txt[7];
int lectura;
void main()
TRISA = 0x01;
ADC_Init();
ADCON1=0b00001110;
UART1_Init(2400);
UART1_Write_Text("Ejercicio 2");
UART1_Write(10);UART1_Write(1
3);
while (1)
FIN
lectura = ADC_Read(0);
IntToStr(lectura, txt);
UART1_Write_Text(txt);
UART1_Write(10);UART1_Write(13
);
delay_ms(1000);
4. Código.
4.1. ADC Propuesto 1.
char txt[7];
int lectura;
void main() {
TRISA = 0x01;
//configuracion adcon1
//VCFG1=0 //El voltaje de referencia bajo
del ADC es tierra
//VCFG0=0 //El voltaje de referencia alto
del ADC es vcc
ADC_Init();
ADCON1=0b00001110;
UART1_Init(2400);
UART1_Write_Text("Ejercicio 1");
UART1_Write(10);UART1_Write(13);
while(1){
lectura = ADC_Read(0);
//10 bits desde 0 hasta 1023
IntToStr(lectura, txt);
UART1_Write_Text(txt);
UART1_Write(10);UART1_Write(13);
delay_ms(1000); //se realiza la lectura
cada 1seg
}
}
4.2. ADC Propuesto 2.
// LCD module connections
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;
// End LCD module connections
char txt[7];
int lectura;
void main() {
TRISA = 0x01;
ADC_Init();
//PCFG3=1; PCFG2=1; PCFG1=1;
PCFG0=0;
ADCON1=0b00001110; //ver en el
datasheet PIC18F4550 hoja:268
Lcd_Init();
Lcd_Out(1,1,"Ejercicio 2");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
while(1){
lectura = ADC_Read(0);
//10 bits desde 0 hasta 1023
IntToStr(lectura, txt);
Lcd_Out(1,1,txt);
delay_ms(500);
}
}
4.3. ADC Propuesto 3.
char keypadPort at PORTD;
// LCD module connections
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D4 at RC2_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D4_Direction at TRISC2_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections
char txt[7];
char txt2[4];
int lectura;
char kp;
char tecla=0;
char convierte(char kp); /*se declara la
subrutina convierte, sirve para convertir
la posicion por el keypad a valor de
teclado*/
void main() {
TRISA = 0xff;
TRISC = 0xff;
TRISD=0xff;
ADC_Init();
//PCFG3=0; PCFG2=0; PCFG1=0;
PCFG0=1;
ADCON1=0b000000001;
Lcd_Init();
Lcd_Out(1,1,"Ejercicio 3");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"ADC 0");
Keypad_Init();
while(1){
kp = 0;
kp = Keypad_Key_Press();
if(kp!=0){
tecla=convierte(kp);
ByteToStr(tecla, txt2);
Lcd_Out(1,1,"ADC");
Lcd_Out(1,4,txt2);
}
if(tecla>12)
{
tecla=12;
}
lectura = ADC_Read(tecla);
IntToStr(lectura, txt);
Lcd_Out(2,1,txt);
delay_ms(100);
}
}
//la tecla + correspoonde al numero 10
//la tecla - correspoonde al numero 11
//la tecla * correspoonde al numero 12
//la tecla / correspoonde al numero 13
//la tecla = correspoonde al numero 14
//la tecla AC correspoonde al numero 15
char convierte(char kp)
{ char tecla=0;
switch(kp){
case 1: tecla=7; break;
case 2: tecla=8; break;
case 3: tecla=9; break;
case 4: tecla=13; break;
case 5: tecla=4; break;
case 6: tecla=5; break;
case 7: tecla=6; break;
case 8: tecla=12; break;
case 9: tecla=1; break;
case 10: tecla=2; break;
case 11: tecla=3; break;
case 12: tecla=11; break;
case 13: tecla=15; break;
case 14: tecla=0; break;
case 15: tecla=14; break;
case 16: tecla=10; break;
}
return tecla;
}
6. CAPTURA DE PANTALLA DEL GRAVADOR.
Reconociendo el PICkit2 conectado a la computadora.
Abriendo el archivo .hex para grabarlo en el PIC18F4550.
top related