ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:2.57MB ,
资源ID:5176280      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5176280.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(片单机课程设计电子音调发生器--大学毕设论文.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

片单机课程设计电子音调发生器--大学毕设论文.doc

1、 单片机课程设计 设 计 报 告 电子音调发生器 2016年 4 月 29 日 目录 1 课程设计总体目标 - 2 - 1.1 课题的意义 - 2 - 1.2 系统的主要功能 - 2 - 1.3 本人所做的工作 - 2 - 2 实验原理及设计思路 - 3 - 2.1 乐曲的音调与节拍 - 3 - 2.2 红外检测原理 - 3 - 3 硬件电路设计及描述 - 4 - 3.1 硬件连接图 - 4 - 3.2 单片机系统 - 5 - 3.3 数码管显示电路 - 6 -

2、3.4 蜂鸣器电路 - 6 - 4 软件设计流程及描述 - 7 - 4.1 蜂鸣器发单音 - 7 - 4.2 蜂鸣器唱歌 - 7 - 4.3 数码管动态显示 - 7 - 4.4 程序框图 - 8 - 4.5 源程序代码及注释 - 9 - 5 实验结果 - 26- 1 总体设计 1.1 课题的意义 (1) 通过这个实际的课题,熟悉51单片机的开发环境,熟悉JD-51的硬件电路图,并能通过三种调试模式来调试程序,为日后进行一些基于单片机的系统开发打下基础; (2) 掌握使用常用的汇编指令进行51单片机的程序设计,建立严

3、谨的逻辑思维来编写程序,学会画程序框图来帮助编程。 (3) 通过使用蜂鸣器来产生相应音调的声音,进一步巩固课上学到的定时器初始化、赋初值、通过查询方式来产生一定频率方波的编程方法; (4) 掌握使数码管扫描显示数字的方法,并同时让LED灯亮或灭,学会如何让蜂鸣器发出不同频率的声音; (5) 了解NEC协议下的红外编码格式,能够使用单片机来解码收到的红外信号,并读取信号中相应的信息。 1.2 系统的主要功能 电子音调发生器 (1)利用JD51开发板上的按键S1~S4进行音调选择,即按下不同的开关产生不同的音调,依次按动S1~S4 及组合按键,蜂鸣器发出1234567i八个音调;

4、并在数码管上显示。 (2)编写2支歌曲,并可进行选择播放。 1.3 本人所做的工作 通过学习课程平台上给出的红外和电子音调发生器这两个程序,将电子音调发送器中关于按键扫描的部分换为对接收到的32位红外信号数据中数据码的反码进行按键判断跳转相应歌曲或音调子程序。 2 实验原理及设计思路 2.1 乐曲的音调与节拍 ①音调由不同频率的方波产生,音调与频率的关系如下表所示。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/O反相,然后重复计时此半周期时间再对I/O反相,就

5、可在I/O脚得到此频率的方波。在JD-51单片机上,产生方波的I/O脚选用P2.4,P2.4口与蜂鸣器相连,这样通过P2.4口输出不同频率的方波就能控制蜂鸣器发出不同音调的声音。 ②音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。 音调 1 2 3 4 5 6 7 I 频率/Hz 262 294 330 349 392 440 494 523 X F921 F9E1 FA8C FAD8 FB68 FBE9 FC5B FC8F 表1 音调

6、和发音频率及定时器初值X的对应 在定时器工作在工作方式1时每个音节相应的定时器初值x可按下法计算 (1/2)×(1/f)=(12/fosc)×(216-x) x=216-(fosc/24f) (1) 其中,f是音调频率,JD-51单片机的晶振fosc=11.0592Mhz。 曲调值 DELAY 调4/4 125ms 调3/4 187ms 调2/4 250ms 表2 各节拍延时时间对应关系 3 硬件电路设计及描述 3.1 硬件连接图 系统的硬件连接图包括,晶振电路,复位电路,数码管显示电路,红外发送和接收电路,蜂鸣器电路,

7、硬件连接如下图所示: 图4 红外高级电子琴硬件连接图 3.2 单片机系统 ATMEL公司生产的AT89S52单片机是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。具体连接如下: 图5 单片机系统的时钟电路 图6 单片机系统的复位电路 3.3 数码管显示电路 显示电路采用4个共阳极数码管,P0口作为数码管的输入,P2.0、P2.1、P2.2、 P2.3分别控制四个数码管的亮与不亮,P0口控制数码管亮的是数字几。 图7 数码管连接图 3.4 蜂鸣器电路 我们用的蜂鸣器是直流蜂鸣器,驱动简单,一旦在引脚上加入直流电源它就会

8、发出一定频率的声音,此时声音的音调和音量是固定的,它与单片机的连接方式如下图所示。Buzzer与P2.4相连,P2.4输出不同频率的方波信号,蜂鸣器就会发出不同的声音。如果控制输出信号的频率和音长,蜂鸣器则会发出音乐。 图8 蜂鸣器电路图 4 软件设计流程及描述 4.1 蜂鸣器发单音 根据不同音调的频率值算出该给定时器赋的初值,利用定时溢出后P2.4口电平的翻转来产生和音调频率相同的方波,虽然不是正弦波,听起来有点不自然,但也能听出1234567i这8个音调。 4.2 蜂鸣器播放歌曲 蜂鸣器播放歌曲是基于节拍表和音符表的基础上的,其基本原理与发出单个频率的声音类似,只不过确

9、定了单个频率发声的时长即节拍长,和不同频率发声的顺序,可以通过查表的方式来使定时器产生不同频率的方波,加入设定好的节拍,就相当于延时,便可以听到音乐。 4.3 数码管动态显示 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调时间参数,可以既保证亮度,又保证显示。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为

10、1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的资源,而且功耗更低。 开始 4.4 程序框图 将开关状态送P3.2,P3.3,P3.4,P3.1,P3.6 查询键盘按键状态 跳转到相应子程序 令P3.5口发出相应频率的方波 图9 电子音调发生器流程图 4.5 源程序代码及注释 /*---------------------------------

11、 ================================== 电子音调发生器 ================================== ******************************程序功能说明*************************** 通过s1,s2,s3,s4四个按键组合,根据按键组合值让蜂鸣器播放1234567i相应的

12、音调,以及两首歌 ********************************************************************/ ORG 0000H LJMP KEYP0 KEYP0: MOV R0,#00H ; CLR TR0 ; SETB P2.4 ;关蜂鸣器 CLR P2.0 CLR P2.1 CLR P2.2 CLR P2.3 ;关用于表示音调的数码管 SETB P2.0 ;关用于表示模式的数码管 WU: MOV

13、R0,P3 ;扫描键盘输入 CJNE R0,#0FFH,KEYPO1 ;有输入时跳转 JMP KEYP0 KEYPO1:CJNE R0,#0FBH,KEYPO2 ; SETB P2.4 ;蜂鸣器置于高电平 MOV R3,#200 MAIN01:MOV TMOD,#01H ;初始化,工作方式1 MOV TL0,#21H ;写入计数初值 MOV TH0,#0F9H SET

14、B TR0 ;启动计数 WAIT1:JNB TF0,WAIT1 CLR TF0 CPL P2.4 ;蜂鸣器响 CLR P2.3 ;数码管显示1 MOV A,#11111001B MOV P0,A DJNZ R3,MAIN01 LJMP KEYP0 ;返回程序KEYP0 KEYPO2:CJNE R0,#

15、0F7H,KEYPO3 ; SETB P2.4 ;蜂鸣器置于高电平 MOV R3,#200 MAIN02:MOV TMOD,#01H MOV TL0,#0E1H ;写入计数初值 MOV TH0,#0F9H SETB TR0 WAIT2:JNB TF0,WAIT2 CLR TF0 CPL P2.4 ;蜂鸣器响 CLR P2.3 ; MOV A

16、10100100B MOV P0,A DJNZ R3,MAIN02 LJMP KEYP0 KEYPO3:CJNE R0,#0EFH,KEYPO4 ; SETB P2.4 ;蜂鸣器置于高电平 MOV R3,#200 MAIN03:MOV TMOD,#01H MOV TL0,#08CH MOV TH0,#0FAH SETB TR0 WAIT3:JNB TF0,WAIT3 CLR TF0 CPL P2.4 CLR P

17、2.3 MOV A,#10110000B MOV P0,A DJNZ R3,MAIN03 LJMP KEYP0 KEYPO4: CJNE R0,#0DFH,KEYPO5 ; SETB P2.4 MOV R3,#200 MAIN04:MOV TMOD,#01H MOV TL0,#0D8H MOV TH0,#0FAH SETB TR0 WAIT4:JNB TF0,WAIT4 CLR TF0 CPL P2.4 CLR P2.

18、3 MOV A,#10011001B MOV P0,A DJNZ R3,MAIN04 LJMP KEYP0 KEYPO5: CJNE R0,#0F3H,KEYPO6 ; SETB P2.4 MOV R3,#200 MAIN05:MOV TMOD,#01H MOV TL0,#068H MOV TH0,#0FBH SETB TR0 WAIT5:JNB TF0,WAIT5 CLR TF0 CPL P2.4 CLR P2.3

19、 MOV A,#10010010B MOV P0,A DJNZ R3,MAIN05 LJMP KEYP0 KEYPO6:CJNE R0,#0E7H,KEYPO7 ; SETB P2.4 MOV R3,#200 MAIN06:MOV TMOD,#01H MOV TL0,#0E9H MOV TH0,#0FBH SETB TR0 WAIT6:JNB TF0,WAIT6 CLR TF0 CPL P2.4

20、 CLR P2.3 MOV A,#10000010B MOV P0,A DJNZ R3,MAIN06 LJMP KEYP0 KEYPO7:CJNE R0,#0CFH,KEYPO8 ; SETB P2.4 MOV R3,#200 MAIN07:MOV TMOD,#01H MOV TL0,#05BH MOV TH0,#0FCH SETB TR0 WAIT7:JNB TF0,WAIT7 CLR TF0 CPL P2.4 CLR P2.

21、3 MOV A,#11111000B MOV P0,A DJNZ R3,MAIN07 LJMP KEYP0 KEYPO8:CJNE R0,#0DBH,KEYPO9 ; SETB P2.4 MOV R3,#200 MAIN08:MOV TMOD,#01H MOV TL0,#08FH MOV TH0,#0FCH SETB TR0 WAIT8:JNB TF0,WAIT8 CLR TF0 CPL P2.4 CLR P2.3

22、MOV A,#10000000B MOV P0,A DJNZ R3,MAIN08 LJMP KEYP0 KEYPO9:CJNE R0,#0EBH,KEYPO10 ;跳转到第一首歌程序 LJMP MUSTART1 KEYPO10:CJNE R0,#0D7H,JIELI ;跳转到第二首歌程序 LJMP MUSTART2 JIELI:JMP KEYP0 ;返回主程序 MUSTART

23、1: ;播放第一首歌 MOV R0,#00H ;将节拍表指针置零 MOV R1,#00H ;将音符表指针置零 RTAB:MOV A,R0 MOV DPTR,#RYTH MOVC A,@A+DPTR ;利用查表法将一个节拍数据取出放R2计数器中 MOV R2,A TTAB:MOV A,R1

24、 MOV DPTR,#TONE MOVC A,@A+DPTR MOV R3,A ;取出音符表高8位 INC R1 ;指针加1 MOV A,R1 MOV DPTR,#TONE MOVC A,@A+DPTR MOV R4,A ;取出音符表低8位 SETB P2.4 ;输出相应音调的

25、方波 LOOP:MOV R5,#3BH MAIN:MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0 WAIT:JNB TF0,WAIT CLR TF0 CPL P2.4 MAYA:JB P3.2,MAYB ;判断P3.2口是否有为1 JB P3.4,MAYB ;判断P3.4口是否有为1 LJMP RA ;P3

26、4口为0则跳转到程序RA MAYB:JB P3.3,JIELI ;判断P3.3口是否有为1 JB P3.5,JIELI ;判断P3.5口是否有为1 LJMP MUSTART2 ;P3.5口为0则放第二首歌 RA: DJNZ R5,MAIN ;无打断则继续放第一首歌 DJNZ R2,LOOP INC R0 ;两个表的指

27、针都加1 INC R1 CJNE R1,#88,RTAB ;判断是否取完 LJMP KEYP0 TONE: DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,

28、0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH RYTH: DB 04,04,04,04,04,04,04,04,04,04 DB 04,05,04,04,04,04,04,04,04,04 D

29、B 04,04,04,06,04,04,04,07,04,04 DB 04,04,04,06,04,04,04,07,04,04 DB 04,04,04,04 MUSTART2: MOV R0,#00H MOV R1,#00H RTAB2: MOV A,R1 MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV R2,A TTAB2: MOV A,R1 MOV DPTR,#TONE2 MOVC A,@A+DPTR MOV R3,A INC

30、R1 MOV A,R1 MOV DPTR,#TONE2 MOVC A,@A+DPTR MOV R4,A SETB P2.4 LOOP2: MOV R5,#9BH MAIN2: MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0 WAITR:JNB TF0,WAITR CLR TF0 CPL P2.4 MAYA1:JB P3.3,MAYB1 JB P3.5,MAYB1 LJMP RB MAYB1:JB P

31、3.2,BACK JB P3.4,BACK LJMP MUSTART1 BACK:LJMP JIELI RB: DJNZ R5,MAIN2 DJNZ R2,LOOP2 INC R0 INC R1 CJNE R1,#64,RTAB2 LJMP KEYP0 TONE2: DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,

32、8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH TAB

33、LE1: DB 04,04,04,04,04,04,04,04,04,04 DB 04,05,04,04,04,04,04,04,04,04 DB 04,04,04,06,04,04,04,07,04,04 DB 04,04,04,06,04,04,04,07,04,04 DB 04,04,04,04 END 【电子音调发生的部分C语言程序】 /******键盘输入函数******/ uchar keyscan(uchar key){ if(K1==1&&K2==1&&K3==1&&K4==1) {

34、 //初始化 delay(20); if(K1==1&&K2==1&&K3==1&&K4==1) { key=0; } } if(K1==0&&K2==1&&K3==1&&K4==1) { //1音,SB1按下 delay(20); if(K1==0&&K2==1&&K3==1&&K4==1) { key=1; } } if(K1==1&&K2==0&&K3==1&&K4==1){ //2音,SB2按下 dela

35、y(20); if(K1==1&&K2==0&&K3==1&&K4==1){ key=2; } } if(K1==1&&K2==1&&K3==0&&K4==1){ //3音,SB3按下 delay(20); if(K1==1&&K2==1&&K3==0&&K4==1){ key=3; } } if(K1==1&&K2==1&&K3==1&&K4==0){ //4音,SB4按下 delay(20); if(K1==1&&K2==1&&K3==1&&K4==0){ key=4;

36、 } } if(K1==0&&K2==0&&K3==1&&K4==1){ //5音,SB1和SB2按下 delay(20); if(K1==0&&K2==0&&K3==1&&K4==1){ key=5; } } if(K1==1&&K2==0&&K3==0&&K4==1){ //6音,SB2和SB3按下 delay(20); if(K1==1&&K2==0&&K3==0&&K4==1){ key=6; } } if(K1==1&&K2==1&&K3==0&&K4==0){ //7音,SB3

37、和SB4按下 delay(20); if(K1==1&&K2==1&&K3==0&&K4==0){ key=7; } } if(K1==0&&K2==1&&K3==1&&K4==0){ //i音,SB1和SB4按下 delay(20); if(K1==0&&K2==1&&K3==1&&K4==0){ key=8; } } if(K1==0&&K2==1&&K3==0&&K4==1){ //第一首歌,SB1和SB3按下 delay(20); if(K1==0&&K2==1&&K3==0&&K4==

38、1){ key=9; } } if(K1==1&&K2==0&&K3==1&&K4==0){ //第二首歌,SB2和SB4按下 delay(20); if(K1==1&&K2==0&&K3==1&&K4==0){ key=10; } } return (key); } /******延时函数******/ void delay(uint t){ uint i,j; for(i=0;i

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服