• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

嵌入式单片机教学——电子琴(二)

人工智能 小白 2640次浏览 0个评论

引言

前一阵子一直在忙着期末考试,拖了很久,先跟各位说声抱歉呀,这章我们继续完成上一节未完成的内容。拿到了PCB焊接完了之后呢。我们就需要对这个芯片进行编程了。


正文

先来看一下焊接完之后的实物图吧。  
嵌入式单片机教学——电子琴(二)   我们回顾一下上一期所提到的功能实现,我们首先对蜂鸣器输出PWM波,通过不同频率的调节,来使得其发出不同音调的声音。并且还增加了一个串口通信的语音播报模块。 我们看一下cubemx上关于pwm波生成的相关配置。  
嵌入式单片机教学——电子琴(二)   配置好了之后我们就需要在代码中编写生成pwm波的函数。 代码如下:  

void pwm2_output(uint8_t pwm_CH,float duty)
{
  uint16_t CCR,ARR;

  if(!(pwm_CH!=1 || pwm_CH!=2 || pwm_CH!=3 || pwm_CH!=4)) return;
  if(duty<0||duty>100) return;

  ARR=htim2.Instance->ARR;
  CCR=(uint16_t)(ARR*(duty/100.0f)+0.5f);

  if(pwm_CH==1)
  {
    htim2.Instance->CCR1=CCR;
  }
  else if(pwm_CH==2)
  {
    htim2.Instance->CCR2=CCR;
  }
  else if(pwm_CH==3)
  {
    htim2.Instance->CCR3=CCR;
  }
  else if(pwm_CH==4)
  {
    htim2.Instance->CCR4=CCR;
  }
}

  当然上面这个函数仅仅支持pwm波的占空比调节,我们本次项目需要对频率进行调节,占空比保持百分之五十即可。 如果需要对pwm波的频率进行调节,我们只需要调节该定时器下的ARR寄存器即可。 代码如下:   htim2.Instance->ARR = 频率; 频率取不同值达到不同的音调即可。 实现了DO,RE,MI,FA,SO,LA,XI之后,我们还需要增加一个语音模块。  
嵌入式单片机教学——电子琴(二)   通过语音模块的说明书,我们可以知道,我们只需要发送对应的数据包就能完成对应的操作了。 因此我们需要了解一下如何实现串口通信,首先是cubemx的配置。  
嵌入式单片机教学——电子琴(二)   如上图,我们对USART1的串口进行配置,采用异步通信模式,并设置波特率为9600。 生成工程之后我们需要写发送数据包来完成操作。首先是将语音模块的音量设置成最大,代码如下:  

   HAL_UART_Receive_IT(&huart1,(uint8_t *)&RX_BUFF,1);
   tx_data_package0[0] = 0x7E;
   tx_data_package0[1] = 0x03;
   tx_data_package0[2] = 0x06;
   tx_data_package0[3] = 0x1E;
   tx_data_package0[4] = 0xEF;
   HAL_UART_Transmit(&huart1,tx_data_package0,sizeof(tx_data_package0),0xffff);

  将这部分代码放在主循环之前的初始化函数中执行一次即可。之后我们只需要设置对应的按键事件触发播放曲目即可。由于没有SD卡的缘故,该语音模块板载flash仅支持放很小的文件,所以下面给大家演示一下成品的实验效果。  



总结

通过简单的单片机使用,我们已经完成了这么一个电子琴的设计,如果有文字转语音软件的话,该模块还能进行播报等等各种功能,所以当你会使用简单的嵌入式单片机了,那么你就能够成为一名小创客,通过自己的技能来实现自己的想法。


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明嵌入式单片机教学——电子琴(二)
喜欢 (0)

您必须 登录 才能发表评论!

加载中……