Colección de citas famosas - Consulta de diccionarios - 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 SCM" 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. Ensamblando el programa fuente

(omitido)

6. Programa fuente en lenguaje C

#include lt;AT89X52.Hgt;

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

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

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

descuento de caracteres sin firmar

getdata de caracteres sin firmar; ;

unsigned int temp;

unsigned char i;

sbit ST=P3^0;

sbit OE=P3^1 ;

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

TL1=(65536-4000)256;

TR1=1;

TR0=1; =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; =10;

dispbuf[2]=10;

dispbuf[3]=10

dispbuf[4]=10; p> dispbuf[5]=0;

dispbuf[6]=0;

dispbuf[7]=0;

{

dispbuf[i]=temp10;

temp=temp/10

i

}

dispbuf[i]=temp;

ST=1

ST=0;

}

}

void t0(void) interrupción 1 usando 0

{

CLK=~CLK; p>

}

nulo

t1(void) interrumpe 3 usando 0

{

TH1=(65536-4000)/256

TL1=(65536-4000)256;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

if(dispcount==7)

{

P1=P1 | 0x80;

}

descuento

if(dispcount==8)

{

descuento=0

}

}