졸업 프로젝트로 마이크로 컨트롤러를 사용하여 전자 키보드를 만들고 싶습니다. 프로그램은 C 언어로 작성하는 것이 가장 좋습니다. 돈을 원하는 사람은 누구나 무료로 정보를 제공할 수 있습니다.
www.doyoung.net
많습니다 원하시면 흐름도도 있어요
/************ ************************************************** *** *******************************
프로그램 이름: DoToy 시리즈가 작동합니까? MidTouch21 전자? 키보드 프로그램
p>작성자: Du Yang?
작성 시간: 2009년 6월 3일
하드웨어 지원: STC11L60XE 외부 12MHZ 수정 발진기 전원 공급 장치 3V< /p >
인터페이스 설명: 자세한 내용은 "DoToy_MidTouch21 회로도"를 참조하세요.
수정 로그: NO.1-20090603_17.54 전자 키보드의 21개 키 테스트 완료(20090603_1 준비) ) NO.2- 20090604_01.29 2차 신규보드의 하드웨어 회로로 변경(20090604_2 준비)
/******************** ***** ********************************************* ****** *******************
지침:
고임피던스 입력 기능을 사용하십시오. I/O 인터페이스 레벨을 스캔하기 위한 STC11Fxx 마이크로컨트롤러 I/O 인터페이스.
손가락을 사용하여 VCC 라인과 I/O 인터페이스 라인을 절반 연결하여 하이 레벨 신호를 생성합니다.
/****************************************** ************************************************** * */
void?INIT(void);
#include?lt;STC11Fxx.Hgt;?
/******** ************************************************** * ************************************/
스비트?스피커?= ?P1^ 0; //스피커, 낮은 활성화
sbit?LED=?P3^0; //LED 양극, 강한 푸시
sbit?P3^1 ; // LED 음극
sbit?KEY11=?P2^0;
sbit?KEY12=?P2^1;
sbit?KEY13=? P2^2;
sbit?KEY14=?P2^3;
sbit?KEY15=?P2^4;
sbit?KEY16=?P2^ 5;
p>
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[]={?// 스케일 테이블
63628 , 63835, 64021, 64103, 64260, 64400, 64524,?//베이스 1-7
64580, 64684, 64777, 64820, 64898, 64968, 65030 ,?//알토 1-7
65058, 65110, 65157, 65178, 65217, 65252, 65283?//고음 1-7
};?
/******** ***************************************** ********** *************************************/ p>
void?delay1ms?( unsigned?int?a){?//?1ms 지연 프로그램(12MHz?1
51 마이크로컨트롤러 속도의 0배) unsigned?int?i; while(?--a?!=?0){ for(i?=?0;?i?lt;?600;?i );?
}/***************************************** *************************************************/
void?INIT(void){//초기화 프로그램 TMOD=0x11;? ET1=1;? P0M1?=?0xff; mode?=?0x00; //P0은 모두 고임피던스 입력인가요? P1M1?=?0xfe; //P1.0은 준양방향이고 나머지는 고임피던스 입력인가요? P2M1?=?0xff; // P2는 모두 고임피던스 입력입니까? P2M0?=?0x00;? P4SW?=?0xff;? ?0;스피커?=?0;
}
/************************ ********************* ***************************** **************/
void ?main(void){ INIT();?//초기화? while(1){ if(KEY37?==? 1){delay1ms(20); if(KEY37?==?1){MUSIC?=?20 ;}}?//고음 B(37) if(KEY36?==?1){delay1ms(20); (KEY36?==?1){MUSIC?=?19;}} if(KEY35?== ?1){delay1ms(20);if(KEY35?==?1){MUSIC?=?18;}} if(KEY34?==?1){delay1ms(20);if(KEY34?==?1 ){MUSIC?=?17;}} if(KEY33?==?1){delay1ms(20);if( KEY33?==?1){MUSIC?=?16;}} if(KEY32?==? 1){delay1ms(20);if(KEY32?==?1){MUSIC?=?15;}} if (KEY31?==?1){delay1ms(20);if(KEY31?==?1) {MUSIC?=?14;}}
//3? if(KEY27?==? 1){delay1ms(20);if(KEY27?==?1){MUSIC?=?13 ;}} if(KEY26?==?1){delay1ms(20); if(KEY26?==?1) {MUSIC?=?12;}} if(KEY25?==?1){delay1ms(20) ;if(KEY25?==?1){MUSIC?=?11;}} if(KEY24?==?1 ){delay1ms(20);if(KEY24?==?1){MUSIC?=?10; }} if(KEY23?==?1){delay1ms(20); MUSIC?=?9;}} if(KE
Y22?==?1){delay1ms(20);if(KEY22?==?1){MUSIC?=?8;}} if(KEY21?==?1){delay1ms(20);if(KEY21? ==?1){MUSIC?=?7;}}
//2? if(KEY17?==?1){delay1ms(20);if(KEY17?==?1){ MUSIC?=?6;}} if(KEY16?==?1){delay1ms(20);if(KEY16?==?1){MUSIC?=?5;}} if(KEY15?==?1) {delay1ms(20);if(KEY15?==?1){MUSIC?=?4;}} if(KEY14?==?1){delay1ms(20);if(KEY14?==?1){MUSIC ?=?3;}} if(KEY13?==?1){delay1ms(20);if(KEY13?==?1){MUSIC?=?2;}} if(KEY12?==?1){ Delay1ms(20);if(KEY12?==?1){MUSIC?=?1;}} if(KEY11?==?1){delay1ms(20);if(KEY11?==?1){MUSIC? =?0;}}
//1 if(MUSIC?!=?0xff){?//스케일 값이 있는 경우(0XFF 아님) STH0=tab[MUSIC]/256;?/ / 타이머 T0에 스케일의 주파수 값을 로드합니다. STL0=tab[MUSIC]256;? TR0=1;?//타이머 시작
MUSIC?=?0xff;?//클리어 등록}else {?//그렇지 않으면 SPEAKER?=?1;?//스피커 끄기
LED?=?1;
TR0=0;?//켜기 타이머 꺼짐}?
}?
}?
/********************* *********** *************************************** ************ ************/
void?t0(void)?인터럽트?1?사용?0{//타이머 0이 오디오를 생성합니까? TH0=STH0;? TL0= STL0;? SPEAKER=~SPEAKER;?//신호를 생성하기 위해 주파수를 반전시킵니다. LED?=?SPEAKER;?//LED가 동일한 주파수로 깜박이나요?
}
/**** *********************************** **************** *********************************/
/******** ********************************** ***************** ***
*?Du Yang Studio?www.DoYoung.net
/**** ******************** ****************************** *************/