Utilice 74HC595 para controlar una matriz de puntos de 16 × 16 para mostrar el programa y la simulación en lenguaje C chino. ¡Gracias! ! !
Esta imagen tendrá un tamaño reducido.
Vea el panorama general aquí
/6000/kgd235143/e4be871c454f0c1d6f7f46b964dacee7.jpg
Si desea simularlo, se lo enviaré. Por supuesto, el circuito real requiere un triodo. controlador
# include?lt;reg52.hgt;
#define?uchar?unsigned?char
uchar?i,j,k=15;
sbit?xsi =P2^0;
sbit?xrck=P2^1;?
sbit?xsck=P2^2
sbit?ysi=P2^3 ;
sbit?yrck=P2^4;?
sbit?ysck=P2^5;
sbit? kg=?P3^2;
p>
uchar?code?zbm[][32]={
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,},
p>{0xFF, 0xFF, 0xFF, 0xF7, 0xBF, 0xF7, 0xBF, 0xFB, 0xBF, 0xFD, 0x03, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
0x01, 0xF0, 0x7F, 0xEF, 0xBF, 0xEF, 0x9F, 0xEF, 0xDF, 0xEF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF}, /*"Norte", 0*/
{0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xEF, 0xF7, 0xF3, 0x37, 0xFF, 0xB7, 0xFE, 0xB6, 0xDE, 0xD5, 0x80,
0xDB, 0xFE, 0x5B, 0xFF, 0x9B, 0xFB, 0xFB, 0xF7, 0xFB, 0xE7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, /*"京", 1*/
{ 0xFF, 0xEF, 0x5F, 0xF7, 0xDF, 0xFA, 0xEF, 0xFD, 0x0F, 0xFA, 0xFF, 0xDF, 0xBF, 0xEF, 0xC7, 0xF3,
0x58, 0xFC, 0xEF, 0xFB, 0xAF, 0xF7 , 0xCF, 0xEF, 0xEF, 0xCF, 0xFF, 0xDF, 0xFF, 0xDF , 0xFF, 0xFF}, /*"Huan", 2*/
{0xBF, 0xF7, 0xBF, 0xF7, 0xBB, 0xF6 , 0x37, 0xF1, 0xFF, 0xF7, 0x07, 0xF6, 0xF7, 0xF6, 0x7B, 0xF7, 0xF9, 0xEF, 0x0F, 0xE8, 0xF7, 0xEF, 0x77, 0xCF, 0x07, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF}, /*"Bienvenido" , 3*/
{0xFF, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, 0x0F, 0xC0, 0xF1, 0xFF, 0xFF, 0xF7, 0xBF, 0xF9, 0xCF, 0xEF,
0xD1, 0xDF, 0x5F, 0xC0, 0xEF,
0xFF, 0xAF, 0xFD, 0xCF, 0xFB, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF}, /*"tú", 4*/
0x87, 0xFF, 0x03, 0xFF, 0x01, 0xFE , 0x00, 0xF8, 0x01, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00,
0x07, 0x00, 0x03, 0x80, 0x01, 0xE0, 0x01, 0xF0, 0x00, xF8, 0x01, 0xFE, 0x03, 0xFF, 0x87, 0xFF, /*"心", 5*/
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,},
};
uchar?code?zbm1[][16]={
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF,},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xC0, 0x6F, 0xDB, 0x63, 0xEB, 0x6C, 0xEB },
{0xEF, 0xEF, 0xEF, 0xDF, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, /* "de", 0 */
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0xF0, 0xBB, 0xEF, 0xBB, 0xEF, 0xBB, 0xEF, 0xDD, 0xEF},
{0xCD, 0xEF, 0xF1, 0xEF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF}, /*"自", 1*/
{0x7F, 0xFF, 0xBF, 0xFF, 0x0F, 0xC0, 0xD1, 0xFF, 0xDF, 0xF1, 0x01, 0xF6, 0xEF, 0xF6, 0xEF, 0xE8},
{0x3F, 0xF7, 0xCF, 0xFA, 0xD1, 0xFD, 0x1F, 0xFA, 0xEF, 0xE7, 0xEF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF}, /*"do", 2*/
{0xFF, 0xFF, 0x3F, 0xF8, 0x9f, 0xe6, 0xaf, 0xf6, 0xd3, 0xf7, 0x1f, 0xe0, 0x7f, 0xff, 0xbf, 0xff},
{0x5f, 0xff, 0xc7, 0xfc, 0xd9, 0xef, 0xef, 0xdf, 0xf , 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, /*"de", 3*/
{0
xFF, 0xFF, 0x3F, 0xCF, 0x3F, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, /*":", 4*/
{ 0xF7, 0xDF, 0x07, 0xC0, 0xF7, 0xDF, 0xFF, 0xDF, 0xFF, 0xDF, 0xFF, 0xDF, 0xFF, 0xCF, 0xFF, 0xFF}, /*"L", 0*/
{ 0xF7, 0xDF, 0x07, 0xC0, 0x77, 0xDF, 0x77, 0xDF, 0x17, 0xDC, 0xF7, 0xDF, 0xEF, 0xE7, 0xFF, 0xFF}, /*"E", 1*/
{ 0xF7, 0xDF, 0x07, 0xC0, 0xF7, 0xDF, 0xF7, 0xDF, 0xF7, 0xDF, 0xEF, 0xEF, 0x1F, 0xF0, 0xFF, 0xFF}, /*"D", 2*/
{ 0xFF, 0xDF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0x7F, 0xED, 0x81, 0xFD, 0xB7, 0xFD},
{0xB7, 0xF5, 0xBB, 0xED, 0x3B , 0xFE, 0xFF, 0xF7, 0xFF, 0xEF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF}, /*"punto", 3*/
{0xFF, 0xFF, 0x03, 0xE0, 0xBB , 0xFF, 0x6D, 0xFF, 0x11, 0xFB, 0xFF, 0xFB, 0x37, 0xFB, 0x57, 0xFB},
{0x67, 0xFB, 0x19, 0x80, 0xBB, 0xFD, 0xBB, 0xFD, 0xBF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFF}, /*"matriz", 4*/
{0xFF, 0xEF, 0xFF, 0xF7, 0xFF, 0xF9, 0x7F, 0xFE, 0x81, 0xBD, 0x75, 0xDD, 0x65, 0xE5, 0x55, 0xF8},
{0xB6, 0xFD, 0x9A, 0xFD, 0x28, 0x80, 0xBC, 0xFE, 0xBF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE , 0xFF, 0xFF}, /*"pantalla", 5*/
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}, p> p>
};
void?ys?(uchar?a) //Retraso
{
uchar?b;
para?(;agt;0;a--)
para?(b=100;bgt;0;b--) ;
}
void?yfs() //Número del eje Y
{
ysck=0
yrck=0; p > k;
si?(k==16)
?{
k=0;
?}
?else
ysi=1
ysck=1
P2=P2|0X14; > //Equivalente a ? p>{
uchar?b, a1, a2
a1=~zbm[6][a*2 1]; p> a2=~zbm [6][a*2];
xsck=0;
xrck=0
para?(b=0; ; blt; 8; b )
{
a1=a1lt;lt;1;
xsi=CY;
xsck= 1;
xsck=0;
}
para?(b=0; blt; 8; b )
{
a2=a2lt;lt;1;
xsi=CY
xsck=1
xsck=0; >
}
}?
void?fs(uchar?a) ?//Número del eje X
{
uchar?b;
xsck=0;
xrck=0
para?(b=0; blt; 8; b ) p>
{
a=alt;
xsi=CY; xsck=0;
p>
}
}
void?gdhs(uchar?*zz, uchar?N, uchar?Tiempo)? // ¿Mostrar N caracteres chinos de manera fluida? Función de desplazamiento
{?//Tres parámetros: fuente de cadena, primera dirección, número de palabras, velocidad de flujo de visualización?
uchar? FontNum, i, j, fila;?//Variable de bucle, recuento de palabras, 16 flujos, escaneos de 16 columnas?
for(FontNum=0;FontNumlt;N;FontNum)?
{?
for( i=0;ilt;16;i)?//¿Flujo palabra a palabra? ¿16 desplazamientos a la izquierda para completar?
{?
for(j=0;jlt;Time ; j )?//¿Mostrar retraso, determinar la velocidad del flujo?
{?
k=15;
for(row=0;rowlt;16; row )?//¿Mostrar pantalla de 16*16 una vez?
{?
yfs();?//¿Seleccionar columna de visualización? // ¿Línea de selección de fila, P3? ¿Cuatro bits bajos?
fs?(~*(zz FontNum*32 (i fila)*2 1));?//¿Obtener nuevos datos según el desplazamiento del movimiento?
fs (~*(zz FontNum*32 (i fila)*2));?//¿Obtener datos de visualización? ¿Algoritmo de clave de visualización de bucle?
ys?(12); ?//¿Retraso apropiado?
}?
}?
}?
}?
}
¿vacío?wbzd
?()?interrupt0 ? //Interrupción externa
{
?j ;
?if?(jgt;1)
?j=0;
?ys(10);
?mientras?(!kg)
?{
? =15;
?para?(i=0;ilt;16;i )
?{
? yfs();
? xfs(i);
ys(10);
}
?}
si?(j== 0)
?gdhs(zbm,8,2);
si?(j==1)
gdhs(zbm1,10,1) ;
}
void?main?()
{
EA?=?1;?//Activar interrupción total
EX0=1;
IT0=1;
mientras?(1)
{ ?si?(j== 0 )
?gdhs(zbm, 8, 5);
?si?(j==1)
?gdhs(zbm1, 10); , 3);
}
}