北京交大单片机课程设计电子音调发生器实验报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实 验 报 告 指导老师:付文秀 实验课程:单片机实验 班 级:通信0607班 姓 名: 电子音调发生器 一、实验目的 1. 了解计算机发声原理。 2. 熟悉定时器和键盘扫描电路的工作原理及编程方法。 二、设计任务及要求 利用实验平台上的开关k0-k7和蜂鸣器设计电子音调发生器,要求: 1.利用实验平台上开关k0- k7进行音调选择,即拨动不同的开关产生不同的音调,依次拨动K0~K7,蜂鸣器发出123 4567i八个音调。 2.编写2支歌曲,并可进行选择播放。 三、工作原理及设计思路 音节由不同频率的方波产生,音节与频率的关系如表1所示。要产生音频方波,只要 算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器 计时此半周期时间,每当计时到后就将输出方波的I/0反相,然后重复计时此半周期时间 再对I/O反相,就可在I/O脚得到此频率的方波。在ZKS- 03实验仪上,产生方波的I/O脚选用P1.7,通过跳线选择器JP1将单片机的P1.7与蜂鸣器 的驱动电路相连。这样P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。另外, 音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就 可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍, 每个音节相应的定时器初值X可按下法计算: (1/2)*(1/f)=(12/fose)*(216-x) 即 x=216-(fose/24f) 其中f:音调频率,当晶振fose=11.0592MHz时,音节"1"相应的定时器初值为x,依次可 以求得。 " "频率(Hz) "X(HEX) " "音调 " " " ",1 "220 "EFA9 " ",1# "233 "F093 " ",2 "247 "F173 " ",2# "262 "F249 " ",3 "277 "F307 " ",4 "294 "F3C8 " ",4# "311 "F473 " ",5 "330 "F51E " ",5# "349 "F5B6 " ",6 "370 "F64C " ",6# "392 "F6D7 " ",7 "415 "F75A " "1 "440 "F7D8 " "1# "466 "F84D " "2 "494 "F8BD " "2# "523 "F924 " "3 "554 "F987 " "4 "587 "F9E4 " "4# "622 "FA3D " "5 "659 "FA90 " "5# "698 "FADE " "6 "740 "FB29 " "6# "784 "FB6F " "7 "831 "FBB1 " "`1 "880 "FBEF " "`1# "932 "FC2A " "`2 "988 "FC62 " "`2# "1046 "FC95 " "`3 "1109 "FCC7 " "`4 "1175 "FCF6 " "`4# "1244 "FD22 " "`5 "1318 "FD4B " "`5# "1397 "FD73 " "`6 "1480 "FD98 " "`6# "1568 "FDBB " "`7 "1661 "FDDC " 硬件连线电路图 系统功能说明: 可以通过开关K0闭合依次令蜂鸣器发出相应的1234567i这8个音调;可以通过同时按 下K1或K2选择播放两首歌曲,并通过闭合K3选择暂停,打开K3继续播放,K4结束一首歌 ,再次按下K1或K2将重新播放歌曲。(由于最初是在开发板上进行实验的,开发板上一 共只有四个开关,所以我就设置成了一个开关控制播放8个音阶) 1. 总体设计 系统总体设计框架 五键键盘控制P3.2、P3.3、P3.4、P3.1、P3.6状态 系统功能模块图 2. 硬件电路设计 电路设计思路 在ZKS-03单片机实验仪中,通过5个开关用导线分别与P1和P3口5位直接相连。 设计原理 利用51单片机的P1和P3口读取开关键盘状态,CPU不断查询P1和P3口状态,并以P1和P 3口不同状态跳转到不同的程序段中执行,具体执行为1.定时器预置定时初值,工作在工 作方式1,发出不同频率的方波;2.播放歌曲,程序段中存储了两个表,分别是音符表和 节拍表。音符表中存放的是蜂鸣器发出音调的对应的频率所需的定时器的频率定时初值 的高低位;节拍表存放的是发出每一个音调所需要持续的时间的双层循环中的内循环次 数值。通过查表法在一次循环中通过累加器A连续取两个数据,分别送到定时器的定时初 值寄存器TL0,TH0中,接着从节拍表中将一个对应节拍取出放入内循环的计数器(R2)中 ,并控制定时器发出对应方波并循环对应次数达到合适的节拍效果。 程序流程图 数据分析 一拍的时长大约为400ms,则当以四分音符为节拍时,四分音符的时长就为
剩余10页未读,继续阅读
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_20240423_191216.jpg
- 基于MATLAB实现分析黑体辐射光谱图时将通过迈克尔逊干涉仪得到干涉图经过傅里叶变换转换为光谱图的功能源码.zip
- DynamicArray02.java
- 数据可视化 matplotlib 实例.docx
- 数据可视化 matplotlib 实例.7z
- Python 使用 Matplotlib 绘制甘特图的实践.7z
- Python 使用 Matplotlib 绘制甘特图的实践.docx
- matplotlib 中的 cmap 参数介绍.docx
- matplotlib 中的 cmap 参数介绍.7z
- 基于matlab的毕业设计基于Matlab使用LQR实现车辆轨迹跟踪源码.zip