单片机系统设计与制作技术报告.docx
《单片机系统设计与制作技术报告.docx》由会员分享,可在线阅读,更多相关《单片机系统设计与制作技术报告.docx(11页珍藏版)》请在冰豆网上搜索。
单片机系统设计与制作技术报告
中国矿业大学徐海学院
单片机系统设计与制作技术报告
姓名:
学号:
班级:
电气11
题目:
音乐播放器设计与制作
任课教师:
2013年12月
单片机设计与制作任务书
班级学号学生姓名
任务下达日期:
2013年12月10日
设计日期:
2013年12月16日至2013年12月26日
设计题目:
音乐播放器设计与制作
设计主要内容和完成功能:
使用51单片机设计一款音乐播放器,并能通过编码程序,下载程序完成播放音乐的功能。
教师签字:
摘要
AT89S52单片机设计的一个音乐播放器通过单片机音乐播放器系统设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义。
这次课程设计的音乐播放器是软件和硬件的结合,不同音符表现形式就是不同频率地声音。
通AT89S52过单片机产生不同的频率的脉冲信号,通过放大电路,由蜂鸣器放出,就产生了美妙和谐优美动听的乐曲。
根据节拍给出该音阶持续的时间,最终实现播放简单歌曲的功能。
为人们生活的改善提供了可靠,方面,廉价的方法。
单片机AT89S52作为硬件核心控制部件,结合三极管作为放大器,数码管构成典型的显示电路,按键作为输入部分以及其他外围设备组成的音乐播放系统。
根据音乐演奏控制器所要实现的显示与选曲及音乐产生功能原理,系统包括演奏扬声器、选曲、播放和显示几部分。
其中,AGAIN按键具有开启播放曲子和重复播放当前曲子的功能,FORM按键具有播放前一曲的工能,NEXT按键具有播放后一曲的功能,RES键具有播放前一曲的功能。
所设计音乐播放器可以播放多首音乐,曲目选择可以由键盘控制,并通过显示器使其显示歌曲序号。
设计的音乐演奏控制器是通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音节的声音,再利用延迟来控制发音时间的长短,即控制音调中的节拍。
同时设置按钮使所设计的程序能在三到四首歌曲之间进行选曲,设计显示器使其显示歌曲序号。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。
根据存储容量的大小,可以尽可能多的存储歌曲。
另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。
目录
1、系统概述
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试。
本设计是以AT89S52芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可。
歌曲可以自己随意的写进音乐盒中。
2、硬件设计
(1)AT89S52单片机简介
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
(2)引脚
VCC:
电源GND:
地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
表1.1AT89S52P1口第二功能表
脚号
第二功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程用)
P1.6
MISO(在系统编程用)
P1.7
SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
表1.2AT89S52P3口第二功能表
脚号
第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
INT0(外部中断0)
P3.3
INT0(外部中断0)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器写选通)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3、软件设计
(1)要生产音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间.利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲.
(2)利用8051的内部定时器使用其工作在计数器模式MODE1下,改变计数值THO及TLO以产生不同频率的方法.
(3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次计数956次时将I/O反相,就可得到中音DO (523Hz).
计数脉冲值与频率的关系公式如下:
N=Fi÷2÷Fr
N:
计算值; Fi:
内部计时一次为1us, 故其频率为1MHz;
(4)其计数值的求法如下:
T=65536-N=65536-Fi÷2÷Fr
例如:
设K=65536, F=1000000=Fi=1MHz,
求低音DO(261Hz),中音DO(523Hz),高音的DO(1046Hz)的计算值.
T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr
低音DO的 T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T0=65536-500000/1047=65059
(5)C调各音符频率与计数值T的对照表如表1所示.
(6)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推.所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定。
4、系统调试
由于焊接工作已经检查,所以无需查看。
通过Keil uVsion4 编译与调试音乐程序,没发现错误,检查管序配对都能没问题,接上电源后音乐没能播放,后来,在同学的提醒之下,把P2.5接上短路帽。
结果音乐就播出来了,顺利的完成了实验。
5、结束语
通过本次实训,我学会了自主动手,对单片机的一系列知识,进行了一次系统的复习,熟悉了一些简单的程序,如:
延时程序,并学习了一些新的东西,如随机数的产生,按键的扫描,和去抖动等。
在本次试验中,学会了从程序的主体功能考虑要达到一个什么样的要求,从而,将程序分成各个子程序,逐个写出,分布细化,从而减少程序出错机率,并且易于检查各部分程序,根据任务功能,所要达到的要求,来进行检查,看到那个模块所对应的程序不对,就检查那个模块,提高了检查的效果效率,同时也,可以使程序条理清晰,不至于在发现程序出错时,进行改正错误的过程中,越改越错,真正的错误改不了,把对的反而改错了。
为了提高程序可读性,可以加注释对程序的功能加以解释说明,并且在各个子程序之间以空行来分隔。
6、参考文献
[1]单片机原理及其接口技术(第3版),胡汉才,清华大学出版社
[2]单片机原理及接口技术,李朝青,北京航空航天大学出版社,1998年
[3]赵秀珍,单永磊,单片微型计算机原理及其应用[M],北京,中国水利水电出版社,
[4]单片机原理及接口技术,李全利,2009年第二版,高等教育出版社
[5]单片机原理与应用及C51程序设计,谢维城、杨家国,2006年5月第
三版,清华大学出版社
7、附录
(1)系统硬件电路图
(2)源程序(加注释)
JMPSTART
ORG000BH
JMPTIM0
ORG0030H
START:
MOVTMOD,#01H
MOVIE,#82H
START0:
MOV30H,#00H
NEXT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVR2,A
JZEND0
ANLA,#0FH
MOVR5,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR0
JMPD1
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
D1:
CALLDELAY
INC30H
JMPNEXT
END0:
CLRTR0
JMPSTART0
TIM0:
PUSHACC
PUSHPSW
MOVTH0,21H
MOVTL0,20H
CPLP2.5
POPPSW
POPACC
RETI
DELAY:
MOVR7,#02
D2:
MOVR4,#187
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
DJNZR5,DELAY
RET
TABLE1:
DW64260,64400,64524,64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
TABLE:
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB00H
END
(3)实物作品调试照片
(4)演示照片