播放生日快乐歌曲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽冶金科技职业学院实训报告课题名称播放生日快乐歌
系部
班级
学生姓名
指导教师
年月日
一、播放生日快乐歌的原理:
通过80C51乐曲播放电路中,P1.7接发声器SOND,P1.0接启动键
例如:播放生日快乐歌第一个音符“5”,1/8拍,取4*50ms=200ms;遇休止符0;停止发音频,但仍当做一个音符,按其节拍长短控制定时时间。当一个音符播放结束,T1停,转入下一个音符,中间间隔延时10ms。
设T1定时时间:50ms
计算T1定时初值:T1(初值)=3CB0H
因此:TH1=0x3c,TL1=0xb0
三、生日快乐歌曲编程:
#include
sbit K0=P1^0; //定义启动键K0为P1.0
sbit SOND=P1^7; //定义发声器SOND为P1.7
unsigned char i,j; //定义字符型循环变量i(音符序数)、j(50ms整倍数)unsigned char code th[22]={ //定义音符频率定时数组高8位(12MHz,定时方式0)0,196,202,208,211,216,220,224,226,229,232,233,236,238,240,241,242,244,244,246,2 67,248};
unsigned char code tl[22]={ //定义音符频率定时数组低8位(12MHz,定时方式0)0,12,27,21,7,4,16,12,4,12,9,20,2,8,6,2,22,5,26,1,4,3};
unsigned char s[26]={ //定义生日快乐歌曲音符序数数组
12,12,13,12,15,14,12,12,13,12,16,15,12,12,19,17,15,14,13,0,18,18,17,15,16,15}; unsigned char L[26]={ //定义生日快乐歌曲音符节拍长度数组(50ms整倍数)4,4,8,8,8,16,4,4,8,8,8,16,4,4,8,8,8,8,16,8,4,4,8,8,8,16};
void main(){ //主函数
unsigned int t; //定义循环变量t(用于音符发声后间隙延时)
TMOD=0x10; //T0定时器方式0,T1定时器方式1
TH1=0x3c;TL1=0xb0; //置T1初值50ms
IP=0x02;IE=0x8a; //置T0为高优先级中断,T0、T1开中断
while(1){ //无限循环
while(K0==1); //等待按K0按下
while(K0==0); //等待按K0释放
for(i=0;i<26;i++){ //歌曲音符节拍循环
if(s[i]==0) {SOND=0; //若歌曲音符序数为0,停止发声
TR0=0;} //T0停止运行
else {TH0=th[s[i]]; //否则,置T0初值高8位(音符方波半周期)
TL0=tl[s[i]]; //置T0初值低8位(音符方波半周期)
TR0=1;} //T0运行
j=L[i];TR1=1; //置50ms计数器初值,T1运行
while(TR1==1); //等待T1停止运行
TR0=0;SOND=0; //T0停止运行,停止发声
for(t=0;t<2000;t++);}}} //音符间隔延时为10ms
void t0() interrupt 1 { //T0中断函数
SOND=~SOND; //输出取反(产音频方波)
TH0=th[s[i]]; TL0=tl[s[i]];} //重置T0初值
void t1() interrupt 3 { //T1中断函数
TH1=0x3c;TL1=0xb0; //重置T1初值50ms
if((j--)==0) TR1=0;} //若50ms计数器减1为0,T1停止
四、播放生日快乐歌的步骤和调试:
A.创建keil项目:
1)双击桌面keil软件
2)打开keil的集成开发环境
3)点击菜单栏项目project选新建new project
4)选择保存路径,建立项目文件夹,给项目命名并保存。
5)选择CPU厂家和型号并确定。
6)选择否,点击工具栏的新建文本图标。
7)输入和编辑项目程序。
8)完成程序编辑后点工具栏中的保存图标,给程序命名(c51程序
后缀为.C;汇编程序后缀为.ASM),选择保存路径后保存。
9)添加程序到项目中。
10)选择程序添加到项目中(程序图标变色即为添加成功).
B.设置工程选项:
1)点击工具栏中设置图标,修改晶振频率为12MHZ。
2)点击output,在输出执行文件选项(create)上打钩。
3)点击debug,选择右边为硬件仿真,确定
4)点击工具栏编译并下载图标,在输出窗口生成**.hex.
C.调试并观察运行结果:
1)点击工具栏调试图标,弹出调试窗口。
2)硬件仿真可直接观察运行结果;软件仿真可点击菜单栏外围设备
peripherals图标,选I/O-ports或T/C监控.