单片机(课程设计)音乐彩灯开关控制.doc

单片机(课程设计)音乐彩灯开关控制.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机(课程设计)音乐彩灯开关控制

微机原理及接口技术课程设计 设计题目:开关控制音乐彩灯闪烁设计 指导老师: 学生姓名: 学院: 班级: 学号: 设计时间: 一.课程设计题目 开关控制音乐彩灯闪烁系统设计 二.设计功能说明 用实验系统中的LED来代替彩灯,用定时器T1,工作方式1,通过8031的P1.0驱动LED亮500ms,灭500ms闪烁。 利用定时器0 实现音阶的振荡频率,定时器1 实现音值的基本节拍控制,两者均工作于定时方式1 状态。对于一般乐曲来讲,一拍的时间约占 0.5秒左右,且以1/4拍作为基本节拍,通过程序输入基本节拍的倍数,而实现音值的节拍时间控制。 程序设计中音乐的播放用接口P1.4输出,最后通过开关K1控制P1.0,开关K2控制P1.4,从而实现音乐的播放和停止,彩灯的亮灭。 三.设计内容 1. 定时器T1,工作方式1产生500ms的定时程序驱动LED闪烁,设定时25ms的初值为X,则有(2-X)*0. =0.025,X=53036=CF2C,在程序中给出TH,TL的赋值。 2.奏歌曲《两只蝴蝶》,乐谱为图一,其中每一音符占两个字节,第一个字节用于存放音阶代码,第二个字节用于存放节拍代码。 另外规定音阶代码00H表示休止符,80H表示反复演奏。 振荡频率的计算公式为:                f=f0×2(i+j)/12                            其中f0=233.08188Hz(C调6#)。 i音调修正值 音调 C C# D D# E F F# G G# A A# B i 0 1 2 3 4 5 6 7 8 9 10 11 j音阶修正值 音阶 5 5# 6 6# 7 1 1# 2 2# 3 4 4# 5 5# 6 6# 7 j -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 歌曲《两只蝴蝶》乐谱 图一 (G调) 音阶 5 6 7 1 2 3 4 振荡频率f (Hz) 293.67 329.63 367.00 392.00 440.00 493.88 523.25 定时初值(H) FCAD FD0A FD5D FD82 FDC8 FE06 FE22 代码(H) 01 02 03 04 05 06 07 音阶 5 6 7 . 1 . 2 . 3 0 振荡频率f (Hz) 587.33 659.26 740.00 784.00 880.00 987.77 休止符 定时初值(H) FE57 FE85 FEAE FEC1 FEE4 FF03 代码(H) 08 09 0A 0B 0C 0D 00 音值 X X X· X X· X- X- - X- - - X- - - - 节拍 1/4 2/4 3/4 1 3/2 2 3 4 5 代码(H) 01 02 03 04 06 08 0C 10 14 四.程序流程图 开始运行 开始运行 T0,T1初始化并开中断 装入音阶R5值到T0中,并启动T0 装入节拍R4值到T1中,并启动T1 当前播放状态是否结束 手控制开关K1 结束 继续播放 N N Y Y 启动定时器T1 方式1 定初值,循环后取反 LED的闪烁,K2控制亮灭 ? 五.程序清单 ORG 0000H ;程序开始 AJMP LP0 ;跳转乐曲信息表首地址 ORG 000BH AJMP LP6 ;跳转至音阶代码 ORG 001BH AJMP PTIINT ;中断彩灯闪烁服务程序 MOV DPTR, #0F0H ;送外部端口地址 MOVX A,@DPTR ;读入开关状态 MOVX @DPTR,A ;根据开关状态,驱动发光二极管 MOV P1,A ;开关控制接口P1 START:MOV R7,#14H ;R7=14 MOV TMOD,#10H ;中断方式 MOV TL1,#2CH MOV TH1,#CFH SETB EA ;开放总中断 SETB ET1 ;开放T1中断 SETB TR1 ;启动定时器T1 SJMP $ PTIINT:MOV TL1,#2CH ;恢复计算初值 MOV TH1,#CFH DJNZ R7,PEND ;判断是否循环发生了20次 MOV R7,#05H

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档