阿里云建设网站好吗,大千设计装饰有限公司,wordpress discuz seo,.net建设网站步骤详解题目 7 #xff1a;玩具电子琴 基于单片机设计一能够发出中音八个音阶的音乐信号的电子琴#xff0c;能够实现弹奏和音符显示功 能。 具有 8 个音阶按键#xff0c;每按下一个按键时#xff0c;所对应的 LED 点亮#xff0c;音符进行显示。 具体要求如下#xff1a; 玩具电子琴 基于单片机设计一能够发出中音八个音阶的音乐信号的电子琴能够实现弹奏和音符显示功 能。 具有 8 个音阶按键每按下一个按键时所对应的 LED 点亮音符进行显示。 具体要求如下 1具有 8 个音阶按键每按下一个按键时扬声器发声所对应的 LED 点亮。 2数码管显示当前的音符用数字表示简谱。 3可通过单片机控制音量大小并进行音量显示。 4音阶频率信号由单片机产生。 表 2 音阶/频率对照表 音阶 1 2 3 4 5 6 7 1 频率/Hz 262 294 330 349 392 440 494 523 可添加符合题目背景的其它合理功能。 玩具电子琴设计与实现
本文介绍了一款基于单片机的玩具电子琴的设计与实现。该电子琴能够发出中音八个音阶的音乐信号具备弹奏和音符显示功能同时能够通过按键控制音量大小并显示当前音量。
1. 功能介绍
具有8个音阶按键每按下一个按键时扬声器发声并点亮对应的LED。数码管显示当前音符用数字表示简谱。通过按键控制音量大小并在数码管上显示当前音量。音阶频率信号由单片机产生。
2. 硬件设计
2.1 按键扫描
按键扫描采用PINE端口的8个输入每个按键对应一个输入引脚。当按键按下时扫描函数keyscan返回对应按键的编号。
unsigned char keyscan( void )
{if ( (PINE 0x01) 0 )return(1);if ( (PINE 0x02) 0 )return(2);if ( (PINE 0x04) 0 )return(3);if ( (PINE 0x08) 0 )return(4);if ( (PINE 0x10) 0 )return(5);if ( (PINE 0x20) 0 )return(6);if ( (PINE 0x40) 0 )return(7);if ( (PINE 0x80) 0 )return(8);return(0);
}2.2 数码管显示
数码管采用共阴极数码管通过端口PD和PG控制显示。xianshi数组用于存储需要显示的数字LEDData数组用于存储对应段选的数据。
unsigned char xianshi[2];
unsigned char LEDData[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};定时器0用于数码管的动态扫描每隔一段时间切换显示。
char i0;
#pragma interrupt_handler TIMER0_ISR:17
void TIMER0_ISR(void)
{TCNT0 10;i;if(i2)i0;PORTD 0XFF; if(i0){PORTG ~0x08;PORTG | 0x04;PORTD ~xianshi[0];}if(i1){PORTG ~0x04;PORTG | 0x08;PORTD ~xianshi[1];}
}2.3 PWM信号产生
PWM信号用于控制扬声器发声通过设置定时器1的输出比较寄存器OCR1A和周期寄存器ICR1来生成不同频率的音阶。
void Set_waveform_parameters( unsigned int mu_volume, unsigned int fre_t )
{if ( mu_volume 0 || fre_t 0 ){OCR1A 0;ICR1 0;return;}ICR1 57600 / fre_t;OCR1A mu_volume * 5060 / fre_t;
}3. 软件设计
在主程序中首先进行初始化设置包括按键端口、数码管端口、LED端口、PWM端口的配置。然后进入主循环不断扫描按键更新音量和数码管显示。
void main( void )
{unsigned char key;delay_nms( 100 );DDRE 0x00;PORTE 0xff;DDRG ~0x03;PORTG | 0x03;DDRF 0XFF;PORTF 0XFF;DDRD 0XFF; PORTD 0XFF; DDRG | 0x0C;PORTG | 0x0C;xianshi[0]0x00;xianshi[1]LEDData[mu_volume];while ( 1 ){key keyscan();if ( key ! 0 ){Set_waveform_parameters( mu_volume, tone_freq[key - 1] );xianshi[0] LEDData[key];PORTF ~(0x01 (key - 1));while ( keyscan() ! 0 );PORTF 0XFF;Set_waveform_parameters( 0, 0 );xianshi[0] 0x00;}if ( (PING 0x01) 0 ){if ( mu_volume 9 )mu_volume;xianshi[1] LEDData[mu_volume];while ( (PING 0x01) 0 );}if ( (PING 0x02) 0 ){if ( mu_volume 1 )mu_volume--;xianshi[1] LEDData[mu_volume];while ( (PING 0x02) 0 );}}
}4. 总结
本文介绍的玩具电子琴通过单片机实现了音阶发声、音符显示和音量控制功能。硬件设计包括按键扫描、数码管显示和PWM信号产生软件设计则包括按键处理、音量控制和定时器中断处理。该设计不仅实现了基本功能还具有较好的扩展性可以根据需要添加更多功能。
资源
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?ubdf8eeb84961492ba2b62f7bfee641eatabBB08J2