51 Single Chip Microcomputer 기반 전자장기 시뮬레이션 설계 Protues

1. 디자인 배경

51 싱글칩 마이크로컴퓨터를 기반으로 한 전자 오르간은 51 싱글칩 마이크로컴퓨터 컨트롤러, 오디오 모듈 및 하드웨어 어레이로 구성된 디지털 악기입니다. 다양한 악기의 음향 효과를 시뮬레이션할 수 있으며 기존 전자 피아노에는 없는 고급 기능도 많이 있습니다.

우선, 이 전자 오르간은 디지털 신호 처리 기술을 기반으로 합니다. 소프트웨어 프로그래밍을 통해 피아노, 전자 오르간 등의 소리를 디지털 신호로 분석하고 DAC 칩에서 아날로그 오디오 신호로 변환한 다음 파워 앰프 인터페이스를 통해 더 높은 볼륨의 아날로그 신호를 출력합니다. 이것은 또한 사용자가 프로그래밍 언어를 사용하여 음악 연주에 특수 효과 추가, 음질 개선 및 음악 합성 실현과 같은 전자 오르간의 개선 및 최적화를 개인화할 수 있음을 의미합니다.

둘째, 51 단일 칩 마이크로컴퓨터를 기반으로 하는 전자 기관도 보다 유연한 인간-컴퓨터 상호 작용 인터페이스를 가지고 있습니다. 리듬에 맞춰 다양한 음악을 연주할 수 있을 뿐만 아니라 사용자의 다양한 요구를 충족시키기 위해 매개변수를 조정하고 모드를 변경하고 프로그램을 수정하여 시각적 및 상호 작용을 실현할 수 있습니다.

또한 51단일칩 마이크로컴퓨터를 기반으로 한 전자오르간은 응용분야가 광범위하여 학교교육, 무대공연, 홈오락 등 많은 응용분야를 가지고 있다. 초보자에게 더 쉬운 개발 채널을 제공할 수 있을 뿐만 아니라 혁신적인 사고를 자극하고 톤과 리듬 감각을 개발하며 특히 뮤지션이나 제작자의 DIY 및 제작에 적합합니다.

기술의 성숙과 음악 엔터테인먼트에 대한 사람들의 수요가 증가함에 따라 51개의 단일 칩 마이크로컴퓨터를 기반으로 하는 전자 오르간은 중요한 악기가 되었으며 음악 산업에 큰 혜택을 가져왔습니다.

두, 기능을 실현

이 설계는 51개의 단일 칩 마이크로컴퓨터를 제어 코어로 사용하고 51개의 단일 칩 마이크로컴퓨터를 기반으로 전자 기관을 설계합니다. 전체 시스템에는 MCU, 수정 발진기 회로, 시계 회로, 기능 키, 키보드, 스피커 및 디지털 튜브 디스플레이가 포함됩니다. 이 디자인은 자연 메이저 스케일인 do re mi fa sol la si의 저음, 중음 및 고음의 연주를 구현할 수 있으며 "Two Tigers", "The Painter" 및 "Happy Birthday"의 3개 클래식 트랙 재생을 구현할 수 있습니다. 당신에게" , 버튼을 눌러 재생 순서를 전환하고 공통 음극 디지털 튜브를 사용하여 재생 악보의 순서 번호를 실시간으로 표시합니다. 구체적으로 다음과 같은 기능을 실현할 수 있습니다.

(1) 자연 메이저 스케일 do re mi fa sol la si에 해당하는 건반을 눌러 해당 스케일의 연주를 실현합니다.

(2) 기능 버튼을 누른 후 노래 재생이 시작되며, 기능 버튼을 누른 횟수만큼 "투호랑이", "화가", "생일 축하해"가 반복 재생됩니다.

(3) 공통 음극 디지털 튜브는 재생 악보의 일련 번호를 실시간으로 표시하며 숫자 1은 '두 호랑이'를 재생하는 것을 의미하고 숫자 2는 '화가'를 재생하는 것을 의미하며 숫자 3은 재생을 의미합니다. ''생일 축하해요''.

(4) 리셋 버튼을 누르면 시스템이 초기 상태로 돌아갑니다.

3. 시뮬레이션 데모

기본 전원 켜짐 상태에서 스케일 키를 누르면 해당 스케일이 생성되며 점수는 재생되지 않습니다.

 기능 버튼을 눌러 "Two Tigers" 재생을 시작하면 디지털 튜브에 1이 표시됩니다.

  기능 버튼을 다시 눌러 "Plasterer" 재생을 시작하면 디지털 튜브에 2가 표시됩니다.

   세 번째로 기능 버튼을 눌러 "Happy Birthday to You" 재생을 시작하면 디지털 튜브에 3이 표시됩니다.

  기능 버튼을 네 번째로 누르면 시스템이 초기 상태로 돌아갑니다.

4. 일부 소스 프로그램


void Keyscans(void)
{
	P1=0x00;
	if(sth==0)
	{
		delay(2);
		if(sth==0)
		{
			m++;
			if(m>=4)m=0;
			while(sth==0);
		}
	}
	if(m) P1=LED[m];
	switch(m)
	{
		case 1:music1();break;
		case 2:music2();break;
		case 3:music3();break;
	} 
}

void main()
{
  Timer0Init();
	while(1)
	{
		Keyscans();
		KeyboardScan();
	}						
} 

추신

일부 내용은 온라인 자료에서 가져왔으며, 침해가 있는 경우 해당 블로거에게 연락하여 삭제하시기 바랍니다. 시뮬레이션 소스 파일 및 전체 프로그램 소스 코드 Baidu 네트워크 디스크 링크: https://pan.baidu.com/s/15COMMZD2a8EygIodWO8srA 
추출 코드: baim 
 

추천

출처blog.csdn.net/weixin_53402301/article/details/130798262