Utilice una pantalla de matriz de puntos de 8 × 8 para realizar una pantalla de matriz de puntos de 16 × 16 en Proteus
1. Conocimientos preliminares
En primer lugar, no hay una pantalla de matriz de puntos integrada de 16 × 16 en Proteus8.6. Por lo tanto, necesitamos utilizar la pantalla de matriz de puntos de 8 × 8 existente para lograr
1.1 Cómo detectar usted mismo la información del pin de la pantalla de matriz de puntos de 8 × 8
Llame a una matriz de puntos de 8 × 8, conecte VCC al pin de la matriz de puntos y conecte el pin del otro extremo a GND, ejecute la simulación para ver si la matriz de puntos puede ser brillante, qué puntos son brillantes, si no Cambie VCC y GND cuando la luz esté encendida, de modo que se pueda medir la fila y la columna de la matriz de puntos, el cátodo común o la información del pin del ánodo común.
Si no desea comprobar la información de los pines usted mismo durante la simulación, aquí se proporcionan la información y los iconos de los pines de la pantalla de matriz de puntos de cuatro colores.
1.2 Información de pines de pantallas de matriz de puntos comunes de 8 × 8
Para la pantalla de matriz de puntos rojos, cuando no está rotando: la
parte superior es la selección de columnas, el nivel alto es válido, la
parte inferior es la selección de filas, el nivel bajo es válido;
Para otras pantallas de matriz de puntos, sin rotar: la
parte superior es la selección de filas y el nivel bajo es válido, la
parte inferior es la selección de columnas y el nivel alto es válido;
Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia
Dos, simulación de Proteus y explicación de principios.
2.1 Icono de simulación
2.2 Archivos de origen
Haga clic en mí para obtener la imagen de la simulación .
Código de extracción: 19WL
Tres, escritura de código C
3.1 Obtener la configuración y los enlaces del software de fuentes
Haga clic en mí para obtener el software de módulo .
Código de extracción: el
enlace TTFF proviene de Baidu Netdisk
3.2 Escritura y análisis de código C
el código se muestra a continuación:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define out0 P0
#define out1 P1
#define out2 P2
//这里的字模可以用上面的取模软件获得
uchar code string[]=
{
//物
0x10,0x00,0x10,0x02,0x14,0x02,0x7E,0x3F,
0x91,0x50,0x10,0x58,0x7F,0x6C,0x10,0x76,
0x10,0x5B,0x10,0x4C,0x10,0x46,0x10,0x70,
0x10,0x60,0x10,0x00,0x00,0x00,0x00,0x00,
//联
0x00,0x00,0x00,0x00,0x7E,0x21,0x24,0x12,
0x3C,0x0C,0xA4,0x7F,0x3C,0x0C,0x24,0x0C,
0xA4,0x7F,0x7F,0x0C,0x20,0x1E,0x20,0x33,
0xA0,0x61,0x00,0x00,0x00,0x00,0x00,0x00,
//网
0x00,0x00,0x00,0x00,0xFE,0xFF,0x01,0x80,
0x01,0x80,0x45,0xA2,0x29,0x94,0x11,0x88,
0x29,0x94,0x45,0xA2,0x01,0x80,0x01,0xC0,
0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
//工
0xFC,0x3F,0x00,0x01,0x00,0x01,0x00,0x01,
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
0x00,0x01,0x00,0x01,0xFE,0x7F,0x00,0x00,
//程
0x00,0x00,0x00,0x00,0x30,0x1F,0x0C,0x11,
0x0B,0x11,0x08,0x1F,0x08,0x00,0x3F,0x00,
0x1C,0x1F,0x1A,0x04,0x29,0x1F,0x48,0x04,
0x08,0x04,0x88,0x3F,0x08,0x00,0x00,0x00
};
//延时函数
void delay(uint j)
{
uchar i=250;
for(;j>0;j--)
{
while(--i);
i=100;
}
}
//主函数
void main()
{
uchar i, j ,n;
while(1)
{
for(j=0;j<5;j++)
//这里控制输出几个字
{
for(n=0;n<40;n++)
{
for(i=0;i<16;i++)
//逐行来扫描,一共扫描十六行
{
out1=i%16;
//利用4-16译码器来控制显示哪一行
out0=string[i*2+j*32];
out2=string[i*2+1+j*32];
//该数组中,前后两个十六进制数正好为16位
//所以,out0不需加一,out2需要加一
delay(4);
// out0=0xff;
// out2=0xff;
}
}
}
}
}
final
Si hay un error, envíe un mensaje privado para señalarlo.