Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Buscamos urgentemente programación de microcontroladores~! ! ! Gracias ~

¡Buscamos urgentemente programación de microcontroladores~! ! ! Gracias ~

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

tabla de códigos de caracteres sin firmar[ ]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00} //*** Cátodo 0~9 corresponde a 16 Número de sistema de dígitos

//=============Datos de onda sinusoidal=====================

uchar código sin_tab[256]=

{

0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 0x98, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0xab, 0xae,

0xb0, 0xb3, 0xb6, 0xb9, 0xbf, 0xc1, 0xc4, 0xc7, 0xcc, 0xd1, 0xd3, 0xd8,

0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xed, 0xef, 0xf0, 0xf2, 0xf3, 0xf4,

0xf6, 0xf7, 0xf8, 0xf9, 0xfa, fb, 0xfc , 0xfc, 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,

0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7,

0xf6, 0xf5, 0xf3, 0xf2, 0xf0, 0xef, 0xed, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0 xe1, 0xde, 0xdc,

0xda, 0xd8, 0xd6, 0xd3, 0xd1, 0xce, 0xcc, 0xc9, 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb6, 0xb4,

0xb1, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c, 0x99, 0x96, 0x92, 0x8f, 0x8c, 0x89, 0x86, 0x83,

0x80, 0x7d, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a, 0x67 , 0x64, 0x61, 0x5e, 0x5b, 0x58, 0x55, 0x52,

0x4f, 0x4c, 0x49, 0x46, 0x43, 0x41, 0x3e, 0x3b, 0x39, 36, 0x33, 0x31, 2e, 0x2c, 0x2a, 0x27,

0x25, 0x23, 0x21, 0x1f, 0

x1d, 0x1b, 0x19, 0x17, 0x15, 0x14, 0x12, 0x10, 0xf, 0xd, 0xc, 0xb,

0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1. , 0x1, 0x0, 0x0, 0x0, 0x0, 0x0,

0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8,

0x9, 0xa, 0xc, 0xd, 0xe, 0x10, 0x12, 0x13, 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x23,

0x25, 0x27, 0x29, 0x2c, 0x2e, 0x30, 0x33, 0x35, 0x38, 0x3b, 0x3d, 0x40, 0x43, 0x46, 0x48, 0x4b,

0x4e, 0x51, 0x54, 0x57, 0x 5a, 0x5d, 0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x73, 0x76, 0x79, 0x7c,

}

//Tabla de datos de señal de onda triangular

; código uchar thr_tab[32]=

{

0x00, 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f, 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef,

0xff, 0xef, 0xdf, 0xcf, 0xbf, 0xaf, 0x9f, 0x8f, 0x7f, 0x6f, 0x5f, 0x4f, 0x3f, 0x2f, 0x1f, 0x0f

} ;

//---------------------------------------- -------- ------------------------------------------ -------- -----------

//Tabla de datos de señal de onda de diente de sierra

código uchar jc_tab[33]=

{

0x00, 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x2f, 0x38, 0x3f, 0x48, 0x4f, 0x58, 0x5f, 0x68, 0x6f, 0x78,

0x7f, 0x88, 0x8f, 0x98, 0x9f, 0xa8, 0xaf, 0xb8, 0xbf, 0xc8, 0xcf, 0xd8, 0xdf, 0xe8, 0xef, 0xf8, 0xff

};

sbit LED4=P2^7;

sbit LED3=P2^6;

sbit LED2=P2^5;

sbit LED1=P2^4;

int temp1 ; //Temperatura real

int conter=0; //Recuento del ciclo de trabajo del LED

unsigned char tabArry[4] //Guardar datos de visualización

//Declaración de puerto clave

sbit

k1=P2^0;

sbit k2=P2^1;

sbit LED=P2^2;

sbit modo=P3^2;

sbit LED=P2^2;

modo sbit=P3^2;

p>

char flag=1 //Indicador de clave

int keycount=0; //Recuento de claves

unsigned char waveth, wavetl;

unsigned int mbjs, wavecount, frecount=500;

//programa de retraso de milisegundos

void delayms(int ms)

{

uchar i;

while(ms--)

{

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

}

}

//Cuantización de datos

void change(char ch1, unsigned int ch)

