找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19751|回复: 16
打印 上一主题 下一主题
收起左侧

基于51单片机的电子音乐盒的课程设计报告

  [复制链接]
跳转到指定楼层
楼主
ID:336751 发表于 2018-5-23 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

接口技术课程设计报告

基于51单片机的电子音乐盒的设计

目  录

1.设计目的和要求

1.1 设计目的

1.2 设计要求

2.硬件电路设计

2.1总体方案设计

2.2器件选择

2.2.1  单片机的选择

2.2.2 LCD1602简介

2.3  单元电路设计

2.3.1晶振电路

2.3.2复位电路

2.3.3  键盘部分

2.3.4  LCD显示电路

2.3.5  蜂鸣器部分

2.4整体电路

3.软件设计

3.1  主程序流程图

3.2主程序

3.3音乐播放程序流程图

3.4音乐播放程序

4、电路仿真调试

4.1  原理图的绘制

4.2仿真结果



1设计目的和要求1.1 设计目的
(1) 通过设计,查阅相关资料,掌握如何利用单片机设计产品,同时了解与单片机有关的软件模拟器的使用及取字模块软件的使用方法。
(2) 通过本课程设计巩固并扩展单片机课程的基本概念、基本理论、分析方法和实现方法。结合Proteus和Keil软件等,学习单片机产品的设计方法,有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。
(3) 学习Proteus软件,掌握Proteus中各种芯片的功能以及模拟。由于Proteus提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养实践精神、创造精神的平台。
1.2 设计要求
(1) 利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存四首乐曲);
(2) 用LCD显示歌曲序号和歌曲名字;
(3) 可通过功能键进行选择歌曲和暂停的操作。
2.硬件电路设计2.1总体方案设计
图1 总体方案图
以AT89C51为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时在LCD显示歌曲序号和歌曲名称。
2.2器件选择2.2.1  单片机的选择
单片机型号的选择是根据控制系统的目标、功能、可靠性、性价比、精度和速度等来决定的。根据本课题的实际情况,单片机型号的选择主要从以下两点考虑;一是要有较强的抗干扰能力。二是要有较高的性价比。由于51系列在我国使用最广,且该系列的资料和能够兼容的外围芯片也比较多,特别是ATMEL公司89C系列单片机,其典型产品AT89C51单片机,具有较高的性能价格比。故本系统采用ATMEL公司生产的AT89C51单片机作为电子音乐盒的核心部件,AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.2.2 LCD1602简介
LCD液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16×1,16×2,20×2和40×2行等的模块。LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图2所示:
图2 LCD尺寸图
1602LCD主要技术参数:
显示容量:16×2个字符;
芯片工作电压:4.5—5.5V;
工作电流:2.0mA(5.0V);
模块最佳工作电压:5.0V;
字符尺寸:2.95×4.35(W×H)mm。
引脚功能说明
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示。
表1 引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极

第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
1602液晶模块内部的控制器共有11条控制指令,如表2所示:
表2 控制命令表
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
与HD44780相兼容的芯片时序表如下:
表 3 芯片时序图
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
输出
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,D0—D7=数据,E=高脉冲
输出

2.3  单元电路设计2.3.1晶振电路
单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接线方式可以获得不同时钟电路,有内部时钟电路和外部时钟电路,如图4.3所示,外部时钟电路会使电路复杂,故采用的是内部时钟电路。时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为12MHz的晶振,一个机器周期为1us,C1,C2为30uF。
2.3.2复位电路
复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
复位电路分为上电自动复位和按键手动复位,如图3所示。RST引脚是复位信号的输入端,复位信号是高电平有效.这次采用的是手动复位,复位通过电容C3,C4和电阻R1,R2来实现,按键手动复位是图中复位键来实现的。

图 3 晶振与复位电路

2.3.3  键盘部分
键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。
1.编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。
2.非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的CPU时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。

图 4 键盘电路

