Professional Documents
Culture Documents
Prog
;*********************************************************
;*********** Laboratorio PICAXE DISPLAY LCD **************
;********** Desarrollado por Ing Martin Torres ***********
;*********************************************************
;*Notas: La siguiente rutina, presenta el ejemplo n1 del*
;* control de un LCD 16x2 en modo 4 bits
;*********************************************************
;*******Veamos paso a paso la rutina ********
;*********************************************************
;EN ESTA SECCION CONFIGURAMOS LOS PINES DE ENTRADA Y SALIDA
;NO USAR B11-12-13 YA QUE SON DE USO INTERNO DEL PROGRAMA
;*********************************************************
SYMBOL RS
= 2
; 0 = Command
1 = Data
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
SYMBOL
E
DB4
DB5
DB6
DB7
RSCMDmask
RSDATmask
get
bite
rsbit
=
=
=
=
=
=
=
=
=
=
3
4
5
6
7
%00000000
%00000100
b11
b12
b13
;
;
;
;
;
0 =
LCD
LCD
LCD
LCD
Idle
Linea
Linea
Linea
Linea
1 = Active
Dato 4
Dato 5
Dato 6
Dato 7
;********************************************************
;EN ESTA SECCION, ARMAMOS EL CUERPO PRINCIPAL DEL PROGRAMA
;********************************************************
ctrl_LCD:
GOSUB InitialiseLcd
EEPROM 6,("Lab Ucontrol")
llegar a la posicion 21
FOR get = 5 TO 21
READ get,bite
registros del conteo
GOSUB SendDataBite
pause 100
NEXT
salto_2da_linea:
bite = $C0
GOSUB SendCmdBite
Mensaje_2da_linea:
EEPROM 25,("Ing MartinTorres") ; guardamos la palabra en la posicion 25
hasta la 39
FOR get = 25 TO 41
; cuenta hasta 41 por que es la ultima
letra de esta frase
READ get,bite
GOSUB SendDataBite
;salta e imprime la frase
pause 50
NEXT
pause 100
goto ctrl_LCD
;****************************************************************
;**** Rutina de control estandar del LCD - No Tocar *************
;****************************************************************
InitialiseLcd:
FOR get = 0 TO 5
READ get,bite
GOSUB SendInitCmdBite
NEXT
EEPROM
EEPROM
EEPROM
EEPROM
EEPROM
EEPROM
RETURN
0,(
1,(
2,(
3,(
4,(
5,(
$33
$32
$28
$0C
$06
$01
)
)
)
)
)
)
;
;
;
;
;
SendInitCmdBite:
PAUSE 15
8-bit / 8-bit
8-bit / 4-bit
Formato Display
Display On
Mueve Cursor
; Retardo 15mS
SendCmdBite:
rsbit = RSCMDmask
SendDataBite:
pins = bite & %11110000 | rsbit
PULSOUT E,1
pins = bite * %00010000 | rsbit
PULSOUT E,1
rsbit = RSDATmask
RETURN
;*****************************************************************
;*****************************************************************
;************************* FIN PROGRAMA **************************
;*****************************************************************
;*****************************************************************
;************ Desarrollado por Ing Martin Torres *****************
;*****************************************************************
;*****************************************************************
;********* http://electroescuelavirtual.blogspot.com/ ************
;********* http://www.automatismos-mdq.com.ar/blog/ **************
;********* http://torreselectronico.com/ *************************
;********* http://www.Ucontrol.com.ar/ ***************************
;********* http://www.YoReparo.com/ ******************************
;*****************************************************************
;*****************************************************************
Segim
;*********************************************************
;*********** Laboratorio PICAXE DISPLAY 7 SEGMENTOS******************
;********** Desarrollado por Ing Martin Torres *******************
;*********************************************************
;*Notas: La siguiente rutina, presenta el ejemplo n2A para*
Rer
;*********************************************************
;*********** Laboratorio PICAXE DISPLAY 7 SEGMENTOS******************
;********** Desarrollado por Ing Martin Torres *******************
;*********************************************************
;*Notas: La siguiente rutina, presenta el ejemplo n2A2 mencionando otra
manera***
;* para el control bsico de un Display de 7 segmentos
**********************
;*********************************************************
;*******Veamos paso a paso la rutina ********
;*********************************************************
let pins = 9
' %00001001 en display numero 9
pause 1000
let pins = 8
' %00001000 en display numero 8
pause 1000
let pins = 7
' %00000111 en display numero 7
pause 1000
let pins = 6
' %00000110 en display numero 6
pause 1000
let pins = 5
' %00000101 en display numero 5
pause 1000
let pins = 4
' %00000100 en display numero 4
pause 1000
let pins = 3
' %00000011 en display numero 3
pause 1000
let pins = 2
' %00000010 en display numero 2
pause 1000
let pins = 1
' %00000001 en display numero 1
pause 1000
let pins = 0
' %00000000 en display numero 0
pause 2000
;*****************************************************************
;************************* FIN PROGRAMA **************************
;*****************************************************************
;************ Desarrollado por Ing Martin Torres *****************
;*****************************************************************
;*****************************************************************
;********* http://electroescuelavirtual.blogspot.com/ ************
;********* http://www.automatismos-mdq.com.ar/blog/ **************
;********* http://torreselectronico.com/ *************************
;********* http://www.Ucontrol.com.ar/ ***************************
;********* http://www.YoReparo.com/ ******************************
;*****************************************************************
;*****************************************************************
Cuar
*********************************************************
;*********** Laboratorio PICAXE DISPLAY 7 SEGMENTOS******************
;********** Desarrollado por Ing Martin Torres *******************
;*********************************************************
;*Notas: La siguiente rutina, presenta el ejemplo n2B para*
;* la monitorizacion de la lectura analoga, en un Display de 7 segmentos
;*********************************************************
;*******Veamos paso a paso la rutina ********
;*********************************************************
main:
readadc 0,b1
if b1 > 150 then show9
if b1 > 130 then show8
if b1 > 110 then show7
if b1 > 90 then show6
if b1 > 70 then show5
if b1 > 50 then show4
if b1 > 30 then show3
if b1 > 20 then show2
if b1 > 10 then show1
show0:
let pins = 0
' %00000000 en display numero 0
goto main
show1:
let pins = 1
' %00000001 en display numero 1
goto main
show2:
let pins = 2
' %00000010 en display numero 2
goto main
show3:
let pins = 3
' %00000011 en display numero 3
goto main
show4:
let pins = 4
' %00000100 en display numero 4
goto main
show5:
let pins = 5
' %00000101 en display numero 5
goto main
show6:
let pins = 6
' %00000110 en display numero 6
goto main
show7:
let pins = 7
' %00000111 en display numero 7
goto main
show8:
let pins = 8
' %00001000 en display numero 8
goto main
show9:
let pins = 9
' %00001001 en display numero 9
goto main
;*****************************************************************
;*****************************************************************
;************************* FIN PROGRAMA **************************
;*****************************************************************
;*****************************************************************
;************ Desarrollado por Ing Martin Torres *****************
;*****************************************************************
;*****************************************************************
;********* http://electroescuelavirtual.blogspot.com/ ************
;********* http://www.automatismos-mdq.com.ar/blog/ **************
;********* http://torreselectronico.com/ *************************
;********* http://www.Ucontrol.com.ar/ ***************************
;********* http://www.YoReparo.com/ ******************************
;*****************************************************************
;*****************************************************************
Volt = w0 - 100
readadc10 1, w0
let w0=w0 min 300
let w0=w0 max 555
Amp = w0-300
return
DisplayAmp:
if Amp>128 then pos_amp
if Amp<128 then neg_amp
if Amp=128 then oamp
goto d1
pos_amp:
Amp=Amp-128
goto d1
neg_amp:
b12=45
GOSUB SendDataBite
Amp=128-Amp
goto d1
oamp:
Amp=0
goto d1
d1:
b5=amp
b10=b5/100
b12=b10+48
GOSUB SendDataBite
b10=b10*100
b5=b5-b10
b10=b5/10
b12=b10+48
GOSUB SendDataBite
b12 = 46
Gosub SendDataBite
b10=b10*10
b5=b5-b10
b10=b5
b12=b10+48
GOSUB SendDataBite
Return
DisplayVolt:
b10=b5/100
b12=b10+49
GOSUB SendDataBite
b10=b10*100
b5=b5-b10
b10=b5/10
b12=b10+48
GOSUB SendDataBite
b12 = 46
Gosub SendDataBite
b10=b10*10
b5=b5-b10
b10=b5
b12=b10+48
GOSUB SendDataBite
Return
;*******************************************************************
;*******estas son las rutinas de control del lcd N-O T-O-C-A-R
*******************
;*******************************************************************
InitialiseLcd:
FOR get = 0 TO 5
READ get,bite
GOSUB SendInitCmdBite
NEXT
EEPROM 0,( $33 ) ; habilita lcd en 8-bit / 8-bit
EEPROM 1,( $32 ) ; habilita lcd en 8-bit / 4-bit
EEPROM 2,( $28 ) ; Formatea el Display
EEPROM 3,( $0C ) ; Arranca el Display
EEPROM 4,( $06 ) ; Mueve el cursor
EEPROM 5,( $01 ) ; Limpia la pantalla
RETURN
SendInitCmdBite:
PAUSE 15
; retardo 15mS
SendCmdBite:
rsbit = RSCMDmask
; envia el comando de registro
SendDataBite:
pins = bite & %11110000 | rsbit ; Put MSB out first
PULSOUT E,1
; Give a 10uS pulse on E
pins = bite * %00010000 | rsbit ; Put LSB out second
PULSOUT E,1
; Give a 10uS pulse on E
rsbit = RSDATmask
; Send to Data register next
RETURN
;*****************************************************************
;************************* FIN PROGRAMA ************************
7
;********** http://electroescuelavirtual.es.tl/ *********
;************* http://www.ucontrol.com.ar/ ****************
;EN ESTA SECCION, CONFIGURAMOS LOS PINES DE SALIDA
;***************** Ing Martin Torres *********************
SYMBOL RS
=2
; 0 = Command 1 = Data
SYMBOL E
=3
; 0 = Idle
1 = Active
SYMBOL DB4
=4
; LCD Linea Dato 4
SYMBOL DB5
=5
; LCD Linea Dato 5
SYMBOL DB6
=6
; LCD Linea Dato 6
SYMBOL DB7
=7
; LCD Linea Dato 7
SYMBOL RSCMDmask = %00000000 ; Select Command register
SYMBOL RSDATmask = %00000100 ; Select Data register
SYMBOL get
= b11
SYMBOL bite
= b12
SYMBOL rsbit
= b13
;********************************************************
;NO USAR B11-12-13 YA QUE SON DE USO INTERNO DEL PROGRAMA
;********************************************************
ctrl_LCD:
GOSUB InitialiseLcd
; vamos a la rutina de inicializacin del LCD
if input 0 = 1 then mensaje_dos
; si la entrada 0 esta en bajo, ir al mensaje dos
if input 0 = 0 then mensaje_uno
; si la entrada 0 esta en alto, ir al mensaje uno
goto ctrl_LCD
;************************************************************
;********* ahora vamos a predefinir los mensajes**********************
;************************************************************
mensaje_uno:
EEPROM 6,("Articulo Ucontrol") ;guarda la palabra en la posicion6 y hasta llegar a la
posicion 22
FOR get = 6 TO 22
;cuenta hasta 22 por que son 16 letras,osea 6 + 16
=22
READ get,bite
;lee la variables que guardaron los registros del
conteo
GOSUB SendDataBite
;salta e imprime la frase
pause 100
NEXT
salto_2da_linea:
bite = $C0
; saltamos ala segunda linea
GOSUB SendCmdBite
Mensaje_2da_linea:
EEPROM 208,("Por Ing Torres") ; guardamos la palabra en la posicion 24 hasta la 36
FOR get = 24 TO 36
; cuenta hasta 36 por que es la ultima letra de esta
frase
READ get,bite
GOSUB SendDataBite
;salta e imprime la frase
pause 50
NEXT
pause 100
goto ctrl_LCD
mensaje_dos:
;*****************************************************************
;************************* FIN PROGRAMA ************************