单片机课程设计报告按键控制定时器选播多段音乐Word文件下载.docx
《单片机课程设计报告按键控制定时器选播多段音乐Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告按键控制定时器选播多段音乐Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
本次设计中的硬件设计涉及8051输入/输出(I/O)端口独立式键盘、TFT彩屏显示等应用,而软件设计采用C51语言编写。
因此我的课程设计基本涵盖了课程的重要内容,较好的检测我的学习效果。
Proteus课程设计是一个工程项目,在这一工程中包括选题、绘制电路图+编制程序、Proteus仿真、系统仿真与调试、系统正常运行等流程。
在老师的安排下,我严格按照这一流程开展项目,并最终完成本项目—基于单片机的推箱子游戏设计。
接下来我将具体介绍我们在开展项目中遇到的问题和解决方案的设计。
前言2
摘要4
硬件设计方案5
1.单片机及晶振模块5
2.数码管显示模块7
3.按键控制模块8
4.扬声器模块8
程序:
9
原理图:
12
安装与调试:
13
心得与体会:
14
元件清单如下:
15
参考文献:
16
摘要
本课程设计是按键控制定时器选择多段音乐,以AT89S52为系统的操作核心,以一个数码管显示播放音乐的序号,通过按键来选择音乐(本课程设计中含3首音乐)。
硬件设计方案
1.单片机及晶振模块
该设计选用的是Atmel公司生产的AT89S52型单片机,由石英晶体振荡器产生单片机工作时所需的时钟信号,振荡器采用的是12M的晶振,使其机器周期为1us,方便发音程序的计算和编译。
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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52的引脚分布:
2.数码管显示模块
该部分只用了一个数码管,用来显示播放的音乐序列,数码管的7个管脚都接了1K的上拉电阻。
数码管显示的歌曲序列为0,1,2。
3.按键控制模块
此模块只用了两个按键,按键K1用来控制歌曲的开始和停止,接P1.0口,按键K2用于选择歌曲,接P3.2口。
按下K1,开始播放音乐,随着改变数码管的显示值(0、1、2),将出现对应的音乐。
4.扬声器模块
扬声器上接了一个三极管,用于放大声音。
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P1^0;
//播放和停止键
sbitSPK=P3^7;
//蜂鸣器
ucharSong_Index=0,Tone_Index=0;
//当前音乐段索引,音符索引
//数码管段码表
ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//标准音符频率对应的延时表
ucharcodeHI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};
ucharcodeLO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
//三段音乐的音符
ucharcodeSong[][50]=
{
{1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1},
{3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,53,3,2,1,1,-1},
{3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1}
};
//三段音乐的节拍
ucharcodeLen[][50]=
{1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1},
{1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1},
{1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1}
//外部中断0
voidEX0_INT()interrupt0
TR0=0;
//播放结束或者播放中途切换歌曲时停止播放
Song_Index=(Song_Index+1)%3;
//跳到下一首的开头
Tone_Index=0;
P2=DSY_CODE[Song_Index];
//数码管显示当前音乐段号
}
//定时器0中断函数
voidT0_INT()interrupt1
TL0=LO_LIST[Song[Song_Index][Tone_Index]];
TH0=HI_LIST[Song[Song_Index][Tone_Index]];
SPK=~SPK;
//延时
voidDelayMS(uintms)
uchart;
while(ms--)for(t=0;
t<
120;
t++);
//主程序
voidmain()
P2=0xc0;
SPK=0;
TMOD=0x00;
//T0方式0
IE=0x83;
IT0=1;
IP=0x02;
while
(1)
while(K1==1);
//未按键等待
while(K1==0);
//等待释放
TR0=1;
//开始播放
//从第0个音符开始
//播放过程中按下K1可提前停止播放(K1=0)。
//若切换音乐段会触发外部中断,导致TR0=0,播放也会停止
while(Song[Song_Index][Tone_Index]!
=-1&
&
K1==1&
TR0==1)
DelayMS(300*Len[Song_Index][Tone_Index]);
//播放延时(节拍)
Tone_Index++;
//当前音乐段的下一音符索引
//停止播放
//若提前停止播放,按键未释放时等待
}
安装过程:
1检查印刷电路板有无断路、短路,若有,首先处理好。
2焊接顺序:
先焊单片机,在焊接各分块电路,先焊平面的,后焊立体的,原则是有利于焊接。
要求卧装水平、竖装垂直、相同元件等高。
要特别注意元器件的安装方向!
3焊接要点:
将元件整形后插入对应位置,电路板平放在台面上,一手握烙铁对焊盘和引脚同时接触预热,另一手持焊锡丝与焊盘处烙铁接触,使锡丝熔化,当锡丝熔化一定量时(多了不好少了不行),立即将锡丝离去,烙铁继续保持少许时间,让焊锡围绕焊盘自由流动,形成一个完全覆盖焊盘的钟形(忌讳球形)焊点。
切勿将焊锡先溶化在烙铁上再去焊接,这样锡丝里的助焊剂在未焊接前先挥发了,不利于焊接,而且焊点没有光泽。
4剪脚:
元件焊好后,将多余引脚剪掉,剪脚后的焊点应露出引脚0.5-1mm。
本课设要求引脚露出2mm,以利于元件重复使用。
5检查各元件是否出现焊接错误情况以及短路、断路情况。
6将5V直流电源接入单片机以及其他各分模块电源端。
若发现元器件发热或者有异味,应立即切断电源检查。
7.正常电路LED灯以及数码管会工作在较为稳定、准确的状态,可据此来进一步检测电路连接是否、存在问题
调试过程:
接上5V电源后,按下K1键,会有音乐,随着K2的按下,音乐也随之改变。
过程较为顺利。
在这次课程设计中,我们把学习的单片机理论知识运用到了实践中,加深了我们对单片机理解,同时熟悉了单片机的使用,加强了我们的动手能力。
在电路的焊接方面,也学到了一些知识,如怎样使排版好看,不要杂乱无章。
焊接时,要注意很多的细节,排线走线都要小心,很容易造成短路。
22pf的电容两个
12MHZ晶振一个
10K电阻一个
10uf电容一个
2个按键
1个共阳数码管
8个1K的电阻
1个蜂鸣器
1个89S52单片机
[1].谢维成、杨加国单片机原理与应用及c51程序设计.北京:
清华大学出版社
[2].阎石.数字电子技术基础.北京:
高等教育出版社,2006
[3].谭浩强C程序设计(第三版).北京:
[4].童诗白模拟电子技术基础.北京:
[5].王一群怎样用电脑设计电子线路福建科学出版社
[6].王宏研,张鑫电子综合设计实验教程山东大学出版社
[7].陈永甫.多功能集成电路555经典应用实例第一集.北京:
电子工业出版社
[8].王新闲.通用集成电路速查手册.山东:
山东科学出版社,2005
[9].崔瑞雪、张增良.电子技术动手实践.北京:
北京航空航天出版社,2007