51单片机电子琴程序11页word资料Word文档下载推荐.docx

上传人:b****1 文档编号:14635901 上传时间:2022-10-23 格式:DOCX 页数:14 大小:20.83KB
下载 相关 举报
51单片机电子琴程序11页word资料Word文档下载推荐.docx_第1页
第1页 / 共14页
51单片机电子琴程序11页word资料Word文档下载推荐.docx_第2页
第2页 / 共14页
51单片机电子琴程序11页word资料Word文档下载推荐.docx_第3页
第3页 / 共14页
51单片机电子琴程序11页word资料Word文档下载推荐.docx_第4页
第4页 / 共14页
51单片机电子琴程序11页word资料Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

51单片机电子琴程序11页word资料Word文档下载推荐.docx

《51单片机电子琴程序11页word资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机电子琴程序11页word资料Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

51单片机电子琴程序11页word资料Word文档下载推荐.docx

要练说,先练胆。

说话胆小是幼儿语言发展的障碍。

不少幼儿当众说话时显得胆怯:

有的结巴重复,面红耳赤;

有的声音极低,自讲自听;

有的低头不语,扯衣服,扭身子。

总之,说话时外部表现不自然。

我抓住练胆这个关键,面向全体,偏向差生。

一是和幼儿建立和谐的语言交流关系。

每当和幼儿讲话时,我总是笑脸相迎,声音亲切,动作亲昵,消除幼儿畏惧心理,让他能主动的、无拘无束地和我交谈。

二是注重培养幼儿敢于当众说话的习惯。

或在课堂教学中,改变过去老师讲学生听的传统的教学模式,取消了先举手后发言的约束,多采取自由讨论和谈话的形式,给每个幼儿较多的当众说话的机会,培养幼儿爱说话敢说话的兴趣,对一些说话有困难的幼儿,我总是认真地耐心地听,热情地帮助和鼓励他把话说完、说好,增强其说话的勇气和把话说好的信心。

三是要提明确的说话要求,在说话训练中不断提高,我要求每个幼儿在说话时要仪态大方,口齿清楚,声音响亮,学会用眼神。

对说得好的幼儿,即使是某一方面,我都抓住教育,提出表扬,并要其他幼儿模仿。

长期坚持,不断训练,幼儿说话胆量也在不断提高。

math.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharSTH0;

//定时器计数初值

ucharSTL0;

bitFY=0;

//放乐曲时FY=1,电子琴弹奏时FY=0

ucharSong_Index=0,Tone_Index=0;

//放音乐的参数

uchark,key;

sbitSPK=P3^7;

sbitLED1=P1^0;

sbitLED2=P1^1;

ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6f,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharcodeSong[][50]={{1,2,3,5,7,8,4,3,4,3,4,5,4,6,3,4,5},

{5,5,3,5,4,2,4,5,7,4,2,10,10,10,2,1,2,1,2,10,10},

{5,5,10,9,8,5,5,5,5,10,9,8,6,6,6,11,12,9,6,8-1},

{13,14,13,12,12,10,12,13,14,15,14,14},

{6,6,11,10,9,12,12,12,12,13,12,11,9,8,10,10,10,-1},

{9,13,13,13,13,8,13,13,13,13,14,15,14,13,13,14,12,13},

ucharcodeLen[][50]={{1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,2,2,2,1,2,2,1,2,2},

{1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,1,-1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},

{1,1,2,0,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1},

{1,1,1,1,1,1,1,1,2,0,1,2,1,2,1,2,1,2,1,2},

{2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},};

//音符与计数值对应表

uintcodetab[]={0,63628,63835,64021,64103,64260,64400,

64524,64580,64684,64777,

64820,64898,64968,65030,

65058,65110,65157,65178,65217,65252,65283};

voiddelay1(uintms)//播放歌曲时实现节拍的延时函数

uchart;

while(ms--)for(t=0;

t<

120;

t++);

//键消抖延时函数

voiddelay(void)

uchari;

for(i=300;

i>

0;

i--);

//键扫描函数

uchargetkey(void)

ucharscancode,tmpcode;

if((P0&

0xf0)==0xf0)

return(0);

scancode=0xfe;

while((scancode&

0x10)!

=0)

P0=scancode;

//输入行扫描码

if((P0&

0xf0)!

=0xf0)//本行有键按下

tmpcode=(P0&

0xf0)|0x0f;

return((~scancode)+~(tmpcode));

elsescancode=(scancode<

<

1)|0x01;

//外部中断0

voidEX0_INT()interrupt0

FY=0;

LED1=1;

LED2=0;

//外部中断1,这里是播放按键

voidEX1_INT()interrupt2

FY=1;

LED1=0;

LED2=1;

//定时器0中断服务子程序

voidtime0_int(void)interrupt1using0

TH0=STH0;

TL0=STL0;

SPK=!

SPK;

P2=DSY_CODE[k];

voidmain(void)

LED1=1;

LED2=0;

P2=0x3f;

IE=0x87;

TMOD=0x01;

IT0=1;

IT1=1;

while

(1)

P0=0xf0;

=0xf0)

delay();

if((P0=0xf0)!

key=getkey();

switch(key)

case0x11:

k=0;

break;

case0x21:

k=1;

case0x41:

k=2;

break;

case0x81:

k=3;

case0x12:

k=4;

case0x22:

k=5;

case0x42:

k=6;

case0x82:

k=7;

case0x14:

k=8;

case0x24:

k=9;

case0x44:

k=10;

case0x84:

k=11;

case0x18:

k=12;

case0x28:

k=13;

case0x48:

k=14;

case0x88:

k=15;

default:

if(FY==0)

STH0=tab[k]/256;

STL0=tab[k]%256;

TR0=1;

while((P0&

=0xf0);

TR0=0;

else

while(FY==1)

if(Song[k][Tone_Index]==-1)

Tone_Index=0;

STH0=(tab[Song[k][Tone_Index]])/256;

STL0=(tab[Song[k][Tone_Index]])%256;

P2=DSY_CODE[Song[k][Tone_Index]];

TR0=1;

delay1(300*Len[k][Tone_Index]);

Tone_Index++;

TR0=0;

关于“世上只有妈妈好”的单片机音乐演奏程序

2009-11-2221:

45

单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。

这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。

半个周期的时间是多长呢?

众所周知,周期为频率的倒数,可以通过音符的频率计算出半周期。

演奏时,要根据音符频率的不同,把对应的、半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。

下面是个网上广泛流传的单片机音乐演奏程序,它可以循环的播放“世上只有妈妈好”这首乐曲。

很多人都关心如何修改这个乐曲的内容,但是不知如何入手。

做而论道对这个程序,给出说明,希望对大家有所帮助,以后大家自己就能够编写进去新的乐曲。

在这个程序中,有两个数据表,其中存放了事先算好的、各种音符频率所对应的、半周期的定时时间初始值。

有了这些数据,单片机就可以演奏从低音、中音、高音和超高音,四个八度共28个音符。

演奏乐曲时,就根据音符的不同数值,从半周期数据表中找到定时时间初始值,送入定时器即可控制发音的音调。

比如把表中的0xF2和0x42送到定时器,定时器按照这个初始值来产生中断,输出的方波,人们听起来,这就是低音1。

乐曲的数据,也要写个数据表,程序中以codeunsignedcharsszymmh[]命名。

这个表中每三个数字,说明了一个音符,它们分别代表:

第一个数字是音符的数值1234567之一,代表多来咪发...;

第二个数字是0123之一,代表低音、中音、高音、超高音;

第三个数字是时间长度,以半拍为单位。

乐曲数据表的结尾是三个0。

程序如下:

#include<

reg52.h>

sbitspeaker=P1^7;

unsignedchartimer0h,timer0l,time;

//--------------------------------------

//单片机晶振采用11.0592MHz

//频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据

codeunsignedcharFREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1