Alquiler de generador de señales en Xi'an
2. Diseño del sistema
El diagrama de bloques esquemático del generador de forma de onda es el siguiente. La generación de forma de onda consiste en ejecutar un programa de generación de forma de onda a través de AT89S51 y generar datos en el extremo de entrada del convertidor D/A de acuerdo con ciertas reglas, obteniendo así la forma de onda de voltaje correspondiente en el extremo de salida del circuito del convertidor D/A. El puerto P2 del AT89S51 está conectado a cinco botones y se pueden seleccionar varias formas de onda, voltajes de amplitud y frecuencias mediante programación de software. Además, los tres pines del puerto P2 están conectados al chip TEC6122, lo que hace que el tubo digital muestre la amplitud y frecuencia del voltaje, y cada forma de onda corresponde a un botón. La ventaja de esta solución es que el principio del circuito es relativamente simple y fácil de implementar. La desventaja es que la frecuencia de muestreo se genera dentro del microcontrolador, lo que 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, 200 HZ, 500 HZ,
2. 1) Después de encenderlo, el sistema se inicializa y los números muestran seis '-', esperando la entrada del comando 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 Al pulsarla nuevamente aumentará 1V. Después de llegar a 5V, al presionarlo volverá a 1V.
4) El valor inicial de la tecla "Frecuencia" es 10HZ, y después de presionarla es 20HZ, 50HZ, 100HZ, 200HZ, 500HZ, 1000HZ.
En tercer lugar, diseño de hardware
El sistema consta de cuatro partes: microcontrolador, circuito de interfaz de pantalla, circuito D/A y fuente de alimentación. Adjunto el diagrama del circuito 2.
1. Circuito microcontrolador
Función: formación de códigos de escaneo, reconocimiento de valores clave, procesamiento de claves, configuración de parámetros; generar interrupción temporizada de forma de onda 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 enciende la energía, ambos extremos del capacitor están en cortocircuito de manera equivalente, por lo que el pin RST está en un nivel alto y luego la fuente de alimentación carga el capacitor. El voltaje del terminal de RST cae lentamente hasta un determinado programa, es decir, un nivel bajo, y el microcontrolador comienza a funcionar.
El puerto P2 de AT89S51 se utiliza como interfaz entre la tecla de función y TEC6122. El puerto P1 se utiliza como interfaz del chip de conversión D/A 0832. Utilice temporizadores/contadores como fuentes de interrupción. Diferentes valores de frecuencia corresponden a diferentes valores iniciales de temporización, 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 temporización TCON = 20H;;
Registro de selección del modo de trabajo tmod = 01h;
Habilitación de interrupción 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.
Consta de un chip controlador integrado TEC6122, un tubo digital de cátodo de 6 bits y 5 botones. Cuando se presiona el botón, el escáner lo escanea y luego 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 carga del tubo digital es pequeño, para proteger el tubo digital, se necesita una resistencia indirecta entre los dos, aproximadamente 560 ω.
El escaneo se realiza mediante un programa de software. Cuando se presiona una tecla, el escáner la detecta inmediatamente y luego llama a una subrutina para realizar la función correspondiente.
3. Circuito analógico digital
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. DAC0832 es un DAC de 8 bits con dos registros de datos de entrada integrados. Actualmente, existen dos tipos de chips DAC. Un chip tiene un registro de datos en su interior que puede interactuar directamente con una microcomputadora sin necesidad de circuitos adicionales. No hay registro de datos en el otro chip y la señal de salida cambia con el estado de la línea de entrada de datos, por lo que no puede conectarse directamente con la microcomputadora y debe conectarse con la microcomputadora a través de una interfaz paralela. DAC0832 es un dispositivo CMOS dual en línea de 20 pines. Tiene dos niveles de registros de datos para completar la conversión digital a analógica actual de 8 bits, por lo que no se requieren circuitos adicionales. 0832 es el tipo de salida actual. Los osciloscopios muestran formas de onda, que normalmente requieren señales de voltaje.
La conversión de la señal de corriente a señal de voltaje se puede lograr mediante el amplificador operacional LM358, y la salida bipolar se puede lograr mediante dos LM358.
El microcontrolador envía códigos digitales al 0832 para producir diferentes salidas. Primero, se muestrea la forma de onda utilizando el teorema de muestreo y luego se codifican los valores muestreados. La cantidad digital obtenida se almacena en cada tabla de formas de onda y se extrae secuencialmente utilizando el método de búsqueda de tablas al ejecutar el programa. Después de la conversión D/A, se puede obtener y emitir la forma de onda. Si N puntos constituyen un ciclo de la forma de onda, después de que 0832 genera N puntos de muestreo, estos puntos de muestreo forman una trayectoria de movimiento, es decir, un ciclo. Generar n puntos repetidamente se convierte 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 y su amplitud y frecuencia.
Cuarto, diseño de software
El programa principal y los subprogramas se almacenan en el microcontrolador AT89S51.
La función del programa principal es verificar las teclas después del arranque, es decir, escanear y mostrar el teclado, y luego ingresar 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.
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 programa es así
Incluyendo & ltreg 51. h & gt;
#Definir carácter sin firmar uchar
#Definir uint Entero sin signo
sbit lcp=p2^2;
sbit scp=p2^1;
sbit 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};
código uchar 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, 0xe, 1, 0xe3, 0xe5, 0xe7, 0xe9, 0xea, 0xec, 0xee, 0xef, 0xf1, 0xf2, 0xf4, 0xf5
, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, fd, 0xfe , 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x ff, 0x ff, 0x ff, 0x ff, 0x ff, 0x ff, 0x ff, 0x ff, 0x ff, 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, 1, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c, 0x99
, 0x96, 0x93, 0x90, 0x8d, 0x89, 0x86, 0x83, 0x80, 0x80, 0x7c, 0x79, 0x76, 72, 0x6f , 0x6c, 0x69, 0x66, 0x63, 0x60, 0x5d, 0x5a, 0x57, 0x55, 0x51
, 0x4e, 0x4c, 0x48, 0x45, 0x43, 0x40, 0x3d, 0x3a, 0x38, x35, 0x33, 0x30, 0x2e, 0x2b, 0x29, 0x27, 0x25, 0x22, 0x20, 0x1e, 0x1c, 0x1a, 0x18, 0x16
, 0x15, 0x13, 0x11, 0x10, 0x0e, 0x0d, b, 0, 0x09 , 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 00, 0x 00
, 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 no válida (comando de carácter sin firmar)
{
Carácter sin firmar I;
LCP = 0;
for(I = 8;i>0; I-)
{
SCP = 0;
if((comando & amp0x80)==0)
{ p>
SI = 0;
}
Otro
{
SI = 1;
}
Comando& lt& lt=1;
SCP = 1;
}
LCP = 1;
}
void key1(void)
{
fun++;
if(fun==4)
fun = 0x00
}
Clave no válida 2 (no válida)
{
tl++;
if(tl== 0x1f)
th++;
}
Clave no válida 3 (no válida)
{
TL-;
if(tl==0x00)
th-;
}
Clave no válida 4 (no válida)
{
Doble t;
int f;
TR0 = 0;
t = (65535 º * 256-TL )* 0,4;
f =(int)(1000/t);
S3 = tab[f % 10];
f = f/10 ;
S2 = tab[f % 10];
f = f/10;
Si (f==0 )
s 1 = 0;
Otros
s 1 = pestaña[f];
TR0 = 1;
} p>
Clave 5 no válida (no válida)
{
TL-;
if(tl==0x00)
th++;
}
Juez no válido(no válido)
{
uchar línea, fila, de1, de2, keym
p 1 = 0x0f;
keym = p 1;
if(keym==0x0f) devuelve
for(de 1 = 0; ;de 1 & lt;200;de1++)
for(de2 = 0;de2 & lt125;de2++){;}
p 1 = 0x0f ;
keym = p 1;
if(keym==0x0f) devuelve;
p 1 = 0x0f;
línea = p 1;
p 1 = 0xf 0;
fila = p 1;
fila = fila + fila /*Valor clave de función de almacenamiento*/
if; (línea = = 0x de)clave 1();
if(línea = = 0x7e)clave 2();
if(línea = = 0x BD)clave 3() ;
if(line == 0x7d)key 4();
}
Voidtime 0 _ int (void) interrupción 1//Rutina de servicio de interrupción.
{
TR0 = 0;
if(fun==1)
{
de 0832 = tosin[b]; //Onda sinusoidal
b++;
}
Else if(fun==2) //Onda en diente de sierra
{
if(c & lt; 128)
da 0832 = c
Otro
da 0832 = 255 -c;
c++;
}
Else if(fun==3) //onda cuadrada
{
d++;
if(d<=128)
DA0832 = 0x00
Otro
DA0832 = 0xff p>
}
TH0 = th
TL0 = tl
TR0 = 1
}
<; p>Gerente general no válido (no válido){
TMOD = 0x 01
TR0 = 1
th = 0xff <; /p>
tl = 0xd0
TH0 = th
TL0 = tl
ET0 = 1;
EA = 1 ;
mientras(1)
{
mostrar();
juzgar();
}
}
Verbo (abreviatura de verbo) experiencia
Al principio, como no tenía experiencia y no sabía cómo empezar, fui al biblioteca para buscar algunos libros. Aunque había muchas opciones de diseño, siempre sentí que todavía había muchas cosas que no entendía, así que les pregunté a mis compañeros. Suele hacer algunos diseños y tiene algo de experiencia. Después de explicar y analizar las distintas opciones, decidió hacerlo consultando tablas. Esto puede reducir la dificultad de algunos diseños de hardware y el diseño inicial debe ser adecuado para su propio nivel. Con 8031, es necesario ampliar la ROM, por lo que es necesario ampliar la memoria. Además, 8031 básicamente ya no se utiliza en la práctica. El chip AT89S51 realmente utilizado tiene una ROM. Es sencillo crear una tabla de valores de muestra y verificarlos. Creo que el programa debería ser pequeño y la ROM del chip debería ser suficiente. Los LED se utilizan para mostrar la frecuencia y la amplitud. El chip controlador de interfaz integrado existente y la forma de onda se pueden mostrar con un osciloscopio. El microcontrolador se puede conectar al chip de conversión D/A, por lo que el hardware se puede configurar rápidamente.
Creo que después de hacer todo esto y tener las ideas en su lugar, escribir un programa debería ser relativamente fácil. Quién sabía, cuando estaba escribiendo el programa me di cuenta de que las teclas de función necesitaban un escáner. Lo encuentro realmente difícil. ¿Realmente querías rendirte en ese momento? Así que consulté al profesor, quien 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 el primer diseño de mi dispositivo. Aunque pasé por muchas dificultades, acumulé algo de experiencia en diseño y finalmente tuve una sensación de logro. Todavía queda un largo camino por recorrer, ¡será mejor que trabaje duro!
Referencia
[1] Tong, Hua. Fundamentos de la tecnología de la electrónica analógica [M]. Prensa de Educación Superior de Beijing 2003.345-362.
Pan Yongxiong, Liu Xiangyang Shahe. Tutorial Práctico sobre Circuitos Electrónicos CAD [M]. Xi'an: Prensa de la Universidad de Ciencia y Tecnología Electrónica de Xi'an, 2001.13-118.
[3] Zhang, Peng Xiyuan, Tan Xiaoyun, Qu Chunbo diseño de aplicación del microcontrolador [M]: Harbin
Prensa del Instituto de Tecnología de Harbin, 1997.53-61 .