La Red de Conocimientos Pedagógicos - Conocimientos de formación/capacitación - Título de diseño del curso MCU: Pantalla de voltaje analógico

Título de diseño del curso MCU: Pantalla de voltaje analógico

Aquí tengo un voltímetro digital

1. Tarea experimental

Utilice el microcontrolador AT89S51 y ADC0809 para diseñar un voltímetro digital, que puede medir el valor de voltaje de CC entre 0-5 V y mostrar cuatro dígitos, pero requiere la cantidad mínima de componentes.

2. Esquema del circuito

(Imagen) Ver ilustración

3. Conexión de hardware en la placa del sistema

a) Conecte P1.0-P1.7 en el área "Sistema MCU" al puerto ABCDEFGH en el área "Pantalla digital dinámica" con un cable de 8 núcleos.

b) Conecte P2.0-P2.7 en el área "MCU System" al puerto S1S2S3S4S5S6S7S8 en el área "Dynamic Digital Display" con un cable de 8 núcleos.

c) Conecte P3.0 en el área "Sistema MCU" al terminal ST en el área "Módulo de conversión analógico a digital" con cables.

d) Conecte P3.1 en el área "Sistema MCU" al terminal OE en el área "Módulo de conversión analógico a digital" con cables.

e) Conecte P3.2 en el área "Sistema MCU" al terminal EOC en el área "Módulo de conversión analógico a digital" con cables.

f) Conecte P3.3 en el área "Sistema MCU" al terminal CLK en el área "Módulo de conversión analógico a digital" con cables.

g) Conecte el terminal A2A1A0 en el área "módulo de conversión analógico a digital" al terminal GND en el área "módulo de potencia" con un cable.

h) Conecte el terminal IN0 en el área "Módulo de conversión analógico a digital" al terminal VR1 en el área "Módulo de voltaje ajustable de tres vías" con un cable.

i) Conecte P0.0-P0.7 en el área "Sistema MCU" al terminal D0D1D2D3D4D5D6D7 en el área "Módulo de conversión analógico a digital" con un cable de 8 núcleos.

4. Contenido de programación

i. Dado que ADC0809 requiere una señal CLK al realizar la conversión A/D, y el CLK de ADC0809 en este momento está conectado al puerto P3.3 del microcontrolador AT89S51, es decir, requiere. P3 .3 Señal CLK de salida para uso de ADC0809. Por lo tanto, el método para generar la señal CLK debe generarse mediante software.

ii. Dado que el voltaje de referencia VREF de ADC0809 = VCC, los datos convertidos deben procesarse y el valor del voltaje se muestra en el tubo digital.

Valor de voltaje real mostrado (D/256*VREF)

5. Programa fuente ensamblador

(omitido)

6. Programa fuente en lenguaje C

#include

código de caracteres sin firmar dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf, 0x7f};

código de caracteres sin firmar dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};

dispbuf de char sin firmar[8]={10,10,10,10,0,0,0,0};

descuento de char sin firmar;

getdata de char sin firmar;

p>

unsigned int temp;

unsigned char i;

sbit ST=P3^0;

sbit OE=P3 ^1;

p>

sbit EOC=P3^2;

sbit CLK=P3^3;

void main(void)

{

ST=0;

OE=0;

ET0=1;

ET1=1;

EA=1 ;

TMOD=0x12;

TH0=216;

TL0=216;

TH1= (65536-4000)/256 ;

TL1=(65536-4000)%256;

TR1=1;

TR0=1;

ST=1 ;

ST=0;

mientras(1)

{

si(EOC== 1)

{

OE=1;

getdata=P0;

OE=0;

temp=getdata*235;

temp=temp/128;

i=5;

dispbuf[0]=10;

dispbuf[1]=10 ;

dispbuf[2]=10;

dispbuf[3]=10;

dispbuf[4]=10;

dispbuf[5]=0;

dispbuf[6]=0;

dispbuf[7]=0;

mientras (temp/10)

{

dispbuf[i]=temp%10;

temp=temp/10;

i++ ;

}

dispbuf[i]=temp;

ST=1;

ST=0;

}

}

}

void t0(void) interrupción 1 usando 0

{

CLK=~CLK;

}

void t1(void) interrupción 3 usando 0

{

TH1=(65536-4000 )/256;

TL1=(65536-4000)%2

56;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

if(dispcount==7)

{

P1=P1 | 0x80;

}

descuento++;

si(dispcount==8)

{

dispcount=0;

}

}