Cómo mostrar exámenes de caracteres chinos en un microcontrolador
Basado en la aplicación del sistema de control de pantalla LED, se diseña la arquitectura y el flujo de trabajo de la pantalla gráfica LED. Entre ellos, el sistema de software y el sistema principal de hardware de control de transmisión inalámbrica utilizan comunicación en serie para descargar el programa para realizar la transmisión de información de texto.
2.1 Análisis general
Composición del sistema de visualización LED
El sistema de visualización gráfica LED consta de un sistema de control de software, un sistema de transmisión inalámbrica, un controlador principal del equipo y una pantalla LED. celosía, fuente de alimentación y otras partes. La estructura básica es la siguiente:
Figura 4-1 El marco general de la pantalla LED
Flujo de trabajo del sistema:
Las principales tareas del sistema de control de software son edición de gráficos y extracción y almacenamiento de fuentes, vista previa de imágenes y transferencia de archivos. El sistema de transmisión inalámbrica completa principalmente la transmisión de información de archivos desde la PC a la pantalla LED. La tarea principal de la matriz de puntos LED en el sistema de control de hardware es mostrar información a través del control actual y controlar la matriz de puntos LED para que se organice en filas y columnas mediante el control del método de accionamiento de escaneo del microcontrolador, controlando así el dispositivo y, en última instancia, realizar la función de visualización gráfica recibida.
2.2 Análisis y diseño del módulo de software informático
El módulo de software se divide en la parte de edición y la parte de comunicación de control. La parte de edición realiza la función de edición de archivos gráficos y la parte de comunicación completa la transmisión de archivos al módulo de almacenamiento del microcontrolador a través de la comunicación en serie RS-232C. La parte de comunicación se presentará en detalle en el Capítulo 3.
El diseño del sistema utiliza el sistema operativo Windows para abrir la ventana de edición de texto. Los píxeles del área del cliente son los mismos que los de la pantalla de matriz de puntos LED real. Las funciones son similares a las de la herramienta de edición de documentos de Word, incluida la edición. módulo, módulo de dibujo, módulo de edición de texto, módulo de control de color, módulo de carga de efectos de visualización, módulo de vista previa y módulo de descarga de información.
1. Módulo de edición
1) Además de las funciones de cortar, copiar y pegar generadas por Windows, el sistema también agrega funciones de deshacer y repetir.
(1) Seleccione la función deshacer para cancelar gradualmente el trabajo de edición anterior.
(2) Seleccione la función de repetición para realizar el último comando de operación del trabajo de edición anterior.
2) Dibujo: Las funciones de dibujo incluyen líneas rectas, rectángulos, elipses y círculos.
3) Edición de texto: incluye la edición de varias fuentes, estilos de fuente, tamaños de fuente, efectos, colores y edición de caracteres en posiciones designadas según aplicaciones especiales.
(1) Seleccione la función de texto, aparecerá un cuadro de selección de fuente y podrá seleccionar varias fuentes para editar.
(2) Abra el cuadro de diálogo para editar la posición del texto específico, ingrese la abscisa y la ordenada del texto y la posición de visualización requerida.
4) Módulo de control de color: Debido a las características específicas del campo de aplicación, se utilizan principalmente tres colores: rojo, verde y amarillo para lograr el control de color.
2. Agregar módulo de efectos: al agregar efectos de visualización y transmisión en una sola pantalla de archivos multipantalla en la comunicación de transmisión, se mejoran las funciones del sistema de control.
1) Efecto normal, la pantalla muestra información de forma estática.
2) El efecto de desplazamiento puede realizar la visualización de información en desplazamiento de izquierda a derecha y puede intercalar información estática.
3) Transmisión de información en una sola pantalla, guardando la información a transmitir.
4) La transmisión de información en múltiples pantallas realiza la fusión y el guardado de información de una sola pantalla editada y guardada en un solo archivo, lo que reduce en gran medida la complejidad de la transmisión de archivos.
3. Módulo de vista previa de imágenes: realiza la función de vista previa de la información de la fuente antes de la transmisión del archivo. Puede obtener una vista previa de cualquier forma de información de la fuente guardada antes de la transmisión e integrarla directamente en el archivo de la barra de herramientas para abrir el botón de la tecla de función. .
1) Los efectos de visualización y el orden de los efectos de visualización estáticos y de desplazamiento se pueden ajustar obteniendo una vista previa del archivo antes de la transmisión.
2) Visualización del tiempo, mostrando el intervalo de tiempo entre las diferentes pantallas que muestran información.
El diagrama de estructura del módulo de software es el siguiente:
Figura 3-2 Diagrama de estructura del módulo de software
Diseño e implementación del sistema de control de software p>
En el sistema de control de software de la pantalla LED, la edición de información de texto, el almacenamiento de información de fuentes, el procesamiento de efectos de visualización, la vista previa de imágenes y la comunicación del dispositivo son las tareas principales del diseño. Las siguientes cuatro funciones principales han sido investigadas y diseñadas en detalle.
4.1 Diseño e implementación de la función de edición
La edición es uno de los enlaces más importantes a la hora de mostrar el contenido y los efectos que se mostrarán en la pantalla LED. Este sistema está diseñado utilizando VC 6. 0 herramientas de desarrollo y VC para completar todo el trabajo de diseño.
Cree un proyecto basado en MFC AppWizard para abrir el área de texto en una vista de documento único. El proyecto se analiza y diseña de la siguiente manera:
1. Abriendo el área de texto:
Porque el número de píxeles de la pantalla LED aplicada es fijo y la resolución de la pantalla de la computadora. es obviamente más alto que La pantalla de visualización es mucho más alta, por lo que las coordenadas lógicas son diferentes, lo que significa que la imagen mostrada estará distorsionada, alargada o incluso distorsionada. Por lo tanto, el error se puede reducir eligiendo una proporción adecuada entre los píxeles de la pantalla del ordenador en la que se abre la ventana y el número de píxeles de la pantalla de visualización.
Existen muchas formas de solucionar este problema. Por ejemplo, el método de compresión de datos de matriz de puntos, porque en el entorno de Windows, el sistema tiene de forma predeterminada más de 4000 puntos por cada carácter chino, y cada carácter chino tiene 256 puntos para una pantalla grande con 16 × 16 puntos. Para los cálculos, se puede utilizar el método de tomar puntos a intervalos, horizontalmente. Cada carácter chino se compone de 256 puntos.
Pero para no distorsionar la imagen, este sistema utiliza el mismo número de píxeles en el área de texto abierto que el número de píxeles en la pantalla de visualización, evitando que los círculos se conviertan en elipses, los cuadrados en rectángulos, e incluso dibujos. La pendiente no cambia cuando es diagonal.
CMainFrame:: La función PreCreateWindow se utiliza para establecer el tamaño de toda la ventana, pero el marco de la ventana también incluye menús, barras de herramientas, barras de estado y áreas de cliente. Las áreas de texto definidas por el sistema requieren un área de cliente precisa para contener información de fuentes. Por lo tanto, la altura de la barra de estado y de la barra de herramientas debe sumarse a la ordenada que representa el tamaño del área del cliente, e incluso deben restarse los bordes del menú y los bordes de la ventana [1].
SetClientSize() //Función utilizada para establecer el tamaño del área del cliente
{ CRect rect
CSize winSize
int cx , cy = 0;
CControlBar * pBar
pBar = GetControlBar(AFX_IDW_StatusBar);
if ((pBar!= NULL) amp; amp (pBar- >IsWindowVisible())){
pBar->GetWindowRect(rect);
winSize = rect. size();
cy = (winSize.cy);}
pBar=GetControlBar(AFX_IDW_Toolbar);
if ((pBar!= NULL) amp ; amp(pBar->IsWindowVisible())){
pBar->GetWindowRect(rect);
winSize = rect. tamaño();
cy =(winSize.cy * 2);}
cx = 384 (384-m_clientSize.CX);
cy =( 192 (192-m_clientSize.
cy));
GetWindowRect(rect);
SetWindowPos(this, rect.left, rect.top, cx, cy, SWP_nozod);}
OnViewStatusBar(){
CFrameWnd::OnBarCheck(ID_VIEW_STATUS_BAR);
SetClientSize();}
Por emparejamiento El control preciso del área del cliente permite el número de píxeles en el área de texto para corresponder verdaderamente al número de puntos luminosos planos en la pantalla de visualización. Para no cambiar los píxeles en el área de texto debido a errores durante las operaciones de edición, el sistema limita el control máximo de la tabla [3. ] [9].
cs. Estilo amp= ~ WS _ MAXIMIZEBOX//Cancelar la maximización y fijar el tamaño del formulario.
2. Diseño de la función de edición:
En el sistema de control, la entrada de texto y gráficos se imagina como la edición de imágenes, de modo que el trabajo de edición se pueda completar en la mesa de dibujo. como se desee.
El dibujo de MFC siempre se envía al dispositivo a través del contexto del dispositivo (el contexto del dispositivo es el medio entre el dispositivo y los datos, que puede abreviarse como DC). DC almacena las propiedades del dispositivo y genera datos de dibujo. Para enviar datos de dibujo a un dispositivo en MFC, se debe preparar un objeto DC para el dispositivo, que es un objeto de una clase que hereda de CDC. Este objeto DC puede utilizar algunas funciones de dibujo de la clase CDC (como dibujar líneas rectas, círculos, cuadrados, etc.). Cada DC debe estar asociado con algunos de los llamados objetos GDI (objetos GD, como pinceles, pinceles, glifos). , mapas de bits, etc.) herramienta de dibujo) para que coincida con la función de dibujo de DC.
El sistema compila la función Línea() para dibujar una línea recta, la función Rectángulo() para dibujar un rectángulo, la función Elipse() para dibujar una elipse y la función Círculo() para completar el gráfico. edición [2] [3].
Cabe señalar que newPen se destruye: newPen. Llame al método DeleteObject. La destrucción de objetos GDI es muy importante, especialmente los objetos que creamos nosotros mismos, los cuales deben eliminarse en el momento adecuado (cuando el objeto GDI ya no esté conectado al DC). La única forma de eliminar un archivo adjunto es seleccionar otro objeto nuevo usando la función SeleccionarObjeto (el objeto antiguo se eliminará automáticamente). Puede elegir objetos prealmacenados de MFC para eliminar las dependencias de los objetos, ya que los objetos prealmacenados de MFC se destruirán automáticamente cuando no estén en uso. DeleteObject es una función miembro expuesta por la clase CGdiObject, por lo que todas sus subclases pueden usarla.
Entrada de texto: Genera un cuadro de diálogo para seleccionar el tipo de fuente a través de la clase CFontDialog.
CDC * pDC = GetDC();
LOGFONT m _ lFont
COLORREF m _ cTextColor
CFont myFont
CFont * pOldFont
CFontDialog FontDlg
FontDlg. lpLogFont = ampm _ lFont
fuente DLG . m _ cf colores RGB = m _ ctext color
FontDlg. m_cf.flag! =CF_INITTOLOGFONTSTRUCT
if (FontDlg.DoModal() = =IDOK)
{
FontDlg.
GetCurrentFont(fuente m_1);
m_cTextColor = FontDlg. GetColor();
}
Llame al método de entrada propio del sistema, incluidas fuentes, fuentes, colores, efectos, etc.
El sistema carga el cuadro de diálogo TextDialog y establece un sistema de coordenadas lógico con la esquina superior izquierda del área de edición de texto como origen de las coordenadas, la dirección positiva del eje X hacia la derecha y la dirección positiva del eje Y hacia abajo para realizar la posición especificada del texto Editar:
CString string;
CTextDlg TextDlg
//CRect rect. (TextDlg.m_ctrEdit.GetClientRect());
if (TextDlg.DoModal)==IDOK)
{
CRect rect (TextDlg.m_iPosX, TextDlg .m_iPosY,
TextDlg.m_iPosX 1000, texto DLG .m_iPosY 1000);
Str=TextDlg. m_sText
Mi Feng. createfont indirect(amp; m lFont);
pold font = pDC- gt; seleccionar objeto (ampmy font);
pDC->; settext color(m_ctext color); p>
pDC->;DrawText (str, rect, 0);
pDC->;seleccione objeto (fuente pold);
guardar instack(); /p>
Incrustar la función TextDialog() en la función OnFont(),
DDX_ Text(pDX, IDC_ POS-X, m _ iPosX // Ingrese el eje X en el texto); area Text
DDX_Text(pDX, IDC_POS_Y, m_iPosY); //Eje Y de entrada de texto en el área de texto
Control de color:
En En el En el sistema Windows, el color se define por el color verdadero, es decir, COLORREF es una palabra de cuatro bytes, tres de los cuales representan tres monocromos básicos, es decir, cada monocromo básico está representado por un byte, es decir, cada monocromo básico está representado por un byte. Hay 256 niveles de color para monocromo. Entonces, hay 16777216 variaciones de color en el color verdadero. Aunque hay tantos colores definidos en las computadoras, no es necesario ni posible que las pantallas LED se utilicen en aplicaciones y en la vida real. Debido a que los ojos humanos son sensibles a diferentes colores de luz, y el rojo, el verde y el amarillo son las células visuales humanas más sensibles, estos tres colores se convierten en colores primarios. Al mezclarlos en diferentes proporciones, se puede lograr una transición del blanco al negro. . de varios colores. Por lo tanto, también es el color más utilizado por la policía de tránsito.
Las pantallas LED se utilizan para publicidad legal en la sala de control de tráfico para brindar información y servicios al público. Según el área de aplicación específica, la pantalla gráfica tiene sólo tres variaciones de color. Por lo tanto, el sistema de control solo agrega los tres colores anteriores a la columna superior para cumplir con los requisitos de expansión futuros.
4.2 Extracción de fuentes
4.2.1 Introducción a los moldes de caracteres
La fuente de un carácter es un conjunto de números, pero su significado es fundamentalmente diferente del El significado de los números cambia. Registra la forma de los caracteres ingleses o chinos con la información de cada número [1].
En términos de hardware informático, no existe ningún concepto de caracteres chinos o inglés. El único concepto que conoce es el código interno (el valor rara vez utilizado del 128 de orden superior en la tabla ASCII está representado por dos grupos, es decir, el código interno de los caracteres chinos. Los 128 bits restantes de orden inferior están reservados para el inglés). caracteres, es decir, el código interno del inglés).
Si usa el disco de arranque para iniciar el sistema y usa el comando DIR, es posible que obtenga una cadena de caracteres inexplicables, pero de hecho son caracteres chinos. Si inicia UCDOS u otros sistemas de caracteres chinos, verá que son caracteres chinos con los que está familiarizado. En los sistemas de hardware, la información de fuentes en inglés generalmente se solidifica en la ROM, y los caracteres en inglés incluso se pueden ver en CMOS sin ingresar al sistema. En DOS, la información de fuentes chinas generalmente se registra en un archivo de fuentes chinas (la fuente preparada se coloca en una biblioteca estándar y es un archivo de fuentes de mapa de bits).
4.2.2 Tecnología de implementación de fuentes en el campo de las pantallas LED
Entre las tecnologías de implementación de software, actualmente existen muchos software de generación de fuentes. Después de abrir el software, ingrese los caracteres chinos y haga clic en "Buscar" para generar automáticamente la codificación de caracteres chinos de los datos hexadecimales y copiar los datos verticales que necesitamos en nuestro programa. Entre las tecnologías para implementar la extracción de fuentes mediante hardware, un método es agregar una biblioteca de fuentes resistentes al sistema de microcontrolador. Los caracteres chinos enviados por el controlador principal son sus códigos internos y utilizan dos bytes para representar un carácter chino. El módulo de control de la unidad de visualización busca la fuente de visualización en la biblioteca de caracteres chinos de acuerdo con el código incorporado para realizar la visualización de caracteres chinos. Debido a la robusta biblioteca de fuentes, cuando se muestran caracteres dinámicos, la unidad de visualización inteligente general solo acepta el código interno de caracteres chinos, por lo que el volumen de comunicación de datos se reduce considerablemente. Entonces "la velocidad de visualización de texto dinámico es rápida".
4.2.3 Análisis y diseño de extracción de fuentes en el sistema de control de software
Cómo extraer información de fuentes es el núcleo del diseño en el sistema operativo Windows y es la aplicación específica de la pantalla LED sistema de control. En el proceso de edición real, el sistema de control del software requiere que se puedan editar y guardar varias fuentes y tamaños de fuente. Por lo tanto, al diseñar el sistema, comprenda que el área de texto está compuesta de muchos píxeles y comprenda los caracteres de diferentes fuentes y tamaños como una imagen. Dado que el tamaño del área de texto abierta corresponde al tamaño de la pantalla LED, cada píxel en el área de texto se considera una matriz bidimensional en la unidad de matriz de puntos de 16×16. Debido a que todos los colores en el sistema tienen valores correspondientes, a cada píxel de un color diferente se le asigna un valor correspondiente diferente y luego a cada punto se le asigna un valor int, por lo que la información guardada son datos binarios. Con este diseño, no sólo podemos guardar texto en cualquier fuente y tamaño, sino también mostrar gráficos en cualquier unidad de matriz de puntos de 256 píxeles. La implementación de la extracción de fuentes en el sistema de control de software también evita cargar el módulo de fuentes duro en el microcontrolador, simplificando así el diseño del módulo de hardware.
Este artículo toma una pantalla monocromática como ejemplo para presentar el diseño del algoritmo de preservación de fuentes en el sistema:
COLORREF Mozi_Color se define como el color de un píxel para determinar el valor del color. de cierto punto. Si el valor es Oxffffff, significa que el punto es blanco y al punto se le asigna el valor 0. Dado que una pantalla monocromática solo tiene dos colores, rojo e incoloro, simplemente se le puede asignar un valor de 1, excepto el blanco.
CClientDC dc(this);
CFile myfile
Entero sin signo Mozi[192][384]= { 0 };
Carácter sin firmar mozi_data[192][48]= { 0 };
COLORREF mozi_color;
int fila, col
Esto - gt; hide caret() ;
for(fila = 0; fila lt192; fila ){
for(col = 0; col lt384; col ){ p>
Mozi color=do .
GetPixel (col, fila);
if (color Mozi = = Oxffffff)
{Mozi [fila][columna] = 0;} en caso contrario
{ Mozi[row][column]=1;}}}
Definir entero sin signo Mozi[192][384]= { 0 } // Píxeles en el área de texto
Usar 8 bits como un byte (porque en la comunicación en serie posterior, los datos transmitidos son datos binarios de 8 bits)
Defina unsigned char zimo _ data[192][48]= { 0 };
Esto -> show caret();
int i, j, k
for(I = 0; i lt192; i ){
for(j = 0; j lt48; j ){
for(k = 0; k lt8; k ){
Mozi _data[I][j] = Mozi[ i] [8=}j k]*((int) pow (2, (7-k)));}}}
4.3 Adición de efectos Diseño e implementación de funciones de vista previa
En la sociedad actual altamente basada en la información, la proporción de información gráfica, como gráficos e imágenes, aumenta día a día, y las computadoras desempeñan un papel importante en el procesamiento de diversos tipos de información. Debido a la intervención de la tecnología digital y la tecnología informática, la industria televisiva tradicional basada en imágenes analógicas ha comenzado a entrar de lleno en la era de la radiodifusión digital. Desde el mundo microscópico bajo el microscopio electrónico hasta el vasto campo de las imágenes satelitales, el procesamiento de imágenes se usa ampliamente en la vida real: procesamiento de imágenes de oficina, como documentos y gráficos, procesamiento de imágenes médicas representadas por máquinas médicas de tomografía computarizada de rayos X; Procesamiento de imágenes de teledetección tomadas por satélites y procesamiento de imágenes en las industrias de radio, televisión y cine.
Para mejorar el efecto de visualización, la pantalla LED también puede tener una variedad de modos de visualización.
1. Tecnología de modo de visualización de procesamiento del módulo de hardware
La pantalla gráfica LED puede agregar una variedad de modos de visualización para mejorar el efecto de visualización. El método principal para generar diferentes modos de visualización es controlar y actualizar continuamente los datos de visualización a medida que cambia la hora. Sin embargo, actualizar los datos de visualización no significa que los datos de visualización deban reescribirse. Se pueden generar directamente a partir de los datos de visualización originales mediante un determinado algoritmo. El número de filas se puede ajustar en secuencia para mover los gráficos y el texto mostrados hacia arriba y hacia abajo ajustando la posición de los datos de visualización de las columnas en secuencia, el propósito de la traducción hacia la izquierda y hacia la derecha se puede lograr ajustando el orden de las filas; columnas al mismo tiempo, se puede obtener el efecto de traslación diagonal.
2. Tecnología de efecto de carga directa del módulo de software
Si el algoritmo de actualización de datos de información es demasiado complejo, puede considerar usar el modo de visualización para generar datos directamente. Después del análisis y diseño sistemáticos, el texto y los gráficos se editan en el área de texto, las fuentes se extraen y guardan y se agrega un método de visualización de desplazamiento mediante el diseño de algoritmos.
1) Diseño e implementación del modo de visualización de desplazamiento
El efecto de desplazamiento de visualización de pantalla ha agregado una opción de botón en PreviewDialog, es decir, al guardar información de múltiples pantallas, los efectos de uso común pueden se puede seleccionar alternativamente según sea necesario y efecto de desplazamiento para lograr el propósito del guardado final:
para (carácter sin firmar I = 0; número de archivo Ilt; i)
CString campo temporal 1, campo temporal 2, campo temporal 3;
carácter sin firmar file_length, file_distype, file_distime
tempFieldl = m_listCtrl. GetItemText(i, 0);
tempField2 = m_listCtrl. GetItemText(i, 1);
tempField3 = m_listCtrl. GetItemText(i, 2);
file_length=(carácter sin firmar)campo temporal 1.
GetLength();
Mi archivo. write(ampfile_length, 1); //Almacena la longitud del nombre del archivo
Mi archivo. write(ampfile_distype, 1); //Modo de visualización del archivo almacenado
Mi archivo. Write (ampfile_ distime, 1); //Tiempo de visualización del archivo de almacenamiento}
2) Diseño e implementación de la función de vista previa de imágenes.
Una vez completada la edición, el sistema de control guarda la información de la fuente. La función de vista previa de la imagen se utiliza principalmente para obtener una vista previa del archivo guardado de la fuente que se transferirá. Debido a la transmisión multipantalla y los efectos de visualización de desplazamiento, la información que se mostrará en la pantalla grande debe guardarse con anticipación. La vista previa de la información guardada ayuda a completar la edición para la transmisión de manera precisa y eficiente.
Investigación y diseño:
Definir carácter sin firmar dis_type_pre = 0; // Indica la forma normal.
Definir unsigned chardis_type_pre = 1; //Indica el modo de desplazamiento.
Cuando el modo de configuración está en marcha:
if (roll_number!= 399){
for(row = 0; fila lt192; fila ){ p>
for(col = 0; col lt=número de rollo; col){
if(Mozi[fila][383-roll_number col]; = = 1){ p>
Washington. SetPixel (col, fila, 0);
}}}
De lo contrario {
dis_type_pre = 0;
roll_number = -1;
kill timer(1);
for(fila = 0; fila lt192; fila ){
for(col = 0; col lt383 ; col ){
if(Mozi[fila][columna]==1){
Washington. SetPixel (col, fila, 0);
}}}