Practica 5 Teclado Matricial y LCD con Miconcontrolador PIC18F4550.docx

5
Practica 5 Teclado Matricial y LCD con Miconcontrolador PIC18F4550 CENTRO BACHILLERATO TECNOLÓGICO INDUSTRIAL Y DE SERVICIOS NO.189 REPORTE DE PRACTICA 4 EQUIPO N°5: MARTINEZ GARDUÑO ORLANDO CARDENAS ANGELES GABRIELA GALLEGOS PEREZ LIZETH ESPINOZA SANCHEZ MARINA LIZETH 5°Q ING.JESUS DAVILA G. PROGRAMACION DE MICROCONTROLADOR EN SISTEMAS DE USO COMERCIAL H., MATAMOROS, TAM. MATERIAL HERRAMIENTAS -1 !"#$ %"&&'(# -P)'&'%'*)+ -1 + #! * +/ 0) #&* " +' -C*% / USB -1 PIC123455 -C' !"&*+')* -6 0*!*0 &')/# +/ 66!7 -1 0) #&* +/ 0"*)8' +/ 2MHZ -4 )/# #&/(0 *# +/ 1 9 -1 )/# #&/(0 * +/ 4.;9 OBJETIVO A) *) "(* !)*0& 0* "& 8*(+' * %)/)<* 9/ !*+ * 0"* '!')&* "( &/0 *+' +/ 4 7 *# 4 0' " (*#. E 0=+ >' )/>)/#*+' !') * 7"(0 =( /#&* 1 +/!/(+ /(+' +/ * &/0 *. E( /#&/ /?/ ! ', / 0=+ >' )/>)/#*+' / * 0=+ >' ASCII .. ,A..3 +/#! />*+' /( / LCD. A+/ *# "( 0'(& /( * #/>"(+* <(/* +/ LCD, / (" /)' +/ &/0 *# !)/# '(*+*#. E#& !)'>)* * !)/@ * /(&/ #"% +' * 0)'0'(&)' *+'). DESARROLLO DIAGRAMA A REALIZAR:

Transcript of Practica 5 Teclado Matricial y LCD con Miconcontrolador PIC18F4550.docx

Practica 5 Teclado Matricial y LCD con Miconcontrolador PIC18F4550 CENTRO BACHILLERATOTECNOLGICOINDUSTRIAL Y DE SERVICIOS NO.189REPORTE DE PRACTICA 4EQUIPO N5:MARTINEZ GARDUO ORLANDOCARDENAS ANGELES GABRIELAGALLEGOS PEREZ LIZETHESPINOZA SANCHEZ MARINA LIZETH5QING.JESUS DAVILA G.PROGRAMACION DE MICROCONTROLADOR EN SISTEMAS DE USO COMERCIALH., MATAMOROS, TAM.

MATERIAL HERRAMIENTAS-16 push buttons -Protoboard-1 display de cristal liquido -Cable USB-1 PIC18F4550 -Computadora-2 capacitores de 22pf-1 cristal de cuarzo de 8MHZ-4 resistencias de 10k-1 resistencia de 4.7k

OBJETIVO Armar una practica utilizando lalibrerakeypad la cual soporta un teclado de 4 filas y 4 columnas. El cdigo regresado por lafuncinesta en el rango de 1 a 16 dependiendo de la tecla. En este ejemplo, el cdigo regresado es convertido acdigoASCII [0..9,A..F] y desplegado en el LCD. Ademas un contador despliega en la segunda lnea del LCD, el numero de teclas presionadas. Esto mediante un programa previamente subido al microcontrolador.

DESARROLLO DIAGRAMA A REALIZAR:

Como podemos ver en el diagrama de la practica, primero conectamos la terminales 11 y 32 del micro-chip a corriente y la 12 y 32 a tierra. En las terminales 13 y 14 conectamos el cristal de cuarzo el cual funciona como oscilador en estas terminalestambinconectamos los capacitores de 22 pf. En el pin 1 conectamos una resistencia de 4.7k las terminales 33 a la 38hacia el display de cristal liquido(LCD) y los pines 18,19,20,21,27,28,29 y 30 hacia el teclado. Los pines 1,5,7,8,9,10 del display los conectamos a tierra y la terminal 2 a corriente o positivo. Conectamos las cuatro resistencias de 10k del teclado hacia tierra. Una vez armada la practica subimos el siguiente programa al PIC18F4550 para que este funcionara.

PROGRAMAunsigned shortkp, cnt, oldstate = 0;chartxt[6];

// Puerto donde esta conectado el TecladocharkeypadPortatPORTD;//

// conexiones del LCDsbitLCD_RSatRB4_bit;sbitLCD_ENatRB5_bit;sbitLCD_D4atRB0_bit;sbitLCD_D5atRB1_bit;sbitLCD_D6atRB2_bit;sbitLCD_D7atRB3_bit;

sbitLCD_RS_DirectionatTRISB4_bit;sbitLCD_EN_DirectionatTRISB5_bit;sbitLCD_D4_DirectionatTRISB0_bit;sbitLCD_D5_DirectionatTRISB1_bit;sbitLCD_D6_DirectionatTRISB2_bit;sbitLCD_D7_DirectionatTRISB3_bit;//

voidmain() {cnt = 0;// Reset counterKeypad_Init();// Initialize KeypadANSEL= 0;// Configure AN pins as digital I/OANSELH = 0;Lcd_Init();// Initialize LCDLcd_Cmd(_LCD_CLEAR); // Clear displayLcd_Cmd(_LCD_CURSOR_OFF);// Cursor offLcd_Out(1, 1, "1");Lcd_Out(1, 1, "Key:");// Write message text on LCDLcd_Out(2, 1, "Times:");

do{kp = 0;// Reset key code variable

// Wait for key to be pressed and releaseddo// kp = Keypad_Key_Press();// kp variablekp = Keypad_Key_Click();// kp variable

while(!kp);

// Prepare value for output, transform key to it's ASCII valueswitch(kp) {//case 10: kp = 42; break;// '*'// descomentar para teclado 4x3//case 11: kp = 48; break;// '0'//case 12: kp = 35; break;// '#'//default: kp += 48;

case1: kp = 49;break;// 1// descomentar teclado 4x4case2: kp = 50;break;// 2case3: kp = 51;break;// 3case4: kp = 65;break;// Acase5: kp = 52;break;// 4case6: kp = 53;break;// 5case7: kp = 54;break;// 6case8: kp = 66;break;// Bcase9: kp = 55;break;// 7case10: kp = 56;break;// 8case11: kp = 57;break;// 9case12: kp = 67;break;// Ccase13: kp = 42;break;// *case14: kp = 48;break;// 0case15: kp = 35;break;// #case16: kp = 68;break;// D

}

if(kp != oldstate) {// Pressed key differs from previouscnt = 1;oldstate = kp;}else{// Pressed key is same as previouscnt++;}

Lcd_Chr(1, 10, kp);// Print key ASCII value on LCD

if(cnt == 255) {// If counter varialble overflowcnt = 0;Lcd_Out(2, 10, "");}

WordToStr(cnt, txt);// Transform counter value to stringLcd_Out(2, 10, txt);// Display counter value on LCD}while(1);} IMAGENES DE LA PRACTICA

CONCLUSIN Esta practica fue un poco complicada tuvimos varias complicaciones por la manera en que la armamos. Pero al final logramos que funcionara de manera correcta. Al presionar una tecla estaaparecaen el display.