没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
成绩
课程设计: 嵌入式系统应用
题目名称:基于
51
单片机的音乐盒设计
1 设计的任务
(包含设计的内容和设计的目标)
设计内容:
本设计是一个基于 AT89C52 系列单片机的音乐盒,依据单片机技术原
理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐
盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器 和点阵组
成。使用按键控制音乐盒,三个用来切换歌曲,一个用来暂停音乐和开启
LED 点阵,一个用来从暂停位置开始播放音乐。本音乐盒共有三首歌曲,
点阵式样有四种。播放歌曲时,蜂鸣器发出某个音调。本设计利用 KEIL 编
程软件对音乐盒源程序进行编程并调试。
设计目标:
初 始: 点阵显示作者信息;
按键 1:播放歌曲 1;
按键 2:播放歌曲 2;
按键 3:播放歌曲 3;
按键 A:暂停播放,点阵显示当前歌曲的名字;
按键 B:从暂停位置继续播放。
2 设计的过程
2.1 基本结构
、总体设计框图
、 介绍
是一种低功耗、高性能 CMOS 位微控制器,具有 在系统可编
程 存储器。使用 公司高密度非易失性存储器技术制造,与工业
产品指令和引脚完全兼容。片上 允许程序存储器在系统可编程,亦
适于常规编程器。在单芯片上,拥有灵巧的 位 和在系统可编程 ,使
得 在众多嵌入式控制应用系统中得到广泛应用。
具有以下标准功能: 字节 , 字节
,位 口线,看门狗定时器
,个数据指针,
三个 位定时器计数器
,一个 向量 级中断结构,
全双工串行口
,片内晶振及时钟电路
。另外,
可降至 静态逻辑操作,支持 种软件
可选择节电模
式。空闲模式下,停止工作,允许 、定时器
计
数器
、串口、中断继续工作。掉电保护方式下, 内
容被保存,振荡器被冻结,单片机
一切工作停止,直到
下一个中断或硬件复位为止。
P0 口: 口是一个 位漏极开路的双向 口。作
为输出口,每位能驱动 个 ! 逻辑电平。对 端口写
"#时,引脚
用作高阻抗输入。当访问外部程序
和数据存储器
时, 口也被作
为低 位地址数据复用。在这种模式下, 不具有内部上拉电阻。在 $ 编
程
时, 口也用来接收指令字节
;在程序
校验时,输出指令字节。程序
校验
时,需要外部上拉电阻。
AT89C52
单片机
蜂鸣器
点阵
按键输入
晶振复位电路
P1 口:口是一个具有内部上拉电阻的 位双向 口,%输出缓冲器能
驱动 &个!逻辑电平。对 端口写"#时,内部上拉电阻把端口拉高,此时可
以作为输入口使用。作为输入使用时,被外部拉低的引脚
由于内部电阻的原因,
将输出电流(!)。 此外,' 和 ' 分别作定时器
计数器
的外部计
数输入(')和定时器
计数器 的触发输入('())。 在 $ 编
程
和校验时, 口接收低 位地址字节。
引脚
号第二功能:
'(定时器
计数器
的外部计数输入),时钟输出
'()(定时器计数器
的捕捉重载触发信号和方向控制)
'(在系统编程
用)
'(在系统编程
用)
'*(在系统编程
用)
P2 口:口是一个具有内部上拉电阻的 位双向 口,输出缓冲器能
驱动&个!逻辑电平。对 端口写"#时,内部上拉电阻把端口拉高,此时
可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原
因,将输出电流(!)。 在访问外部程序存储器
或用 位地址读取外部数据
存储器
(例如执行 +),-)时,口送出高八位地址。在这种应用中,
口使用很强的内部上拉发送 。在使用 位地址(如 +),)访问外部
数据
存储器时, 口输出 锁存器
的内容。在 $ 编程和校验时, 口也接
收高 位地址字节
和一些控制信号
。
P3 口:口是一个具有内部上拉电阻的 位双向 口,%输出缓冲器能
驱动 &个!逻辑电平。对 端口写"#时,内部上拉电阻把端口拉高,此时可
以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,
将输出电流(!)。 口亦作为 特殊功能(第二功能)使用,如下
表所示。在 $ 编程和校验时, 口也接收一些控制信号
。
引脚
第二功能:
')-.串行输入口/
')-.串行输出口/
'0.外中断 /
'0.外中断 /
'&.定时计数器
/
'.定时计数器
/
'1.外部数据
存储器
写选通/
'*-.外部数据
存储器
读选通/
此外, 口还接收一些用于 FLASH
闪存
编程
和程序
校验的控制信号
。
RST:复位输入。当振荡器工作时, 引脚出现两个机器周期
以上高电
平将是单片机
复位。
ALE/PROG:当访问外部程序存储器
或数据存储器
时,!((地址锁存
允
许)输出脉冲用于锁存地址的低 位字节。一般情况下,!( 仍以时钟振荡频率
的 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意
的是:每当访问外部数据
存储器时将跳过一个 !( 脉冲。对 ! 存储器
编程
期间,该引脚
还用于输入编程脉冲(2)。如有必要,可通过对 特殊功能
寄存器
()区中的 ( 单元的 - 位置位,可禁止 !( 操作。该位置位后,
只有一条 +) 和 + 指令才能将 !( 激活。此外,该引脚
会被微弱拉高,
单片机
执行外部程序
时,应设置 !( 禁止位无效。
PSEN:程序
储存允许((0)输出是外部程序存储器
的读选通信号,当
由外部程序存储器取指令(或数据)时,每个机器周期
两次 (0 有效,
即输出两个脉冲,在此期间,当访问外部数据
存储器,将跳过两次 (0 信号。
EA/VPP :外部访问允许,欲使 仅访问外部程序存储器
(地址为
3), ( 端必须保持低电平(接地)。需注意的是:如果加密位
!4 被编程
,复位时内部会锁存 ( 端状态。如 ( 端为高电平(接 +55 端),
则执行内部程序存储器的指令。! 存储器
编程
时,该引脚
加上6+ 的
编程允许电源 +%%,当然这必须是该器件是使用 + 编程电压 +%%。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
2.2 软件设计过程
包含软件设计思路,如果使用中断,说明中断类型等
在本程序中设置了两个标志——5789 和 jy_5789,分别初始化为 0 和 0。
按键 1、2、3、A 使得 5789 在 0 和、1、2、3 之间切换,jy_5789 记录歌曲
的状态,能在暂停时播放歌曲的名字,同时在按键 4 返回时能知道 5789 的值。
程序检测 5789 的值,5789 等于 1 时播放第一首歌曲,等于 2 时播放第二首,
等于 3 时播放第三首。另一方面根据 jy_5789 的值来控制点阵显示歌曲名。
1、音调、节拍以及编码的确定方法
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波
频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只
需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
1.1 音调的确定
不同音高的乐音是用 、-、(、、2、、4 来表示,这 * 个字母就是音乐
的音名,它们一般依次唱成 -、(、、、、!、: 即唱成简谱的
、、、&、、、*,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音
的发音,所以叫“音调”,即 79。把 、-、(、、2、、4 这一组音的距离分
成 个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就
叫“全音”。在钢琴等键盘乐器上,–-、-–(、–2、2–、–4 两音之间隔着一
个黑键,他们之间的距离就是全音;(–、4– 两音之间没有黑键相隔,它们之
间的距离就是半音。通常唱成 、、、&、、、* 的音叫自然音,那些在它
们的左上角加上﹟号或者 ; 号的叫变化音。﹟叫升记号,表示把音在原来的基
础上升高半音,; 叫降记音,表示在原来的基础上降低半音。例如高音 - 的频
率 ( & ) 刚 好 是 中 音 - 的频 率 ( ) 的 一 倍 , 中 音 - 的 频 率
( )刚好是低音 - 频率( )的一倍;同样的,高音 ( 的频率
(* )刚好是中音 ( 的频率(* )的一倍,中音 ( 的频率(* )
刚好是低音 ( 频率(& )的一倍。
剩余29页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3692
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功