基于单片机的简易电子琴毕业设计 - 图文

嘉兴学院南湖学院本科生毕业设计

出频率为1MHz);fr为所需要转换的频率。

其计数初值T的求法如下:

T?K?N?K?

公式中K为单片机的定时/计数器在模式1下的最大计数值,即K=2^16 =65536;所以可以根据这个公式算出T值:

T?65536?N?65536?fi500000/fr?65536?2fr (3-3)

fi/fr (3-2) 2

例如,中音DO的fr为523,那么它的计数值就为T=65536-500000/523=64580错误!未找到引用源。

从网上查阅到各音调对应的频率,并通过计算解出T值,最后得到下表:

表 1 各音调频率(HZ)与计数值T的对照表 音调 频率 T值 523 64580 中1DO 587 64633 中2RE 659 64732 中3MI 698 64820 中4FA 784 64898 中5SO 880 64968 中6LA 968 65030 中7SI 1046 65058 高1DO 所以可设置定时器初值变化以产生相应频率的定时 unsigned char code yinfu[]={ 0xfb,0xe9, //Do

0xfc,0x5c, //Re 0xfc,0xc1, //Mi 0xfc,0xef, //Fa 0xfd,0x45, //So 0xfd,0x92, //La 0xfd,0xd0, //Si 0xfd,0xee, //Do#

0x00,0x00 //音调间的间隔}

而歌曲的节拍部分,采用了一个15MS的延时,对它进行循环来达到节拍的作用。

3.2 按键设计

本设计共含有10个按键,其中8个按键分别接着P2.0~P2.7引脚,代表着8个音符。当按下这八个按键其中一个按键时,数码管也会显示一个与音调对应的数字来指示用户所按下的按键。而另外两个按键为功能按键,按下可播放已存储的歌曲,另一个按下可中断播放音乐。这两个功能按键连接着的引脚分别是P3.2、P3.3。如图3所示。

7

嘉兴学院南湖学院本科生毕业设计

图3 键位图

3.3 LED数码管

3.3.1 数码管的驱动方式

若要使数码管正常发光,就必须使用驱动电路来驱动数码管的各段发光二极管,然后通过不同的组合得到想要的数字。而数码管的驱动方式又可以分为两种,分别是静态式和动态式。

① 静态显示驱动:静态驱动也被叫作为直流驱动。直流驱动是指每一段数码管都由一个单片机的输入/输出接口执行驱动,也可以用像BCD码二-十进制译码器这样的译码执行驱动。直流驱动的优点是二极管发光高而稳定,编写程序容易,缺点为占用输入/输出接口多,比如要驱动四个数码管静态显示就需要4×8=32根输入/输出端口来驱动(一个89C51单片机的输入/输出接口也就才32个!),所以一般实际应用时都是以增加译

8

嘉兴学院南湖学院本科生毕业设计

码器来驱动,以避免单片机的I/O端口不够用这个尴尬局面。

② 动态显示驱动:在单片机应用中数码管的显示方式普遍采用动态显示,动态显示驱动是将数码管的\个字段的同极端都连接在一起,并且为数码管的公共极增加一个位选通控制电路,位选通控制电路由本身独立的输入/输出口线控制,当全部数码管都接收到经由单片机控制输出的数字时,控制数码管显示的数字是取决于单片机对位选通控制电路接地端电路的控制,因此需要某个数字的时候,只要将该位数码管的位选通开启就会亮,而没有开启位选通的数码管字段就不会亮。通过对各个数码管的接地端的分时轮流控制,各个数码管也会被分时轮流受控显示数码管状态,这就是动态显示驱动。在动态驱动过程中,每段数码管的亮灯时间为1~2ms,因为发光二极管的余晖效应与人的视觉暂留现象,所以各段数码管尽管实际上并非是同时点亮,但只要给出非常快的速度来扫射,人们所看到的东西就是一组稳定的数据,而且不会出现一闪 一闪的感觉,所以动态显示实际上出来的成效和静态显示是差不多的,还能够节省很多的输入/输出端口。 3.3.2 数码管的选择

通过以上了解,由于本次毕业设计需要的单片机I/O端口不多,所以数码管显示方式采用了静态显示驱动,数码管将直接由单片机I/O端口驱动, 又因为LED数码管是电流控制元件,所以使用时要上一个加限流电阻。数码管显示是通过单片机查表得出编码,然后单片机再驱动端口决定数码管显示的数字,按键与数码管显示程序的一致性就是这么实现的。连接在P0.1-P0.3,4个引脚上,并加一个排阻。如图4所示。

图4 数码管与单片机的连接图

9

嘉兴学院南湖学院本科生毕业设计

3.4扬声器

扬声器采用两个三极管来放大音频,串连着一个可调节电阻,用来调节声音大小,整个模块由单片机P1.0引脚控制。如图5所示

图5 扬声器的连接图

10

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4