2.3.4  LCD显示电路
LCD的8根数据线与P1口相连,RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,RS与P2.0相连,由P2.0控制LCD的写指令或写数据操作。R/W与P2.1相连,由P2.1决定是读操作还是写操作。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。E端与P2.2相连。
图5 LCD显示电路
2.3.5  蜂鸣器部分
一般所指的蜂鸣器是以压电陶瓷为主要元件的。压电陶瓷是一类有将压力与电流相互转换能力的特殊陶瓷。这种能力缘于其特殊的晶体结构。当压电陶瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在内部产生一个电流,并且电流的变化与压力的变化密切相关。反之亦然。所以利用这一特性,在压电陶瓷上通过一定频率的电流,就会引起压电陶瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所听见,也就是产生了蜂鸣声。
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。

图6 蜂鸣器电路

2.4整体电路
1



图 7 整体电路
1



3.软件设计3.1  主程序流程图
图 8 主程序流程图
3.2主程序(见附件)
3.3音乐播放程序流程图
图9 音乐播放程序流程图
3.4音乐播放程序(见附件)
4、电路仿真调试4.1  原理图的绘制
仿真平台为Proteus软件,Proteus软件是世界上著名的EDA工具(仿真软件),能完成原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。
PROTEUS电路设计是在PROTEUS ISIS环境中绘制的,该编辑环境具有良好的人机交互界面,功能强大极易上手。首先通过桌面进入主程序,绘制原来图的主要任务是从元件库中选取绘制电路所需要的元件。可以通过点击选择器顶端左侧的“P”或者通过命令打开,我们常用的是按钮;在查找到并放置完所有需要的器件后,我们需要接着连接元件,即在PROTEUS ISIS的编辑窗口布线。PROTEUS ISIS中没有布线模式,但用户可以在任意时刻放置连线和编辑连线。在完成绘制所需的电路图前,用户需要放置并连接断轴。在电路原理图中放置两种通用的端子,一种是接地端子一种是电源端子。当在PROTEUS ISIS编辑窗口放置元件时,每一元件都有唯一的元件标号及元件值与之对应。原件号是PROTEUS ISIS的实时注释功能自动标注的,这一功能可在菜单中设置选择是否开启。PROTEUS ISIS中也支持块操作,当用户需要对电路中的某一部分进行操作时,可以使用该功能。系统共支持块移动、块复制、块旋转、块删除等实用功能,充分利用这些功能可以极大的提高我们绘图的效率。我们绘制完所有的元件后,最后进行统一标注,PROTEUS ISIS支持注释功能,可以把我们所绘制的原理图中的器件根据我们的需要添加上特殊的注释,以表示特定的含义。根据设计电路绘制完后的电路图如图6.1所示。
4.2仿真结果
图 10 仿真图
通过Protues仿真结果,这次课程设计的要求已全部满足。


完整的Word格式文档51黑下载地址(含源码):
基于单片机的电子音乐盒的设计.doc (1.68 MB, 下载次数: 437)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:406434 发表于 2018-10-8 10:55 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

板凳
ID:455173 发表于 2018-12-26 10:44 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

地板
ID:455208 发表于 2018-12-26 11:32 | 只看该作者
谢谢楼主分享,正需求呢
回复

使用道具 举报

5#
ID:456273 发表于 2018-12-27 11:49 | 只看该作者
很有用,正需要。
回复

使用道具 举报

6#
ID:456273 发表于 2018-12-27 11:50 | 只看该作者

谢谢楼主分享,正需求呢
回复

使用道具 举报

7#
ID:462240 发表于 2019-1-6 18:18 来自手机 | 只看该作者
文件里有源程序嘛
回复

使用道具 举报

8#
ID:624146 发表于 2019-10-14 21:58 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

9#
ID:624146 发表于 2019-10-14 22:25 | 只看该作者
很详细,学到了不少!谢谢
回复

使用道具 举报

10#
ID:573632 发表于 2019-10-28 21:19 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

11#
ID:649321 发表于 2019-11-28 20:49 | 只看该作者
特别好
回复

使用道具 举报

12#
ID:658685 发表于 2019-12-8 11:00 | 只看该作者
很好,很实用
回复

使用道具 举报

13#
ID:664029 发表于 2019-12-14 21:49 | 只看该作者
谢谢楼主,我刚好需要
回复

使用道具 举报

14#
ID:775928 发表于 2020-6-11 10:30 | 只看该作者
程序代码是C语言的吗?
回复

使用道具 举报

15#
ID:997585 发表于 2021-12-28 20:14 | 只看该作者
找到合适的实践实例了,棒!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表