Red de conocimiento informático - Descarga de software - Utilizando el microcontrolador 51 para diseñar un tubo de pantalla digital LED de 3 dígitos como cronómetro 00.0-99.0 Diseñe el circuito y el programa en lenguaje C.

Utilizando el microcontrolador 51 para diseñar un tubo de pantalla digital LED de 3 dígitos como cronómetro 00.0-99.0 Diseñe el circuito y el programa en lenguaje C.

#include "STC12C54.H"

#define uchar unsigned char

#define uint unsigned int

#define dataport P1/ /P1 impulsa directamente los ocho ánodos del tubo digital

sbit wei1=P3^3; //Hay tres pines más conectados a los cátodos de los tres triodos que impulsan el tubo digital

sbit wei2= P3^4;

sbit wei3=P3^5;

uint a=0; // Contando el número de interrupciones, una vez son 50 ms, 20 veces es 1 segundo

//***Código de siete segmentos del tubo Yinnixie

uchar TABLE[10]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07 , 0x7f, 0x6f};

//Retraso de subrutina

void delay1ms(uint t)

{

uint i, j, k;

for(i=t;igt;0;i--)

for(j=15;jgt;0;j--)

for(k=27; kgt; 0; k--);

}

//Mostrar subrutina

void display(uint n)

{

uchar a1, a2, a3

a1=n/10010

a2=n/1010;

a3=n10 ;

wei1=1;

dataport=TABLE[a1];

retraso1ms(1);

wei1=0;

dataport=0x80|TABLE[a2]; //Varios puntos decimales aquí

delay1ms(1);

wei3=1;

dataport=TABLE[a3];

delay1ms(1);

wei3=0;

}

void init(void )

{

TMOD=0X01;

TH0=(655536-50000)/256 //Tiempo 50 ms

TL0= (655536-50000)256;

EA=1;

ET0=1;

TR0=1;

P1M0=0 ;

P1M1=0xff; //El puerto P1 está configurado como salida push-pull, con una fuerte capacidad de conducción

P3M0=0;

P3M1=0x38; //P3 .3P3.4 El puerto P3.5 está configurado como salida push-pull

}

void main(void)//programa principal

{

init(); //Configuración del estado inicial

while(1)

{

display( a/2); //Mostrar valor de conteo, en décimas de segundos

}

}

void timer0(void)interrupt 1//Interrumpir subrutina

{

TH0=(655536-50000)/256;

TL

0=(655536-50000)256;

a

if (a==1980)a=0; //1980 veces son 99 segundos

}