基于stc89c52的简易电子琴课程设计报告内容摘要:
性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。 由于 2种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。 而电磁式由于音色好,所以多用于语音、音乐等设备。 蜂鸣器的电路图形符号 蜂鸣器在电路中用字母“ H”或“ HA”(旧标准用“ FM”、“ LB”、“ JD”等)表示。 有源蜂鸣器与无源蜂鸣器 这里的“源”不是指电源。 而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。 而无源内部不带震荡源,所以如果用直 流信号无法令其鸣叫。 必须用 2K~5K 的方波去驱动它。 有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。 无源蜂鸣器的优点是:便宜;声音频率可控,可以做出“多来米发索拉西”的效果;在一些特例中,可以和 LED 复用一个控制口。 有源蜂鸣器的优点是:程序控制方便。 软件部分 1 音乐产生原理 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时 /计数器 T0 来产生这样 方波频率信号,因此,只需将一首歌的音阶和频率相对应即可。 8 2 音阶产生方法 若要产生音频脉冲,只要算出某一音频的周期( 1/频率),再将此周期除以 2,即为半周期的时间。 利用定时器计时半周期时间,每当计时终止后就将 反相,然后重复计时再反相。 就可在 引脚上得到此频率的脉冲。 利用 STC89C52 的内部定时器使其工作计数器模式( MODE1)下,改变计数值 TH0 及TL0 以产生不同频率的方法产生不同音阶,例如,频率为 523Hz,其周期 T= 1/523= 1912μ s,因此只要令计数器计时 956μ s/1μ s= 956,每计数 956次时将 I/O 反相,就可得到中音 DO( 523Hz)。 计数脉冲值与频率的关系式 (如式 21 所示 )是: N= fi247。 2247。 fr 式中, N 是计数值; fi 是机器频率(晶体振荡器为 12MHz 时,其频率为 1MHz); fr 是想要产生的频率。 其计数初值 T 的求法如下: T= 65536- N= 65536- fi247。 2247。 fr 表 1 音符频率与计数初值的对应关系表 音符 频率( HZ) 简谱码( T值) 音符 频率( HZ) 简谱码( T值) 低 1 DO 262 63628 4 FA 740 64860 1 DO 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 5 SO 831 64934 2 RE 311 63928 中 6 LA 880 64968 低 3 M 330 64021 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 4 FA 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 1 DO 1109 65085 5 SO 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 2 RE 1245 65134 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 4 FA 1480 65198 1 DO 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 5 SO 1661 65235 2 RE 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 9 3 音乐的节拍 在弹奏状态下节拍由操作者控制,而在播放示例音乐时需要程序控制其节拍。 音乐的音拍即单位 时间,对于不同的曲调可以用单片机的另外一个定时 /计数器来完成。 而在此处采用的方法是利用延时函数确定每个音的长短(即节拍),编程时在设置音阶时还要对其设置节拍。 4 矩阵键盘识别 琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。 对音调的控制:根据不同的按键,对定时器 T0 送入不同的初值,调节 T0的溢出时间,这样就可以输出不同音调频率的方波。 不同音调下各个音阶的定时器。 去抖动 : 每个按键在按下或松开时,都会产生短 时间的抖动。 抖动的持续时间与键的质量相关,一般为 5— 20mm。 所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。 在程序中通过设置空循环来实现。 被按键识别 采用行扫描法,该方法在微机系统中被广泛使用。 由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置输出口为 —— ,输入口为 ——。 键码产生 为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键 码。 T0 中断入口 重装 TH0, TL0初值 取反 中断返回 10 图 6 产生音阶的定时器中断子程序流程图 图 7 按键识别程序流程图 程序调试与仿真 1 使用 Keil 软件对程序进行调试,并生成 hex文件。 弄懂参考程序后,自己编了一段樱花音乐。 经 Keil 编译连接,程序调试无误。 2 使用 proteus 进行仿真 将 Keil 生成的 文件加到单片机上,启动仿真。 可以很好地实现播放与弹奏 功能。 需要说明的是,仿真只是在原理方面的验证,因而本仿真中蜂鸣器直接接到 ,在实际中还要有音频放大器件。 开 始 矩阵 键盘按键按下成功否。 识别按键功能 根据按键功能,装入音符 T值到 T0 中 启动 T0 工作 行列式键盘按键释放成功否。 停止 T0 工作 T0 初始化并开中断允放 T0中断 11 图 8 proteus仿真原理图 电路板的制作与调试 图 9 简易电子琴电路原理图 12 图 10 电子琴 PCB 电路 实际电路调试 第一次上电后蜂鸣器不响。 后来发现当把隔直电容 220uF 短路后,蜂鸣器响了,虽然能听出音乐和按键音,但一直有一个很大的声响。 经过一番分析,认为由于蜂鸣器发出的声音频率较低,隔直电容显得过大。 又换了几个容量较小的隔直电容,仍不出声,于是放弃隔直电容,而直接用一个 10K电阻替代。 再次测试后,发现效果好得多。 可见,加了电阻可起到削弱直流分量的作用,因而噪声小得多,而频率较低的交流也影响不大。 课程设计心得体会 实践出真知。 单片机是应用性很强的一本学科。 仅有课堂的 理论学习和次数有限的实验是远远不够的,必须自己动手做出实物来。 本次课程设计便提供了一个很好地机会,理论联系实际,在实际动手过程中巩固知识、积累经验。 13 应当说本人较好地珍惜了此次机会。 最初选题时,老师给了我们充分发挥积极主动性的空间,让大家结合自身实际情况自定课题。 本人由于爱好音乐,因而对基于单片机的简易电子琴产生了浓厚的兴趣。 因为有兴趣,所以整个课程设计过程中乐此不疲。 尤其是在做软件部分时,在弄懂了参考程序后,又将原先的示例音乐换掉,自己编写了一段。基于stc89c52的简易电子琴课程设计报告
相关推荐
符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志 或地址 0 1 BF 计数器地址 10 写数CGRAM或DDRAM) 1 0 要写的数据内容 11 从 CGRAM或 DDRAM读数 1 1 读出的数据内容 宜宾职业技术学院电子信息工程系 基于 STC89C52 的电子密码锁 9 1602 液晶模块的读写操作
有重现性;稳定可靠。 就以上要求本设计所使用的称重传感器为 YZC1B型传感器,该传感器是 10kg量程的电阻应变片式传感器,在激励电压为 5V的条件下输出,满量程时输出为 10mV,该称重传感器的实物如图 22。 图 22 称重传感器实物图 其结构为由电阻应变片搭接的惠更斯全臂电桥贴于铝块载体上。 应变片是镍铬丝或康铜丝绕成栅状(或使用薄金属箔腐蚀成栅状)夹在两层绝缘的薄片中制成。 YZC1B
功能实现。 这将在沈阳理工大学学士学位论文 9 下一节做进一步介绍。 TIMx 定时器介绍 STM32F10x系列处理器内部有 8个定时器,其中 TIM1和 TIM8为高级控制定时器,TIM TIM TIM4和 TIM5为 4个独立的通用定时器, TIM6和 TIM7为基本定时器。 这 8个定时器各包含一个 16位自动装载计数器,由各自的可编程预分频器驱动。
态信息,必要时发出预警信息。 主要包括碰撞预警系统和驾驶员状态监控系统。 碰撞预警系统可以给出前方碰撞警告、盲点警告、车道偏离警告、换道 /并道警告、十字路口警告、行人检测与警告、后方碰撞警告等 .驾驶员状态监控系统包括驾驶员打吨警告系统、驾驶员位置占有状态监测系统等。 (2)辅助驾驶系统,利用智能感知系统的信息进行决策规划,给驾驶员提出驾驶建议或部分地代替驾驶员进行车辆控制操作。 主要包括
质在一定波长处的吸光度和他的浓度成正比。 当恒定波长的光照射到人体组织上时,通过人体组织吸收、反射衰减后,测量到的光强将在一定程度上反映了被照射部位组织的结构特征 [7]。 脉搏心率主要由人体动脉舒张和收缩产生的,在人体指尖组织中的动脉成分含量高,而且指尖厚度相对其他人体组织而言比较薄, 透过手指后检测到的光强相对较大,因此光电式脉搏心率传感器的测量部位通常在人体指尖。 手指组织可以分成皮肤
根据该系统的实际需要, 可以分为前台用户使用部分和后台商家使用的两个部分,首先介绍前台 消费者操作模块,如图 所示。 图 前台 消费者 操作模块 ( 1) 浏览商品 用 户进入该购物平台后,可以在不登录的情况下进行商品的浏览,由于该平台只是买服饰的,所以此时所有的商品都显示出来,可以根据品牌和类别进行筛选。 ( 2) 商品详情 当用户点击某个商品后,进入该商品的详情页,详情页上显示该商品的价格