电子音调发生器c语言编程,单片机课程设计(论文)_电子音调发生器.doc

单片机课程设计(论文)_电子音调发生器

电子音调发生器

姓 名 XXX

所在学院 电子信息工程学院

专业班级 通信XXXX

学 号 XXXXX

指导教师 XXXXXX

日 期 2011 年 12月 12日

电子音调发生器

一、实验目的 :

了解计算机发声原理。

熟悉定时器和键盘扫描电路的工作原理及编程方法。

二、实验内容和要求:

利用所焊电路板上的开关k0-k7和蜂鸣器设计电子音调发生器,要求:

1.利用所焊电路板上开关k0-k7进行音调选择,即拨动依次拨动K~K7,发出1234567i。

三、实验原理:

音节由不同频率的方波产生,音节与频率的关系如表1所示。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/0反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。在单片机STC89C51RC上,产生方波的I/O脚选用P1.2,通过跳线JP1将单片机的P1.2与蜂鸣器的驱动电路相连

每个音节相应的定时器初值X可按下法计算:

(1/2)*(1/f)=(12/fose)*(216-x)

即 x=216-(fose/24f)

其中f:音调频率,当晶振fose=11.0592MHz时,音节“1”相应的定时器初值为x,则可得x=63777D=F921H 其它的可同样求得。

表1:

音符频率(HZ)计数初值(H)低音5196F6D1低音6220F7D1低音7247F8B6中音1262F921中音2294F9E1中音3330FA8C中音4349FAD8中音5392FB68中音6440FBE9高音7494FC5B高音1523FC8F高音2587FCEF高音3659FD45高音4698FD6C高音5784FDB4利用计时器计时此半周期时间,每当计时到后就将输出方波的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。

音乐程序查表原理:

乐谱格式:每字节的高字节为音符代码,低字节为节拍代码????

音调高低 1 2 3

音高 低 中 高

节拍代码 1 2 3 4 5 6 8

节拍 1/1 1 3/2 1 1(1/2) 2 2(1/2)

四、试验设计:

总体来说,本实验分为两大部分:由开关控制的音阶播放程序;由单片机控制的自动音阶播放程序(音乐程序)。这个实验使用了8个按键对应8个1234567i音节,在使用两个按键来做不同歌曲的切换播放。

实验箱硬件连接如图所示:

图1 键盘、蜂鸣器连接电路

图2 按键复位电路 图3 晶振电路

实验总体流程图如下图所示:

图4 实验流程图

流程图描述:如图上图所示,程序开始时先判断P1.6,P1.7口的电位,若为0则转到音乐播放程序播放音乐;若为1,则进行键盘扫描、消抖,通过查表判断哪个键按下,通过P1.2输出不同频率的方波,驱动蜂鸣器发音。

五、实验程序:

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit speaker=P1^2; //定义音乐输出端口,需要连接到对应的喇叭,请参考电路图

sbit P1_2=P1^2;

sbit P1_6=P1^6;

sbit P1_7=P1^7;

sbit P1_4=P1^4;

sbit P1_0=P1^0;

unsigned char timer0h,timer0l,time,num,high;

//音调,高低音,拍长(半拍为1)

//菊花台

code unsigned char sszymmh1[]={ 3,1,2, 3,1,1, 2,1,1, 3,1,4, 3,1,1, 5,1,1, 3,1,1,

2,1,1, 3,1,4, 1,1,2, 1,1,1, 2,1,1, 3,1,1, 5,1,1,

3,1,2, 2,1,2, 2,1,1, 1,1,1, 2,1,4, 3,1,3, 5,1,1,

3,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值