首页 > 作文

经典生日歌

更新时间:2023-03-15 13:32:56 阅读: 评论:0

没谈过恋爱的男生-面包的做法和配方

经典生日歌
2023年3月15日发(作者:理财产品分类)

安徽冶金科技职业学院

实训报告

课题名称播放生日快乐歌

系部

班级

学生姓名

指导教师

年月日

一、播放生日快乐歌的原理:

通过80C51乐曲播放电路中,P1.7接发声器SOND,P1.0接启动

,按一次K0就播放一遍生日快乐歌;控制输出

方波形频率用定时/计数器比延时程序更加准确,根据C音调、半周

期和fosc=12MHz条件下选T0定时器方式0计算出来的;播放乐曲,

除了控制频率,还有控制时间的问题,用T0方式0控制音频频率,

T1方式1控制音符节拍,编制生日快乐歌曲音符序号数组s[26]和生

日快乐歌曲音符节拍长度数组L[26],两数组序号具有对应关系。

例如:播放生日快乐歌第一个音符“5”,1/8拍,取4*50ms=200ms;

遇休止符0;停止发音频,但仍当做一个音符,按其节拍长短控制定

时时间。当一个音符播放结束,T1停,转入下一个音符,中间间隔

延时10ms。

设T1定时时间:50ms

计算T1定时初值:T1(初值)=3CB0H

因此:TH1=0x3c,TL1=0xb0

三、生日快乐歌曲编程:

#include//包含访问sfr库函数reg51.h

sbitK0=P1^0;//定义启动键K0为P1.0

sbitSOND=P1^7;//定义发声器SOND为P1.7

unsignedchari,j;//定义字符型循环变量i(音符序数)、j(50ms整倍数)

unsignedcharcodeth[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};

unsignedcharcodetl[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};

unsignedchars[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};

unsignedcharL[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};

voidmain(){//主函数

unsignedintt;//定义循环变量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停止运行

el{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

voidt0()interrupt1{//T0中断函数

SOND=~SOND;//输出取反(产音频方波)

TH0=th[s[i]];TL0=tl[s[i]];}//重置T0初值

voidt1()interrupt3{//T1中断函数

TH1=0x3c;TL1=0xb0;//重置T1初值50ms

if((j--)==0)TR1=0;}//若50ms计数器减1为0,T1停止

四、播放生日快乐歌的步骤和调试:

A.创建keil项目:

1)双击桌面keil软件

2)打开keil的集成开发环境

3)点击菜单栏项目project选新建newproject

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监控.

3)分别点击工具栏中的运行.停止.复位.等图标进行调试,并观察运

行结果.

4)调试完毕后点击调试图标关闭调试窗口。

五、实验体会:

通过本次的单片机实训,刚开始我觉得很简单,其实并不是这样

的,实验比我们想象的要难,因为这项实验需要我们的细心,特别是

在编程的过程中,我们需要仔细的编辑好每一个程序,错了一步就运

行不了程序。我在实训的过程中就遇到这种情况,在快要编辑完程序

的时候手抖打错了一个符号,以至于我在后面的仿真与调试的过程中

一直找不出错误的原因,差点就放弃了,后来在吴老师的指引下细心

的又细心的找了一遍,这才找到了错误的根源,加以修正,才让蜂鸣

器唱出了生日快乐的歌曲。实验虽然已经结束了,但是带给我的影响

是深刻的,让我明白了从事我们这个行业的,必须要有严谨的工作态

度,不然会造成不可估量的后果的,正所谓失之毫厘,差之千里。

最后我还特别感谢吴老师带领我们做完了这个实验项目,多谢吴

老师的耐心教导和细心指导。

本文发布于:2023-03-15 13:32:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/82f552fe79cc545c1903448b7c5726d1.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:经典生日歌.doc

本文 PDF 下载地址:经典生日歌.pdf

标签:经典生日歌
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图