Diseño de generador de señal de función
El generador de formas de onda es una fuente de señal de uso común, ampliamente utilizada en circuitos electrónicos, sistemas de control automático, experimentos de enseñanza y otros campos. El generador compuesto por el microcontrolador AT89S51 utilizado en el diseño de este curso puede producir varias formas de onda, como onda en diente de sierra, onda triangular, onda sinusoidal, etc. El período de la forma de onda se puede cambiar mediante programa y se puede seleccionar salida unipolar o salida bipolar. Según las necesidades Tiene las ventajas de un circuito simple y una estructura compacta. Sobre la base de este diseño, con la adición de control de botón y pantalla LED, la frecuencia de forma de onda requerida se puede configurar a través de los botones, y la frecuencia y el voltaje de amplitud se mostrarán en el LED y la forma de onda se puede mostrar con un osciloscopio. .
2. Diseño del sistema
El diagrama de bloques principal del generador de formas de onda es el siguiente. La forma de onda se genera mediante AT89S51 ejecutando un determinado programa de generación de forma de onda y generando datos de acuerdo con una determinada regla en el extremo de entrada del convertidor D/A, obteniendo así la forma de onda de voltaje correspondiente en el extremo de salida del circuito de conversión D/A. Conecte 5 botones al puerto P2 de AT89S51 para seleccionar varias formas de onda, voltajes de amplitud y frecuencias a través de la programación de software. También hay 3 pines del puerto P2 conectados al chip TEC6122 para controlar el tubo digital y mostrar la amplitud y frecuencia del voltaje. un botón. La ventaja de esta solución es que el principio del circuito es relativamente simple y relativamente fácil de implementar. La desventaja es que la frecuencia de muestreo la genera internamente el microcontrolador, por lo que se reduce la frecuencia de todo el sistema.
1. Especificaciones técnicas del generador de forma de onda
1) Forma de onda: onda cuadrada, onda sinusoidal, onda de diente de sierra
2) Voltaje de amplitud: 1 V, 2 V, 3V, 4V, 5V;
3) Frecuencia: 10 HZ, 20 HZ, 50 HZ, 100 HZ, 500 HZ, 1 KHZ
2. ) Después de encenderlo, el sistema se inicializa y la pantalla digital muestra 6 '-', esperando la entrada de comandos de configuración.
2) Los botones controlan "amplitud", "frecuencia", "onda cuadrada", "onda sinusoidal" y "onda en diente de sierra" respectivamente.
3) El valor inicial de la tecla "Amplitud" es 1V, luego presiónela nuevamente para aumentar el valor en 1V. Luego de llegar a 5V, presiónela nuevamente y volverá a 1V.
4) El valor inicial de la tecla "Frecuencia" es 10 HZ, y luego pasa por 20 HZ, 50 HZ, 100 HZ, 200 HZ, 500 HZ y 1000 HZ cuando se presiona.
3. Diseño de hardware
Este sistema consta de cuatro partes: microcontrolador, circuito de interfaz de pantalla, circuito de conversión de forma de onda (D/A) y fuente de alimentación. Se adjunta el diagrama de circuito 2
1. Circuito microcontrolador
Función: código de escaneo de formulario, identificación de valor de clave, procesamiento de clave, configuración de código de segmento de visualización de formulario; Codificación digital y salida al circuito de interfaz D/A y al circuito del controlador de pantalla.
AT89S51 está conectado a un oscilador de cristal externo de 12M como frecuencia de reloj. Y adopta un diseño de reinicio de energía. El circuito de reinicio utiliza reinicio de encendido. Su principio de funcionamiento es que cuando se aplica energía, ambos extremos del capacitor son equivalentes a un cortocircuito, por lo que el pin RST está en un nivel alto y luego la fuente de alimentación carga el capacitor. El voltaje en el terminal RST cae lentamente hasta un cierto nivel, que es un nivel bajo, y el microcontrolador comienza a funcionar.
El puerto P2 de AT89S51 sirve como interfaz entre el botón de función y TEC6122. El puerto P1 sirve como interfaz para el chip de conversión D/A 0832. Utilice el temporizador/contador como fuente de interrupción. Diferentes valores de frecuencia corresponden a diferentes valores de temporización inicial, lo que permite interrupciones por desbordamiento del temporizador. La configuración del registro de función especial de la interrupción del temporizador es la siguiente:
Registro de control de tiempo TCON=20H;
Registro de selección del modo de trabajo TMOD=01H; habilitar el registro de control IE=82H.
2. Circuito de visualización
Función: controla la pantalla del tubo digital de 6 dígitos y el botón de escaneo.
Está compuesto por chip driver integrado TEC6122, tubo cátodo digital de 6 dígitos y 5 botones. Cuando se presiona un botón, el programa de escaneo envía una señal digital al chip TEC6122 a través del puerto P2. TEC6122 es un chip integrado digital. Su voltaje externo también es de +5 V, y dado que el voltaje de transporte del tubo digital es pequeño, para proteger el tubo digital, se debe conectar una resistencia entre los dos, que es de aproximadamente 560 ohmios.
El escaneo se implementa mediante programas de software. Cuando se presiona un determinado botón, el programa de escaneo lo detecta inmediatamente y luego llama a una subrutina para realizar la función correspondiente.
3. Circuito D/A
Función: convierte la codificación de muestras de forma de onda en valores analógicos para completar la salida de forma de onda bipolar.
Consta de un amplificador operacional 0832 y dos amplificadores operacionales LM358. El DAC0832 es un DAC de 8 bits con dos registros de datos de entrada. Actualmente se producen dos tipos de chips DAC. Un tipo de chip tiene un registro de datos en su interior y puede interactuar directamente con una microcomputadora sin necesidad de circuitos externos. Otro tipo de chip no tiene registro de datos en su interior y la señal de salida cambia con el estado de la línea de entrada de datos. Por lo tanto, no puede interactuar directamente con la microcomputadora y debe hacerlo a través de una interfaz paralela. DAC0832 es un dispositivo CMOS dual en línea con 20 cables. Tiene dos niveles de registros de datos en su interior y completa una conversión D/A de corriente de 8 bits, por lo que no se requiere ningún circuito externo. 0832 es un tipo de salida de corriente. La forma de onda se muestra en el osciloscopio, que generalmente requiere una señal de voltaje. La conversión de la señal de corriente a la señal de voltaje se puede lograr mediante el amplificador operacional LM358. La salida bipolar se puede lograr con dos LM358.
El microcontrolador envía códigos digitales al 0832 para producir diferentes salidas. Primero utilice el teorema de muestreo para muestrear cada forma de onda y luego codifique cada valor muestreado. La cantidad digital obtenida se almacena en cada tabla de formas de onda y se extrae secuencialmente mediante el método de búsqueda de tabla. Se puede obtener la forma de onda de salida. Si N puntos constituyen un ciclo de la forma de onda, luego de que 0832 genera N puntos de muestra, los puntos de muestra forman una trayectoria de movimiento, que es un ciclo. Genere repetidamente N puntos para convertirse en el segundo ciclo. El oscilador de cristal del microcontrolador se utiliza para controlar la velocidad del ciclo de salida, es decir, para controlar la frecuencia de la forma de onda de salida. Esto controla la forma de onda de salida, su amplitud y frecuencia.
IV. Diseño de software
El programa principal y los subprogramas se almacenan en el microcontrolador AT89S51.
La función del programa principal es: después del arranque, es responsable de la búsqueda de teclas, es decir, el escaneo del teclado y el trabajo de visualización, y luego cambia a la subrutina correspondiente para su procesamiento de acuerdo con las teclas presionadas por el usuario El diagrama de bloques del programa principal se muestra en la Figura 1. Mostrar.
Las funciones de la subrutina incluyen: procesamiento de entrada de amplitud, procesamiento de entrada de frecuencia, salida de onda sinusoidal, salida de onda de diente de sierra, salida de onda cuadrada, visualización, etc.
El siguiente es el programa
incluye
#define uchar unsigned char
#define uint unsigned int
bit LCP=P2^2
bit SCP=P2^1
bit SI=P2^0
bit S1; =P2 ^3;
bit S2=P2^4;
bit S3=P2^5
bit S4=P2^6; >
sbit S5=P2^7;
sbit DA0832=P3^3;
sbit DA0832_ON=P3^2
uchar fun=0; ,b =0,c=0,d=0,tl,th;
pestaña de código uchar[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f} ;
uchar código tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb1, 0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5
,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5 ,0xe7 ,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5
,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff, 0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd
,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5 ,0xf4 ,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda
,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc, 0xca, 0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99
,0x96,0x93,0x90,0x8d ,0x89 ,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51
,0x4e, 0x4c, 0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16
,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0,0x0b,0x0d,0x0e,0x10,0x11,0x13, 0x15
,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45 ,0x48,0x4c,0x4e
,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80
visualización nula (comando de carácter sin firmar)
{
carácter sin signo i
LCP=0; i=8;i>0;i--)
{
SCP=0
if((comando & 0x80)==0)
{
SI=0
}
si no
{
SI =1;
}
comando<<=1;
SCP=1; LCP=1;
}
clave nula1(nulo)
{
diversión++
if( fun==4)
fun=0x00;
}
void key2(void)
{
tl++;
if(tl==0x1f)
th++
}
clave nula3(nulo)
{
tl--;
if(tl==0x00)
th--
} p>
clave vacía4(vacío)
{
doble t;
int f; /p>
t=(65535-th*256-tl)*0.4;
f=(int)(1000/t); %10];
f=f/10;
S2=tab[f%10];
if(f==0)
S1=0
si no
S1=tab[f]; TR0=1;
}
clave nula5(nulo)
{
tl--; if(tl==0x00)
th++;
}
juez nulo(nulo)
{
uchar line,row,de1,de2,keym;
P1=0x0f
keym=P1
if(keym==0x0f)return;
para(de1=0;de1<200;de1++)
para(de2=0;de2<125;de2++)
{;}
P1=0x0f;
keym=P1
if(keym==0x0f)retorno
P1= 0x0f;
línea=P1;
P1=0xf0;
fila=P1; Almacenar el valor clave característico*/
if(line==0xde)key1()
if(line==0x7e)key2(); if (line==0xbd)key3();
if(line==0x7d)key4();
}
void time0_int(void) interrupción 1 //Interrumpir rutina de servicio
{
TR0=0
if(fun==1)
{
DA0832=tosin[b]; //onda sinusoidal
b++;
}
else if(fun==2) //diente de sierra ola
{
if(c<128)
DA0832=c
si no
DA0832=; 255 -c;
c++;
}
else if(fun==3) // onda cuadrada
{ p >
d++;
if(d<=128)
DA0832=0x00
si no
DA0832=0xff ;
}
TH0=th
TL0=tl
TR0=1;
void main(void)
{
TMOD=0X01
TR0=1
th; = 0xff;
tl=0xd0;
TH0=th
TL0=tl; >
EA=1;
mientras(1)
{
mostrar(); /p>
juez();
p>
}
}
5. Al principio, como no tenía experiencia, no sabía cómo empezar, así que fui a la biblioteca a buscarlo después de leer algunos libros, aunque había muchas soluciones de diseño, siempre sentí que todavía quedaban muchas cosas por hacer. No lo tenía claro, así que pedí ayuda a mis compañeros. A menudo diseña algo y tiene algo de experiencia. Después de explicar y analizar cada plan, decidió utilizar el método de búsqueda de tablas. Esto puede reducir la dificultad de algunos diseños de hardware y el diseño inicial debe estar en línea con su propio nivel. El uso de 8031 requiere expansión de ROM, que también requiere expansión de memoria. Además, 8031 básicamente ya no se usa en la práctica. El chip AT89S51 real tiene una ROM, por lo que es sencillo tabular los valores obtenidos después del muestreo y utilizar una tabla de búsqueda. Creo que el programa debería ser pequeño y la ROM del chip debería ser suficiente. Utilice LED para mostrar la frecuencia y la amplitud. Hay un chip controlador de interfaz integrado. La forma de onda se puede mostrar a través de un osciloscopio. El microcontrolador se puede conectar al chip de conversión D/A, por lo que el hardware se puede configurar rápidamente.
Pensé que con estas cosas hechas y las ideas implementadas, debería ser relativamente fácil escribir un programa. Quién sabe, cuando estaba escribiendo el programa, me di cuenta de que las teclas de función necesarias para tener un programa de escaneo me resultaban realmente difíciles. ¿Realmente querías rendirte en ese momento? Entonces le pedí ayuda al maestro, y el maestro me ayudó a analizarlo. También verifiqué cierta información y finalmente entendí cómo escribir el programa de escaneo.
Así que, con mis propios esfuerzos, el programa se escribió rápidamente.
Este es mi primer dispositivo de diseño. Aunque pasé por muchas dificultades, al final me dio un poco de experiencia en diseño y una pequeña sensación de logro. ¡Aún queda un largo camino por recorrer, pero todavía tengo que trabajar duro!
Referencias
[1] Tong Shibai, Hua Chengying. Fundamentos de la tecnología electrónica analógica [M]. Beijing: Higher Education Press, 2003.345-362
[ 2] Pan Yongxiong, Shahe, Liu Xiangyang. Tutorial práctico sobre circuitos electrónicos CAD [M]: Prensa de la Universidad de Ciencia y Tecnología Electrónica de Xi'an, 2001.13-118. Yigang, Peng Xiyuan, Tan Xiaoyun, Qu Chunbo Diseño de aplicación del microcontrolador [M: Harbin
Erbin Institute of Technology Press, 1997.53-61.