你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

老板,来一首一块钱的天空之城!

[复制链接]
木木&点点 发布时间:2019-12-24 23:18
天空之城的歌曲勾起我们不少人的童年回忆,听着这首歌有种冲动让我想用STM8做一首天空之城的主题曲出来,也好让我更好学习STM8和声音与频率的关系,真是一举两得啊!
+ X" v3 q- v8 A5 G  }; J
1.png
最近我用覆铜板制作了一片STM8S003F3P6开发板, 这颗芯片不错才1块多,可以支持在线仿真,资源也比51好的多,而且非常人性化。先上图!
2.png
覆铜板如何制作PCB板,我就不展开描述了。都是用一些稀释剂,显影剂,脱模剂等等来弄的,其实网上说多少比多少分量,我个人不太在意,身为中国人就不会太在意这个,平时我们做菜下调味料也是看分量调,那些化学剂也是一样,反正增大浓度就提高正反应速率罢了,这是我是在高中学到的。
1 s, Y0 y& |$ x: q6 K6 u$ e
下面是原理图和PCB,实物做出来也不是太好,不过可以工作就可以了。
3.png
6 p9 p7 D4 J% x" c+ f$ e" i

6 w  w- P) u& u& t! @% L
下面就是我这次小玩意的主角,无源蜂鸣器,一定要选择无源的哦,因为我们是靠控制PWM来唱歌的。 蜂鸣器电路很简单加一个三极管就可以了,因为用于测试,电路很简陋,谈不上很好,当然可以加上二极管等更加稳定可靠。( ^  F$ ^. P5 X7 V( ~: g& v9 t
* k8 z' A7 p) B1 H
4.png
5.png
电路板和PCB  --“肉体”都有了,那下面开始加入灵魂 --“代码”。我用的平台就是IAR for STM8,工程的大体就是这样
6.png
要使用PWM当然要开启定时器的某个通道给它输出信号,那我使用的就是高级定时器1的channel1通道作为输出。这个道理对于我们来说那太简单了,不就是配置一下寄存器就好了吗,不过最大的问题就是我是音乐白痴啊,乐谱怎么看啊? 后来网上查了一些质料总算是把乐谱的基础知识搞明白。现在我会看简谱,5线谱还是不懂,那也不深究了。
( |1 |6 r# J* Y1 T
我建议大家可以看简谱,大多就几种例如用do 就是1  但是又可以分为高音 中音 低音,分别是更具音符上面有没有一个点来确定。音符如果没有下很横行你可以定义为8拍,如果下面有一行少半拍就是4拍,两横就如此类推。不明白节拍,可以理解为多少拍就是把这个音符延时多少个时间段。

/ B3 K( n4 @7 w1 ?- U4 Y' j
要使用音符当然要有相应的音符频率进行定义了,这些就是频率值了
7.png
剩下就是如何写歌了, 这些都是我根据简谱一个个写的,感觉太累了
每一个音符包括三个byte的数据,
第一个数据就是代表数据是高音 中音 低音
第二个数据就是代表是什么音符
第三个当然就是节拍了,它决定了我们要把音符延时多少时间,这个你自己定,有人喜欢快节奏,有人喜欢慢节奏。
8.png
歌曲和音符都有了,那下面我们就要配置一下TIM1的PWM输出了,这里我设置预分配输出50KHZ,为什么呢,因为如果设置比较小的话,输出信号不好,所以我建议可以设置比较大的输出,STM8最高16MHZ,一定满足你的要求,一般音符都是HZ级别
9.png
下面就是要对音符进行转化了,就是切换音符了, 函数包括音符和对应的节拍
# n' u# y8 {( U& }- Q4 Q
10.png
程序是配置好了,但是老是不运作,查了几天都不知道为何,最终总算是配置出来了,原来啊,STM8还是有相应的option byte配置才能复用引脚,不像STM32那样配置好就跑。

: T: y$ m6 _9 z# J
11.png
AFR0可以设置为复用功能,才可以唱歌哦
12.png
最后就是把电路用杜邦线链接起来了!这样美妙的音乐就可以唱起来了,有兴趣也试试。

. T3 u3 _& u: r- [% [8 `8 h
13.png
9 G. a& V& w1 U- ^% V
赞 收藏 评论0 发布时间:2019-12-24 23:18

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版