Red de conocimiento informático - Conocimiento de la instalación - Proyecto de graduación Quiero usar un microcontrolador para hacer un teclado electrónico. Es mejor que el programa esté escrito en lenguaje C. ¡Esa amable persona puede ayudarme a proporcionarme información y seré gratuito!

Proyecto de graduación Quiero usar un microcontrolador para hacer un teclado electrónico. Es mejor que el programa esté escrito en lenguaje C. ¡Esa amable persona puede ayudarme a proporcionarme información y seré gratuito!

www.doyoung.net

Hay muchos, si lo necesitas, también tengo un diagrama de flujo

/********* * ************************************************* ** ********************** *************

Nombre del programa: ¿La serie DoToy funciona? programa de teclado electrónico

Escrito por: Du Yang?

Escrito por: Du Yang el 3 de junio de 2009

Soporte de hardware: oscilador de cristal externo de 12 MHZ: STC11L60XE ? Fuente de alimentación 3V

Descripción de la interfaz: ?Ver diagrama del circuito DoToy_MidTouch21?

Registro de modificaciones:? NO.1-20090603_17.54?Completa la prueba de 21 teclas del teclado electrónico (20090603_1 está listo) NO.2-20090604_01.29?Cambiado a un nuevo circuito de hardware de placa para la segunda vez (20090604_2 está listo))

/************************ ********* ******* ******************************************* ******** **

Descripción:

Utilice la función de entrada de alta impedancia de la interfaz de E/S del microcontrolador STC11Fxx para escanear el nivel de la interfaz de E/S.

Mantenga el dedo a medio camino entre la línea VCC y la línea de interfaz de E/S para generar una señal de alto nivel.

/****************************************** ************************************************** * */

void?INIT(void);

#include?lt;STC11Fxx.Hgt;?

/************ ****** ********************************************** ******* *******************************/

sbit?SPEAKER?= ?P1^0;/ / Altavoz, activación baja

sbit?LED=?P3^0; //LED positivo, empuje fuerte

sbit?LED2=?P3^1; //LED negativo

sbit?KEY11=?P2^0;

sbit?KEY12=?P2^1;

sbit?KEY13=?P2^ 2;

sbit?KEY14=?P2^3;

sbit?KEY15=?P2^4;

sbit?KEY16=?P2^5;

sbit?KEY17=?P2^6;

sbit?KEY21=?P2^ 7;

sbit?KEY22=?P4^4;

sbit?KEY23=?P4^5;

sbit?KEY24=?P4^6;

sbit?KEY25=?P0^7;

sbit?KEY26= ?P0^6;

sbit?KEY27=?P0^5;

sbit?KEY31=?P0^4;

sbit?KEY32=?P0 ^3;

sbit?KEY33=?P0^2;

sbit?KEY34=?P0^1;

sbit ?KEY35=?P0^0 ;

sbit?KEY36=?P3^3;

sbit?KEY37=?P3^2;

/** ****** ********************************************** ******* ******** *******************************/

unsigned?char?MUSIC;?

unsigned?char?STH0, STL0;

unsigned?int?code?tab[]={? //tabla de escala de tonos

63628, 63835, 64021 , 64103, 64260, 64400, 64524,?//Bajo 1-7

64580, 64684, 64777, 64820, 64898, 64968, 65030,?/ /alto 1-7

65058, 65110, 65157, 65178, 65217, 65252, 65283?//agudos 1-7

};?

/ ************ **************************************** ************* ****************************

****/