{

tabArry[0]=ch1; p> tabArry[1]=ch1000/100;

tabArry[2]=ch100/10;

tabArry[3]=ch10; /p>

//Escaneo de teclado

anulación de teclas()

{

if(flag==1)

{

if(mode==0) //Usa el modo para cambiar la temperatura y la forma de onda

{

delayms(10); > if(modo==0)

{

flag=0;

recuento de claves;

if(keycountgt;=4) keycount=0;

//if(keycountgt;2) ET1=1;

// else ET1=0

}

}

if(k1==0)

{

demorams(10);

if(k1==0 )

{

flag=0;

switch(keycount)

{

caso 0:

//caso 4:

// ET1=1;

frecuenciacuenta ;

if(frecuentagt; 1000) frecuenciacuenta=0;

cambio(0x0d, frecount);

descanso

caso 1 :

// caso 6:

frecount;

if(frecountgt; 1000) frecount=0;

cambio(0x0e, frecount); > caso 2:

frecuencia;

if(frecountgt; 1000) frecount=0;

cambio(0x0f, frecount);

break

caso 3:

frecuenta;

if(frecuentagt; 1000)frecuenta=0;

cambiar(0x05,frecuenta); /p>

}

}

}

if(k2==0)

{

delayms(10);

if(k2==0)

{

flag=0;

switch(keycount )

{

caso 0:

// ET1=1

frecuencia--; if(frecountlt;0) frecount=999;

cambio(0x0d, frecount);

waveth=(65536-31250/frecount)/256;

wavetl=(65536-31250/frecount)256;

break;

caso 1:

frecount--; frecountlt; 0) frecount=999;

cambio(0x0e, frecountth=(65536-31250/frecount)/256; (65536-31250/frecount)256;

descanso

caso 2:

frecount--; 0) frecuencia=999;

cambio(0x0f, frecuenciafrecuencia);

waveth=(65536-31250/frecuencia)/256; -31250/frecount)256;

descanso

caso 3:

frecount--; frecount=999;

cambio(0x05, frecount);

waveth=(65536-31250/frecount)/256

wavetl=(65536-31250; /frecuenta)256;

descanso

}

}

> }

}

if(k1!=0 amp; amp; k2!=0 amp; amp; modo!=0) flag=1

}

void display()

{

// int i

// uchar ch1, ch2; >

cambiar(keycount)

{

caso 0:

cambiar(0x0d, frecount);

romper;

caso 1:

cambio(0x0e, frecount);

ruptura

caso 2:

cambio; (0x0f, frecount);

ruptura

caso 3:

cambio (0x05, frecount

ruptura

p>

p>

}

/* ch1=0xef;

ch2=0xf0

for(i=0;ilt; 4;i)

{

P0= tabla[tabArry[i]];

// P2 |= ch2;

P2 amp;= ch1 ;

ch1lt;lt;=1;

delayms(10);

// P2 = P2 | >

} */

P0 = tabla[tabArry[0]];

LED1=0

delayms(3); >

LED1 =1;

P0 = tabla[tabArry[1]];

LED2=0;

delayms(3);

LED2=1;

P0 = tabla[tabArry[2]];

LED3=0

retrasos(3); /p>

LED3=1;

P0 = tabla[tabArry[3]]

LED4=0

retrasos(3);

LED4=1;

}

void Timerinit()

{

TMOD=0x01; /p>

// TH0=0xff; //1KHz/256

// TL0=0xfc

TH0=waveth=(65536-31250/frecuenta)/256

TL0=wavetl=(65536-31250/frecount)256;

EA=1;

ET0=1;

TR0=1;

}

//Función principal

void main()

{

Timerinit ();

p>

while(1)

{

teclascan();

display();

}

}

Temporizador vacío0

() interrumpir 1

{

TH0=waveth;

TL0=wavetl

if (keycount==0)

{

wavecount=0;

P1 = sin_tab[mbjs];

mbjs =8; (mbjsgt;=256)

{

mbjs=0;

}

}

más si (keycount==1)

{

wavecount=0;

P1 = thr_tab[mbjs];

mbjs;

p>

if(mbjsgt;=32)

{

mbjs=0;

}

}

else if(keycount==2)

{

wavecount=0

P1 = jc_tab[mbjs];

mbjs;

if(mbjsgt;=32)

{

mbjs=0;

}

}

}