Transcript of Microcontroladores libro
- 1. BASIC PARABASIC PARABASIC PARABASIC PARA MICROCONTROLADORES
PICMICROCONTROLADORES PICMICROCONTROLADORES PICMICROCONTROLADORES
PIC Christian Bodington Esteva Ingeniero en Electrnica
- 2. i CONTENIDO Prlogo. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .1 Captulo I. Herramientas de Diseo. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .3 Captulo II. MicroCode
Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .8 Capitulo III. Microcontroladores PIC. 3.1.- Que es
un PIC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .21 3.2.- El Oscilador Externo. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
3.3.- El Circuito de Reset. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 30 3.4.- Consideraciones
tcnicas de diseo. . . . . . . . . . . . . . . . . . . . . . . . . .
. 31 3.4.1.- Estado Lgico de un pin I/O. . . . . . . . . . . . . .
. . . . . . . . . . . . 31 3.4.2. Lectura de un estado lgico en un
pin I/O. . . . . . . . . . . . . . . 33 3.4.3. El Opto-acoplador. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.4. Fuente de poder, 5Vdc / 3.3Vdc. . . . . . . . . . . . . . .
. . . . . . . . 37 Captulo IV. Estructura de un programa.
Componentes y operadores en PicBasic. 4.1.- Estructura de un
programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 38 4.2.- Subrutinas. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.-
Componentes y operadores en PicBasic. . . . . . . . . . . . . . . .
. . . . . . . .41
- 3. ii 4.3.1.- Define. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 41 4.3.2.- Variables. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .42 4.3.3.- Arrays. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 43 4.3.4.- Constantes. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44 4.3.5.- Smbolos o Alias. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 44 4.3.6.- Operadores Aritmticos. . . . .
. . . . . . . . . . . . . . . . . . . . . . . .45 4.3.7.-
Operadores Binarios . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .45 4.3.8.- Operadores de Comparacin. . . . . . . . . .
. . . . . . . . . . . . . . 46 4.3.9.- Operadores Lgicos. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 46 Capitulo V.
Primeros Programas con el PIC16F84. 5.1.- Proyecto #1.
Implementacin de las instrucciones de programa High, Low Goto y
Pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .47 5.2.- Proyecto #2 . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 57 5.3.- Proyecto #3. Implementacin de la instruccin
If-Them-Else. . . . . . . .60 5.4.- Proyecto #4 . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 62 5.5.- Proyecto #5. Implementacin de la instruccin For-Next. .
. . . . . . . . . 65 5.6.- Proyecto #6. Implementacin de la
instruccin Frecout. . . . . . . . . . . . 68 5.7.- Proyecto #7.
Implementacin de la instruccin Button . . . . . . . . . . . . .76
5.7.1.- Proyecto #7.1 . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 80 5.7.2.- Proyecto #7.2 . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.7.3.-
Proyecto #7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 87
- 4. iii 5.8.- Proyecto #8. Implementacin de la instruccin Branch
. . . . . . . . . . . . 91 5.9.- Proyecto #9. Implementacin de la
instruccin PWM . . . . . . . . . . . . . 94 Capitulo VI. Mdulos
LCD. 6.1.- Pantallas LCD . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 97 6.2.- Identificacin
de los pines de una pantalla LCD . . . . . . . . . . . . . . . . .
98 6.3.- Conexin de una pantalla LCD en Pic Basic. . . . . . . . .
. . . . . . . . . . . 99 6.4.- Proyecto #10. Implementacin de la
instruccin Lcdout . . . . . . . . . . 103 6.5.- Proyecto #11 . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 105 6.6.- Proyecto #12. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .109 6.7.-
Proyecto #13. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .111 6.8.- Proyecto #14. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .114 6.9.- Proyecto #15. Implementacin de la instruccin Count.
. . . . . . . . . . 115 6.10.- Proyecto #16. Implementacin de la
instruccin Pulsin. . . . . . . . . . 122 6.11.- Proyecto #17.
Implementacin de la instruccin Pot. . . . . . . . . . . . 124
6.12.- Memoria CGRAM en la Pantalla LCD. . . . . . . . . . . . . .
. . . . . . . . . .127 6.13.- Proyecto #18. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
6.14.- Proyecto #19. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .137 Capitulo VII. Teclado
Matricial. 7.1.- Teclado Matricial. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .149 7.2.- Proyecto
#20. Aplicacin de un teclado 3x4. . . . . . . . . . . . . . . . . .
. .154
- 5. iv Capitulo VIII. Memoria de Datos. 8.1.- Memoria de Datos.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .157 8.2.- Proyecto #21. Implementacin de la instruccin
Read. . . . . . . . . . . .161 8.3.- Proyecto #22. Implementacin de
la instruccin Write. . . . . . . . . . . .163 8.4.- Proyecto #23. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .165 8.5.- Proyecto #24. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Capitulo IX. Interrupciones. 9.1.- Qu son las Interrupciones?. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .175 9.2.-
Fuentes de Interrupciones. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .175 9.3.- Registro INTCON. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
9.4.- Activacin de interrupcin a travs del pin RB0/INT. . . . . . .
. . . . . . . 177 9.5.- Proyecto #25. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 9.6.-
Interrupcin TMR0. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .180 9.7.- Registro OPTION. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.181 9.8.- Proyecto #26. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 183 9.9.- Interrupcin
por cambio de estado de uno de los pines ms significativos del
puerto B (RB4-RB7). . . . . . . . . . . . . . . . . . . . . . . . .
. . . .186 9.10.- Proyecto #27. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .187 Capitulo X.
Memoria Serial I2C. 10.1.- Qu es el bus I2C?. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .190 10.2.-
Proyecto #28. Implementacin de las instrucciones I2Cwrite, I2Cread
. . 192
- 6. v 10.3.- Proyecto #29. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .196 10.4.- Proyecto
#30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .198 Capitulo XI. Conversor A/D en el
PIC16F877. 11.1.- Conversor A/D. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .202 11.2.- El
registro ADCON0. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .209 11.3.- El registro ADCON1. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
11.4.- Proyecto #31. Implementacin de la instruccin ADCin. . . . .
. . . . . 214 Capitulo XII. Comunicacin Serial. Transmisin y
Recepcin de Datos. 12.1.- Comunicacin Serial. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 219 12.2.-
Instruccin SerIn. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 219 12.3.- Proyecto #32. Implementacin
de la instruccin SerIn. . . . . . . . . . . 221 12.4.- Instruccin
SerOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .233 12.5.- Proyecto #33. Implementacin de la
instruccin SerOut. . . . . . . . . .233 12.6.- Proyecto #34 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .240 Capitulo XIII. Servomotor. 13.1.- Qu es un
Servomotor?. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .268 13.2.- Proyecto #35. Implementacin de la instruccin
PauseUs. . . . . . . . .272 13.3.- Proyecto #36. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.276 13.4.- Proyecto #37. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .280 13.5.- Proyecto #38.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .283
- 7. vi Capitulo XIV. Mdulos RF para comunicaciones. 14.1.-
Mdulos RF. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .293 14.2.- Proyecto #39. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .296 14.3.- Proyecto #40. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .300 14.4.- Proyecto
#41. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .305 Capitulo XV. Instrucciones de programa
de PicBasic. @. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
ADCin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 311 Asm EndAsm. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .311 Branch. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.312 Button. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 313 Call. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 315 Clear . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .315 ClearWDT . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.316 Count . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 316 Data . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 317 DTMFout. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 317 EEPROM. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
End. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 321 FreqOut. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .321 For Next. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .323 Gosub. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
- 8. vii Goto. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
High. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .324 I2Cread. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 325 I2Cwrite . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .326 IF-Then-Else. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .328 LCDin. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .329 LCDout. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .330 Low. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.331 NAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 331 Output. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 332 Pause. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .333 PauseUs. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.333 Pot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 334 PulsIn .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 335 PulsOut . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 336 PWM . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 336 Random . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .337 Read . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 338 Return . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 339 Reverse . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.340 Select Case . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .340 SerIn. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .342
- 9. viii SerOut . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .344 Swap . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .344 Toggle . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .345 While-Wend . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Write .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .347 Apndice A . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .348 Apndice B . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .358 Apndice C . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.360 Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
- 10. Prlogo Emprender el estudio de microcontroladores para el
desarrollo de proyectos electrnicos que sean la base para nuevas
ideas es el objetivo primordial de esta primera edicin, en la cual
nos hemos concentrado en dar al lector algunas herramientas
fundamentales con las cuales esperamos abrir un campo de
conocimiento en la electrnica de control, a travs de un sin numero
de posibilidades de diseo a partir de una serie de ejemplos
prcticos desarrollados en lenguaje Basic para Microcontroladores
PIC. De toda la gama de posibilidades entre las familias de
microcontroladores PIC que ofrece Microchip Inc., hemos elegido
para empezar el microcontrolador ms popular de toda la serie, el
PIC16F84, que ser utilizado en este libro para estudiar algunas de
sus caractersticas a travs del desarrollo de actividades que en
principio no requieren un nivel de conocimiento elevado y a travs
del cual daremos los pasos necesarios para adentrarnos en las gamas
mas altas, de las que se ha seleccionado el microcontrolador
PIC16F877 para la realizacin de proyectos electrnicos de nivel
medio y avanzado, y en los que podremos manejar dispositivos
perifricos que le dan un gran valor agregado a cada uno de nuestros
proyectos y abren posibilidades de desarrollo muy interesantes al
lector. Adems, hemos considerado proporcionar la informacin
adecuada referente a las herramientas de desarrollo ms importantes
en la actualidad, para programacin en lenguaje Basic para
microcontroladores PIC. En esta ocasin iniciamos con el estudio del
compilador PicBasic Pro, de la empresa microEngineering Labs, Inc.,
la cual ofrece una de las herramientas mas populares en el rea,
debido a que cuenta con una gran variedad de instrucciones que
hacen de la programacin de microcontroladores una tarea fcil y muy
productiva a la hora de desarrollar proyectos que involucren
perifricos como pantallas LCD, teclados matriciales, sensores de
temperatura, presin, gas, humedad, memorias de datos entre otros, y
donde una de las caractersticas ms relevantes es el considerable
ahorro de tiempo, lo que se traduce en efectividad y menos lneas de
programa, de tal
- 11. 2 manera que el diseador puede prestar mayor atencin a los
detalles, logrando as perfeccionar su desempeo en cualquiera de las
funciones que desee programar. Otra de las herramientas que hemos
decidido incorporar a la obra, es el programador de
microcontroladores PIC P16Pro/PicAll, de la pgina oficial de
PicallW, de Boban Dobaj, Diseador. Este programador soporta una
gran cantidad de modelos de las series 12, 16 y 18 de Microchip. Su
construccin es sumamente sencilla y de muy bajo costo, adems de una
serie de ventajas entre las cuales podemos mencionar la alta
velocidad de transferencia de datos hacia el dispositivo al momento
de ser grabado. Cada captulo contiene teora sobre la cual se
pretende estudiar el funcionamiento de los microcontroladores y
perifricos conectados a l. Para ello hemos desarrollado una serie
de prcticas en las que el lector deber hacer montajes de circuitos
en base a los diagramas esquemticos siguiendo las instrucciones y
leyendo detenidamente los comentarios de cada lnea de programa.
Esperamos con esto proporcionar al lector una base slida de
conocimientos para el desarrollo de proyectos electrnicos,
proyectos de robtica y todo aquello que represente una innovacin
cientfica en este campo. Finalmente, el agradecimiento para todos
nuestros colaboradores en la edicin de esta publicacin, quienes se
han encargado de revisar cada detalle, proyectos e ideas plasmadas
en cada capitulo. Ingeniero en Informacin, Maria del Carmen Lara T.
Ingeniero en Electrnica, Jess Frank Phorlakis. Tcnico Superior en
Electricidad, Ral Mastropasqua.
- 12. 3 Herramientas de Diseo Capitulo I En la elaboracin de
proyectos electrnicos con microcontroladores PIC, resulta muy
importante considerar una serie de herramientas, las cuales vamos a
describir a continuacin: Software: para la programacin en Lenguaje
Basic, contamos con una gran variedad de posibilidades en el
mercado, y entre las cuales hemos elegido para esta primera edicin,
el Ambiente Integrado de Desarrollo Microcode Studio (IDE) de
microEngineering Labs, Inc., adems del compilador Basic, PICBasic
Compiler, o PICBasic Pro Compiler. Con estas dos herramientas
estaremos realizando la programacin en cada uno de los proyectos
propuestos a partir del captulo V. Figura 1.1. (Fuente:
http://www.microengineeringlabs.com)
- 13. 4 Programador de Microcontroladores PIC: es una herramienta
indispensable con la cual podemos grabar el cdigo generado por el
compilador PicBasic para poner en funcionamiento cada uno de los
proyectos propuestos en cada captulo. Existen en internet una gran
cantidad de modelos de programadores para microcontroladores PIC,
de muy bajo costo y fcil construccin. Consideramos una buena
experiencia realizar el montaje de cualquiera de estos diseos,
aunque en esta oportunidad nuestra recomendacin es el programador
P16Pro/Picallw. Los detalles para la construccin de este
programador estn contenidos en el apndice A. Figura 1.2.
- 14. 5 Placa de prototipos: proporciona al diseador conexiones
sin soldaduras, con lo cual se hace ms prctico el desarrollo de los
proyectos electrnicos propuestos a lo largo de cada captulo. Figura
1.3. Multmetro digital: este instrumento de medicin ser muy til
durante la elaboracin de los circuitos propuetos en cada captulo.
Figura 1.4.
- 15. 6 Fuente de poder regulada con salida de voltaje variable.
En el captulo III se propone la construccin de una fuente de poder
regulada a 5 Vdc y 3.3 Vdc. Figura 1.5. Herramientas de corte,
extractor de circuitos integrados, cable rgido para conexiones en
la placa de prototipos. Figura 1.6.
- 16. 7 Osciloscopio: este instrumento se requiere para el
desarrollo de algunas prcticas en las cuales se hace necesario
medir las seales generadas desde el microcontrolador. Figura 1.7.
Componentes electrnicos: microcontroladores PIC en los modelos
definidos en cada ejemplo prctico, resistencias, diodos,
servomotores, condensadores, cristales y otros componentes de fcil
adquisicin. Cada proyecto cuenta con una tabla en la cual se
decriben los componentes electrnicos que debern ser utilizados en
el cada montaje. Figura 1.7.
- 17. 8 Microcode Studio Capitulo II Microcode Studio (IDE), es
un Ambiente Integrado de Desarrollo de MECANIQUE, diseado
especialmente para microEngineering Labs, Inc., de libre adquisicin
a travs de la pgina Web http://www.microengineeringlabs.com Figura
2.1. (Fuente: http://www.microengineeringlabs.com) Descargar este
programa es muy sencillo y esto lo podemos hacer ingresando a la
siguiente direccin:
http://www.microengineeringlabs.com/resources/win_ide.htm En esta
pgina se puede encontrar una seccin destinada para la descarga del
archivo instalador, como se observa en la figura 2.2:
- 18. 9 Figura 2.2. (Fuente: http://www.microengineeringlabs.com)
Adems de esta herramienta, es necesario adquirir el compilador
PicBasic, (Figura 2.3). Se puede acceder directamente a la pgina de
productos de microEngineering Labs a travs de la direccin:
http://www.melabs.com/products/index.htm Figura 2.3. (Fuente:
http://www.microengineeringlabs.com) Es posible descargar una
versin DEMO del compilador PIC Basic, con la cual se pueden
compilar programas con un mximo de 31 lneas de cdigo, a travs de la
direccin: http://www.melabs.com/pbpdemo.htm
- 19. 10 Figura 2.4. (Fuente: http://www.melabs.com) Para empezar
la descarga del archivo de instalacin del compilador, solo hay que
hacer clic en el link sealado en la figura 2.4, e indicar la ruta
en la cual se desea que el archivo de instalacin sea almacenado.
Nota Importante: Es necesario adquirir una de las versiones
completas del compilador Basic, para no tener lmites en la cantidad
de lneas del programa a compilar. En la figura 2.5 se puede
observar el archivo descargado para la versin disponible del
software Microcode Studio, y en la figura 2.6 se puede observar el
archivo del compilador PicBasic Pro en su versin de prueba. Figura
2.5. Figura 2.6. Haga clic en el Link aqu sealado, para descargar
la versin Demo de PicBasic. Pro
- 20. 11 El proceso de instalacin es muy sencillo. El primer paso
ser ejecutar el archivo mcsinstall.exe, el cual es el responsable
de iniciar el proceso de instalacin de Microcode Studio: Figura
2.7. Seguidamente Microcode Studio le da la bienvenida en la
ventana que se muestra a continuacin: Figura 2.8.
- 21. 12 Haga clic en el botn Next y podr ver en la siguiente
ventana el acuerdo de licencia para Microcode Studio: Figura 2.9.
La ruta por defecto para la instalacin de Microcode Studio es
C:Archivos de programaMecaniqueMCS. Esta ruta puede ser cambiada
haciendo clic en el botn Browse, a travs del cual se podr ubicar la
nueva carpeta en la cual deber ser instalado el software: Figura
2.10. Nombre de la carpeta en la cual se encontrar el archivo
ejecutable de Microcode Studio.
- 22. 13 Pulse Next para iniciar la copia de archivos (figura
2.11), y finalmente espere que se complete la instalacin (figura
2.12). Figura 2.11. Figura 2.12.
- 23. 14 Una vez instalado Microcode Studio, es importante tomar
en cuenta que antes de iniciar este software, es necesario instalar
el compilador Basic, el cual es indispensable para la generacin del
cdigo que ser cargado en el microcontrolador PIC. Instalacin del
compilador PicBasic Pro: Para dar inicio a la instalacin del
compilador Pic Basic, ser necesario ejecutar el archivo denominado
pbpdemo.exe para el caso de la versin de demostracin. La figura
2.13 muestra la ventana de inicio del proceso de instalacin, en la
cual se da la bienvenida al usuario y le invita a cerrar cualquier
otra aplicacin que se encuentre en uso en ese momento. Figura 2.13.
En la siguiente ventana se debe especificar la unidad de disco duro
en la cual se instalar el compilador y el nombre de la carpeta que
va a contener los archivos a ser instalados. El software de
instalacin del compilador establece por defecto la ruta indicada en
la figura 2.14.
- 24. 15 Figura 2.14. Seguidamente se debe especificar el nombre
de la carpeta que va a contener los accesos directos a los archivos
que ofrecen informacin adicional acerca del compilador PicBasic.
Este paso puede ser omitido seleccionando la opcin Dont create a
Start Menu Folder: Figura 2.15.
- 25. 16 Una vez seleccionadas las rutas de instalacin del
compilador, se debe hacer clic en el botn Install (figura 2.16),
para dar inicio a la copia de archivos. Figura 2.16. Figura
2.17.
- 26. 17 Figura 2.18. Finalmente se puede ver en la ventana de la
figura 2.18, un mensaje en el cual se confirma que el compilador
PICBasic Pro ha sido instalado satisfactoriamente. Deshabilite la
opcin Install Microcode Studio IDE y seguidamente haga clic en el
botn Finish. Nota: Puede descargar la documentacin completa del
compilador PicBasic a travs de la direccin:
http://www.melabs.com/support/index.htm
- 27. 18 Integracin de Microcode Studio y Pic Basic Pro: Es
importante integrar Microcode Studio con el compilador PicBasic
Pro, indicando la ruta en la cual se encuentra instalado. Para esto
debemos iniciar el software y seguir las siguientes instrucciones:
1. Desde el men de Inicio de Windows ejecute Microcode Studio.
Figura 2.19. 2. Haga clic en el men View y seleccione la opcin
Compile and Program Options. Figura 2.20.
- 28. 19 3. En la pestaa Compiler haga clic en el botn Find
Automatically para una ubicacin automtica del compilador, o si lo
prefiere haga clic en Find Manually para ubicar el compilador
manualmente. Figura 2.21. 4. En la pestaa Programmer se pide la
ubicacin del software del programador que estaremos utilizando para
grabar los microcontroladores. Figura 2.22.
- 29. 20 Se debe ubicar en la lista el programador PICALL
Programmer, haciendo clic en el botn denominado Add New Programmer
(Figura 2.22), y seguidamente se debe seleccionar de la lista de
opciones, como se puede observar en la figura 2.23: Figura 2.23.
Por ltimo, al hacer clic en el botn Next, el software realizar la
bsqueda automtica de la carpeta que contiene el archivo ejecutable
del programador Picall, el cual ha debido ser instalado segn el
procedimiento descrito en el Apndice A.
- 30. 21 Microcontroladores PIC Capitulo III 3.1. Que es un PIC?
Los PIC son una familia de microcontroladores desarrollados y
fabricados por la empresa Microchip Technologies Inc., los cuales
cuentan con una tecnologa tipo RISC (Reduced Instruction Set
Computer) y poseen en su arquitectura interna caractersticas
especiales que varan segn el modelo de PIC que deseamos utilizar.
Podramos decir que estos dispositivos se asemejan a una computadora
pero de tamao muy reducido, ya que cuentan con casi los mismos
recursos que stas, es decir, poseen memoria de programa, memoria
RAM, memoria de datos, puertos de entrada o salida, temporizadores
y en algunos casos cuentan con recursos adicionales como
convertidores A/D, comparadores, USART (Universal
Synchronous/Asynchronous Receiver/Transmitter), comunicacin serie
I2C, entre otros. Con todas estas caractersticas es lgico pensar
que este dispositivo pasa a ser el corazn del circuito a ser
controlado. Esto significa que el microcontrolador es el encargado
de dirigir todos los procesos de un circuito electrnico, en base a
las instrucciones de programa o rutinas que definen funciones
especficas de control, donde las mismas sern realizadas en lenguaje
Basic para microcontroladores PIC. Es por esta razn que
consideramos muy importante estudiar la arquitectura interna del
microcontrolador que se desea programar y aunque esta tarea pueda
parecer difcil, el Lenguaje Basic para microcontroladores PIC la
hace sumamente sencilla. El diseo de programas para
microcontroladores PIC va acompaado normalmente con un previo
estudio del diseo del hardware que har que nuestros proyectos se
pongan en marcha. Es decir, resulta absolutamente necesario saber
cual ser la funcin especfica de cada pin; por ejemplo, en el caso
de los puertos I/O (IN/OUT) a ser utilizados en el
microcontrolador, es importante definir sus funciones antes de
empezar a programar, ya que stos pueden ser configurados a
conveniencia como entrada o como salida de datos de forma
independiente. Tambin podemos destinar un puerto completo
- 31. 22 del microcontrolador para el control de dispositivos
perifricos como pantallas LCD, teclados, motores paso a paso, leds,
servomotores entre otros. De ah la importancia de establecer cual
ser la funcin de cada puerto del microcontrolador PIC elegido para
nuestros proyectos. Otra decisin importante ser elegir
convenientemente el modelo de microcontrolador a ser utilizado, ya
que hay una gran gama de modelos que pueden ser adaptados a
necesidades especficas de diseo. Figura 3.1. Los microcontroladores
PIC comnmente ms utilizados son los siguientes: PIC12C508 y
PIC12C509, tienen memoria de programa EPROM, oscilador interno, y
son muy utilizados en diseos de pequeos circuitos. PIC16F84A, tiene
memoria de programa tipo FLASH, oscilador externo, 13 pines I/O
entre otras caractersticas que estaremos estudiando a lo largo del
contenido de esta obra. Este PIC ha resultado ser uno de los ms
populares de toda la serie. PIC16F87X, incluyen un gran nmero de
mejoras en comparacin con el PIC16F84, debido principalmente a que
cuentan con un numero de pines I/O superior a ste, adems de otras
caractersticas relevantes. Por ejemplo, con esta serie de
microcontroladores contamos con una mayor capacidad en cuanto a
memoria de programa y memoria de datos.
- 32. 23 PIC18F4XX, estos microcontroladores resultan muy tiles
cuando deseamos disear proyectos ms avanzados. Cada uno de estos
microcontroladores cuenta con una completa hoja de datos que puede
ser descargada de la pgina oficial de Microchip:
http://www.microchip.com Estas caractersticas influyen directamente
al momento de decidir que modelo de microcontrolador PIC deseamos
utilizar en nuestros proyectos, segn sea el objetivo de diseo del
circuito que deseamos realizar. El microcontrolador PIC16F84 es uno
de los microcontroladores ms populares y en algunos casos, el
preferido por estudiantes para dar inicio al estudio de la
programacin de microcontroladores, seguido del PIC16F877 el cual
posee ms recursos importantes que estaremos estudiando a
continuacin. Antes de empezar a revisar todo lo referente a la
programacin de microcontroladores PIC, consideramos importante
recordar algunas de las caractersticas de stos dispositivos, para
tener una base de conocimientos bsicos para poder realizar un
programa de control de un diseo completamente personalizado. Para
empezar, veamos algunas caractersticas del microcontrolador
PIC16F84: Microcontrolador de 8 Bits. Memoria de programa tipo
Flash de 1024 palabras de 14 bits. Memoria RAM de 68 bytes. Memoria
EEPROM de datos de 64 bytes. Velocidad de operacin de hasta 20 Mhz.
Cuatro fuentes de interrupcin. Posee 13 pines I/O (pines de entrada
o salida).
- 33. 24 Diagrama de pines del PIC16F84: Figura 3.2. PIN
Identificacin Descripcin del Pin 1 RA2 Pin de Entrada/Salida (I/O)
del puerto A 2 RA3 Pin de Entrada/Salida (I/O) del puerto A 3
RA4/TOCKI Pin de Entrada/Salida (I/O) del puerto A 4 MCLR Reset y
entrada de voltaje de programacin. 5 Vss Pin de Alimentacin a
Tierra (GND) 6 RB0/INT Pin de Entrada/Salida (I/O) del puerto B 7
RB1 Pin de Entrada/Salida (I/O) del puerto B 8 RB2 Pin de
Entrada/Salida (I/O) del puerto B 9 RB3 Pin de Entrada/Salida (I/O)
del puerto B 10 RB4 Pin de Entrada/Salida (I/O) del puerto B 11 RB5
Pin de Entrada/Salida (I/O) del puerto B 12 RB6 Pin de
Entrada/Salida (I/O) del puerto B 13 RB7 Pin de Entrada/Salida
(I/O) del puerto B 14 Vdd Pin de Alimentacin de 5Vdc 15 OCS2/CLKOUT
Salida del oscilador a cristal. 16 OSC1/CLKIN Entrada del oscilador
a cristal o fuente externa de reloj. 17 RA0 Pin de Entrada/Salida
(I/O) del puerto A 18 RA1 Pin de Entrada/Salida (I/O) del puerto A
Tabla 3.1
- 34. 25 El microcontrolador PIC16F84 cuenta con dos puertos I/O,
el puerto A, el cual consta de cinco pines I/O y el puerto B, el
cual consta de ocho pines I/O como se puede observar en la figura
3.3: Figura 3.3. En total se cuenta con trece pines I/O, los cuales
pueden ser programados como entrada o salida segn convenga al
momento de disear un circuito de control. Los pines
correspondientes al oscilador (OSC1 y OSC2) y al reset (MCLR) deben
ser siempre tomados en cuenta en el diseo de nuestros proyectos. Es
por este motivo que damos inicio al estudio de algunos circuitos
indispensables para el correcto funcionamiento del microcontrolador
PIC. 3.2. El Oscilador Externo. Es un circuito indispensable para
el funcionamiento del microcontrolador y el cual adems, define la
velocidad a la cual va a trabajar. Para hacer funcionar nuestro
diseo podemos elegir entre las siguientes cuatro opciones:
Oscilador LP: Oscilador de bajo consumo (Low Power). Oscilador XT:
Cristal / Resonador.
- 35. 26 Oscilador HS: Oscilador de alta velocidad (High Speed).
Oscilador RC: Resistencia / Condensador. En los modos de oscilador
LP, XT y HS el cristal debe ser conectado a los pines 15 y 16,
Osc2/CLKout y Osc1/CLKin respectivamente, como se muestra en la
figura 3.4. Figura 3.4. Los valores de los condensadores cermicos
vienen dados segn la tabla que se muestra a continuacin: Modo
Frecuencia Osc1/CLKin Osc2/CLKout LP 32 kHz 200 kHz 68 - 100 pF 15
- 33 pF 68 - 100 pF 15 - 33 pF XT 2 MHz 4 MHz 15 - 33 pF 15 - 33 pF
15 - 33 pF 15 - 33 pF HS 4 MHz 10 MHz 15 - 33 pF 15 - 33 pF 15 - 33
pF 15 - 33 pF Tabla 3.2
- 36. 27 Por ejemplo, para un oscilador tipo XT, podemos utilizar
un cristal de cuarzo como el de la figura 3.5. Figura 3.5. Al
conectar el microcontrolador a la fuente de alimentacin de 5 Vdc y
medir la seal de salida del oscilador XT con un osciloscopio, en el
pin 15 (Osc2/CLKout) del microcontrolador, podremos ver la onda
generada bajo los siguientes parmetros de medicin seleccionados en
el equipo: Voltios/Div: 200mV Time/Div: 100ns Figura 3.6.
- 37. 28 La lectura de la frecuencia y perodo en este caso sera
la siguiente: Frecuencia: 3,972 Mhz Perodo: 251,71 ns Cristal de
cuarzo TTL: Este tipo de cristal consta de cuatro pines, de los
cuales solo tres estn implementados de la siguiente manera: Figura
3.7. Pin 1: NC (Este pin no se encuentra conectado internamente)
Pin 7: GND Pin 8: Salida TTL Pin 14: +5Vdc En su salida se obtiene
un tren de pulsos como se puede observar en la figura 3.8, bajo los
siguientes parmetros de medicin seleccionados en un osciloscopio:
Voltios/Div: 2V Time/Div: 100ns
- 38. 29 Figura 3.8. La lectura de la frecuencia y perodo en este
caso sera la siguiente: Frecuencia: 3,999 Mhz Perodo: 250,013 ns El
oscilador externo en modo RC resulta ser el ms sencillo de todos y
por ende el ms econmico. Su configuracin lo hace menos preciso
debido a que existe una tolerancia de error en sus componentes, sin
olvidar tambin que la temperatura puede afectar la operacin de este
tipo de oscilador. Los valores recomendados para este oscilador son
los siguientes: 5 Kohm R1 100 Kohm C1 > 20 pF
- 39. 30 Figura 3.9. 3.3. Circuito de Reset: El Pin denominado
MCLR (Master Clear), siempre debe ser tomado en cuenta cuando se
disea un circuito con microcontroladores PIC. A travs de este Pin
se podr reiniciar el dispositivo, si a ste se le aplica un nivel
lgico bajo (0V), por lo tanto resulta importante destacar que para
que un programa cargado en un microcontrolador se mantenga en
ejecucin, el Pin MCLR debe estar siempre en un nivel lgico alto
(5V). Si deseamos tener control externo del reset de un
microcontrolador PIC, debemos considerar el circuito de la figura
3.10:
- 40. 31 Figura 3.10. Este circuito permite reiniciar el
microcontrolador cada vez que el pulsador P1 es presionado. 3.4.
Consideraciones tcnicas de diseo: A continuacin veremos algunos
circuitos bsicos que deben ser tomados en cuenta para el desarrollo
de prcticas con microcontroladores PIC. Estos circuitos son muy
tiles cuando deseamos visualizar el resultado de una accin
programada en el microcontrolador. 3.4.1. Estado Lgico de un pin
I/O: Una manera muy sencilla de ver el estado lgico de un pin
configurado como salida en cualquiera de los puertos de
microcontrolador es a travs del uso de LEDs, como se observa en los
circuitos de la figura 3.11.
- 41. 32 En el primer circuito, el LED se iluminar solo cuando el
estado lgico del pin de salida del puerto sea igual a 1, es decir,
5 voltios. En el segundo circuito, el LED se iluminar solo cuando
el estado lgico de la salida del puerto sea igual a 0, es decir, 0
voltios. Figura 3.11. Esto significa que si deseamos realizar un
programa en Lenguaje Basic encargado de cambiar el estado lgico de
un pin especfico, en cualquiera de los puertos de un
microcontrolador, una forma bsica de visualizar este cambio es a
travs del uso de LEDs.
- 42. 33 3.4.2. Lectura de un estado lgico en un pin I/O: El
microcontrolador tambin nos permite capturar datos o seales
externas para luego ser procesadas y convertidas en respuestas que
pueden definir una accin especfica en nuestros circuitos de prueba.
Un ejemplo comn podra ser el uso de un pulsador para hacer
destellar un led cada vez que ste sea presionado. Si deseamos
introducir un nivel lgico bajo (0V), o alto (5V), a una de las
entradas de un microcontrolador a travs de un pulsador, podramos
considerar los circuitos de la figura 3.12, los cuales nos
proporcionan dos formas diferentes de hacerlo: Figura 3.12.
- 43. 34 El primer circuito en la figura 3.12 mantiene un nivel
lgico alto (5V) mientras el pulsador permanece abierto. Al
presionar el pulsador, el nivel lgico en el pin I/O del puerto pasa
a ser bajo (0V). El segundo circuito de la figura 3.12 mantiene un
nivel lgico bajo (0V) mientras el pulsador permanece abierto. Al
presionar el pulsador, el nivel lgico en el pin I/O del puerto pasa
a ser alto (5V). 3.4.3. El Opto-acoplador: El opto-acoplador es un
componente muy til cuando se requiere acoplar circuitos electrnicos
digitales con etapas de manejo de potencia o con otros circuitos.
Este componente en una de sus versiones, se compone bsicamente de
un diodo LED el cual se encarga de iluminar un fototransistor, para
que ste conduzca corriente a travs del colector. Figura 3.13.
- 44. 35 En la configuracin de la figura 3.13, cuando en el pin
I/O aplicamos un 1 lgico (5V), el LED del opto-acoplador enciende y
el fototransistor conduce la corriente a tierra; por lo tanto, en
la salida tendremos un 0 lgico (0V). Si apagamos el LED, el
transistor no conduce, de tal manera que en la salida tendremos un
1 lgico (5V). En la configuracin de la figura 3.14, cuando en el
pin I/O aplicamos un 1 lgico (5V), el LED del opto-acoplador
enciende y el fototransistor conduce para poner en la salida un 1
lgico (5V). Mientras haya un 0 lgico en la entrada, el
fototransistor permanecer abierto entre el emisor y colector, dando
como resultado un 0 lgico (0V) en la salida. Figura 3.14. Una
configuracin muy comn para el control de dispositivos de potencia
como motores elctricos, luces incandescentes, solenoides, etc., se
puede ver en la figura 3.15, la cual se basa en cualquiera de los
dos circuitos antes mencionados (figura 3.13 y figura 3.14), en la
cual se ha incluido un rel a
- 45. 36 travs del cual circular la corriente necesaria entre sus
contactos, para hacer funcionar cualquiera de estos dispositivos de
potencia. Figura 3.15.
- 46. 37 3.4.4. Fuente de poder, 5Vdc / 3.3Vdc: En caso de no
disponer de una fuente de poder regulada, proponemos la
construccion de un diseo sencillo que podemos implementar en todos
los proyectos propuestos. En la figura 3.16 se puede observar el
diseo de una fuente regulada con salidas de voltaje de +5 Vdc y
+3.3 Vdc: Figura 3.16.
- 47. 38 Estructura de un programa. Componentes y operadores en
PicBasic. Capitulo IV 4.1.- Estructura de un programa: Para que
nuestros programas tengan una apariencia ordenada y se facilite la
comprensin del mismo ante otros programadores que deseen realizar
mejoras a ste, es necesario establecer una estructura que nos
permita identificar fcilmente cada una de las partes que lo
componen. Figura 4.1. En la figura 4.1 se puede observar la
estructura bsica de un programa hecho en Microcode Studio, y en la
cual hemos identificado las cuatro secciones que consideramos ms
importantes para lograr un programa bien estructurado. A B C D
- 48. 39 Seccin A: Corresponde al encabezado del programa, en el
cual se debe considerar informacin bsica del mismo, como el nombre,
la identificacin de autor, Copyright, fecha de elaboracin o fecha
de los ltimos cambios realizados, versin del programa que se est
realizando, e incluso una breve descripcin acerca del objetivo del
programa y su aplicacin en un determinado circuito electrnico. Es
importante resaltar que cada lnea del encabezado debe empezar con
una comilla simple, en forma de comentario (ver Seccin D). Seccin
B: Esta seccin empieza en la columna cero del editor de texto de
Microcode Studio, y en ella se pueden declarar las definiciones
(concepto que estudiaremos mas adelante) y las etiquetas de cada
una de las subrutinas que sern programadas. Las etiquetas
identifican puntos especficos o subrutinas dentro de un programa.
Son definidas por el programador y deben tener al final de cada una
de ellas el smbolo de dos puntos, que definen el final de la misma.
Seccin C: Estar destinada para las instrucciones de programa y la
misma est separada de la columna cero del editor de texto por una
tabulacin, es decir, cuando el cursor se encuentra en la columna
cero, presionamos una vez la tecla TAB, y de esta manera
establecemos un espacio mnimo, siempre igual o superior entre la
seccin B y C. Seccin D: Esta destinada para realizar comentarios
acerca de la funcin que estar cumpliendo una instruccin especfica
en nuestro programa. Cada comentario debe empezar siempre con una
comilla simple como se muestra a continuacin: ' Define el Oscilador
para un Cristal ' de 4 Mhz. Cuando un comentario es demasiado
extenso, podemos continuar el mismo en la siguiente lnea, siempre
que la frase comience con su respectiva comilla.
- 49. 40 Los comentarios ayudan al diseador a identificar cada
lnea de programa o cada una de las funciones de cada subrutina,
garantizando as una buena documentacin en cada uno de los programas
que realizamos. 4.2.- Subrutinas: Una subrutina se presenta como un
algoritmo separado del algoritmo principal, y estar destinado a
resolver una tarea especfica. Las subrutinas pueden ser referidas
cada vez que sea necesario, llamando a la etiqueta que corresponde
a sta, la cual debe ir siempre al inicio de la misma. Led1: For Z =
0 To 9 LED = Encendido Pause 1000 LED = Apagado Pause 1000 Next Z
GoTo Inicio End Subrutina Etiqueta
- 50. 41 4.3.- Componentes y operadores en PicBasic. PIC Basic
cuenta con una serie de herramientas de programacin entre las
cuales podemos mencionar las etiquetas, variables, identificadores,
constantes, comentarios, smbolos entre otras. Algunas de estas
herramientas son de uso obligatorio a la hora de realizar un
programa, y otras que no son de uso obligatorio, nos facilitarn el
trabajo considerablemente. 4.3.1.- Define: La directiva Define
resulta muy importante en la programacin de microcontroladores con
PicBasic, ya que establece una serie de parmetros que de no ser
tomados en cuenta, causar que nuestros programas sencillamente no
funcionen en la mayora de los casos. Esta serie de parmetros estn
directamente relacionados con dispositivos externos al
microcontrolador. Por ejemplo, si deseamos utilizar un oscilador de
diferente frecuencia al valor establecido por defecto (4 Mhz), ser
conveniente entonces definir la velocidad del mismo utilizando la
directiva: Define Osc {frecuencia} De igual forma deben ser
considerados estos parmetros para el uso de dispositivos como
pantallas LCD, donde se debern definir los puertos de conexin para
el bus de datos y bus de control. As mismo ocurre para el caso de
las comunicaciones seriales o I2C, donde los parmetros tambin deben
ser definidos. Veamos a continuacin la tabla de parmetros para el
uso de la instruccin Define.
- 51. 42 Parmetro Descripcin OSC {frecuencia} Frecuencia del
Oscilador en Mhz LCD_DREG {puerto} Puerto de datos LCD LCD_DBIT
{bit} Bit inicial del puerto de datos LCD_RSREG {puerto} Puerto
para RS (Register Select) LCD_RSBIT {bit} Pin del Puerto para RS
LCD_EREG {puerto} Puerto para E (Enable) LCD_EBIT {bit} Pin del
Puerto para E LCD_RWREG {puerto} Puerto para RW (Read/Write)
LCD_RWBIT {pin} Pin del puerto para RW LCD_LINES {lneas} Nmero de
lneas de la LCD (1,2 o 4) I2C_SCLOUT 1 Interface de Reloj I2C
Bipolar I2C_SLOW 1 Cuando en la transferencia es utilizado un
oscilador mas lento que 8 Mhz. Tabla 4.1. 4.3.2.- Variables: En las
variables podemos almacenar datos temporalmente, los cuales podrn
ser consultados o modificados cada vez que sea necesario.
Regularmente la definicin de variables se hace al inicio del
programa y para ello se utiliza la palabra VAR seguida por el tipo
de variable segn la tabla que mostramos a continuacin: Nombre de la
Variable VAR Tipo de Variable Descripcin A1 Var Bit Toma los
valores 0 y 1 unicamente Temp Var Byte Toma valores entre 0 y 255
(8 bits) dig1 Var Word Toma valores entre 0 y 65535 (16 bits) Tabla
4.2. El nombre de la variable es elegido por el programador y el
tipo de variable se define segn el tipo de dato que se desea
almacenar temporalmente.
- 52. 43 4.3.3.- Arrays: Las variables Arrays tienen un
determinado nmero de elementos, definido segn el tamao de la
variable. Las variables Arrays tipo Bit, pueden almacenar 256
elementos; las variables Arrays tipo Byte pueden almacenar hasta 96
elementos y las variables Arrays tipo Word hasta 48 elementos, los
cuales a su vez pueden ser accesados en cualquiera de los tres
casos a travs de un ndice. Este ndice se especfica entre corchetes
como se muestra en los siguientes ejemplos: Para declarar una
variable Array utilizamos el siguiente formato: Dato Var Byte[7] El
primer elemento de esta variable es Dato[0] y el ltimo elemento es
Dato[7], lo cual significa que hemos declarado una variable array
de 8 elementos. En este caso podemos almacenar un byte en cada
elemento, siempre especificando el ndice. Ejemplo: Almacenar en
cada elemento de la variable Dato los valores 200, 15, 56, 75, 80,
20, 33, 45. Dato[0] = 200 Dato[1] = 15 Dato[2] = 56 Dato[3] = 75
Dato[4] = 80 Dato[5] = 20 Dato[6] = 33 Dato[7] = 45 En algunos
casos se debe verificar la hoja de datos del microcontrolador, ya
que la cantidad de elementos que se pueden almacenar en variables
arrays tipo Byte o Word puede variar segn el modelo del mismo.
- 53. 44 4.3.4.- Constantes: Ayudan a identificar un valor
constante en nuestro programa, facilitando an ms la comprensin del
mismo a la hora de verificar su funcionamiento. En la tabla 4.3 se
puede observar la forma de declarar una constante. Nombre de la
Constante CON Valor de la Constante Temp_Max CON 150 Temp_Min CON
55 Tabla 4.3. 4.3.5.- Smbolos o Alias: Proveen un nombre nico y
especfico a elementos o variables dentro de nuestro programa. Para
definir un smbolo, utilizamos la palabra Symbol, seguida del alias
del elemento, el smbolo de igualdad =, y por ltimo el elemento en
cuestin: Symbol {alias} = {elemento} Por ejemplo, si deseamos
controlar un motor DC a travs de uno de los pines del puerto A de
un microcontrolador, resultara mucho mas sencillo referirse a este
pin como Motor, en vez de referirse a l como PortA.0. Entonces,
Symbol Motor = PORTA.0 Veamos otros ejemplos: Symbol Relay =
PORTB.0 Symbol Sensor = PORTA.0 Symbol LED = PORTA.1 Symbol RC0 =
PORTC.0
- 54. 45 4.3.6.- Operadores Aritmticos: Entre los operadores
aritmticos ms utilizados tenemos los que se muestran en la
siguiente tabla: Operador Descripcin Operador Descripcin + Suma ABS
Valor Absoluto - Resta SIN Seno del Angulo * Multiplicacin COS
Coseno del Angulo / Divisin MIN Minimo de un nmero // Residuo MAX
Mximo de un nmero > Desplaza a la Derecha DIG Valor de un digito
para un nmero decimal = Asignacin de Valores Tabla 4.4. 4.3.7.-
Operadores Binarios: En la siguiente tabla veremos los operadores
binarios proporcionados para el Lenguaje PicBasic: Operrador
Descripcin & AND Lgico | OR Lgico ^ XOR Lgico NOT Lgico &/
NAND Lgico |/ NOR Lgico ^/ NXOR Lgico Tabla 4.5. Con estos
operadores resulta muy sencillo realizar operaciones binarias, como
lo demuestra el siguiente ejemplo: Si aplicamos una AND lgica,
donde deseamos filtrar los siete bits ms significativos del valor
almacenado en la siguiente variable: Var1 = %00101001 Entonces,
Var1 = Var1 & %00000001
- 55. 46 El resultado de esta operacin es Var1 = %00000001
4.3.8.- Operadores de Comparacin: Los operadores de comparacin
normalmente son utilizados con la instruccin IfThem para realizar
comparaciones entre variables o datos extrados de alguna operacin
aritmtica. Operador Descripcin = Igual Diferente < Menor que
> Mayor que = Mayor o igual que Tabla 4.6. 4.3.9.- Operadores
Lgicos: Los operadores lgicos son utilizados para establecer
condiciones entre variables y son utilizados de la misma manera que
los operadores de comparacin. Operador Descripcin AND AND Lgico OR
OR Lgico XOR XOR Lgico NOT NOT Lgico NOT AND NAND Lgico NOT OR NOR
Lgico NOT XOR NXOR Lgico Tabla 4.7. Ejemplo: If Var1 = 1 and Var2 =
3 And Var3 = 5 Then Goto inicio La condicin saltar a la etiqueta
inicio solo si se cumplen las tres condiciones.
- 56. 47 Primeros Programas con el PIC16F84 Capitulo V Para
aprender a programar un microcontrolador resulta importante dar
inicio al tema con ejemplos prcticos y sencillos, que nos ayuden a
comprender el funcionamiento de la arquitectura del PIC y las
instrucciones de programa que se estn empleando. El primer paso
entonces ser realizar el montaje del circuito con base en los
conocimientos adquiridos en las pginas anteriores. Se debe tomar en
cuenta que aunque en los diagramas de los circuitos que se muestran
a continuacin, no estn presentes los pines de alimentacin Vcc y
Gnd, stos deben ser conectados debidamente a la fuente de
alimentacin de 5 Voltios. A medida que se van proponiendo ejemplos
de aplicacin prctica, estaremos estudiando la sintaxis de las
instrucciones empleadas en cada proyecto para facilitar la
comprensin general de ste, referente a la programacin y diseo
electrnico. 5.1.- Proyecto #1: A continuacin realice el montaje de
la figura 5.1, en base al cual realizaremos la programacin
necesaria para encender dos Leds conectados a los puertos del
microcontrolador: Figura 5.1.
- 57. 48 Proyecto # 1 Componentes Cantidad PIC16F84A 1 Cristal de
4 Mhz 1 Capacitor cermico de 33 pF 2 LED 2 Resistencia de 220 Ohm 2
Fuente regulada de 5 Vdc 1 Tabla 5.1. El Led 1 se encuentra
conectado en el pin RA0 del puerto A, el cual deber ser configurado
como Salida. El Led 2 se encuentra conectado en el pin RB0 del
puerto B, el cual deber ser configurado igualmente como Salida.
Note que el nodo del diodo LED se encuentra conectado al pin de
salida del puerto, por lo tanto para que encienda el LED debemos
hacer salir un 1 lgico por el pin correspondiente. Como los pines
de los puertos pueden ser configurados como entradas o como
salidas, es importante tomar en cuenta los registros de
configuracin de puertos, los cuales para el caso especfico del
PIC16F84 son dos: TrisA (registro de configuracin I/O del puerto
A), es un registro de 8 bits, de los cuales los tres ms
significativos no se encuentran implementados en este modelo de
microcontrolador, ya que como se puede observar en el diagrama de
pines del dispositivo (figura 3.2), el puerto A solo cuenta con 5
pines (RA0, RA1, RA2, RA3 y RA4).
- 58. 49 Un ejemplo de configuracin de los pines I/O del puerto A
es el siguiente: 1 1 1 1 0 RA4 RA3 RA2 RA1 RA0 Registro TrisA
Figura 5.2. 1 = Entrada (Al configurar un bit del registro TrisA en
1, ste se comporta como entrada). 0 = Salida (Al configurar un bit
del registro TrisA en 0, ste se comporta como salida). Al ver la
figura 5.2, se puede observar que el pin RA0 ha sido configurado
como salida y el resto de los pines como entrada. En PicBasic, este
paso se realiza de la siguiente manera: TrisA = %11110 (% para
expresar la configuracin en Binario), : TrisA = $1E ($ para
expresar la configuracin en Hexadecimal) TrisB, es un registro de 8
bits en el cual se configuran los pines del puerto B, ya sea como
entrada o como salida, por ejemplo: 1 1 1 1 1 1 1 0 RB7 RB6 RB5 RA4
RA3 RA2 RA1 RA0 Registro TrisB Figura 5.3. 1 = Entrada (Al
configurar un bit del registro TrisB en 1, ste se comporta como
entrada). 0 = Salida (Al configurar un bit del registro TrisB en 0,
ste se comporta como salida). Bit menos significativo Bit menos
significativo Recordemos entonces que como el Led 1 se encuentra
conectado en el pin RA0, el bit correspondiente a este pin en el
registro TrisA ha sido configurado como salida.
- 59. 50 Para el caso particular del puerto B, se puede observar
que el pin RB0 ha sido configurado como salida y el resto de los
pines como entrada. Consideramos importante configurar los pines
que no estarn en uso como entrada, ya que de esta forma podemos
evitar daos en el hardware interno del microcontrolador al
experimentar con ste en un tablero de pruebas. La configuracin en
PicBasic para el registro TrisB, ajustada al ejemplo de la figura
5.3 sera entonces la siguiente: TrisB = %11111110 (si se desea
hacer la notacin en binario), : TrisB = $FE (si se desea hacer la
notacin en hexadecimal) Antes de verificar el programa propuesto
para este ejemplo, veremos la sintaxis de las instrucciones
utilizadas en l, para tener una idea clara de la funcin que cumple
cada instruccin. Esta informacin puede ser complementada en el
captulo XV, en el cual encontrar la descripcin de cada una de las
instrucciones utilizadas en cada proyecto planteado en esta edicin.
Sintaxis de las Instrucciones empleadas en el programa: HIGH
Sintaxis: HIGH pin La instruccin High pone en uno lgico un pin I/O
especfico.
- 60. 51 LOW Sintaxis: LOW pin La instruccin LOW coloca en cero
lgico un pin I/O especfico. GOTO Sintaxis: GOTO etiqueta La
instruccin Goto contina la ejecucin de un programa a partir de la
etiqueta especificada (Esta instruccin no tiene retorno). PAUSE
Sintaxis: PAUSE periodo La instruccin Pause realiza una pausa en el
programa por un periodo definido en milisegundos. Veamos el
programa en PicBasic: '**************************************** '*
Nombre : Proyecto1.pbp * '* Autor : Nombre del Autor * '* Copyright
: Copyright (Ao) * '* Fecha : Fecha * '* Versin : 1.0 *
'**************************************** Define Osc 4 ' Define el
Oscilador para un Cristal ' de 4 Mhz.
- 61. 52 TRISA = %11110 ' Configuracin el Puerto A TRISB =
%11111110 ' Configuracin el Puerto B PORTA = 0 ' Inicializa el
puerto "A", es decir, ' se ponen todos los pines en cero. PORTB = 0
' Inicializa el puerto "B". Inicio: ' Etiqueta de Inicio del
programa High PORTA.0 ' Enciente el Led conectado en el pin RA0
Pause 1000 ' Hace una pausa de 1000 milisegundos = 1 ' Seg. Low
PORTA.0 ' Apaga el Led conectado en el pin RA0 Pause 1000 ' Hace
una pausa de 1000 milisegundos = 1 ' Seg. High PORTB.0 ' Enciente
el Led conectado en el pin RB0 Pause 1000 ' Hace una pausa de 1000
milisegundos = 1 ' Seg. Low PORTB.0 ' Apaga el Led conectado en el
pin RB0 Pause 1000 ' Hace una pausa de 1000 milisegundos = 1 ' Seg.
GoTo Inicio ' Salta a la etiqueta "Inicio" y se repite el '
proceso. End La instruccin High se encarga de poner un nivel lgico
alto en el pin especificado seguidamente. En este caso, primero se
escribe el puerto y seguido de un punto, se especifica el nmero del
pin en el puerto que deseamos utilizar. La instruccin Low es
responsable en este caso de poner el pin especificado en un nivel
lgico bajo. Al igual que en la instruccin High, se debe especificar
el puerto y el pin del puerto a ser utilizado. La instruccin GoTo
realiza un salto hacia una etiqueta especfica; en este caso el
programa salta a la etiqueta Inicio para empezar de nuevo todo el
proceso.
- 62. 53 Al escribir el programa en el editor de texto de
Microcode Studio, se debe grabar el mismo con el nombre de su
preferencia para que ste pueda ser compilado y al mismo tiempo
pueda ser enviado al microcontrolador. Observe que para este
programa, hemos designado el nombre Proyecto1.pbp (figura 5.4).
Figura 5.4. Antes de compilar el programa, se debe asegurar de
seleccionar el modelo apropiado de microcontrolador PIC, como se
observa en la figura 5.5. Luego se compila el programa y se
verifica que ste no tenga errores.
- 63. 54 Figura 5.5. Seguidamente, se debe proceder a cargar el
programa compilado en el microcontrolador con la ayuda del
programador de microcontroladores Pic. Al hacer clic en el icono
Compilar y Grabar en el PIC (ver figura 5.5), el compilador habr
generado un archivo de nombre Ejemplo1.hex y seguidamente se abrir
el software Picall/P16Pro, como se observa en la figura 5.6: Figura
5.6. En este momento el microcontrolador deber estar montado en la
base del programador en la posicin indicada por la figura 5.6.
Compilar Compilar y Grabar en el PIC Modelo del uC.
- 64. 55 Antes de programar el microcontrolador, tambin resulta
conveniente verificar los fusibles de programacin, accediendo al
botn Config, el cual puede ser visualizado en la figura 5.6. En
esta seccin se debe configurar el tipo de oscilador utilizado en
nuestro circuito, as como otras opciones disponibles que
comentaremos a continuacin (ver figura 5.7). Figura 5.7. En la
figura 5.7 se pueden observar tres secciones llamadas Oscillator,
Hardware y Protection: En la seccin Oscillator, debemos seleccionar
el tipo de oscilador utilizado en nuestro circuito electrnico, el
cual en este caso es del tipo XT, debido a que el cristal que hemos
elegido es de 4 Mhz. En la seccin Hardware es posible activar el
temporizador Perro Guardin, el cual se encarga de reiniciar el
microcontrolador en caso de fallas o bloqueos en el programa. Para
utilizar el Watchdog es necesario disear el programa bajo ciertos
parmetros, de forma que podamos reiniciar el temporizador Watchdog
antes de que ste se desborde y provoque un Reset en el sistema. Si
nuestro programa llegara a fallar, el temporizador Watchdog
completara su conteo y se desbordara, provocando un Reset del
sistema.
- 65. 56 En la seccin Hardware tambin disponemos de la opcin
Power Up Timer, la cual una vez activada en el microcontrolador,
har que ste no pueda iniciar el programa hasta tanto el voltaje
aplicado al circuito sea estable y seguro (ver figura 5.8). 0 1 2 3
4 5 6 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61
Tiempo Voltios Figura 5.8. En la seccin Protection, tenemos la
posibilidad de proteger el cdigo de programa almacenado en la
memoria del microcontrolador. Finalmente hacemos clic en el botn
Program (ver figura 5.6), para descargar el programa Proyecto1.hex
en el microcontrolador; inmediatamente se podr ver el proceso de
grabacin y verificacin de datos, para luego culminar con el montaje
del microcontrolador en el circuito de prueba. Estos pasos se deben
aplicar en cada uno de los proyectos aqu planteados, o cada vez que
se desee realizar una modificacin a un programa para obtener
siempre mejores resultados sobre el objetivo propuesto en cada
actividad.
- 66. 57 5.2.- Proyecto #2: En este ejemplo conectaremos un Led
en cada pin del puerto B, el cual a su vez deber ser configurado
como salida para garantizar el correcto funcionamiento del mismo.
En la figura 5.9 podemos observar en detalle la conexin del
circuito elctrico que deber ser montado. Figura 5.9. Proyecto # 2
Componente Cantidad PIC16F84A 1 Cristal de 4 Mhz 1 Capacitor de 33
pF 2 LED 8 Resistencia de 220 Ohm 8 Fuente regulada de 5 Vdc 1
Tabla 5.2.
- 67. 58 En el proyecto #1 se pudo observar como es posible
encender un led conectado a un pin del puerto A o B en un
PIC16F84A, utilizando las instrucciones High y Low. Tambin existen
otras formas de poner un 1 o un 0 lgico en un pin configurado como
salida; esto se puede lograr de varias maneras: PORTA.0 = 1 ' RA0 =
1 -> (es igual a High PortA.0) PORTA.0 = 0 ' RA0 = 0 -> (es
igual a Low PortA.0) Cuando deseamos poner varios pines de un mismo
puerto en 1, podemos utilizar las siguientes opciones: PORTB =
%10101010 ' RB7 = 1, RB5 = 1, RB3 = 1, RB1 = 1 ' RB6 = 0, RB4 = 0,
RB2 = 0, RB0 = 0 Este mismo ejemplo de configuracin en hexadecimal:
PORTB = $AA ' RB7 = 1, RB5 = 1, RB3 = 1, RB1 = 1 ' RB6 = 0, RB4 =
0, RB2 = 0, RB0 = 0 Recordemos que el smbolo % expresa la notacin
en binario, por lo cual se deben expresar los ocho bits a ser
cargados en el registro PortB. Otra forma de expresar este ejemplo
sera colocando la notacin en hexadecimal con el smbolo $, seguido
del valor calculado. Basados en esta informacin podemos lograr
encender y apagar varios leds simultneamente conectados a uno de
los puertos del microcontrolador como lo muestra el montaje de la
figura 5.9. Veamos el siguiente programa:
'**************************************** '* Nombre : Proyecto2.pbp
* '* Autor : Nombre del Autor * '* Copyright : Copyright (Ao) * '*
Fecha : Fecha * '* Versin : 1.0 *
'****************************************
- 68. 59 Define Osc 4 ' Define el Oscilador para un Cristal ' de
4 Mhz. TRISB = %00000000 ' Configura el Puerto B como Salida PORTB
= %00000000 ' Inicializa el puerto "B". Inicio: ' Etiqueta de
Inicio del programa PORTB = %01010101 ' Enciente las salidas RB0,
RB2, RB4 y RB6, al ' mismo tiempo apaga RB1, RB3, RB5 y RB7. Pause
1000 ' Hace una pausa de 1000 milisegundos = 1 Seg. PORTB =
%10101010 ' Enciente las salidas RB1, RB3, RB5 y RB7, al ' mismo
tiempo apaga RB0, RB2, RB4 y RB6. Pause 1000 ' Hace una pausa de
1000 milisegundos = 1 Seg. GoTo Inicio ' Salta a la etiqueta
"Inicio" y se repite el ' proceso. End Este programa enciende
primero las salidas pares del puerto B y apaga las salidas impares,
genera una pausa de 1 segundo (1000 ms) y seguidamente hace el
proceso inverso en las salidas, es decir, enciende las salidas
impares y apaga las salidas pares para generar nuevamente otra
pausa de 1 segundo y as repetir el proceso completo al generar un
salto a la etiqueta Inicio.
- 69. 60 5.3.- Proyecto #3: Los pines en los puertos de un
microcontrolador pueden ser configurados tambin como entradas, como
se detalla en el contenido del proyecto #1, donde se explica
claramente que al poner un 1 en un bit de un registro de
configuracin de puerto, ya sea TRISA o TRISB, para el caso del
PIC16F84A, ste se comportar como entrada. Realice el montaje de la
figura 5.10 y analice el programa que se muestra a continuacin.
Figura 5.10. Proyecto # 3 Componente Cantidad PIC16F84A 1 Cristal
de 4 Mhz 1 Capacitor cermico de 33 pF 2 LED 1 Resistencia de 220
Ohm 1 Resistencia de 10K Ohm 1 Pulsador Normalmente Abierto 1
Fuente regulada de 5 Vdc 1 Tabla 5.3.
- 70. 61 IF THEM ELSE Sintaxis: If expresin 1 {AND / OR expresin
2} Then etiqueta Con la instruccin If Them podemos tomar decisiones
a lo largo de un programa, basadas en condiciones especficas
definidas por el programador. El siguiente programa hace destellar
un LED conectado en RB0, solo cuado el pulsador es activado:
'**************************************** '* Nombre : Proyecto3.pbp
* '* Autor : Nombre del Autor * '* Copyright : Copyright (Ao) * '*
Fecha : Fecha * '* Versin : 1.0 *
'**************************************** Define Osc 4 ' Define el
Oscilador para un Cristal ' de 4 Mhz. TRISA = %11111 ' configura el
Puerto A como Entrada TRISB = %00000000 ' Configura el Puerto B
como Salida PORTB = $00 ' Inicializa el puerto B Inicio: If PORTA.0
= 1 Then PORTB.0 = 1 ' Pregunta si RA0 = 1, si se cumple ' la
condicin entonces enciende el Led. Pause 1000 ' Hace una pausa de 1
segundo (1000 ms) Low PORTB.0 ' Apaga el Led Pause 1000 ' Hace una
pausa de 1 segundo (1000 ms) GoTo inicio ' Salta a la etiqueta
"Inicio" End Para verificar si el pulsador est activado, se
pregunta si RA0 = 1. Esto es posible gracias a la instruccin IF la
cual genera un resultado siempre que la condicin planteada se
cumpla, y para lo cual debemos utilizar necesariamente su
complemento Then seguido de la accin a ser tomada.
- 76. 67 Ocho CON %01111111 Nueve CON %01100111 ' Configuracin
del Puerto de Salida: TrisD = $00 ' Configura el Puerto D como
Salida Inicio: For I = 0 To 9 ' Repeticin de Instrucciones dentro
del Lazo ' For - Next Call Digito ' Salto con Retorno hacia la
etiqueta "Digito" Pause 1000 ' Pausa de 1 segundo (1000 ms) Next I
GoTo Inicio ' Salta a la etiqueta "Inicio" Digito: ' Verificacin
del dgito a ser mostrado en el Display el cual ' se corresponde con
el valor almacenado en la variable "I". If I = 0 Then PortD = cero
If I = 1 Then PortD = Uno If I = 2 Then PortD = dos If I = 3 Then
PortD = tres If I = 4 Then PortD = cuatro If I = 5 Then PortD =
cinco If I = 6 Then PortD = seis If I = 7 Then PortD = siete If I =
8 Then PortD = ocho If I = 9 Then PortD = nueve Return ' Retorna
una lnea despus del salto con retorno (Call) End Al iniciar el
conteo en el display de 7 segmentos, se puede observar un conteo
ascendente que da inicio en cero y se va incrementando en una
unidad cada segundo hasta llegar a nueve. Si deseamos realizar el
incremento en ms de una unidad por vez, tan solo debemos incluir la
directiva Step, seguido del incremento, es decir, si queremos
realizar un incremento de dos unidades por vez, entonces el lazo
For Next se compone de la siguiente manera:
- 77. 68 For I = 0 To 9 Step 2 ' Repeticin de Instrucciones
dentro del Lazo ' For Next con incremento en dos unidades. Call
Digito ' Salto con Retorno hacia la etiqueta "Digito" Pause 1000 '
Pausa de 1 segundo (1000 ms) Next I Esto significa que el conteo
arranca en cero y cada segundo transcurrido se podrn ver los
dgitos: 2, 4, 6 y 8. Para realizar un conteo regresivo, el lazo For
Next se compone de la siguiente forma: For I = 9 To 0 Step -1 '
Repeticin de Instrucciones dentro del Lazo ' For Next. Call Digito
' Salto con Retorno hacia la etiqueta "Digito" Pause 1000 ' Pausa
de 1 segundo (1000 ms) Next I En este caso en conteo inicia en
nueve y decrece en una unidad hasta llegar a cero. 5.6.- Proyecto
#6: PicBasic cuenta con una instruccin capaz de generar tonos DTMF
(Dual Tone Multifrecuency - Multifrecuencia de doble tono), tonos
que se utilizan en telefona para marcar una serie de nmeros y as
poder establecer la comunicacin entre dos o ms personas. Una
aplicacin interesante para esta instruccin podra ser el discado de
nmeros telefnicos en sistemas de alarma cuando ha sido activado un
dispositivo de supervisin, para luego generar un mensaje de voz que
nos alerte de dicho evento. Realice el montaje de la figura 5.13 y
analice el programa que se muestra a continuacin, el cual genera
tonos DTMF consecutivos de una serie de dgitos predefinidos. Es muy
importante considerar que para generar los tonos adecuadamente el
oscilador externo debe ser de 10 Mhz o superior.
- 78. 69 Figura 5.13. Proyecto # 6 Componente Cantidad PIC16F84A
1 Cristal de 10 Mhz 1 Capacitor cermico de 33 pF 2 Capcitor
Electroltico de 10 uF 2 Parlante de 8 Ohm 1 Fuente regulada de 5
Vdc 1 Tabla 5.6. En la tabla 5.7 se puede observar la frecuencia
baja y la frecuencia alta de cada digito entre cero y quince, los
cuales se corresponden a su vez con cada uno de los dgitos de un
teclado telefnico, como se puede observar en la segunda columna de
la misma tabla. Esto quiere decir que si generamos las frecuencias
correspondientes al dgito 1 utilizando la instruccin DTMFout,
obtendremos las mismas frecuencias baja y alta que se generan al
pulsar el dgito 1 de cualquier telfono de tonos DTMF. Si deseramos
generar desde el microcontrolador el tono DTMF
- 79. 70 correspondiente al dgito 0 de un teclado telefnico,
entonces, segn la tabla 5.7, el dgito a introducir en la instruccin
DTMFout deber ser el 10. Dgito en la Instruccin DTMFout Dgito en un
Teclado Telefnico Frecuencias Bajas Frecuencias Altas 1 1 697 HZ
1209 HZ 2 2 697 HZ 1336 HZ 3 3 697 HZ 1477 HZ 4 4 770 HZ 1209 HZ 5
5 770 HZ 1336 HZ 6 6 770 HZ 1477 HZ 7 7 852 HZ 1209 HZ 8 8 852 HZ
1336 HZ 9 9 852 HZ 1477 HZ 10 0 941 HZ 1209 HZ 11 * 941 HZ 1336 HZ
12 # 941 HZ 1477 HZ 13 A 697 HZ 1633 HZ 14 B 770 HZ 1633 HZ 15 C
852 HZ 1633 HZ 0 D 941 HZ 1633 HZ Tabla 5.7. Figura 5.14.
- 80. 71 Antes de empezar a programar, vamos a verificar la
sintaxis de la instruccin DTMFout: DTMFout Sintaxis: DTMFout pin,
{On-ms, Off-ms}, [tono, tono,...tono] La instruccin DTMFout genera
tonos DTMF en secuencia y a travs de un puerto cualquiera del
microcontrolador. Pin: especifica el pin del puerto en el cual se
emitirn los tonos DTMF. On-ms: es una variable o constante que
especifica la duracin de cada tono en milisegundos. En caso de no
utilizar este parmetro, el tiempo por defecto de cada tono es de
200 ms. Off-ms: es una variable o constante que especifica el
tiempo en milisegundos del silencio que hay entre cada tono. En
caso de no utilizar este parmetro, el tiempo en silencio entre cada
tono por defecto ser de 50 ms. Tono: puede ser una variable o
constante entre 0 y 15, que especifica el tono que debe ser
generado.
- 81. 72 Programa en Pic Basic:
'**************************************** '* Nombre : Proyecto6.pbp
* '* Autor : Nombre del Autor * '* Copyright : Copyright (Ao) * '*
Fecha : Fecha * '* Versin : 1.0 *
'**************************************** Define Osc 10 ' Define el
Oscilador en 10 Mhz. TRISA = $FE ' Configura el pin RA0 como Salida
' y el resto de los pines como entrada. Inicio: DTMFOut PORTA.0,
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] Pause 2000 ' Genera una
pausa de 2 segundos. DTMFOut PORTA.0, 400, 150,
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] Pause 2000 ' Genera una
pausa de 2 segundos. GoTo Inicio ' Salta a la etiqueta "Inicio".
End
- 82. 73 Observe que en la primera instruccin DTMFout, despus de
la etiqueta Inicio, no se especifica la duracin de cada tono y el
tiempo en silencio entre cada tono. Esto significa que el
microcontrolador genera cada tono con una duracin de 200
milisegundos por defecto, y un tiempo en silencio entre cada tono
de 50 milisegundos como se muestra en las figuras 5.15 y 5.16
respectivamente: Figura 5.15.
- 83. 74 Figura 5.16. La segunda instruccin DTMFout, despus de la
etiqueta Inicio, tiene definido un tiempo de duracin para cada tono
de 400 milisegundos (figura 5.17), y un tiempo de espera entre cada
tono de 150 milisegundos (figura 5.18). Estos tiempos pueden ser
ajustados a conveniencia cada vez que sea necesario.
- 84. 75 Figura 5.17. Figura 5.18.
- 85. 76 5.7.- Proyecto #7: En este proyecto estudiaremos la
instruccin Button, la cual es utilizada para la eliminacin de
rebotes en pulsadores o para efectuar repeticiones en un botn, como
sucede en el caso de los teclados de las computadoras, en las
cuales si dejamos presionado un botn o tecla, la misma se repite
indefinidamente a una frecuencia especfica, la cual puede ser
variada fcilmente como lo demostraremos a continuacin. Antes de
empezar, veamos la sintaxis de la instruccin Button: Button
Sintaxis: Button pin, estado, retardo, rango, variable, accin,
etiqueta La instruccin Button elimina los rebotes de un pulsador o
switch, y genera auto-repeticin. Pin: especifica el pin del puerto
en el cual ser conectado el pulsador. Estado: indica cual es estado
lgico que debe ocurrir cuando el pulsador es presionado (0 o 1). Si
es 0, el pulsador deber ser activo-bajo y si es 1, el pulsador
deber ser activo-alto (Ver figura 5.19).
- 86. 77 Figura 5.19. Retardo: es una variable o constante (0
255) que especifica cuantos ciclos deben pasar antes de efectuar la
auto-repeticin. Este campo tiene dos funciones especiales: si el
campo retardo es igual 0, no permite anti-rebote y no permite
auto-repeticin. Si el campo retardo es igual a 255, permite el
anti- rebote pero no permite la auto-repeticin. Rango: es una
variable o constante (0 255) que especifica el nmero de ciclos
entre auto-repeticiones. Variable: es una variable auxiliar tipo
Byte, definida tambin al inicio del programa para uso exclusivo de
la instruccin Button, por lo cual no deber ser utilizada con otro
fin en el programa. Siempre debe ser inicializada antes del comando
Button. Accin: indica el estado del botn cuando ste no es
presionado.
- 87. 78 Etiqueta: la instruccin realiza un salto a la etiqueta
definida en este campo cuando el pulsador no ha sido presionado.
Adicionalmente utilizaremos la instruccin Pulsout en el ejemplo,
para generar pulsos de tiempo definido. PULSout Sintaxis: PULSout
pin, nivel, variable La instruccin PULSout, genera pulsos con una
duracin definida en decenas de microsegundos. (Tiene una resolucin
de 10 microsegundos para un oscilador de 4 Mhz, y una resolucin de
2 microsegundos para un oscilador de 20 Mhz).
- 88. 79 Para este proyecto hemos preparado tres ejemplos los
cuales estn basados en el circuito de la figura 5.20. Figura 5.20.
Proyecto # 7 - 7.1 - 7.2 - 7.3 Componente Cantidad PIC16F877A 1
Cristal de 4 Mhz 1 Capacitor cermico de 33 pF 2 Resistencia de 10K
Ohm 1 Pulsador Normalmente Abierto 1 Fuente regulada de 5 Vdc 1
Tabla 5.8.
- 89. 80 Se puede observar en el diagrama esquemtico, que
mientras el pulsador permanece abierto, hay un cero lgico en el pin
RB0, el cual debemos configurar como entrada en el programa. Cuando
el pulsador sea presionado, el estado lgico en el pin RB0 ser un
uno lgico. La salida a travs de la cual se van a generar los pulsos
ser el pin RB1, en el cual hemos conectado un osciloscopio para
poder ver el resultado de las seales generadas a partir de las
especificaciones dadas en cada ejemplo a continuacin. 5.7.1.-
Proyecto #7.1: Para el primer ejemplo, se pide generar un pulso de
1.5 milisegundos una vez presionado el botn. Luego, pasados 20
milisegundos con el botn presionado, debe empezar una
auto-repeticin de este pulso cada 10 milisegundos. Veamos el
siguiente programa: Define Osc 4 TRISB = %11111101 ' Configuracin
del puerto B A Var Byte ' declaracin de la variable A para la
instruccin Button. A = 0 ' inicializa la variable A PORTB.1 = 0 '
Inicializa la Salida RB0 Inicio: Button PORTB.0,1,2,1,A,0,Tiempo
PulsOut PORTB.1,150 ' Genera un pulso de 1.5ms o 150 decenas de '
microsegundos. Tiempo: Pause 10 ' Pausa de 10 milisegundos GoTo
Inicio ' Salta a inicio End
- 90. 81 Ahora analicemos la secuencia del programa: Mientras el
pulsador permanece abierto, la instruccin Button salta a la
etiqueta especificada, la cual en este caso hemos denominado
Tiempo. Seguidamente el programa completa el ciclo ejecutando las
instrucciones que siguen, y finalmente retorna a la etiqueta
inicio. Si es presionado el pulsador, se genera el primer pulso a
travs de la instruccin Pulsout PortB.1, 150 (figura 5.21), y el
programa contina su curso hasta completar el primer ciclo. En este
punto la auto- repeticin an no comienza, ya que hemos especificado
en la instruccin Button, que sta debe comenzar al terminar el
segundo ciclo: Button PORTB.0,1,2,1,A,0,Tiempo Figura 5.21.
- 91. 82 Al terminar el primer ciclo de programa, han
transcurrido los primeros 10 milisegundos. Con el segundo ciclo de
programa ocurre nuevamente el salto a la etiqueta Tiempo,
producindose una nueva pausa de 10 milisegundos, para un tiempo de
espera antes de ejecutar la auto-repeticin de 20 milisegundos.
Figura 5.22. Cumplidos los dos ciclos especificados en el campo
retardo de la instruccin Button, la instruccin empieza la
auto-repeticin cada un ciclo, ya que as lo hemos especificado en el
campo rango de la instruccin: Button PORTB.0,1,2,1,A,0,Tiempo
- 92. 83 En la figura 5.22 se puede apreciar la lectura de la
seal producida por el programa al activar el pulsador. Observe que
el tiempo entre el primer pulso y la auto-repeticin es de 20
milisegundos, y que el tiempo entre cada auto- repeticin es de 10
milisegundos (figura 5.23). Figura 5.23.
- 93. 84 En la figura 5.24 se puede observar la seal generada al
activar el pulsador, en la cual se ve la auto-repeticin del pulso
de 1.5 milisegundos, la cual permanecer hasta que el pulsador sea
liberado. Figura 5.24.
- 94. 85 5.7.2.- Proyecto #7.2: Para el siguiente ejemplo se
pretende generar el mismo pulso de 1.5 milisegundos indefinidamente
cada 20 milisegundos, siempre y cuando el pulsador permanezca
activado. Analice el siguiente programa: Define Osc 4 TRISB =
%11111101 ' Configuracin del puerto B A Var Byte ' declaracin de la
variable A A = 0 ' inicializa la variable A PORTB.1 = 0 '
Inicializa la Salida RB0 Inicio: Button PORTB.0,1,2,2,A,0,Tiempo
PulsOut PORTB.1,150 ' Genera un pulso de 1.5ms o 150 decenas de '
microsegundos. Tiempo: Pause 10 ' Pausa de 10 milisegundos GoTo
Inicio ' Salta a inicio End Observe en el programa que el nico
cambio para lograr el objetivo, ha sido aumentar en una unidad el
campo rango de la instruccin Button, lo cual significa que se deben
esperar dos ciclos de programa entre cada auto- repeticin para
producir el pulso de 1.5 milisegundos. Button
PORTB.0,1,2,2,A,0,Tiempo La secuencia para este programa es la
siguiente: Mientras el pulsador permanece abierto, al igual que en
el ejemplo anterior, la instruccin Button hace un salto a la
etiqueta Tiempo por cada ciclo de programa. Cuando activamos el
pulsador, se genera el primer pulso de 1.5 milisegundos gracias a
la instruccin Pulsout; luego se genera una
- 95. 86 pausa de 10 milisegundos y finaliza el primer ciclo con
un salto a la etiqueta Inicio. En el segundo ciclo, la instruccin
Button verifica el conteo de los ciclos, el cual es controlado por
la variable A, determinando que an no se puede empezar la
auto-repeticin hasta tanto no haya culminado el segundo ciclo, de
tal manera que ocurre nuevamente el salto a la etiqueta Tiempo, y
se produce una nueva pausa de 10 milisegundos. Culminados los dos
ciclos definidos en el campo retardo de la instruccin Button para
el anti-rebote, se produce el primer pulso de 1.5 milisegundos de
la auto-repeticin. Ahora podemos ver en el osciloscopio (figura
5.25), la seal generada al activar el pulsador, y en la cual se
produce un pulso de 1.5 milisegundos, cada 20 milisegundos. Figura
5.25.
- 96. 87 5.7.3.- Proyecto #7.3: En este ejemplo se debe generar
un pulso de 2.5 milisegundos, con un tiempo para anti-rebotes en el
pulsador de 30 milisegundos, y un tiempo entre cada auto-repeticin
de 10 milisegundos. Analice el siguiente programa: Define Osc 4
TRISB = %11111101 ' Configuracin del puerto B A Var Byte '
declaracin de la variable A A = 0 ' inicializa la variable A
PORTB.1 = 0 ' Inicializa la Salida RB0 Inicio: Button
PORTB.0,1,3,1,A,0,Tiempo PulsOut PORTB.1,250 ' Genera un pulso de
2.5ms o 250 decenas de ' microsegundos. Tiempo: Pause 10 ' Pausa de
10 milisegundos GoTo Inicio ' Salta a inicio End En este caso se
puede observar que los parmetros en la instruccin Button han sido
configurados para que el tiempo en anti-rebote dure tres ciclos de
programa, y para la auto-repeticin un ciclo de programa. Entonces,
la secuencia de programa es la siguiente: Al activar el botn, se
genera un pulso de 2.5 milisegundos. Debido a que el campo retardo
en la instruccin Button es igual a tres, la instruccin ejecutar la
auto-repeticin despus de cumplir con los tres ciclos de programa,
pasando por la subrutina Tiempo en cada ciclo, lo cual da como
resultado un retardo de 30 milisegundos. Al culminar el tercer
ciclo de programa, empieza la auto-repeticin, generando un pulso de
2.5 milisegundos por cada ciclo de programa,
- 97. 88 es decir, aproximadamente cada 10 milisegundos. La
auto-repeticin se mantiene siempre y cuando el pulsador permanezca
activo. En la figura 5.26 se puede observar la seal generada al
activar el pulsador, al igual que la medicin del tiempo en el pulso
generado por la instruccin Pulsout, igual a 2.5 milisegundos.
Figura 5.26.
- 98. 89 En la figura 5.27, se puede apreciar el tiempo de espera
generado por la instruccin Button, igual a 30 milisegundos, para
evitar los rebotes en el pulsador. Tambin se puede observar
claramente, que una vez culminado este tiempo, se genera una
auto-repeticin del pulso, la cual se mantiene siempre que el
pulsador se encuentre presionado. Figura 5.27.
- 99. 90 Observe en la figura 5.28 la medicin del tiempo entre
cada auto-repeticin. Figura 5.28.
- 100. 91 5.8.- Proyecto #8: En este proyecto estudiaremos la
instruccin Branch, con un ejemplo sencillo basado en el circuito de
la figura 5.29, en el cual se debe iluminar cada Led en forma
consecutiva por cada segundo transcurrido. Figura 5.29. Proyecto #
8 Componente Cantidad PIC16F84A 1 Cristal de 4 Mhz 1 Capacitor
cermico de 33 pF 2 LED 3 Resistencia de 220 Ohm 3 Fuente regulada
de 5 Vdc 1 Tabla 5.9.
- 101. 92 Branch Sintaxis: Branch Variable,[Etiqueta1,
Etiqueta2,EtiquetaN] La instruccin Branch hace un salto a una
etiqueta dependiendo del valor de la variable, es decir, si la
variable es igual a 0, el salto se hace a la etiqueta 1; si la
variable es igual a 1, el salto se hace a la etiqueta 2; si la
variable es igual a 2, el salto se hace a la etiqueta 3, y as
sucesivamente. Analice el siguiente programa:
'**************************************** '* Nombre : Proyecto8.pbp
* '* Autor : Nombre del Autor * '* Copyright : Copyright (Ao) * '*
Fecha : Fecha * '* Versin : 1.0 *
'**************************************** I var Byte ' Declaracin
de la variable I TRISB = $00 ' Configura el puerto B como salida
PORTB = $00 ' Inicializa el puerto B I = 0 ' Inicializa la variable
I Inicio: Branch I,[Led1,Led2,Led3] Led1: PORTB = %00000001 '
enciende el led en RB0 Pause 1000 ' pause de 1 segundo PORTB =
%00000000 ' apaga el led I = I + 1 ' suma 1 a la variable I GoTo
inicio ' salta a inicio Led2: PORTB = %00000010 ' enciende el led
en RB1 Pause 1000 ' pause de 1 segundo PORTB = %00000000 ' apaga el
Led I = I + 1 ' suma 1 a la variable I GoTo inicio ' salta a
inicio
- 102. 93 Led3: PORTB = %00000100 ' enciende el led en RB2 Pause
1000 ' pause de 1 segundo PORTB = %00000000 ' apaga el Led I = 0 '
Inicializa la variable I GoTo Inicio ' salta a inicio End Observe
en el programa que a partir de la etiqueta Inicio, la instruccin
Branch hace un salto a la etiqueta especificada segn el valor
cargado en la variable I, que se corresponde con la posicin de la
etiqueta que hemos designado entre los corchetes. Entonces, si I =
0, la instruccin hace un salto a la etiqueta Led1; si I = 1, la
instruccin hace un salto a la etiqueta Led2; si I = 2, entonces la
instruccin hace un salto a la etiqueta Led3.
- 103. 94 5.9.- Proyecto #9: La instruccin PWM, puede ser usada
para generar voltajes analgicos implementando el circuito conectado
al pin RB0 de la figura 5.30. A continuacin realizaremos un ejemplo
de aplicacin de la instruccin PWM para generar un voltaje
determinado, aplicando una serie de clculos sencillos. Figura 5.30.
Proyecto # 9 Componente Cantidad PIC16F84A 1 Cristal de 4 Mhz 1
Capacitor cermico de 33 pF 2 Resistencia de 10K Ohm 1 Capcitor
Electroltico de 10 uF 1 Fuente regulada de 5 Vdc 1 Tabla 5.10.
- 104. 95 PWM Sintaxis: PWM pin, nivel, ciclo La instruccin PWM
enva pulsos PWM (Pulse Width Modulation) a un pin especfico. Pin:
especifica el pin del puerto en el cual se genera PWM. Nivel: es
una variable o constante que determina la duracin del pulso en su
nivel alto, es decir, partiendo de nivel = 1, si se incrementa este
valor, el ancho de pulso positivo se incrementa, hasta nivel = 254,
donde el ciclo de trabajo es aproximadamente 100%. Cuando nivel =
0, la salida se mantiene en cero lgico; cuando nivel = 255, la
salida se mantiene en uno lgico. Ciclo: es una variable o constante
en el cual se define el nmero de ciclos en un pin especfico. PWM es
una abreviacin de Pulse Width Modulation, o modulacin por ancho de
pulso, y es un mtodo utilizado normalmente para el control de
velocidad de motores elctricos, o para regular voltajes en fuentes
conmutadas entre otras aplicaciones. Este control se lleva a cabo
modificando el ancho de pulso o ciclo de trabajo de la seal
generada. En nuestro ejemplo, para generar un voltaje especfico en
una de las salidas de un microcontrolador a travs de la instruccin
PWM, podemos aplicar la siguiente frmula: 255 nivelVfuente Vout =
donde, Vout: voltaje de salida. Vfuente: voltaje de la fuente de
alimentacin del circuito. Nivel: constante entre 0 y 255.
- 105. 96 Por ejemplo, si deseamos obtener Vout = 3.5V, entonces,
1795,178 5 2555.3255 = = = V V Vfuente Vout nivel El valor a ser
cargado en el campo nivel de la instruccin es 179. Al medir el
voltaje en la salida del circuito de la figura 5.30, podemos
comprobar que ste se aproxima al valor deseado de 3.5 voltios. El
programa a ser cargado en el microcontrolador es el siguiente:
DEFINE OSC 4 ' Define el oscilador en 4 Mhz Inicio: PWM
PORTB.0,179,100 ' Seal PWM GoTo Inicio ' Salto a inicio End
- 106. 97 Mdulos LCD Capitulo VI 6.1.- Pantallas LCD: Las
pantallas LCD alfanumricas, son las ms utilizadas hoy en da en el
desarrollo de proyectos o equipos electrnicos en los cuales se hace
necesario visualizar mensajes de texto cortos, que proporcionen la
informacin adecuada sobre un evento determinado. Las pantallas ms
comunes suelen ser de 1x16, de 2x16 y de 4x16 (Filas x Columnas).
Todas estas configuraciones tambin se encuentran para 20 columnas y
hasta para 40 columnas. Aunque en esta edicin solo estudiaremos el
uso de pantallas alfanumricas, tambin resulta interesante mencionar
que existen en el mercado pantallas grficas (GLCD), como la que se
observa en la figura 6.3, y donde se debe aplicar un mtodo de
control diferente al de las pantallas alfanumricas. Figura 6.1.
Pantalla LCD 2x16. Figura 6.2. Pantalla LCD 4x16. Figura 6.3.
Pantalla GLCD (Graphic Liquid Crystal Display) de 128x64
pixel.
- 107. 98 6.2.- Identificacin de los pines de una pantalla LCD:
Veamos a continuacin la descripcin de cada uno de los pines de una
pantalla LCD: Figura 6.4. Pinout de un mdulo LCD con conexin a Vcc,
Gnd y Control de contraste. Pin 1, 2 y 3: como se puede observar en
la figura 6.4, en la mayora de las pantallas LCD, el Pin No. 1 y 2
corresponden a la alimentacin de la pantalla, GND y Vcc, donde el
voltaje mximo comnmente soportado es de 5 Vdc. El Pin No.3
corresponde al control de contraste de la pantalla. Pin 4: "RS"
(trabaja paralelamente al Bus de datos del modulo LCD, Pines 7 al
14, es decir, cuando RS es cero, el dato presente en el bus
corresponde a un registro de control o instruccin, pero cuando RS
es uno, el dato presente en el bus corresponde a un registro de
datos o caracter alfanumrico. Pin 5: "R/W" (Read/Write), este pin
es utilizado para leer un dato desde la pantalla LCD o para
escribir un dato en la pantalla LCD. Si R/W = 0, esta condicin
indica que podemos escribir un dato en la pantalla. Si R/W = 1,
esta condicin nos permite leer un dato desde la pantalla LCD. Pin
6: "E" (Enable), este es el pin de habilitacin, es decir, si E = 0
el mdulo LCD se encuentra inhabilitado para recibir datos, pero si
E = 1, el mdulo LCD se encuentra habilitado para trabajar, de tal
manera que podemos escribir o leer desde el modulo LCD.
- 108. 99 Pin 7 al14: "Bus de Datos, el Pin 7 hasta el Pin 14
representan 8 lneas que se utilizan para colocar el dato que
representa una instruccin para el modulo LCD o un carcter
alfanumrico. Pin 15-16: "BackLight", en muchos modelos de LCD, los
pines 15 y 16 son respectivamente el nodo y el Ctodo