预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机课程设计报告 电子音调发生器 学院电子信息工程学院 题目 电子音调发生器 设计的任务及规定 运用JD51开发板上的按键S1~S4和蜂鸣器设计电子音调发生器,规定: (1)运用JD51开发板上的按键S1~S4进行音调选择,即按下不同的开关产生不同的音调,依次按动S1~S4及组合按键,蜂鸣器发出1234567i八个音调;并在数码管上显示。 (2)编写2支歌曲,并可进行选择播放。 三、工作原理及设计思绪 工作原理: 音节由不同频率的方波产生,音节与频率的关系通过查表可得。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。 运用计时器计时此半周期时间,每当计时到后就将输出方波的I/O反相,然后反复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。 在JD51单片机上,产生方波的I/O脚选用P2.4,通过跳线选择器将单片机的P2.4与蜂鸣器的驱动电路相连。这样P2.4输出不同频率的方波,蜂鸣器便会发出不同的声音。此外,音乐的节拍是由延时实现的,假如1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。 每个音节相应的定期器初值X可按下法计算: (1/2)*(1/f)=(12/fosc)*(256-x) 即x=256-(fosc/24f) 其中f:音调频率,当晶振fosc=11.0592MHz时,音节“1”相应的定期器初值为x,则可得x=63777D=F921H其它的可同样求得。 表1 音调 频率(Hz) X(HEX)1262F9212294F9E13330FA8C4349FAD85392FB686440FBE97494FC5Bi523FC8F设计思绪 1.总体框图 矩阵 键 控制 89C51 单片机 数码管显示电路 声音输出电路 按键重播控制 音乐播放控制 硬件图 2.蜂鸣电路 模块由蜂鸣器驱动电路和89C51组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100MA驱动电流。当89C51输出为低电平时蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。 四、软件设计流程及描述 根据要实现的功能,流程图如下: 熟悉定期器和键盘扫描电路的工作原理及编程方法。 开始 系统初始化 判断按键 判断按键 电子音调 液晶显示 播放音调 播放音乐 功能选择 音乐 1.程序设计描述 电子音调重要的工作是将按键的信息读取,然后根据按键的数字,用定期器输出相相应的频率,实现音调的发生。 程序重要为5部分,按键扫描、中断计时、数码显示、音乐播放、主程序,他们分别执行不同的功能。 2.各部分功能介绍 (1)按键读取程序 键盘键值读取程序涉及键盘扫描、消除抖动、键译码等内容。按键的辨认重要有两种方法:行反转法和行扫描法。由于键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。 (2)中断计时 中断部分,中断定期器1重要负责输出不同频率的方波,产生声音,中断定期器1重要是计时按键时间及按键间隔时间的功能,在播放音乐的时候,还担任着播放音乐的节拍的任务。 (3)音乐播放 音乐播放部分重要是播放音乐,实现按键重播和播放程序里面的音乐的功能。 (4)主程序 主程序重要是随时发出按键的声音功能,并且通过不同P口的扫描,判断是否是播放按键声音还是播放音乐,还是继续发出按键声音。 五、proteus仿真设计及描述 按键S1:数码管显示1,同时能听到蜂鸣器响音调1 按键S2:数码管显示2,同时能听到蜂鸣器响音调2 按键S3:数码管显示3,同时能听到蜂鸣器响音调3 按键S4:数码管显示4,同时能听到蜂鸣器响音调4 由于音调5,6,7,i以及音乐都是由两个按键控制的,所以在仿真时不能实现。 实际效果图 音调1: 音调2 音调5 音调6 六、汇编源程序代码 /*SB11音SB22音SB33音SB44音SB1SB25音SB2SB36音SB3SB47音SB1SB4i音SB1SB3第一首歌SB2SB4第二首歌*/ ORG0000H LJMPKEYP0;跳至KEYP0程序 KEYP0:MOVR0,#00H;数据首地址 CLRTR0;TR0置零,定期未开始 SETBP2.4;关蜂鸣器 SETBP2.3;关数码管 W:MOVR0,P3;扫描按键输入 CJNER0,#0FFH,KEYPO1;有输入时跳转(R0≠0FFH时跳至KEYP01程序) JMPW;无输入时继续扫描 KEYPO1:CJNER0,#0FBH,KEYPO2;输入1音,非1音跳