- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机应用课程设计报告
(2011~2012学年第2学期)2012/6/21
设计任务
摘要:本文是应用AT89S52单片机原理和控制理论设计音乐的硬件电路,并利用进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数发音设备演奏出悦耳动听的音乐。性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。对单片机和音乐爱好者有一定的借鉴价值。 DELAY ? 曲调值 DELAY 调4/4 125ms ? 调4/4 62ms 调3/4 187ms ? 调3/4 94ms 调2/4 250ms ? 调2/4 125ms
4.2输出频率的中短程续
void delay(uint i)
{
TMOD=0x01;
TH0=tab[i]/256;
TL0=tab[i]%256;
TR0=1;
while(TF0==0);
TF0=0;
}
4.3整体部分程序:#includereg52.h
#includeabsacc.h
#define uint unsigned int
uint code tab[]={63628,63836,64020,64103,64260,64400,64524,64580,64694,64777,64820,64898,64968,65030,65058,65110,65164,65178,65217,65252,65283};
sbit p3_0=P3^0;
sbit p3_1=P3^1;
sbit p1_0=P1^0;
uint g,z,h;
void delay(uint x);
void main()
{
dao: while(p3_0==1);//国际歌
while(p3_0==0);
while(1)
{ h=356;
while(h--)
{p1_0=1;
delay(11);
p1_0=0;
delay(11);
if(p3_1==0)
{ while(p3_1==0);
goto cha;}}
h=711;
while(h--)
{p1_0=1;
delay(14);
p1_0=0;
delay(14);
if(p3_1==0)
{ while(p3_1==0);
goto cha;}}
h=225;
while(h--)
{p1_0=1;
delay(13);
p1_0=0;
delay(13);
if(p3_1==0)
{ while(p3_1==0);
goto cha;} }
h=267;
while(h--)
{p1_0=1;
delay(15);
p1_0=0;
delay(15);
if(p3_1==0)
{ while(p3_1==0);
goto cha;}}
h=237;
while(h--)
{p1_0=1;
delay(14);
p1_0=0;
delay(14);
if(p3_1==0)
{ while(p3_1==0);
goto cha;}}
h=178;
while(h--)
{p1_0=1;
delay(11);
p1_0=0;
delay(11);
if(p3_1==0)
{ while(p3_1==0);
goto cha;}}
h=150;
while(h--)
{p1_0=1;
delay(9);
p1_0=0;
delay(9);
if(p3_1==0)
{ while(p3_1==0);
goto cha;} }
h=800;
while(h--)
{p1_0=1;
delay(12);
p1_0=0;
delay(12);
if(p3_1==0)
{ while(p3_1==0);
goto cha;} }
h=318;
while(h--)
{p1_0=1;
delay(10);
p1_0=0;
delay(10);
if(p3_1==0)
{ while(p3_1==0);
goto cha;} }
h=267;
while(h--)
{p1_0=0;
delay(15);
p1_0=0;
delay(15);
if(p3_1==0)
{ while(p3_1==0);
goto cha;} }
h=200;
while(h--)
文档评论(0)