Академический Документы
Профессиональный Документы
Культура Документы
GRENELECTRONIC
ndice
1.Introduccin
2.Cdigo de programacin Basic
3.Cdigos Binario, hex., Decimal, ASCII
4. Programacin I
Laso abierto, secuencia
Actividades de programacin I
5. Programacin II
Laso cerrado, compuertas lgicas
Secuencia de control y carga
Actividades de programacin II
6. Programacin III
Display de 7 segmentos
Actividades de programacin III
7. Programacin IV
LCD, lm35, instrumentacin
Actividades de programacin IV
8. Programacin V
Motores, Servos y PAP
Actividades de programacin V
9. Programacin VI
Robtica sensorial
Actividades de programacin VI
10. Programacin VII
Visual Basic
Comunicacin serial rx tx
Actividades de Programacin VII
Qu es un microcontrolador?
Es un circuito integrado programable que acepta un listado de
instrucciones y contiene todos los componentes de un computador. Se
utilizan para realizar determinadas tareas o para gobernar
dispositivos, debido a su reducido tamao, suele ir incorporado en el
propio dispositivo que gobierna.
El microcontrolador es un dispositivo dedicado. En su memoria solo
reside un programa destinado a gobernar una aplicacin determinada,
sus lneas de entradas y salidas (I/O) permiten la conexin de sensores y relay. Una vez
programado y configurado el microcontrolador solamente sirve para gobernar la tarea
asignada
BOOTLOADER
Xtal 4
Xtal 10
Xtal 20
Xtal 40
CONFIGURAR PINES DIGITALES
CONFIGURAR MEMORIA
BUS I2C -------
SCL_Pin = PORTA.7
SDA_Pin = PORTA.6
CONFIGURAR VARIABLES
Declare LCD_Type = 0
Declare LCD_DTPin = PORTD.0
Declare LCD_ENPin = PORTD.5
Declare LCD_RSPin = PORTD.4
Declare LCD_Interface = 4
Declare LCD_Lines = 2
CONFIGURAR LCD GRAFICO
LCD_DTPort = PORTD
LCD_RSPin = PORTC.1
LCD_ENPin = PORTE.0
LCD_RWPin = PORTC.0
LCD_CS1Pin = PORTE.1
LCD_CS2Pin = PORTE.2
LCD_Type = GRAPHIC
Internal_Font = OFF
Font_Addr = 0
CONFIGURAR TECLADO
Keypad_Port = PORTB
Serial_Baud = 9600
Rsout_Pin = PORTC.6
Rsout_Mode = TRUE
Rsout_Pace = 1
Rsin_Pin = PORTC.7
Rsin_Mode = TRUE
CONFIGURACION COMBINADA
TRISA=%00001111 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
TRISA=$F 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
TRISA=15 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
ACTIVAR PUERTO
High xx8
Low xx8
Low PORTB 'el puerto b esta en nivel bajo (apagado)
High PORTB 'el puerto b esta en nivel ALTO (ACTIVO)
PORTB=0 'el puerto b esta en nivel bajo (apagado)
PORTB.0=0 'el puerto b solo el pin.0 con nivel bajo
PORTB=%00000000 'el puerto b esta con nivel bajo
PORTB=1 'el puerto b solo el pin.0 con nivel alto (activado)
PORTB.0=1 'el puerto b solo el pin.0 con nivel alto
PORTB=7 'el puerto b reproduce el dato 00000111 dec
PORTB=3 'el puerto b reproduce el dato 00000011 dec
PORTB=$F 'el puerto b reproduce el dato 00001111 hex
PORTB=$3F 'el puerto b reproduce el dato 00111111 hex
PORTB=%11111111 'el puerto b esta con nivel alto bin
RETARDOS
Dim cc As Word
Print At 1,1, "f = ", Dec cc' imprimir el dato en el LCD desde cc
WRD = Counter Pin , 1000 ' LA VARIABLE WRD CONTIENE EL VALOR DE ENTRADA EN 1seg
If IRIS =1 Then
DelayMS 500
cont1 = cont1 + 1 'se ejecuta una suma en memoria
EndIf
Organizador de instrucciones (branch,on goto,on gosub)
IF VAR1 = 0 THEN GOTO LAB_0 por BRANCH VAR1, [Lab_0, Lab_1, Lab_2]
IF VAR1 = 1 THEN GOTO Lab_1 ON VAR1 GOTO LABEL_0, LABEL_1, LABEL_2
IF VAR1 = 2 THEN GOTO Lab_2 ON VAR1 GOSUB LABEL_0, LABEL_1, LABEL_2
VAR1 = 1
REPEAT
PRINT AT 1, 1, DEC VAR1 O REPEAT HIGH LED: UNTIL PORTA.0 = 1
DELAYMS 200
INC VAR1
UNTIL VAR1 > 10
ADCON1 = %10000000 ' Setup Del registro ADCON1, AN1 / RA1 es anlogo
Mueva la posicin del cursor en la pantalla LCD para una lnea y posicin determinada.
If IRIS =1 Then
DelayMS 500
cont1 = cont1 + 1 'se ejecuta una suma en memoria
EndIf
````````````````````````````````````````````````````````````````````
If IRIS =1 Then
DelayMS 500
cont1 = cont1 * 2 'se ejecuta una multiplicacion en memoria
Mostrar en decimal, todos los valores de WRD dentro de un bucle hacia arriba
Mostrar en decimal, todos los valores de WRD1 utilizando una expresin como parte de la
construccin de FOR-NEXT
Para la serie 16f el pin4 del puerto A es colector abierto con drenaje a tierra, tratar de
no usar como salida. Ver ficha del micro
Para la serie 16f8xx los puertos A y E por defecto trabajan los ADC usar comando de bloqueo
Para la serie 16f6xx el puerto A ser analgico usar CMCON = 7
Para la serie 16f87x el puerto A o E ser analgico usar ADCON1 = 7
CODIGOS DEC,HEX.BIN
Dec
Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin
Dec Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin
128 80 200 10000000 144 90 220 10010000 160 A0 240 10100000 176 B0 260 10110000
129 81 201 10000001 145 91 221 10010001 161 A1 241 10100001 177 B1 261 10110001
130 82 202 10000010 146 92 222 10010010 162 A2 242 10100010 178 B2 262 10110010
131 83 203 10000011 147 93 223 10010011 163 A3 243 10100011 179 B3 263 10110011
132 84 204 10000100 148 94 224 10010100 164 A4 244 10100100 180 B4 264 10110100
133 85 205 10000101 149 95 225 10010101 165 A5 245 10100101 181 B5 265 10110101
134 86 206 10000110 150 96 226 10010110 166 A6 246 10100110 182 B6 266 10110110
135 87 207 10000111 151 97 227 10010111 167 A7 247 10100111 183 B7 267 10110111
136 88 210 10001000 152 98 230 10011000 168 A8 250 10101000 184 B8 270 10111000
137 89 211 10001001 153 99 231 10011001 169 A9 251 10101001 185 B9 271 10111001
138 8A 212 10001010 154 9A 232 10011010 170 AA 252 10101010 186 BA 272 10111010
139 8B 213 10001011 155 9B 233 10011011 171 AB 253 10101011 187 BB 273 10111011
140 8C 214 10001100 156 9C 234 10011100 172 AC 254 10101100 188 BC 274 10111100
141 8D 215 10001101 157 9D 235 10011101 173 AD 255 10101101 189 BD 275 10111101
142 8E 216 10001110 158 9E 236 10011110 174 AE 256 10101110 190 BE 276 10111110
143 8F 217 10001111 159 9F 237 10011111 175 AF 257 10101111 191 BF 277 10111111
192 C0 300 11000000 208 D0 320 11010000 224 E0 340 11100000 240 F0 360
193 C1 301 11000001 209 D1 321 11010001 225 E1 341 11100001 241 F1 361 11110000
194 C2 302 11000010 210 D2 322 11010010 226 E2 342 11100010 242 F2 362 11110001
195 C3 303 11000011 211 D3 323 11010011 227 E3 343 11100011 243 F3 363 11110010
196 C4 304 11000100 212 D4 324 11010100 228 E4 344 11100100 244 F4 364 11110011
197 C5 305 11000101 213 D5 325 11010101 229 E5 345 11100101 245 F5 365 11110100
198 C6 306 11000110 214 D6 326 11010110 230 E6 346 11100110 246 F6 366 11110101
199 C7 307 11000111 215 D7 327 11010111 231 E7 347 11100111 247 F7 367 11110110
200 C8 310 11001000 216 D8 330 11011000 232 E8 350 11101000 248 F8 370 11110111
201 C9 311 11001001 217 D9 331 11011001 233 E9 351 11101001 249 F9 371 11111000
202 CA 312 11001010 218 DA 332 11011010 234 EA 352 11101010 250 FA 372 11111001
203 CB 313 11001011 219 DB 333 11011011 235 EB 353 11101011 251 FB 373 11111010
204 CC 314 11001100 220 DC 334 11011100 236 EC 354 11101100 252 FC 374 11111011
205 CD 315 11001101 221 DD 335 11011101 237 ED 355 11101101 253 FD 375 11111100
206 CE 316 11001110 222 DE 336 11011110 238 EE 356 11101110 254 FE 376 11111101
207 CF 317 11001111 223 DF 337 11011111 239 EF 357 11101111 255 FF 377 11111110
11111111
CODIGO ASCII
ASCII Hex Smbolo ASCII Hex Smbolo ASCII Hex Smbolo ASCII Hex Smbolo
ASCII Hex Smbolo ASCII Hex Smbolo ASCII Hex Smbolo ASCII Hex Smbolo
64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4A J 90 5A Z 106 6A j 122 7A z
75 4B K 91 5B [ 107 6B k 123 7B {
76 4C L 92 5C \ 108 6C l 124 7C |
77 4D M 93 5D ] 109 6D m 125 7D
78 4E N 94 5E ^ 110 6E n 126 7E }
79 4F O 95 5F _ 111 6F o 127 7F ~
Programacin I
El proceso se desarrolla en diferentes fases sin comprobar
que el objetivo se ha alcanzado satisfactoriamente.
En el ejemplo de una lavadora, la seal de salida (que sera
la ropa lavada) no se introduce en el sistema en ningn
momento para poder dar el proceso por terminado. Es posible
que la ropa no est bien lavada pero el sistema no puede
rectificar automticamente. Esto se denomina laso abierto
Xtal = 20 'velocidad
7 11
RA5/AN4 RC0/T1OSO/T1CKI
12
RC1/T1OSI
13 LED
RC2/CCP1
14
E: 'ETIQUETA
PORTC.0=1 'ENVIO UN NIVEL ALTO AL PIN 5
DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEG
PORTC.0=0 'ENVIO UN NIVEL BAJO AL PIN 5
DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEG
Goto E ' IR AL COMIENZO DEL PROGRAMA
OTRAS FORMAS
inicio:
High led
pause 1000
Low led
pause 1000
GoTo inicio
End
inicio:
High PORTB.0
pause 1000
Low PORTB.0
pause 1000
GoTo inicio
End
``````````````````````````````````````````````````````````````````````
inicio1:
PORTB.0 = 1
pause 1000
PORTB.0 = 0
pause 1000
GoTo inicio
End
inicio:
High 0:Low 1:Low 2:Low 3:Low 4: High 5
DelayMS 1000
High 0:High 1:Low 2:Low 3:Low 4: High 5
DelayMS 1000
GoTo inicio
End
inicio:
PORTB = %00100001
delayms 1000
PORTB = %00100011
delayms 1000
GoTo inicio
End
Actividades de programacin I
U1
1. DESARROLLE UN SISTEMA PROGRAMADO QUE 9
10
OSC1/CLKIN RB0/INT
21
22
ACTIVE 8 LED EN EL PUERTO C DEL 1
OSC2/CLKOUT
MCLR/Vpp/THV
RB1
RB2
23
24
RB3/PGM
MICROCONTROLADOR 16F870, CON UNA PAUSA 2
3
RA0/AN0
RA1/AN1
RB4
RB5
25
26
4 27
DE Segundo EN FORMA INFINITA, CADA 5
6
RA2/AN2/VREF-
RA3/AN3/VREF+
RB6/PGC
RB7/PGD
28
U2
RA4/T0CKI
UN0 DE LOS LED ACTUARAN EN ESCALERA. 7
RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
11
12
1
2
20
19
13 3 18
RC2/CCP1
14 4 17
RC3
15 5 16
RC4
16 6 15
RC5
17 7 14
RC6/TX/CK
18 8 13
RC7/RX/DT
9 12
PIC16F870 10 11
LED-BARGRAPH-GRN
U1
9 21
2. DESARROLLE UN SISTEMA PROGRAMADO QUE 10
1
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
22
23
MCLR/Vpp/THV RB2
ACTIVE 8 LED EN EL PUERTO C DEL 2
RA0/AN0
RB3/PGM
RB4
24
25
3 26
MICROCONTROLADOR 16F870, CON UNA PAUSA 4
5
RA1/AN1
RA2/AN2/VREF-
RB5
RB6/PGC
27
28
DE Segundo EN FORMA INFINITA, LOS LED 6
RA3/AN3/VREF+ RB7/PGD U2
RA4/T0CKI
7 11 1 20
RA5/AN4 RC0/T1OSO/T1CKI
ACTUARAN EN PENDULO RC1/T1OSI
RC2/CCP1
12
13
2
3
19
18
14 4 17
RC3
15 5 16
RC4
16 6 15
RC5
17 7 14
RC6/TX/CK
18 8 13
RC7/RX/DT
9 12
PIC16F870 10 11
LED-BARGRAPH-GRN
U3
1 20
U1 2 19
9 21 3 18
OSC1/CLKIN RB0/INT
3. DESARROLLE UN PENDULO INFINITO 10
1
OSC2/CLKOUT
MCLR/Vpp/THV
RB1
RB2
22
23
4
5
17
16
24 6 15
CON LOS PUERTOS B Y C, CON PAUSAS DE 2
RA0/AN0
RB3/PGM
RB4
25 7 14
3 26 8 13
100 mseg. 4
5
RA1/AN1
RA2/AN2/VREF-
RB5
RB6/PGC
27
28
9
10
12
11
RA3/AN3/VREF+ RB7/PGD U2
CON EFECTO SEGUIDOR DE POSICION, los 6
7
RA4/T0CKI
RA5/AN4 RC0/T1OSO/T1CKI
11 1 LED 20
LED
Re sistor
RA4/T0CKI
10k 7 11
RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
RC2/CCP1
12
13
14
caso el pulsador enviara un 1 al pulsar, sin pulsar la
RC3
RC4
RC5
15
16 resistencia mantiene un estado 0 por estar a tierra, si
17
RC6/TX/CK
RC7/RX/DT
18 no esta la resistencia siempre existir un 1.
PIC16F870
10k 9 21
OSC1/CLKIN RB0/INT
10 22
2
1
OSC2/CLKOUT
MCLR/Vpp/THV
RB1
RB2
RB3/PGM
23
24
25
LED
pulsar la resistencia mantiene un estado 1 por estar a
+5vcc, si no esta la resistencia siempre existir un
RA0/AN0 RB4
3 26
RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
5 28
RA3/AN3/VREF+ RB7/PGD
6
7
RA4/T0CKI
RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
11
12
1.
13
RC2/CCP1
14
RC3
15
RC4
16
Estos circuitos, sern capas de relacionar estados RC5
RC6/TX/CK
RC7/RX/DT
17
18
Resistor
10k 9 21
OSC1/CLKIN RB0/INT
10 22
All_Digital= true ' todos los pines del micro son digitales 1
OSC2/CLKOUT
MCLR/Vpp/THV
RB1
RB2
23 LED
24
PORTB=0 ' ASEGURO EL PUERTO B LOW 2
RA0/AN0
RB3/PGM
RB4
25
3 26
E: 'ETIQUETA 4
RA1/AN1
RA2/AN2/VREF-
RB5
RB6/PGC
27
5 28
If PORTA.0 = 1 Then 'el micro espera un 1 para activar 6
RA3/AN3/VREF+
RA4/T0CKI
RB7/PGD
7 11
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 7 RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
12
13
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG RC2/CCP1
RC3
14
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 7 RC4
15
16
RC5
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG RC6/TX/CK
17
18
RC7/RX/DT
EndIf ' si es fin PIC16F870
End 'fin
2-ACTIVANDO UN LED, por un pulsador, enviando un 0 (button)
D1
Device 16F870 'microcontrolador U1
9 21
OSC1/CLKIN RB0/INT
Xtal = 20 'velocidad 10
OSC2/CLKOUT RB1
22
1 23 LED
TRISA.0=1 'declaro que el puerto A pin 0 es entrada MCLR/Vpp/THV RB2
RB3/PGM
24
2 25
TRISA.1=1 'declaro que el puerto A pin 1 es entrada 3
RA0/AN0
RA1/AN1
RB4
RB5
26
4 27
TRISB=0 ' DECLARO PUERTO B SALIDA 5
RA2/AN2/VREF-
RA3/AN3/VREF+
RB6/PGC
RB7/PGD
28
All_Digital= true ' todos los pines del micro son digitales 6
7
RA4/T0CKI
11
RA5/AN4 RC0/T1OSO/T1CKI
PORTB=0 ' ASEGURO EL PUERTO B LOW RC1/T1OSI
12
13
RC2/CCP1
E: 'ETIQUETA RC3
14
15
RC4
If PORTA.0 = 1 AND PORTA.1 = 1 THEN 'los 2 sw activaran el led RC5
16
R1 R2 17
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0 RC6/TX/CK
Resistor
Resistor
Resistor
Resistor
10k 10k 18
RC7/RX/DT
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG PIC16F870
E: 'ETIQUETA
If PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal
E: 'ETIQUETA
If PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal
If PORTA.0 = 0 And PORTA.1 = 1 Then activo ' sub programa
If PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programa
If PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programa
GoTo E
Actividades de programacin II
Resistor
Resistor
RC3
Resistor
Resistor
Resistor
Resi stor
Resi stor
Resi stor
Resi stor
Resi stor
Resi stor
Resi stor
LED
LOS DISPLAYS SON FABRICADOS CON ANODO COMUN O CATADO COMUN, SI ES DE CATODO COMUN
DEBERA ACTIVAR CON NIVEL ALTO, PERO SI ES ANODO COMUN CON NIVEL BAJO.
PORTB=%01111111 forma el numero 8 para catado comun
PORTB=%00000000 forma el numero 8 para anodo comun
Segun puertob seria % X g f e d c b A
TRISB = 0 4
5
RA2/AN2/VREF-
RA3/AN3/VREF+
RB6/PGC
RB7/PGD
27
28
6
prog: 7
RA4/T0CKI
RA5/AN4 RC0/T1OSO/T1CKI
11
12
For vec = 0 To 9 RC1/T1OSI
RC2/CCP1
13
14
LookUp vec, [191,134,219,207,230,237,253,135,255,239], num RC3
RC4
15
16
RC5
PORTB=num RC6/TX/CK
17
18
RC7/RX/DT
DelayMS 500 PIC16F870
Next vec
GoTo prog
End
2. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 (Baja - sube)
U1
Device 16F870 9
OSC1/CLKIN RB0/INT
21
10 22
Dim vec As Byte 1
OSC2/CLKOUT
MCLR/Vpp/THV
RB1
RB2
23
24
Dim num As Byte 2
RA0/AN0
RB3/PGM
RB4
25
3 26
TRISB = 0 4
5
RA1/AN1
RA2/AN2/VREF-
RB5
RB6/PGC
27
28
prog: 6
7
RA3/AN3/VREF+
RA4/T0CKI
RB7/PGD
11
RA5/AN4 RC0/T1OSO/T1CKI
For vec=0 To 9 RC1/T1OSI
12
13
RC2/CCP1
LookUp vec, [191,134,219,207,230,237,253,135,255,239], num RC3
14
15
RC4
PORTB=num RC5
RC6/TX/CK
16
17
PIC16F870
Next vec
For vec=9 To 0 Step -1
LookUp vec,[191,134,219,207,230,237,253,135,255,239],num
PORTB=num
DelayMS 500
Next vec
GoTo prog
End
3. Contador con un display, pero ahora con un vector en el cual almacenaremos los
valores correspondientes a cada numero (Para los dos ejemplos el Display es de
nodo Comn)
ACTIVE UN DISPLAY DE ANODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 con vectores
Device 16F870
Dim vec[10] As Byte
Dim pos As Byte
vec[0]=191
vec[1]=134
vec[2]=219 U1
vec[3]=207 9
10
OSC1/CLKIN RB0/INT
21
22
OSC2/CLKOUT RB1
vec[4]=230 1
MCLR/Vpp/THV RB2
23
24
vec[5]=237 2
RB3/PGM
25
RA0/AN0 RB4
vec[6]=253 3
4
RA1/AN1 RB5
26
27
RA2/AN2/VREF- RB6/PGC
vec[7]=135 5
RA3/AN3/VREF+ RB7/PGD
28
6
vec[8]=255 7
RA4/T0CKI
11
RA5/AN4 RC0/T1OSO/T1CKI
vec[9]=239 RC1/T1OSI
12
13
RC2/CCP1
14
RC3
15
TRISB=%00000000 RC4
RC5
16
17
RC6/TX/CK
18
RC7/RX/DT
loop:
PIC16F870
For pos=0 To 9
PORTB=vec[pos]
DelayMS 500
Next
GoTo loop
End
Device 16F870
Dim vec[10] As Byte
Dim pos As Byte
TRISA = %00000011
TRISB = 0
CMCON=7
vec=0
PORTB=64
inicio:
If PORTA.0=0 Then
vec=vec+1
LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num
PORTB=num
If vec>=10 Then
vec=0
EndIf
pause 200
EndIf
If PORTA.1=0 Then
vec=vec-1
LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num
PORTB=num
If vec<=1 Then
vec=11
EndIf
pause 200
EndIf
GoTo inicio
End
5-ACTIVANDO UN DISPLAY, DE 2 DIGITOS
U1 U2
9 21 7 13
OSC1/CLKIN RB0/INT A QA
10 22 1 12
OSC2/CLKOUT RB1 B QB
1 23 2 11
MCLR/Vpp/THV RB2 C QC
24 6 10
RB3/PGM D QD
2 25 9
RA0/AN0 RB4 QE
3 26 3 15
RA1/AN1 RB5 LT QF
4 27 4 14
RA2/AN2/VREF- RB6/PGC BI QG
5 28 5
RA3/AN3/VREF+ RB7/PGD LE/STB
6
RA4/T0CKI
7 11 4511
RA5/AN4 RC0/T1OSO/T1CKI
12
RC1/T1OSI
13
RC2/CCP1
14 U3
RC3
15 10
RC4 COM
16 1 18
RC5 1B 1C
17 2 17
RC6/TX/CK 2B 2C
18 3 16
RC7/RX/DT 3B 3C
4 15
4B 4C
PIC16F870 5 14
5B 5C
6 13
6B 6C
7 12
7B 7C
8 11
8B 8C
ULN2803
'El codigo, est formado por dos bucles, el primero que es de donde a donde va el
contador (0-99) y el segundo bucle es el tiempo que quieres que permanesca
visualizado el valor en el display, utilizo la funcion DIG es para tomar el
digito correspondiente, y le sumo 16 32 para activar el display para formar el
nmero, es importante destcar que en este circuito se trabaja con el 4511 un
decoder binario decimal.
Device = 16F870
Xtal = 20
Dim i As Byte
Dim j As Byte
Dim unidad As Byte
Dim decena As Byte
All_Digital = true
TRISB = 0
TRISA = 1
xx:
If PORTA.0 = 1 Then lod
If PORTA.0 = 0 Then xx
GoTo xx
lod:
For i=0 To 99
For j=0 To 99
unidad = i Dig 0
PORTB = unidad + 16
DelayMS 5
decena = i Dig 1
PORTB= decena + 32
DelayMS 5
Next j
Next i
GoTo xx
End
Actividades de programacin III
1-ACTIVE UN CONTADOR DE 0 A 9999 CON LAS MISMAS PROPIEDADES DEL 0 A 99
U1 U2
9 21 7 13
OSC1/CLKIN RB0/INT A QA
10 22 1 12
OSC2/CLKOUT RB1 B QB
1 23 2 11
MCLR/Vpp/THV RB2 C QC
24 6 10
RB3/PGM D QD
2 25 9
RA0/AN0 RB4 QE
3 26 3 15
RA1/AN1 RB5 LT QF
4 27 4 14
RA2/AN2/VREF- RB6/PGC BI QG
5 28 5
RA3/AN3/VREF+ RB7/PGD LE/STB
6
RA4/T0CKI
7 11 4511
RA5/AN4 RC0/T1OSO/T1CKI
12
RC1/T1OSI
13
RC2/CCP1
14 U3
RC3
15 10
RC4 COM
16 1 18
RC5 1B 1C
17 2 17
RC6/TX/CK 2B 2C
18 3 16
RC7/RX/DT 3B 3C
4 15
4B 4C
PIC16F870 5 14
5B 5C
6 13
6B 6C
7 12
7B 7C
8 11
8B 8C
ULN2803
CONFIGURANDO UN LCD
LCD1
16_X_2_LCD
Device 16F870
Xtal 20 U1
LCD 9
10
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
21
22
VDD
VSS
VEE
1 23
CO VAR Byte
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
MCLR/Vpp/THV RB2
E
24
RB3/PGM
2 25
Declare LCD_Type = 0 RA0/AN0 RB4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3 26
RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
Declare LCD_DTPin = PORTC.0 5
6
RA3/AN3/VREF+
RA4/T0CKI
RB7/PGD
28
D:
Print At 1,1, " ACTIVAR ESTACION "
DelayMS 5000
Print At 2,2, " ACTIVAR BOMBA 1 "
DelayMS 5000
GoTo D
CONFIGURANDO un Lm35
Main:
ADC_Result = ADIn 0
Temp_Float = ADC_Result * 5000 / 65472 ' to reduce decimal error
Print At 1,1, DEC1 Temp_Float , 0, "'C "
Return
USANDO COUNTER: CONTEO = COUNTER Pin, 100 Cuente el nmero de impulsos que aparecen
en el pin durante el perodo, y guardar el resultado en la variable
1. DESARROLLE UN CONTADOR Y REGISTRE LOS RESULTADOS EN UN LCD
LCD1
16_X_2_LCD En electrnica digital, Un contador (counter en ingls)
es un circuito secuencial construido a partir de
U1
9
10
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
21
22
biestables y puertas lgicas capaz de realizar el cmputo
VDD
VSS
VEE
1 23
RW
de los impulsos que recibe en la entrada destinada a tal
RS
D0
D1
D2
D3
D4
D5
D6
D7
MCLR/Vpp/THV RB2
E
24
RB3/PGM
2 25
RA0/AN0 RB4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3 26
R1
7
RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
RC2/CCP1
11
12
13
frecuencia. Habitualmente, el cmputo se realiza en un
cdigo binario, que con frecuencia ser el binario
10k 14
RC3
15
RC4
16
RC5
17
PIC16F870
RC6/TX/CK
RC7/RX/DT
18
natural o el BCD natural (contador de dcadas).
VEE
1 23
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
MCLR/Vpp/THV RB2
E
24
RB3/PGM
2
RA0/AN0 RB4
25
acumula el nmero de periodos. Dado que la frecuencia se
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3 26
RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
5 28
VEE
1 23
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
MCLR/Vpp/THV RB2
E
24
RB3/PGM
2 25
4
5
6
7
8
9
10
11
12
13
14
3 26
RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
5 28
RA3/AN3/VREF+ RB7/PGD
6
R1
7
RA4/T0CKI
RA5/AN4 RC0/T1OSO/T1CKI
RC1/T1OSI
RC2/CCP1
11
12
13
mecnica y recientemente, los dispositivos digitales han
empezado a reemplazarlos.
10k 14
RC3
15
RC4
16
RC5
17
RC6/TX/CK
18
RC7/RX/DT
PIC16F870
Existen odmetros que miden la distancia en millas as como
tambin los hay para medir kilmetros y metros, algunos tienen
PERIMETRO
2 la capacidad de borrarse (parciales) y ponerse en cero
mientras que otros son permanentes, los automviles
P= PI * RAIZ 2
generalmente traen un odmetro parcial y uno permanente.
VEE
D0
D1
D2
D3
D4
D5
D6
D7
MCLR/Vpp/THV RB2
E
24
RB3/PGM
2 25
RA0/AN0 RB4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3 26
RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
5 28
RA3/AN3/VREF+ RB7/PGD
6
RA4/T0CKI
7 11
RA5/AN4 RC0/T1OSO/T1CKI
12
RC1/T1OSI
R1 RC2/CCP1
13
10k 14
RC3
15
RC4
16
RC5
17
RC6/TX/CK
18
RC7/RX/DT
PIC16F870
Programacin V
ROBOTICA MOVIL
Motor servo
Como se conoce, la posicin de un servo motor est determinada por el ancho del pulso que
se aplica a su pin de control (para el caso de los motores HS-311 el cable amarillo). En el
caso del motor HS-311, la posicin de 0 se consigue con un pulso de 0.5 ms, la posicin
central de 90 con un pulso de 1.5 ms y el extremo de 180 con un pulso de 2.5 ms.Para
controlar la posicin del motor usar la funcin pulsout, cuya sintaxis es:
Pulsout pin, ancho_pulso
La cual genera un ancho de pulso determinado por su segundo parmetro de entrada en el pin
determinado. Por ejemplo:
Dim XX As Byte
TRISB=0
PORTB=0
For XX=1 To 25 Step 1
PulsOut PORTB.0, 150
DelayMS 10
Next
Device 16F628A
XTAL 20
Dim m As Byte
Dim n As Byte
TRISB=0
PORTB=0
For m=50 To 250 Step 1
PulsOut PORTB.0,m
DelayMS 10
Next
For m=250 To 50 Step -1
PulsOut PORTB.0,m
DelayMS 10
Next
Vamos a ir un poco ms adelante, y controlaremos la posicin del motor con dos pulsadores:
uno para girar el motor a una posicin y el otro para llevarlo a la posicin contraria.
Device 16F628A
XTAL 20
CMCON=7
Dim control As PORTB.1
Dim incrementar As PORTA.0 'Pin de pulsador para incremento
Dim disminuir As PORTA.1 'Pin de pulsador para decremento
Dim X As Byte 'x de tamao 256
Dim r As Byte 'y de tamao 256
TRISB=0
PORTB=0
X=150 ; 'Posicin inicial del servo motor
inicio:
PulsOut control,X 'Enva x por el pin portb.1 (control)
GoSub timer 'Subrutina de chequeo del pulsador
GoTo inicio
timer:
If incrementar=0 Then GoSub mas 'Si el p esta a tierra, ir a subr "mas"
If disminuir=0 Then GoSub menos 'Si el p esta a tierra, ir a subr "menos"
Return
mas: 'Subrutina de aumento de posicin
DelayMS 10
X=x+1 ; 'Aumento del pulso de salida
If X>200 Then X=200 'Determina un valor mximo de 200
Return
menos: 'Subrutina de disminucin de posicin
DelayMS 10
X=x-1 'Disminucin del pulso de salida
If X<100 Then X=100 'Determina un valor mnimo de 100
Return
End
Programacin VI
Robtica sensorial
El sensor Pir detector de movimientos por infrarrojos
resulta muy adecuado para su empleo en robots, gracias a
su pequeo tamao y bajo consumo. El sensor incluye una
lente tipo fresnel de plastico que le proporciona un
alcance de 5 metros y un angulo de deteccin de 60 . La
seal de salida es compatible TTL y la alimentacin es
de 5V con un consumo de tan solo 350 uA mientras esta en
reposo. Sus reducidas dimensiones de solo 25 x 35 x 18
mm hacen posible su utilizacin en todo tipo de robots y
dispositivos sensores.
Actividades de programacin VI
Programacin VII
IDEA PRINCIPAL, SE CONFIGURA UNA INTERFASE GRAFICA CON 4 BOTONES, QUE TRANSMITIRAN UN
CODIGO EN HEXA. EN ESTE CASO SE TRANSMITEN LETRAS.
NUESTRO RECEPTOR, (EL MICRO) DECODIFICA CADA ELEMENTO Y BUSCARA LA INSTRUCION DESEADA.
EN ESTE CASO SE QUIERE COMANDAR ELECTROVALVULAS DE RIEGO POR ZONAS.
End Sub
End Class
CODIGO PROTON
Include "modedefs.bas"
Device 16F877A
Xtal 20
Serial_Baud = 9600
Rsout_Pin = PORTC.6
Rsout_Mode = TRUE
Rsout_Pace = 1
Rsin_Pin = PORTC.7
Rsin_Mode = TRUE
Hserial_Baud = 9600
Hserial_RCSTA = %10010000
Hserial_TXSTA = %00100100
Hserial_Clear = On
PORTB=0
All_Digital=true
DIM valor AS Byte
inicio:
HSerIn 1000, inicio, [valor]
If valor = "a" Then PORTB.1=1
If valor = "g" Then PORTB.2=1
If valor = "b" Then PORTB.3=1
If valor = "l" Then PORTB.4=1
Clear valor
GoTo inicio
Comandos y Directivas
ADIN Leer anlogo a bordo de un convertidor digital.
ASM-ENDASM Inserte el cdigo de la seccin de idiomas.
BOX dibujar un cuadrado en un LCD grfico.
BRANCH computarizada (equivalente a ON GOTO ..).
BRANCHL se ramifican de la pgina (Long Branch).
BREAK Salir de un FOR-NEXT, REPEAT-UNTIL, o mientras WEND antes de tiempo.
BSTART Enviar una condicin START para el bus I2C.
BStop Enviar un estado de STOP al bus I2C.
BRESTART Enviar una condicin RESTART "para el bus I2C.
Busack Enviar una condicin RECONOCEN al bus I2C.
Busin Lee bytes de un dispositivo I2C.
BUSOUT Escribe bytes a un dispositivo I2C.
BUTTN Detecta rebote al pulsar una tecla.
Call Subrutina en lenguaje ensamblador.
CDATA Definir inicial contenido de la memoria.
CIRClE Dibuje un crculo en un LCD grfico.
CLEAR Coloque una variable o en un estado de bajo,o borrar todas las reas de RAM.
CLEARBIT Borrar un poco de un puerto o variable, con un ndice variable.
CLS Borrar la pantalla LCD.
CONFIG Set o configuraciones de programacin Perd mi fusible.
COUNTER Cuente el nmero de impulsos que ocurren en un PIN.
CREAD Leer datos de la memoria de cdigo.
CURSOR Site el cursor en la pantalla LCD.
CWRITE Escribir datos en cdigo de la memoria.
DATA Definir inicio del contenido en la memoria.
DEC Decremento de una variable.
DECLARE Ajuste los parmetros de la coleccin de rutina.
DELAYMS PAUSA (resolucin 1mSec).
DELAYUS PAUSA (resolucin 1uSec).
DEVICE Elija el tipo de PIC micro.
DIG Devuelve el valor de un dgito decimal.
DIM Crear una variable.
DISABLE DISABLE interrupciones de software que estaban habilitados anteriormente.
DTMFOUT Producir una nota DTMF Touch Tone para telefona.
Edata Definir inicial contenido de EEPROM de a bordo.
ENABLE interrupciones de software para desconectar anteriormente.
END detener la ejecucin del programa BASIC.
EREAD Leer un valor de EEPROM de a bordo.
EWRITE Escriba un valor en la memoria EEPROM de a bordo.
FOR..TO.NEXT..STEP ejecutar instrucciones.
FREQOUT Generar uno o dos tonos, de distinta o las mismas frecuencias.
GETBIT Examine un poco de un puerto o variable, utilizando un ndice variable.
GOSUB llamar a una subrutina BASIC en una etiqueta especificada.
GOTO Continuar la ejecucin en una etiqueta especificada.
HBSTART Enviar una condicin START para el bus I2C con el mdulo MSSP.
HBSTOP Enviar un estado de STOP al bus I2C utilizando el mdulo MSSP.
HBRESTART Enviar una condicin RESTART "para el bus I2C con el mdulo MSSP.
HBUSACK Enviar una condicin RECONOCEN al bus I2C utilizando el mdulo MSSP.
HBUSIN Leer de un dispositivo I2C con el mdulo MSSP.
HBUSOUT Escriba a un dispositivo I2C con el mdulo MSSP.
HIGH Hacer un PIN o un puerto de alto.
HPWM generar una seal PWM utilizando el mdulo CCP.
HRSIN recibir datos del puerto serie de dispositivos que contienen un USART.
HRSOUT Transmitir datos desde el puerto serie de dispositivos que contienen un USART.
HSERIN recibir datos del puerto serie de dispositivos que contienen un USART.
HSEROUT Transmitir datos desde el puerto serie de dispositivos que contienen un USART.
HRSIN2 Igual que HRSIN pero utilizando una segunda USART si est disponible.
HRSOUT2 Igual que HRSOUT pero utilizando una segunda USART si est disponible.
HSERIN2 Igual que HSERIN pero utilizando una segunda USART si est disponible.
HSEROUT2 Igual que HSEROUT pero utilizando una segunda USART si est disponible.
IF .. THEN .. ELSEIF .. ELSE .. ENDIF condicional ejecutar instrucciones.
INC Incremento de una variable.
INCLUDE carga un fichero BASIC en el cdigo fuente.
INKEY escaneo de un teclado.
INPUT Hacer un pin de entrada.
[LET] Asignar el resultado de una expresin a una variable. Facultativo de mando
LCDREAD Leer un solo byte de un LCD grfico.
LCDWRITE Escribe bytes a un LCD grfico.
LEFT$ Extracto n cantidad de caracteres de la izquierda de una cadena
LDATA Place informacin en la memoria de cdigo. Para el acceso de los LREAD.
LINE Dibuja una lnea en cualquier direccin en un LCD grfico.
LineTo DIBUJA lnea recta en un LCD grfico.
LOADBIT establecer o borrar un bit de un puerto o variable, con un ndice variable.
Lookdown Buscar una tabla lookdown, constante de un valor.
LOOKDOWNL Buscar lookdown constante o variable de mesa para un valor.
LOOKUP Fetch un valor constante de una tabla de bsqueda.
LOOKUPL Fetch un valor constante o variable de tabla de bsqueda.
LOW Hacer un pin o un puerto de bajo.
LREAD Leer un valor de una tabla y colocar en LDATA variable.
MID$ Extracto n cantidad de caracteres de una cadena comenzando desde la izquierda.