




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计报告电子音调发生器学院电子信息工程学院、题目电子音调发生器二、设计的任务及要求利用JD51开发板上的按键S1S4和蜂鸣器设计电子音调发生器,要求:(1)利用JD51开发板上的按键 S1S4进行音调选择,即按下不同的开关产生不同的音调,依 次按动S1S4及组合按键,蜂鸣器发出1234567i八个音调;并在数码管上显示。(2)编写2支歌曲,并可进行选择播放。三、工作原理及设计思路工作原理:音节由不同频率的方波产生,音节与频率的关系通过查表可得。要产生音频方波,只要算出某 一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方
2、波的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。在JD51单片机上,产生方波的I/O脚选用,通过跳线选择器将单片机的与蜂鸣器的驱动电路相 连。这样输出不同频率的方波,蜂鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的, 如果1拍为秒,1/4拍是秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间, 节拍值只能是它的整数倍。每个音节相应的定时器初值X可按下法计算:(1/2) *(1/f)=(12/fosc)*(256-x)即 x=256-(fosc/24f)其中f:音调频率,当晶振fosc=时,音节“1”相应的定时器初值为 x,则可得x=6
3、3777D=F921H其 它的可同样求得。表1音调频率(Hz)X(HEX)1262F9212294F9E13330FA8c4349FAD85392FB686440FBE97494FC5Bi523FC8F设计思路1 .总体框图硬件图2 .蜂鸣电路模块由蜂鸣器驱动电路和 89C51组成。 选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要 100M闻区动电流。当89C51输出为低电平时蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不友严。四、软件设计流程及描述根据要实现的功能,流程图如下:熟悉定时器和键盘扫描电路的工作原理及编程方法。1 .程序设计描述电子音调主要的工作是将按键的信息读取,然后根据
4、按键的数字,用定时器输出相对应的频率, 实现音调的发生。程序主要为5部分,按键扫描、中断计时、数码显示、音乐播放、主程序,他们分别执行不同 的功能。2 .各部分功能介绍(1)按键读取程序键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。按键的识别主要有两种方法:行 反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消 除抖动的部分。(2)中断计时中断部分,中断定时器 1主要负责输出不同频率的方波,产生声音,中断定时器1主要是计时按键时间及按键间隔时间的功能,在播放音乐的时候,还担任着播放音乐的节拍的任务。(3)音乐播放音乐播放部分主要是播放音乐,实现按键重
5、播和播放程序里面的音乐的功能。(4)主程序主程序主要是随时发出按键的声音功能,并且通过不同P 口的扫描,判断是否是播放按键声音还是播放音乐,还是继续发出按键声音。五、proteus仿真设计及描述匹,:f.-a L E EgE鼻 LE OLktXlfflCM aisriH rlLr J*LftPEliC ,珈 41* 0Cl£iE«>IE OUE,土理,PuKB 卯箝M 庄配轴Mr-l MEl 二RTi +#=3&K -Kw. >| *1,J /中总 a+* 4 与守 *去 金*R tt)l MA 硝国工-6 -按键S1:数码管显示1,同时能听到蜂鸣器响音
6、调1按键S2:数码管显示2,同时能听到蜂鸣器响音调2按键S3:数码管显示3,同时能听到蜂鸣器响音调3按键S4:数码管显示4,同时能听到蜂鸣器响音调4因为音调5,6,7 , i以及音乐都是由两个按键控制的,所以在仿真时不能实现。实际效果图音调1:音调2音调5音调 6数据首地址置零,定时未开始关蜂鸣器关数码管W: MOV R0,P3扫描按键输入六、汇编源程序代码/*SB1 1 音 SB2 2 音 SB3 3 音 SB4 4 音 SB1SB2 5 音 SB2SB3 6 音 SB3SB4 7 音SB1SB4 i 音 SB1SB3 第一首歌 SB2SB4 第二首歌 */ORG 0000HLJMP KEY
7、P0 ;跳至 KEYP阳序KEYP0: MOV R0,#00HCLR TR0 ;TR0SETB;SETB;- 7 -CJNE R0,#0FFH,KEYPO1 ; 有输入时跳转(R0w 0FFH时跳至 KEYP01 程序)JMP W ; 无输入时继续扫描KEYPO1:CJNE R0,#0FBH,KEYPO2 ;输入 1 音, 非 1 音跳转SETB ;蜂鸣器置于高电平,音调 1 方波发生MOV R3,#200; 设循环初值,使开关在 R3=0 时播放一段时间MAIN01:MOV TMOD,#01H ; 定时,方式1MOV TL0,#21H; 置定时初值,音调 1 初值为 0F921HMOV TH
8、0,#0F9HSETB TR0 ;启动 T0 工作WAIT1:JNB TF0,WAIT1 ; 定时未到,循环等待CLR TF0 ;定时到,软件清零TF0CPL ; 由输出,信号取反,蜂鸣器响CLR ; 数码管显示1MOV A,#B; 置比较初值MOV P0,ADJNZ R3,MAIN01 ; 若R3-1不等于0,继续跳至 MAIN01程序LJMP KEYP0 ;=0 则返回程序KEYP0KEYPO2:CJNE R0,#0F7H,KEYPO3 ;输入 2 音, 非 2 音跳转SETB;蜂鸣器置于高电平,音调 2 方波发生MOV R3,#200; 设循环初值MAIN02:MOV TMOD,#01H
9、MOV TL0,#0E1H;MOV TH0,#0F9HSETB TR0 ;WAIT2:JNB TF0,WAIT2CLR TF0CPL ; 由输出,信号取反,蜂鸣器响CLR ; 数码管显示MOV A,#B ; 置比较初值定时,方式1置定时初值启动 T0 工作定时未到,循环等待定时到,软件清零TF0信号取反,蜂鸣器响2MOV P0,ADJNZ R3,MAIN02 ; 判断R3是否等于0,未完,继续LJMP KEYP0 ; 返回程序 KEYP0KEYPO3:CJNE R0,#0EFH,KEYPO4 ;输入 3 音 , 非 3 音跳转SETB;蜂鸣器置于高电平MOV R3,#200MAIN03:MOV
10、 TMOD,#01HMOV TL0,#08CHMOV TH0,#0FAHSETB TR0WAIT3:JNB TF0,WAIT3CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN03LJMP KEYP0KEYPO4:CJNE R0,#0DFH,KEYPO5 ; 输入 4 音, 非 4 音跳转SETBMOV R3,#200MAIN04:MOV TMOD,#01HMOV TL0,#0D8HMOV TH0,#0FAHSETB TR0WAIT4:JNB TF0,WAIT4CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN04LJMP KEY
11、P0KEYPO5: CJNE R0,#0F3H,KEYPO6 ; 输入 5 音 , 非 5 音跳转SETBMOV R3,#200MAIN05:MOV TMOD,#01HMOV TL0,#068HMOV TH0,#0FBHSETB TR0- 15 -WAIT5:JNB TF0,WAIT5CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN05LJMP KEYP0KEYPO6:CJNE R0,#0E7H,KEYPO7SETBMOV R3,#200MAIN06:MOV TMOD,#01HMOV TL0,#0E9HMOV TH0,#0FBHSETB TR0WAIT6:JN
12、B TF0,WAIT6CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN06LJMP KEYP0KEYPO7:CJNE R0,#0CFH,KEYPO8SETBMOV R3,#200MAIN07:MOV TMOD,#01HMOV TL0,#05BHMOV TH0,#0FCHSETB TR0WAIT7:JNB TF0,WAIT7 ;CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN07LJMP KEYP0KEYPO8:CJNE R0,#0DBH,KEYPO9SETBMOV R3,#200输入 6 音 , 非 6 音跳转输入 7 音 ,
13、 非 7 音跳转定时未到,循环等待输入 i 音 , 非 i 音跳转MAIN08:MOV TMOD,#01HMOV TL0,#08FHMOV TH0,#0FCHSETB TR0WAIT8:JNB TF0,WAIT8 ; 定时未到,循环等待CLR TF0CPLCLRMOV A,#BMOV P0,ADJNZ R3,MAIN08LJMP KEYP0KEYPO9:CJNE R0,#0EBH,KEYPO10 ; 跳转到第一首歌程序LJMP MUSTART1KEYPO10:CJNE R0,#0D7H,JIELI ; 跳转到第二首歌程序LJMP MUSTART2JIELI:JMP KEYP0;返回主程序MUS
14、TART1:;歌曲 1 的播放程序MOV R0,#00H;节拍表指针置零MOV R1,#00H;音符表指针置零RTAB:MOV A,R0MOV DPTR,#RYTH;将节拍表记入DPTR旨针MOVC A,A+DPTR;查表法将一个节拍数据取出放R2计数器中MOV R2,A;将节拍存入 R2TTAB:MOV A,R1MOV DPTR,#TONE;将音符记入 DPTRMOVC A,A+DPTR; 查表法将一个音符数据取出放入 R1 计数器中MOV R3,A;取出音符表高8 位,存入 R3INC R1;指针加1MOV A,R1MOV DPTR,#TONE;将音符记入 DPTRMOVC A,A+DPT
15、R; 查表法将一个音符数据取出放入 R1 计数器中MOV R4,A;取出低8 位,存入 R4SETB;输出相应音调的方波LOOP:MOV R5,#3BHMAIN:MOV TMOD,#01H;主程序初始化,定时器T0 工作于方式1MOV TL0,R4;置定时初值( 音符)MOV TH0,R3SETB TR0;启动 T0WAIT:JNB TF0,WAIT;定时未到,循环等待CLR TF0;定时到,软件清零TF0CPL;由输出,信号取反,蜂鸣器响MAYA:JB ,MAYB;判断口是否有为 1, 为 1 则跳至MAYBJB ,MAYBLJMP RA判断口是否有为 1, 为 1 则跳至 MAYB口为 0
16、 则跳转到程序RAMAYB:JB ,JIELI ;判断口是否有为 1JB ,JIELI ;判断口是否为 1(为 1 则继续播放第一首歌)LJMP MUSTART2 ; 口为 0 则放第二首歌RA: DJNZ R5,MAIN ;无打断则继续放第一首歌DJNZ R2,LOOP ;判断R2是否等于0INC R0;两个表的指针都加1INC R1CJNE R1,#88,RTAB;判断是否取完(R1不等于88则跳至 RTA明序)LJMP KEYP0; 音符表TONE:DB0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH
17、,5BH,0FCH,8FHDB0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68HDB0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68HDB0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BHDB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0F
18、CH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH; 节拍表RYTH:DB 04,04,04,04,04,04,04,04,04,04DB 04,05,04,04,04,04,04,04,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04MUSTART2:;MOV R0,#00H;MOV R1,#00H;歌曲 2 的播放程序节拍表指针置零音符表指针置零RTAB2:MOV A,R1MOV DPTR,#TABLE1MOVC A,A+DPTRMOV
19、 R2,A;TTAB2: MOV A,R1MOV DPTR,#TONE2MOVC A,A+DPTRMOV R3,AINC R1;MOV A,R1将节拍表记入DPTR旨针查表法将一个节拍数据取出放 R2 计数器中将节拍存入 R2将音符记入DPTR查表法将一个音符数据取出放入 R1 计数器中取出音符表高8 位指针加 1MOV DPTR,#TONE2 MOVC A,A+DPTRMOV R4,A;SETB;LOOP2: MOV R5,#9BHMAIN2:MOV TMOD,#01HMOV TL0,R4;MOV TH0,R3SETB TR0;将音符记入 DPTR;查表法将一个音符数据取出放入 R1 计数器
20、中取出低8 位输出相应音调的方波;主程序初始化,定时器T0 工作于方式1置定时初值启动 T0WAITR:JNB TF0,WAITRCLR TF0;定时未到,循环等待定时到,软件清零TF0CPL;MAYA1:JB ,MAYB1;JB ,MAYB1;LJMP RB;MAYB1:JB ,BACK;JB ,BACK;LJMP MUSTART1BACK:LJMP JIELI由输出,信号取反,蜂鸣器响判断口是否为1判断口是否为1口为 0 则跳转到程序RA判断口是否有为1判断口是否有为1;, 口皆为 0 则播放第一首歌RB: DJNZ R5,MAIN2DJNZ R2,LOOP2INC R0;INC R1CJ
21、NE R1,#64,RTAB2LJMP KEYP0;无打断则继续播放第二首歌;判断R2 是否等于0两个表的指针都加1;判断是否取完; 音符表TONE2:DB0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH DB0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H DB0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,6
22、8H,0FBH,68H,0FBH,68H,0FBH,68H DB0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BHDB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH; 节拍表TABLE1:DB 04,04,04,04,04,04,04,04,04,04DB 04,05,04,04,04,04,04,04,04,04DB 04,04,04,06,04,04,04,07,04,0
23、4DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04END七、课程设计总结及体会编完程序及调试时,遇到的几个问题以及解决办法。问题一:刚开始接通电源时,单片机就开始发出声音,为了解决这个问题,我将程序里加入了SETB 这步程序,把蜂鸣器的初值设定为 1。问题二:按完S1 按键时,未发出音调 1,这是由于我未将蜂鸣器置于高电平,加上 SETB 后,问题解决。问题三:按按键 S2 时,数码管第一位而不是第四位出现数字2 ,不过我之后发现是因为我将本应是 CLR 的程序写成了 CLR ,改变后,数码管显示正常。问题四:最开始我并未在程序中设置循环扫描按键输入这部分程序。因此在按按键 S1 发出音调1 后,按按键 S2S4 音调 2 、 3 、 4 等等都不会发出相应的音调。检查完程序,发现原因,再加入循环扫描按键输入这部分程序,问题得到解决。总结及体会此次实验的硬件电路是固定的,控制按键有 4个:S1S4,还有复位按键,晶振电路,蜂鸣器。在电脑上安装 Keil 软件以及 proteus 软件及它们的联调不是很困难,只要照着安装调试视频即可,焊单片机的板子过程还
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林农业科技学院《居室空间设计与虚拟实践》2023-2024学年第二学期期末试卷
- 湖北省襄阳市市级名校2024-2025学年初三下学期阶段性检测试题英语试题试卷含答案
- 南昌影视传播职业学院《文化地理学》2023-2024学年第一学期期末试卷
- 期货市场对冲基金服务考核试卷
- 油品市场营销策略考核试卷
- 白酒研发与创新实践考核试卷
- 渔业资源调查与监测技术考核试卷
- 皮革化学处理与加工技术考核试卷
- 搪瓷行业发展趋势与新技术应用考核试卷
- 畜禽产品质量安全检测设备考核试卷
- 国家开放大学《广告学概论》形考任务1-4参考答案
- 自制移动吊车(炮车)方案
- 《咕咚来了》PPT图文带mpa
- (三四级)农业经理人复习阿备考题库及答案(含理论和实操)
- 订单形式收购粮食合同范本
- (北师大版)四年级数学下册字母表示数
- 储能技术课后参考答案梅生伟
- 2023学年中考生物试卷(含答案)
- 中国企业家任正非
- 2022-2023年国家电网招聘之通信类真题练习试卷B卷附答案
- 作文讲座:创意写作与作文教学课件(共35张PPT)
评论
0/150
提交评论