Disculpe, la idea de diseño del balancín y el programa c del microcontrolador pic. ¡Gracias!

La siguiente es una descripción detallada:

El principio de visualización gráfica:?

Utilizar el efecto de persistencia de la visión del ojo humano para hacer que la mano se mueva. a diferentes posiciones, lo que permite que los LED en línea recta muestren diferentes columnas de una imagen bidimensional, realizando una visualización de escaneo gráfico.

Mecanismo físico:?

Cuando balanceamos los brazos, la posición de balanceo y la amplitud izquierda y derecha no cambiarán mucho en un corto período de tiempo usando este patrón de movimiento de nuestros brazos. , siempre que pueda obtener el tiempo para que la varilla se balancee de un lado a otro, luego divida este tiempo en N partes y luego muestre diferentes patrones en cada parte del tiempo para lograr una visualización gráfica. Cuando balanceamos los brazos, no podemos saber de antemano el tiempo necesario para el balanceo. ¿Cómo obtenemos el tiempo que tarda en balancearse de un lado a otro?

Piénselo de nuevo, la frecuencia de movimiento de nuestros brazos no cambiará significativamente en un corto período de tiempo. Siempre que podamos obtener el tiempo que tomó el movimiento anterior, podemos usar este tiempo para aproximarnos. el tiempo requerido para el siguiente swing y luego divídalo en N partes. La tarea de obtener el tiempo necesario para una oscilación se completa con el fotointerruptor. Se instala una varilla delgada que puede oscilar para bloquear la luz del fotointerruptor. El grosor es ligeramente más ancho que la ranura del fotointerruptor. Puente rectificador. Un trozo de tubería cortado después de soldar. Cada vez que la varilla oscila hacia la izquierda y hacia la derecha, pasará por el fotointerruptor, provocando que el microcontrolador genere una interrupción. El tiempo entre las dos interrupciones es el tiempo deseado. Para lograr esta función, se utiliza un temporizador T0 del 2051 y una interrupción externa. Se utilizan INT0. Luego use otro temporizador T1 de 2051, cuyo tiempo de sincronización es una enésima parte de T0. Cada vez que se interrumpe, se muestra una columna en secuencia, que es el efecto en la foto. ?

Piénselo más detenidamente. Solo cuando la frecuencia del movimiento del brazo es superior a 2 Hz podemos ver los gráficos de forma aproximada a través de la persistencia de la visión. No importa qué tan rápido sea, solo es más de diez Hz. T0 es el más largo del temporizador de 16 bits. La frecuencia de reloj de 2051 es de 1 MHz, que es la más adecuada para cronometrar el tiempo. El grosor de la varilla delgada utilizada para el bloqueo también se puede estimar de forma aproximada, por lo que no tendrá un tiempo. gran impacto en la precisión del tiempo.

Componentes utilizados:?

¿AT89C2051?8 yuanes?

¿LED de alto brillo***8 piezas?3,6 yuanes?

¿Caja de batería? ¿0,5 yuanes?

¿Tablero multiusos de una cara? ¿8 yuanes? ¿Se puede cortar en 3 piezas para hacer 3 balancines?

¿Resonador de cerámica 1 yuan?

p >

¿Fotointerruptor?

¿Cable de resistencia y condensador?

¿Carcasa*? ¿Se puede cortar en 2 pedazos?

> Componentes opcionales:?

Interruptor de encendido? 1 yuan

El costo total no supera los 20 yuanes

*Para la carcasa exterior, utilicé una carpeta translúcida. rollo que compré en Carrefour Done

Este circuito es muy simple y el código es corto, pero utiliza la programación de interrupciones externas de 2051 y la programación de temporizadores T0 y T1, lo cual es muy adecuado para que practiquen los principiantes. Me tomó dos noches hacer este juguete. Este circuito y programa todavía tienen margen de expansión y mejora. Por ejemplo, si el microcontrolador no oscila durante mucho tiempo, puede ingresar al modo de ahorro de energía y la pantalla no se limita a imágenes simétricas, etc. él.

El siguiente es el programa fuente:

/****************************** ** *******************************************/?

//?---------------?

//?Pantalla LED basculante?

//?--- - -----------?

//?Autor: nim?Yu? 2005-1-7?

//?

//?email:?linyige@yahoo.com?

//?

//?Los derechos de autor de este diseño pertenecen al autor. para fines comerciales sin autorización. Indique el autor y la fuente al reimprimir.

/***************************. ********** ****************************************/ ?

#include ??

#define?SEG?17?//¿Cada cuadro está dividido en 17 columnas para su visualización?

#define?INTERVAL?20?//Cada cuadro La imagen oscila hacia la izquierda y hacia la derecha 20 veces antes de cambiar a la siguiente

typedef?unsigned?char?uchar;?

typedef? unsigned?int?uint;

código ?char?pattern[17][3]={?//¿Patrón de caracteres para 3 imágenes?

{0xff,0xff,0xff}, ?

{0xff,0xff,0xff },?

{0xff,0xff,0xff},?

{0xff,0x9f,0xff},?

{0xff,0x6f,0xf9}, ?

{0xff,0x77,0x65},?

{0xfe,0xbb,0x1e},?

{0x7e,0xdd,0xfe},?

{0x00,0xee,0xfe},?

{0x7e,0xdd,0xfe},?

{0xfe,0xbb,0x1e},?

{0xff,0x77,0x65},?

{0xff,0x6f,0xf9},?

{0xff,0x9f,0xff},?

{0xff,0xff,0xff},?

{0xff,0xff,0xff},?

{0xff ,0xff,0xff},?

};

uchar?fase,th1,tl1,index,count;

principal()?

{?

EA= 0;?

EX0=1;?

ET1=1;?

PX0= 1;?

IT0=1; ?

TMOD=0x11;?

index=0;?

EA=1; ?

mientras(1)?

{?

}?

}

void?Int0_Handle( ¿void)?interrupt?0?using?2?

{?

uint?t0_time;?

TR0=0;?

TR1=0;?

TF1 =0;?

t0_time=TH0<<8|TL0;?

TL0=0;?

TH0=0;?

TR0=1;?

t0_time=65535-t0_time/SEG;?<

/p>

th1=t0_time/256;?

TH1=th1;?

tl1=t0_time?%?256;?

TL1= tl1;?

if?(count<3*INTERVAL){?//3 bucle de imágenes?

count++;?

}?

else{?

count=0;?

}?

index=count/INTERVAL;?

si? (th1!=0xff?||?tl1!=0xff){?//Si el swing es particularmente lento, ¿no se mostrará el desbordamiento del temporizador?

phase=0;?

TR1=1;?

}?

otro{?

TR1=0;?

}?

}

¿vacío?Temporizador1(vacío)?¿interrupción?3?usando?3?

{?

si?(fase

{?

P1=pattern[phase][index];?

phase++;?

TH1=th1;?

TL1=tl1;?

}?

}