收藏 分销(赏)

机械基础设计要点.doc

上传人:a199****6536 文档编号:2260305 上传时间:2024-05-24 格式:DOC 页数:14 大小:128.04KB 下载积分:8 金币
下载 相关 举报
机械基础设计要点.doc_第1页
第1页 / 共14页
机械基础设计要点.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
内容为网络收集 仅供参考 音乐盒实验报告 专业:生产过程自动化 班级:08机电(2)班 姓名:何远龙 指导老师:陈玉琼 2010-10-08 一、实验材料 1、仪器设备,软件工具 软件 用途 keil 软件 源程序的编译 Proteus软件 实现电路的仿真 Progisp软件 将程序下载到学习板上进行实验 硬件 用途 万用表 检测硬件电路 学习板 实现源程序的调试,并通过实验现象来修改程序 2、元器件清单 元件名称 参数 数量 IC插座 DIP40 1 单片机 89C51 1 晶体振荡器 12MHZ 1 瓷片电容 22PF 2 按键 4 IC插座 DIP8 1 三极管 2N5088 1 电阻 1K 4 电解电容 47uF 1 电阻 510 8 蜂鸣器 无源式 1 小喇叭 1 放大器 LM386 1 二、实验过程描述 1、设计功能描述 (1)通过改变单片机输出脉冲高低电平的保持时间和频率,可以得到音阶和调节不同的音调,运用定时中断来控制节拍,从而来演奏乐曲。 (2)用数码管显示当前播放的歌曲序号。 (3)通过功能键控制上,下曲目的选择以及乐曲的暂停和播放。 2、原理图设计思路 由P1.0口控制一个LM386功率放大器,经功率放大器控制发声器件小喇叭。当P1.0口输出低电平时,三极管导通,小喇叭通电;当P1.0口输出高电平时,三极管截止,小喇叭断电。通过连续不断周期性地改变P1.0口的高、低电平,就会产生一定频率的矩形波,小喇叭就能产生一定频率的声音,再配合延时程序控制高、低电平的持续时间,就能改变音调。由P3.2、P3.3、P3.4、P3.5分别作为开始键/停止键,暂停键、下一曲键、上一曲键。图中还将共阳级数码管相应的段选控制端用P0口控制,将数码管的公共端,也称“位选端”由P2口控制。 原理图如下: 3、程序设计思路,并画出流程图 程序思路:初始化设置,开延时与外部中断,按下P3.2键先唱第一首,然后循环播放。若有按下P3.3键则执行暂停作用,再按一次则继续播放;若有按下P3.3,P3.4键则分别执行下一曲、上一曲功能。播放歌曲是多少数码管则显示相应的数字。流程图如下: 主流程 调用del20子程序 First子程序 判断P3.2键是否释放 选曲地址清0 显示码送P0口,显示位送P2口 表1首地址送DPTR 调用music0子程序 调用next子程序 RET Next子程序 选曲地址加1 显示码送P0口,显示位送P2口 表2首地址送DPTR 是=1? 调用music0子程序 选曲地址加1 RET 调用first子程序 是=2? 表3首地址送DPTR 显示码送P0口,显示位送P2口 调用music0子程序 选曲地址加1 是=3? 显示码送P0口,显示位送P2口 表2首地址送DPTR 调用music0子程序 表3首地址送DPTR 是=2? 选曲地址加1 Last子程序 调用music0子程序 是=1? 是=0? 表1首地址送DPTR 显示码送P0口,显示位送P2口 显示码送P0口,显示位送P2口 调用music0子程序 RET P3.2键释放? Music0子程序 中断计数单元清0 查表取常数 是结束符00H? 恢复初始条件A清零 延时1秒后,再循环 是休止符FFH? P3.2键按下? P3.4键按下? P3.5键按下? 音阶常数送R6 R0=0? 取节拍常数送R7 启动T0定时器 P1.0取反,按R6常数延时 节拍时间到否 停止T0计数,中断计数20H单元清0,DPTR加1 RET 调用del20子程序 延时100ms 调用del20子程序 跳转到START P3.4键释放? P3.5键释放? 调用next子程序 调用last子程序 调用del20子程序 Del20子程序 循环次数05送R4 空操作 RET R4-1=0? R3-1=0? 中断响应 调用del20子程序 P3.3键释放? R0值取反 中断返回 4、写出源程序与必要的注释 shuzhi equ 3fh ;选曲目的地址 song equ p1.0 ;扬声器播放P1.0 play equ p3.2 ;播放停止键P3.2 addone equ p3.4 ;曲目加一键P3.4 subone equ p3.5 ;曲目减一键P3.5 dul equ p0 ;数码管段选P0口 wel equ p2 ;数码管位选P2口 org 0000h ljmp start org 000bh ;定时器0溢出中断入口地址 ajmp cont ;指向定时器中断程序 org 0013h ;外部中断一入口地址 ajmp pause ;指向外部中断程序 org 0100h start: mov sp,#50h mov th0,#0dbh ;定时器赋初值 mov tl0,#0ffh mov tmod,#01h mov ie,#86h ;开中断 mov tcon,#00h mov r0,#00h mov shuzhi,#00h main: jnb play,first ;判断P3.2键是否按下 sjmp main first: acall del20 jnb play,first ;判断P3.2键是否释放 mov shuzhi,#00h mov dul,#0f9h ;显示数值1 mov wel,#7fh ;显示位送P2口 mov dptr,#dat1 ;表1首地址送DPTR acall music0 acall next ret next: inc shuzhi ;shuzhi+1 mov a,shuzhi cjne a,#01,loop3 ;A是否=1,不等就跳转到LOOP3 mov dptr,#dat2 ;表2首地址送DPTR mov dul,#0a4h ;显示数值2 mov wel,#7fh acall music0 inc a loop3: cjne a,#02,loop4 ;A是否=2,不等就跳转到LOOP4 mov dptr,#dat3 ;表3首地址送DPTR mov dul,#0b0h ;显示数值3 mov wel,#7fh acall music0 inc a loop4: cjne a,#03,next ;A是否=3,不等就跳转到next acall first ret last: dec shuzhi ;shuzhi-1 mov a,shuzhi cjne a,#02,last1 mov dptr,#dat3 mov dul,#0b0h mov wel,#7fh acall music0 last1: cjne a,#01,last2 mov dptr,#dat2 mov dul,#0a4h mov wel,#7fh acall music0 last2: cjne a,#00,last mov dptr,#dat1 mov dul,#0f9h mov wel,#7fh acall music0 ret music0: mov 20h,#00h ;中断计数单元清0 music1: clr a movc a,@a+dptr ;查表取音阶常数 jz end0 ;是结束符? cjne a,#0ffh,music5 ;是休止符? ljmp music3 ;产生100ms停顿 music5: nop key: jnb play,k0 ;判断P3.2键是否按下 jnb addone,k1 ;判断P3.4键是否按下 jnb subone,k2 ;判断P3.5键是否按下 mov r6,a ;音阶常数送R6 inc dptr ;DPTR+1 mov a,#0 movc a,@a+dptr ;取常数送R7 mov r7,a setb tr0 ;启动定时器T0 music2: nop cjne r0,#0,$ cpl song ;输出电平取反 mov a, r6 mov r3,a ;音阶常数送R3 lcall del20 mov a, r7 ;节拍常数送A cjne a,20h,music2 ;节拍时间到否 mov 20h,#00h ;为取下一音阶作准备 inc dptr ljmp music1 music3: nop ;休止100ms clr tr0 ;关闭定时器 mov r2, #14h ;R2=20 music4: nop mov r3, #250 ;R3=250 lcall del20 djnz r2, music4 inc dptr ;为取下一音阶作准备 ljmp music1 end0: mov r2, #200 ;歌曲结束后,延时1s后继续 music6: mov r3, #250 lcall del20 djnz r2,music6 k1: acall del20 ;调用延时子程序 jnb addone,k1 ;判断P3.4键是否释放 acall next k2: acall del20 jnb subone,k2 ;判断P3.5键是否释放 acall last k0: acall del20 jnb play,k0 ljmp start ret del20: mov r4,#05h del4: nop djnz r4,del4 djnz r3,del20 ret cont: inc 20h ;计数单元+1 mov th0,#0dbh ;重新10ms定时初值 mov tl0,#0ffh reti ;跳出中断 pause: acall del20 jnb p3.3,pause ;判断P3.3键是否有释放 mov a,r0 ;把R0的值给A cpl a ;A值取反 mov r0,a reti dat1: db 3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh db 3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh db 26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,30h,20h,33h,10h,33h,10h db 3bh,60h,40h,20h,4ch,80h,0ffh db 3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh db 3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh db 26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,2bh,20h,30h,20h db 33h,20h,3bh,20h,3bh,20h,40h,2bh,3bh,80h,0ffh db 19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh db 20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh db 19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh db 20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh db 2bh,20h,2bh,40h,3bh,20h,2bh,20h,2bh,40h,2bh,20h,0ffh db 26h,20h,2bh,20h,2bh,20h,30h,20h,2bh,80h,0ffh db 2bh,20h,2bh,40h,3bh,20h,30h,20h,30h,40h,2bh,20h,0ffh db 33h,20h,3bh,20h,3bh,20h,40h,20h,3bh,80h,0ffh,0ffh dat2: db 18h,30h,1ch,10h,20h,40h,1ch,10h db 18h,10h,20h,10h,1ch,10h,18h,40h db 1ch,20h,20h,20h,1ch,20h,18h,20h db 20h,80h,0ffh,20h,30h,1ch,10h,18h db 20h,15h,20h,1ch,20h,20h,20h,26h db 40h,20h,20h,2bh,20h,26h,20h,20h db 20h,30h,80h,0ffh,20h,20h,1ch,10h db 18h,10h,20h,20h,26h,20h,2bh,20h db 30h,20h,2bh,40h,20h,20h,1ch,10h db 18h,10h,20h,20h,26h,20h,2bh,20h db 30h,20h,2bh,40h,20h,30h,1ch,10h db 18h,20h,15h,20h,1ch,20h,20h,20h db 26h,40h,20h,20h,2bh,20h,26h,20h db 20h,20h,30h,80h,20h,30h,1ch,10h db 20h,10h,1ch,10h,20h,20h,26h,20h db 2bh,20h,30h,20h,2bh,40h,20h,15h db 1fh,05h,20h,10h,1ch,10h,20h,20h db 26h,20h,2bh,20h,30h,20h,2bh,40h db 20h,30h,1ch,10h,18h,20h,15h,20h db 1ch,20h,20h,20h,26h,40h,20h,20h db 2bh,20h,26h,20h,20h,20h,30h,30h db 20h,30h,1ch,10h,18h,40h,1ch,20h db 20h,20h,26h,40h,13h,60h,18h,20h db 15h,40h,13h,40h,18h,80h,00h dat3: db 26h,10h,26h,20h,26h,10h,26h,10h,2bh,10h,30h,20h,26h,40h,0ffh db 26h,10h,26h,10h, 20h,10h,1ch,10h,0ffh db 20h,20h,20h,20h,20h,10h,26h,30h,2bh,80h,0ffh db 1ch,10h,1ch,10h,1ch,10h,20h,10h,1ch,30h,18h,10h,20h,40h,0ffh db 26h,10h,2bh,10h,30h,10h,2bh,10h,0ffh db 26h,20h,20h,20h,2bh,20h,20h,20h,30h,40h,0ffh db 30h,10h,1ch,10h,1ch,10h,19h,10h,18h,10h,19h,10h,1ch,10h,1ch,10h,0ffh db 1ch,10h,1ch,10h,1ch,10h,18h,10h,20h,10h,20h,10h,26h,10h,20h,10h,0ffh db 20h,30h,20h,10h,18h,20h,18h,20h,0ffh,19h,20h,20h,10h,1ch,10h,1ch,80h,0ffh db 18h,10h,19h,10h,1ch,10h,18h,10h,18h,40h,0ffh db 19h,20h,20h,20h,18h,20h,19h,10h,19h,10h,19h,10h,1ch,30h,1ch,0c0h,0ffh db 13h,10h,13h,10h,13h,10h,15h,10h,13h,10h,15h,10h,18h,10h db 18h,10h,18h,10h,15h,30h,0ffh db 15h,10h,1ch,10h,15h,10h,1ch,10h,18h,10h,18h,10h,15h,10h,18h,10h,0ffh,18h,10h db 26h,10h,1ch,10h,26h,10h,20h,20h,1ch,10h,20h,10h,20h,40h,0ffh db 26h,10h,2bh,10h,2bh,10h,30h,10h,26h,20h,18h,10h,1ch,10h,20h,20h,20h,20h,0ffh db 20h,30h,20h,10h,1ch,20h,18h,20h,18h,20h,15h,10h,18h,10h,18h,10h,15h,30h,0ffh db 15h,10h,20h,10h,20h,10h,20h,10h,1ch,20h,18h,20h,18h,20h,15h,10h,18h,10h db 18h,10h,15h,30h,1ch,10h,18h,20h,18h,10h,18h,20h,15h,10h,18h,10h,18h,0c0h,00h end 5、片内RAM地址与I\O分配表 片内RAM 名称 用途 3fh Shuzhi 选曲目的地址 R0 —— 中断地址 R3 —— 暂存音阶常数 20H —— 存放10ms定时中断的次数 R6 —— 存放音阶常数 R7 —— 存放节拍常数 R2、R4 —— 改变延时时间 P0 Dul 数码管段选 P2 Wel 数码管位选 P1.0 Song 扬声器播放 P3.2 Play 播放停止功能 P3.3 —— 暂停功能 P3.4 addone 曲目加一 P3.5 subone 曲目减一 6、子程序列表 子程序名称 功能 出入口 First 唱第一首曲目 无出入口 Next 执行下一曲功能 出、入口均为A Last 执行上一曲功能 出、入口均为A Music0 唱出相应的音阶、节拍 R0入口,无出口 Del20 延时20ms 入口R3,无出口 7、调试结果描述 (1)功能基本实现:按下P3.2键时,第一首曲目开始播放,若按下P3.3键,则曲目暂停播放,再按下此键时,曲目继续播放下去。若按下P3.4、P3.5键,则分别执行下一曲、下一曲功能。再按下一次P3.2键时,曲目停止播放。数码管上有显示相应的歌曲序数。 (2)功能不足:按下P3.2键执行停止功能时不够稳定,停止后数码管上还有数字显示。按下暂停键重新播放时,会延时一小段时间才继续播放。 8、出现问题及解决方法 (1)出现问题:按键扫描放错地方导致按键不能正常使用。 解决方法:把按键扫描程序放在取音阶常数程序前面,只有把按键扫描功能放在这里,按键的功能才会被程序所扫描到,才能执行相应按键的功能。 出现问题:暂停功能不能使用 解决方法:暂停功能不能使用是源程序开始时值没有设好,没有开中断,只要输入相应的外部中断地址和设好初值,加上给它一个地址R0,没有按下P3.3键时,R0等于0,程序往下执行,当按下P3.3键时,R0不等于0,则程序原地跳转,即执行暂停作用,再按下此键时R0取反,程序跳出中断,歌曲继续播放。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 机械/制造/汽车

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服