void?delay1ms?( unsigned?int?a){? ///?Programa de retraso de 1ms (a 12MHz?10 veces la velocidad de un microcontrolador 51) unsigned?int?i; while(? --a?! =?0){ para(i?=?0;?i?lt;?600;?i );? ************************************************** * ***********************************/

void?INIT(void ){/Inicializador TMOD =0x11;? ET0=1;? ET1=1;? EA=1; //¿Modo de funcionamiento de la interfaz de E/S? P0M0?=?0x00; //¿P0 entrada de alta impedancia completa? P1M1?=?0xfe; // ¿P1.0 es casi bidireccional y las otras son entradas de alta impedancia? P1M0?=?0x00;? P2M1?=? P2M0?=?0x00;? P3M1?=? P3M0?=?0x01;? P4M1?=?0xff; // ¿P4 son todas entradas de alta impedancia? P4M0?=?0x00;? P4SW?=?0xff;? LED?=?1; LED2?=?0; ALTAVOZ?=?0;

}

/** ************************************************** * ********************** *******************/

¿nulo? main(void){ INIT();?//inicializar? while(1){ if(KEY37?==?1){delay1ms(20); if(KEY37?==?1){MÚSICA?=?20; }}?// Tweeter B (37) if(KEY36?==?1){delay1ms(20); if(KEY36?==?1){MUSIC?=?19;}} if(KEY35?==? 1){delay1ms( 20); if(KEY35?==?1){MÚSICA?=?18;}}

if(KEY34?==?1){delay1ms(20); =?1){ MÚSICA?=?17;}} if(CLAVE33?==?1){delay1ms(20);if(CLAVE33?==?1){MÚSICA?=?16;}} si( CLAVE32? ==?1) {delay1ms(20);if(KEY32?==?1){MÚSICA?=?15;}} if(KEY31?==?1){delay1ms(20);if(KEY31?== ?1){MÚSICA ?=?14;}}

/3? si (CLAVE27?==?1){delay1ms(20); si (CLAVE27?==?1){MÚSICA?= ?13;}} if(KEY26?==?1){delay1ms(20); if(KEY26?==?1){MUSIC?=?12;}} if(KEY25?==? 1){delay1ms( 20);if( CLAVE25?==?1){MÚSICA?=?11;}} if(CLAVE24?==?1){delay1ms(20);if(CLAVE24?==?1){MÚSICA?=? 10;}}

if(KEY23?==?1){ retraso1ms(20); if(KEY23?==?1){MÚSICA?=?9;}} if(KEY22?==?1){delay1ms(20);if( CLAVE22?==?1){MÚSICA?=?8;}} if(CLAVE21?==?1){delay1ms(20) ;if(CLAVE21?==?1){MÚSICA?=?7;}}

//2? if(KEY17?==?1){delay1ms(20); if(KEY17?==?1){MÚSICA?=?6;}} if(KEY16?==? 1){retraso1ms(20). si(CLAVE16?==?1){MÚSICA?=?5;}} si(CLAVE15?==?1){retraso1ms(20);si(CLAVE15?==?1) {MÚSICA?=?4;}} if(CLAVE14?==?1){delay1ms(20);if(CLAVE14?==? 1){MÚSICA?=?3;}} si(CLAVE13?==?1 ){delay1ms(20);if(KEY13?==?1){MÚSICA?=?2;}} if(KEY12?==?1){delay1ms(20);if(KEY12?==?1){ MÚSICA?=?1; }} if(KEY11?==?1){delay1ms(20); if(KEY11?==?1){MÚSICA?=?0;}}

// 1 if(MUSIC! =?0xff){? //si hay un valor de escala (cuando no es 0XFF) STH0=tab[MUSIC]/256;? STL0=tab[MUSIC]256;? iniciar el cronómetro

MÚSICA?=?0xff;?//Borrar registro}else{? //¿De lo contrario? SPEAKER?=?1;?//Apagar el altavoz

LED?=?1;

TR0=0;?//Apagar el temporizador}?

}?

}?

/****************************** ****** ********************************************** ******* ******/

void?t0(void)?interrupt?1?0{// ¿Timer0 genera audio? ;? ALTAVOZ=~ALTAVOZ; ¿LED?/LED parpadeando a la misma frecuencia?

}

/************************************ ** ************************************************* *** ***/

/****************** ***************** ***** *************************

*?Duyang Studio?www.DoYoung.net

/** ******************************************* ******** *********/