TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: santiago en 27 de Diciembre de 2006, 13:56:35
-
como imprimir los datos que ingreso desde teclado a una impresora matricial con un pic 16f877a
-
Hola!
Suponiendo que ya estas leyendo el teclado correctamente, solo tenes que enviar los 8 bits en paralelo a D0...D7 del puerto de la impresora, y leyendo los dos o tres bits de esta que te informan si te quedaste sin papel, si esta on-line, etc. Tambien podes enviar caracteres de control (el ASCII 12 por ejemplo, si la memoria no me falla, es el salto de pagina en varias impresoras), etc.
Cualquier pagina que podes encontrar en google sobre puerto paralelo e impresoras matriciales te va a brindar los codigos de que te hablo....
Saludos!
-
hola AITOPES, gracias por la ayuda, la parte del teclado me funciona correctamente porque visualizo en una LCD. me parece que lo que me indicas es que unicamente debo utilizar los códigos ascii normalmente y leer las lineas de busy, strobe.....
-
Exacto! Suerte, y comenta como te fue.
PD: Que lenguaje de programacion estas usando?
-
lo voy a intentar, gracias!
Este proyecto lo comence a hacer en basic, pero de vez en cuando utilizo C o ensamblador.
La impresora que debo controlar también tiene puerto serie, que me resulta más facil, serie o paralelo???
-
Nunca intente controlar una impresora, pero a priori, me parece mas simple el control via puerto paralelo. Al menos, no vas ha tener que hilar tan fino con los tiempos de la comunicacion, y el soft va a ser mas sencillo.
Saludos.
-
A mi parecer, pienso que es más fácil utilizar la comunicación serie, porque podrás aprovechar la USART del PIC. Se trataría únicamente de configurar los parámetros de la conexión (velocidad, paridad, bit de stop...) y listo.
Por el contrario, si haces la comunicación por paralelo tendrás que implementar el protocolo vía software.
-
porque podrás aprovechar la USART del PIC
Estaba covencido que era un 16f84A.... , pero veo que es un 877!!
¿Sera la hora de la madrugada que es? O el circuito que tengo que entregar ,añana y no se si llego? ;)
-
Jjaja, no te preocupes Ariel, eso pasa en las mejores familias :D
¿No tienen los 16F84 USART también? :mrgreen:
-
Nunca los use...pero tenia entendido de que no. Ya veo que hasta en eso estoy errado! :)
-
A mi parecer, pienso que es más fácil utilizar la comunicación serie, porque podrás aprovechar la USART del PIC. Se trataría únicamente de configurar los parámetros de la conexión (velocidad, paridad, bit de stop...) y listo.
Por el contrario, si haces la comunicación por paralelo tendrás que implementar el protocolo vía software.
Me parece que si, creo que es mas facil utilizar el usart pero alguien tiene idea de como hacerlo, como manejaría los datos provenientes desde la impresora
-
¿Que impresora tenes?
-
Hola, esto del control de impresora, me recuerda mis comienzos con las viejas matriciales, en DOS que no tenian modo grafico, y habia que programar "a mano" byte por byte para formar el caracter... se acuerdan los argentinos cuando teniamos por monedas los "australes"... ahora seria muy simple, en ese momento era un caracter generado, o escribir la "A" hacer un retroceso y sobreescribir "=" ;-)
bueno, eso me sirvio para implementar y entender como funcionan las impresoras seriales
lo que hice, fue controlarla en Visual Basic, por el puerto, luego lo adapte a Picbasic, que es casi directo (las tramas a enviar, no los codigos ;-))
como ejemplo'*****************************************************************
ENCABEZADO:
gosub linea ' imprime un renglon de asteriscos
serout portb.0,6,[13,10,27,121,1,27,119,1,27,122,1," LAVADERO ",13,10," * Solis * ",13,10]
' LETRAS DOBLE LARGO LETRAS DOBLE ancho LETRAS sombreadas
serout portb.0,6,[27,122,0,27,119,0,27,121,0,"* Cel. 03465 15593145 *",13,10] ' cierre LETRAS sombreadas
' cierre LETRAS DOBLE ancho cierre LETRAS DOBLE LARGO
gosub linea ' imprime un renglon de asteriscos
RETURN
'*******************************************************************************
'transmite a 9600 sin max 232 'WRITE Address,Value
'leer 'leer el estado del contador en eeprom, incrementar en uno y grabar
TICKET: '6 ES EL MODE, SERIA N9600
READ 1,UNIDAD ;CARGO EL ESTADO DEL CONTADOR
serout portb.0,6,[13,10,13,10,27,121,1," Ticket Nro. ",27,119,1]' dos renglones en blanco
for T=4 to 0 step -1 ' toma cada digito del contador,lo pasa a ASCII y lo imprime
serout portb.0,6,[UNIDAD DIG T + 48] ' para colocar tambien los ceros a la izquierda
next T
serout portb.0,6,[13,10,27,119,0,27,121,0,13,10]
' cierre LETRAS DOBLE ancho cierre LETRAS DOBLE LARGO
gosub linea ' imprime un renglon de asteriscos
serout portb.0,6,[13,10," Conserve este ticket",13,10," sera requerido en",13,10," Porteria",13,10]
serout portb.0,6,[27,122,1," GRACIAS! ",13,10,27,122,0] ' LETRAS sombreadas
gosub linea ' imprime un renglon de asteriscos
serout portb.0,6,[13,10,"COMPROBANTE DE LAVADO",13,10," PARA SU CONTROL ",13,10," VALOR 8 PESOS",13,10]
GOSUB ENCABEZADO
gosub linea ' imprime un renglon de asteriscos
RENGLON:
FOR T=0 TO 8 '12 4 RENGLONES EN BLANCO
serout portb.0,6,[13,10] ' un renglon en blanco
NEXT T
T=0
es a modo de ejemplo, y lo copy/paste de un programa mas extenso... y generaba un ticket
los numeros, corresponden al tipo de impresora, mirar en su manual, hay codigos que estan estandarizados... 10,13, 27 y otros pueden o no ser iguales....
espero les sirva
Un abrazo!
Feliz año
Norberto
-
Se que este tema lleva tiempo y que nos han mostrado un ejemplo de codigos para controlar una impresora matricial.
ftp://ftp.cise.ufl.edu/pub/mirrors/LPRng/RESOURCES/PPD/epson.htm
Estaba imprimiendo basandome en el ejemplo que muestra todopic pero creo que hace falta que todos entendamos el porque? y como hacer cambios en relación a ello por eso pongo este enlace.
-
ja ja, gracias Sandi, es que lo he dado por sabido.... :D tienes razón, buen aporte, voy a tratar de colocarlo aquí en la pagina...
y me hiciste recordar nuevamente viejos tiempos... :mrgreen:
Norberto