单片机数字音乐盒程序设计文档格式.docx
- 文档编号:3292694
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:34
- 大小:822KB
单片机数字音乐盒程序设计文档格式.docx
《单片机数字音乐盒程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机数字音乐盒程序设计文档格式.docx(34页珍藏版)》请在冰点文库上搜索。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。
FPGA预装了很多已构造好的参数化库单LPM器件。
通过引入支持LPM的EDA[1]软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
单片机制作的八音盒弥补了这些。
1课程设计目的
基于学习单片机课程的基础,锻炼我们的动手能力。
《单片机及接口技术》课程设计是单片机课程的综合性及实践性教学环节,课程设计的目的就是:
a.综合运用单片机原理课程和单片机接口技术课程的知识,分析和解决实际应用中的问题进一步巩固、加深和拓宽所学的知识。
b.通过设计实践,逐步树立正确的设计思想,熟悉掌握单片机应用系统设计的一般规律,培养分析问题和解决问题的能力。
c.通过逻辑分析、方案设计、硬件电路连接、画程序流程图,汇编语言编程,上机调试,进行全面的单片微机应用基本技能的训练。
2课程设计任务及要求
以单片机为核心,设计一个数字音乐盒:
利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s)。
采用LCD显示信息。
a.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。
b.可通过功能键选择乐曲、暂停、播放。
c.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲
d.采用LCD显示信息
e.选作内容:
显示乐曲播放时间或剩余时间
3设计意义
a、有利于基础知识的理解
通过《初中信息技术》必修部分的学习,学生掌握了一些信息时代生存及发展必需的信息技术基础知识和基本技能,具备了在日常生活及学习中应用信息技术解决问题的基本态度及基本能力。
但是,学生对于程序、病毒的内涵,程序及文档、数据的区别,计算机运行的机理等知识内容的理解比较肤浅。
学生如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
b、有利于逻辑思维的锻炼
在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。
写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。
程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
c、有利于及其他学科的整合
在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。
在信息技术课中整合其它学科的知识,发挥信息技术的优势。
例如,在编写“一元二次方程求解”程序时,就复习了数学的相关知识。
而在讲解逻辑运算的知识时,我们又可以利用物理中的电路知识进行讲解,起到意想不到的效果。
d、有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
4设计原理
当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
5系统总体方案介绍
5.1系统组成框图
音乐盒的系统结构以AT89C51单片机位控制核心,加上几个按键、时钟复位电路、蜂鸣器、LCD模块组成。
单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐播放|暂停的样式以及蜂鸣器发音。
系统组成框图如图2.1所示。
图5.1系统组成框图
5.2音乐盒的功能
音乐盒的功能结构如图2.2所示。
1~3号开关负责切换播放歌曲,播放歌曲共3首,分别是同一首歌、世上只有妈妈好和精忠报国。
4、5号开关负责切换歌曲:
上一首和下一首,6号开关负责歌曲的暂停和播放,7号开关是开机键。
6硬件设计
6.1总体设计框图
图6.1
6.2各部分硬件设计及其原理
6.2.1按键电路设计
按键电路如图6.2所示:
P1.0-P1.5控制按键,其中P1.0-P1.1扫描行,P1.4-P1.5扫描列。
图6.2按键电路
6.2.2LCD显示电路设计及原理
如图6.3所示文字型LCD(16×
2)的D0-D07端口及AT89C51端口P0.0-P0.7相连接VSS及VEE两端接地。
P2.0-P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0-P0.7作为LCD的D0-D7的控制信号。
图6.3LCD显示电路
6.2.3时钟振荡电路
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器及作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF
10PF,而如果使用陶瓷振荡器建议选择40PF
10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:
图6.4单片机内部、外部振荡电路
6.3硬件电路图及功能
总体硬件电路实现功能如下,如图6.5所示
电路中用P1.0~P1.5控制按键。
P0.0~P0.7控制LED。
P3.0控制蜂鸣器。
电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
图6.5硬件电路图
7软件设计
7.1软件程序设计
7.1.1程序流程图
7.1.2程序源代码(见附录)
8调试
8.1检查硬件连接
在PROTUES检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:
晶振电路的连接,复位电路是否设计正确。
8.2检查软件系统
1.根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。
2.将所有程序组织起来,在软件环境下运行,检查程序是否正确。
通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成HEX文件装载到单片机中,对硬件进行仿真。
8.3测试结果
图8.1系统总体运行图
课程设计体会
这学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;
软件方面,在程序的设计,程序的调试方面都有了很大的进步。
在一个好的氛围里才能踏下心来做东西,在这一段时间里,同学们都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。
另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。
我们也是这么做的,这一点在这次的课程设计中十分重要。
通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。
这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。
我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。
对我而言,知识上的收获重要,精神上的丰收更加。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为为我人生旅途上一个非常美好的回忆
在设计即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
参考文献
[1]吴亦峰,陈德伟,单片机原理及接口技术,北京:
电子工业出版社,2010年11月
[2]黄智伟全国大学生电子设计竞赛系统设计[M],北京:
北京航空航天大学出版社,2006.6.
[3]黄智伟凌阳单片机课程设计指导[M],北京:
北京航空航天大学出版社,2006.11.
[4]李广弟,朱月秀,王秀山.单片机基础[M],北京:
北京航空航天大学出版社,2001.7.
[5]赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发及应用[M],西安:
西安电子科技大学,2000.
[6]候伯亨.VHDL硬件描述语言及数字逻辑电路设计[M],西安:
西安电子科技大学出版社,1999.
[7]康华光.模拟电子技术基础(第四版)[M],武汉:
华中理工大学出版社,1999.
附录
RSBITP2.0;
定义液晶显示端口标号
RWBITP2.1
EBITP2.2
;
*************************
L50MSEQU60H
L1MSEQU61H
L250MSEQU62H
SECEQU65H
MINEQU64H
HOUEQU63H
ORG0000H
LJMPMAIN
ORG000BH
LJMPTT0
ORG001BH
LJMPT1INT
ORG1000H
MAIN:
-----------------------;
液晶初始化
MOVSP,#70H;
设置堆栈指针
MOVP0,#01H;
清屏
CALLENABLE;
调用延时程序
MOVP0,#38H;
8位,2行显示
LCALLENABLE
MOVP0,#0FH;
屏显ON,光标ON,闪烁ON
MOVP0,#06H;
计数地址加1,显示幕ON
-------------------------------内存初始化
LCALLINITIL
-------------------------------
KEY1:
LCALLKEY
LCALLMODD
LJMPKEY1
---------------------键盘扫描
KEY:
NOP
LCALLKS
JNZK1;
有按键转到K1
LCALLKAIJI
LCALLSOP
XN:
LJMPKEY
K1:
LCALLMODD
JNZK2
K2:
MOVR2,#0FEH;
读键盘
MOVR4,#00H
K3:
MOVA,R2
MOVP1,A
MOVA,P1
JBACC.4,L1;
为1跳转,第一行无按键
MOVA,#00H
LJMPLK
L1:
JBACC.5,NEXT1
MOVA,#0CH
-------------------------------------------------------
LK:
ADDA,R4
PUSHACC
K4:
LCALLDELAY1;
若同时有其他按键,则等待
JNZK4
--------------------------------------------------------
MOVR3,#07H
CLRA
MOVR0,#30H
MOVR1,#31H
MM1:
MOVA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR3,MM1
POPACC
MOV@R0,A
RET
------------------------------------------------------
NEXT1:
INCR4;
------列扫描
JNBACC.3,N2
LJMPN1
N2:
N1:
RLA
MOVR2,A
LJMPK3
----------------------------------------------
KS:
MOVA,#0F0H;
判断P1口
CPLA
ANLA,#0F0H
--------------------------------------------------
DELAY1:
SETBRS0
DL:
MOVR5,#0AH
DL2:
MOVR6,#63
DL3:
NOP
DJNZR6,DL3
DJNZR5,DL2
CLRRS0
---------------------------------------------------
30H-37H初值为零
----------------------------------------------------
INITIL:
MOVR3,#08H
M1:
MOV@R0,#00H
DJNZR3,M1
显示
---------------------------------------------------
MODD:
MOVP0,#8EH
LCALLENABLE
MOVA,37H
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
LCALLWRITE2
开机提示字
-------------------------------------------------
KAIJI:
CJNEA,#0FH,DFF
MOVP0,#80H;
设光标地址
MOVDPTR,#TABLE1;
写数据
LCALLWRITE1
DFF:
按键值播放歌曲
SOP:
CJNEA,#01H,A11
MOV52H,#HIGHTABLE10
MOV53H,#LOWTABLE10
LCALLINITILE2
LCALLMAIN0
A11:
CJNEA,#02H,A22
MOV52H,#HIGHTABLE20
MOV53H,#LOWTABLE20
LCALLINITILE2
A22:
CJNEA,#03H,AAA
MOV52H,#HIGHTABLE30
MOV53H,#LOWTABLE30
LCALLMAIN0
AAA:
RET
******************************************
INITILE2:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOVMIN,#00H
MOVHOU,#00H
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H;
将BCD吗转化为ASIIC码
MOVP0,#0C8H;
显示小时十位
CALLENABLE
CALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H;
显示小时个位
MOVA,#3AH
MOVP0,#0DH;
显示冒号
MOVA,MIN
MOVP0,#0CBH;
显示分十位
MOVP0,#0CCH;
显示分个位
MOVP0,#0CDH;
MOVA,SEC
ADDA,#30H
MOVP0,#0CEH;
显示秒十位
MOVP0,#0CFH;
显示秒个位
MOVP0,#0C0H;
MOVDPTR,#TABLE2;
CALLWRITE1
*********************************************写指令
ENABLE:
CLRRS
CLRRW
CLRE
LCALLDELAY
SETBE
**********************************************写数据
WRITE1:
MOVR1,#00H
A1:
MOVA,R1
CJNEA,#0FEH,A1;
未到字符串末尾继续
WRITE2:
MOVP0,A
SETBRS
CALLDELAY
**********************************************延时
DELAY:
MOVR4,#05
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
----------------------------------------------显示开机,查表
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TAB1:
DB89H,86H,0C7H,0C7H,0C0H
TAB2:
DB0C6H,88H,0C0H
TABLE1:
DB'
WELCOME!
'
0FEH
TABLE2:
DFFWB'
TABLE4:
DB'
CAU'
TABLE3:
DB30H,31H,32H,33H
DB34H,35H,36H,37H
-------------------------------------------------------------------
播放歌曲程序
MAIN0:
MOVTMOD,#11H
MOVIE,#8AH
MOVTH1,#3CH
MOVTL1,#0B0H
JNZTTM12
MOV40H,#00H
---------------------------------------------------------
NEXT20:
MOVA,40H
MOVDPH,52H
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 音乐盒 程序设计