impresora térmica de interfaz con 8051

0

Quiero conectar una impresora térmica con un microcontrolador 8051. La impresora térmica tiene un puerto paralelo DB25. No obtuve la información sobre el controlador de dispositivo de la impresora térmica.
 La impresora que estoy usando es una cbm-1000.

RM - probablemente: impresora Citizen CBM1000 según el manual aquí

La única información que tengo disponible es:

  • (1). Escribe el byte en el puerto de datos.
  • (2). Verifique si la impresora está ocupada.
    Si la impresora está ocupada, no aceptará ningún dato,
    por lo tanto, cualquier dato que se escriba se perderá.

  • (3). Tome la luz estroboscópica (Pin 1) bajo. Esto le dice a la impresora que hay los datos correctos en las líneas de datos. (Pines 2-9)

  • (4). Vuelva a colocar el estroboscópico en alto después de esperar aproximadamente 5 microsegundos después de colocar el estroboscópico en posición baja. (Paso 3)

Por favor, ayúdame en este proyecto

setb p1.5 busy 
bit P1.5 strobe 
bit P1.4 port

Data equ P2 

org 0h 

start:   
call word_Welcome 
call enter call word_Lab     
call enter 

quit:   sjmp Quit 

Printchar: 
mov portData,A 
jb busy,$ 
setb strobe 
clr strobe 
acall delay 
Setb strobe 
acall delay 
ret 

delay: 
mov R7,#90 
del1:   
mov R6,#50 
DJNZ R6,$ 
DJNZ R7,del1 
ret 


word_welcome: 
mov DPTR,#Text_welcome 

lagi1:  
clr A 
movc A,@A+DPTR 
cjne A,#'$',Print1 
sjmp Out1 

Print1:
call Printchar 
inc dptr 
call delay 
sjmp lagi1 

Out1:   
ret  

word_Lab: 
mov DPTR,#Text_lab 

lagi2:  
clr A 
movc A,@A+DPTR 
cjne A,#'$',Print2 
sjmp Out2 

Print2: 
call Printchar 
inc dptr 
call delay 
sjmp lagi2 

Out2:   
ret  

Enter: 
mov A,#0dh 
call printchar 
call delay 
mov A,#0ah 
call printchar 
ret 

Text_welcome:   
DB 'aWelcome To$' 

Text_Lab:   
DB 'Computer Laboratory$' 
end 
    
pregunta shoaib khan

2 respuestas

1

SUMMARY

  • Enlace al manual de más de 170 páginas

  • Consulte el pseudo código para escribir en la impresora a continuación

  • PERO vea la nota al final de esta respuesta: ¡su impresora puede ser una versión de interfaz en serie y no paralela!

Puede descargar un manual de la impresora Citizen CBM1000 aquí . Esto proporciona mucha información útil. (173 páginas en inglés + unas 40 en alemán.

Su descripción del protocolo de interfaz parece adecuada para permitir la transferencia de datos SI lo interpreta de forma ligeramente diferente a como está escrito.

¿Puede proporcionar más detalles sobre las dificultades que tiene?

Aquí es cómo interpretaría las instrucciones de escritura de datos.
 NB: esta interpretación PUEDE ser incorrecta.

  • Inicialización
    Establezca el pin del estroboscópico en alto

  • Para cada carácter de datos, siga los siguientes pasos.

  • Paso 1: Escribir datos en el puerto de datos.
    Compruebe la línea ocupada.
    Si se configura la línea ocupada, repita el paso 1.
    de lo contrario, si la línea ocupada no está configurada, realice el paso 2.

  • Paso 2
    Perno estroboscópico de ajuste bajo
    Espera 5+ microsegundos
    Establezca el pin de luz estroboscópica alto.

MUY IMPORTANTE - (Esta nota se puede reescribir a su debido tiempo para hacer un comentario general)

SI su impresora TIENE un conector DB25, es probable que sea una versión "RS232" en serie.

Existen versiones en paralelo y en serie; consulte el enlace del manual anterior.

Si es una versión en serie, es probable que el protocolo paralelo que ha proporcionado no sea el correcto para usar.

Proporcione más información de identificación sobre su impresora para ayudar a establecer si se trata de una versión de puerto serie o paralelo.

    
respondido por el Russell McMahon
1

Por favor, dinos lo que ya has probado. Un ejemplo de código, esquema, número de parte / hoja de datos 8051 también puede ser útil.

Desde el manual (bastante bien escrito) que Russell proporcionó amablemente, parece que la impresora utiliza por defecto el modo de compatibilidad en el inicio, que parece ser una interfaz paralela de 8 bits de una sola dirección (host - > impresora) diseñada para enviar comandos.
Desde allí, puede cambiar al "Modo Nibble" (2 x 4 bits enviados consecutivamente) o al "Modo Byte" en paralelo bidireccional de 8 bits (lo que requiere que el host pueda cambiar la dirección del pin)
La página 162 proporciona detalles del procedimiento de inicio en el modo de compatibilidad y las siguientes páginas describen la operación en modo nibble o byte.

Se mencionan algunos conmutadores DIP y tablas que describen sus acciones que puede querer comprobar.
Tenga en cuenta las características eléctricas de las señales de entrada / salida que se describen en la página 30, que mencionan los niveles de CMOS, la recuperación de 50k a Vdd para datos y la recuperación de 3k para todas las demás señales en par trenzado.

Editar: parece que se está utilizando una interfaz serial. Aquí hay una página en la interfaz paralela de Centronics con fines de comparación.
Aquí hay una página en la interfaz DB25 serial .

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas