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 necesita un triodo. controlador

# include?

#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;

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,},

{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,0xCF,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,0

xFE,0x00,0xF8,0x01,0xF0,0x01,0xE0,0x03,0x80,0x07,0x00,

0x07,0x00,0x03,0x80,0x01,0xE0,0x01,0xF0,0x00,0xF8,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},/*"desde", 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, 0x0F,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"的",3*/

{0xFF,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*/

{0xF

7,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,},

};

void?ys?(uchar?a) //Retraso

{

uchar?b;

para?(;a>0;a--)

para?(b=100;b>0;b--) ;

}

void?yfs() //Número del eje Y

{

ysck=0;

yrck=0;

k++;

si?(k==16)

?{

k=0;

ysi=0;

?}

?else

ysi=1;

ysck=1;

P2=P2| ;

//Equivalente a ? xrck=1; ?yrck=1;

}

void?xfs(uchar?a) ?//X Número de ejes

{

uchar?b,a1,a2;

a1=~zbm[6][a*2+1];

p>

a2=~zbm[6][a*2];

xsck=0;

xrck=0;

para? ( b=0;b<8;b++)

{

a

1=a1<<1;

xsi=CY;

xsck=1;

xsck=0;

}

for?(b=0;b<8;b++)

{

a2=a2<<1; ;

xsck=1;

xsck=0;

}

}?

void?fs (uchar?a) ?//Recuento de pelos en el eje X

{

uchar?b;

xsck=0;

xrck=0;

para?(b=0;b<8;b++)

{

a=a<<1; >

xsi=CY;

xsck=1;

xsck=0

}

}

void?gdhs(uchar?*zz,uchar?N,uchar?Time)?//¿Mostrar N caracteres chinos de manera fluida? Función de desplazamiento

{?//¿Tres parámetros: cadena? modelo de fuente ¿Primera dirección, recuento de palabras, velocidad de flujo de visualización?

uchar?FontNum,i,j,row;?//Variable de bucle, recuento de palabras, 16 flujos, escaneos de 16 columnas?

for(FontNum=0;FontNum

{?

for(i=0;i<16;i++)?//Flujo de palabra a palabra ?16 ¿Se necesitan varios desplazamientos hacia la izquierda para completarse?

{?

for(j=0;j

{?

k=15;

for(row=0;row<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 inferiores?

fs?(~*( zz+FontNum* 32+(i+row)*2+1));?//Obtener nuevos datos basados ​​en 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?

}?

}?

}?

}?

}

void?wbzd?()?interrupt0 ? Interrupción externa

{

?j++;

?if?(j>1)

?j=0;

?ys(10);

?mientras?(!kg)

?{

? k=15;

?para?(i=0;i<16;i++)

?{

? yfs();

?

ys(10);

}

?}

si?(j==0)

?gdhs(zbm,8,2);

si?(j==1)

gdhs(zbm1,10,1);

}

¿nulo?principal?()

>{

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);

}

}