51单片机串口通信及电子音响Word文档下载推荐.docx

上传人:b****5 文档编号:18686996 上传时间:2022-12-31 格式:DOCX 页数:15 大小:25.83KB
下载 相关 举报
51单片机串口通信及电子音响Word文档下载推荐.docx_第1页
第1页 / 共15页
51单片机串口通信及电子音响Word文档下载推荐.docx_第2页
第2页 / 共15页
51单片机串口通信及电子音响Word文档下载推荐.docx_第3页
第3页 / 共15页
51单片机串口通信及电子音响Word文档下载推荐.docx_第4页
第4页 / 共15页
51单片机串口通信及电子音响Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

51单片机串口通信及电子音响Word文档下载推荐.docx

《51单片机串口通信及电子音响Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机串口通信及电子音响Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

51单片机串口通信及电子音响Word文档下载推荐.docx

音乐中所用的声音主要是乐音。

乐音听起来有的高,有的低,这就叫音高。

音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低。

比如,女人唱歌时声带振动频率高,男人唱歌时声带振动频率低,所以男声比女声低。

音乐中所用乐音的范围从每秒钟振动16次的最低音到每秒钟振动4186次的最高音,大约97个。

现在最大的钢琴可以奏出其中的88个音,是音乐范围最大的乐器。

人唱歌时因受生理限制,所能唱出的乐音仅是乐音范围中的一小部分。

不同音高的乐音是用C、D、E、F、G、A、B来表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫唱名。

把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。

两个音之间的距离有两个“半音”的,就叫“全音”。

在钢琴等键盘乐器上,C-D、D-E、F-G、G-A、A-B两音之间隔着一个黑键,它们之间的距离就是全音;

E-F、B-C两音之间没有黑键相隔,它们之间的距离就是半音。

通俗地说,那些唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上#号(如#4、#1)或者b号(如b7、b3)的叫变化音。

#叫升记号,表示把音在原来的基础上升高半音;

b叫降记号,表示把音在原来的基础上降低半音。

音持续时间的长短即时值,一般用拍数表示。

休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。

在设计中我将音乐的简谱编成音符表和节拍表。

所谓简谱,是指一种简易的记谱法。

有字母简谱和数字简谱两种。

一般所称的科谱,系指数字简谱。

数字简谱以可动唱名法为基础,用1、2、3、4、5、6、7代表音阶中的7个基本音级,读音为do、re、mi、fa、sol、la、si,休止以O表示。

每一个数字的时值名相当于五线谱的4分音符

了解音乐的一些基本知识后可知,产生不同频率的音频脉冲,不同频率的脉冲经滤波放大电路驱动喇叭,就会发出不同的音调。

对于单片机而言,产生不同频率的脉冲非常方便,可以利用它的定时/计数器T0,工作模式1,设定计数值TH0和TL0,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平。

因为定时参数不同,所以产生不同频率的脉冲信号。

在此情况下,C调的各音符频率与在12Mz的单片机下的计数值T的对照表4.1所示。

T的值决定了TH0和TL0的值,其关系如下。

TH0=T/256,TL0=T%256。

表4.1C调各音符频率与计数值T(12Mz单片机,T0工作模式1)对照表

音符

频率

简谱码(T值)

低1DO

262

63628

#4FA#

740

64860

#1DO#

277

63731

中5SO

784

64898

低2RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3MI

330

64021

#6LA#

932

64994

低4FA

349

64103

中7SI

988

65030

370

64185

高1DO

1046

65058

低5SO

392

64260

1109

65085

415

64331

高2RE

1175

65110

低6LA

440

64400

1245

65134

466

64463

高3MI

1318

65157

低7LA

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

554

64633

高5SO

1568

65217

中2RE

587

64684

1661

65235

622

64732

高6LA

1760

65252

中3MI

659

64777

1865

65268

中4FA

698

64820

高7SI

1976

65283

除了音符以外,节拍也是音乐的关键组成部分。

节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现。

如果1/4拍的延时设为0.1秒,则1拍的延时是0.4秒。

只要知道1/4拍的延时时间,其余的节拍延时时间就是它的倍数。

表4.2所示的为1/4节拍和1/8节拍的延时时间设定。

表4.21/4节拍和1/8节拍的延时时间

曲调值(1/4节拍)

延时DELAY

曲调值(1/8节拍)

调4/4

125ms

62ms

调3/4

187ms

调3/4ms

94ms

调2/4

250ms

⑵单片机产生不同频率脉冲信号的原理:

1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。

2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:

例如,频率为523Hz,其周期天/523S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。

计数脉冲值与频率的关系公式如下:

N=Fi/2/Fr

(N:

计数值,Fi:

内部计时一次为1uS,故其频率为1MHz,Fr:

要产生的频率)

3)其计数值的求法如下:

T=65536-N=65536-Fi/2/Fr

计算举例:

设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。

T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr

低音DO的T=65536-500000/262=63627

中音DO的T=65536-500000/523=64580

高音DO的T=65536-500000/1047=65059

4)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。

但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。

假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。

所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,

5)建立音乐的步骤:

1、先把吧乐谱的音符找出,然后由上表建立T值表的顺序。

2、把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。

3、简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。

1.6程序流程图

开始

T0初始化并开中断允放T0中断

装入音符到T值到T0

启动T0工作

停止T0工作

T0中断入口

重装TH0,TL0初值

P1.7取反

中断返回

1.7程序设计

源程序设计如下:

org0000h

sjmpmain

org000bh

movth0,r1

movtl0,r0

cplp1.7

reti

main:

movtmod,#01h

movie,#82h

movdptr,#tab

loop:

clra

movca,@a+dptr

movr1,a

incdptr

movr0,a

orla,r1

jznext0

mova,r0

anla,r1

cjnea,#0ffh,next

next:

setbtr0

sjmpnext1

next0:

clrtr0

next1:

movr2,a

loop1:

acalld200c

djnzr2,loop1

ajmploop

d200c:

movr3,#81h

d200b:

mova,#0ffh

d200a:

deca

jnzd200a

decr3

cjner3,#00h,d200b

ret

tab:

db0feh,25h,04h,0feh,25h,02h

db0feh,25h,02h,0fdh,80h,04h

db0feh,84h,02h,0feh,84h,02h

db0feh,84h,04h,0feh,25h,04h

db0feh,25h,02h,0feh,84h,02h

db0feh,0c0h,04h,0feh,84h,02h

db0feh,98h,02h,0feh,84h,02h

db0feh,57h,08h,00h,00h,04h

db0ffh,0ffh

end

上面程序歌曲表为《新年好》的乐谱

项目二:

MCS-51串行口应用实训㈠——双机通信

⑴掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

⑵了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。

⑶掌握双机通信的原理和方法。

⑴利用MCS-51单片机串行口,实现双机通信。

⑵本实验将1号实验机键盘上键入的数字显示到2号实验机的数码管上。

1.3实训电路

1.4实训步骤

1.4.1实训连线

用随机所配的串行通信电缆把两台实验仪RS232-9芯串行接口相连。

1.4.2PC环境

1号机发送,2号机接收

①1号机:

在与PC联机状态下,编辑、调试程序,然后编译、连接、下载程序,退出系统,联机状态,释放串口;

在“P.”状态下按F2功能键,使系统进入串行口出借状态,显示

“P......”,键入“EXEC”用连续方式运行程序。

②2号机:

在与PC联机状态下,编辑、调试程序,然后编译、连接、下载程序,退出系统联机状态,释放串口;

③在1号机上输入数字键通过串行口发送到2号机的LED显示器上。

同理亦可实现从2号机键盘输入数字串行发送到1号机的LED显示器上。

1.4.3观察运行结果

以连续方式运行程序,观察LED显示器数据收发是否正常。

1.5编程提示

由任务可知,对于一个单片机系统而言,要求程序要完成的功能一是将本机的按键通过串口用异步通信的方式发送出去,二是对接收到另一单片机传送到串口的数据,先保存下来,再送LED数码管依次显示出来。

因此,程序将为分三个部分组成,其一是随时扫描键盘,如果有键按下,则调用串口发送程序;

其二是串口接收程序,只要有数据到了,就执行数据接收程序,并把数据送到显示数组里;

其三是动态显示程序。

为了完成这三个并行任务,最简单的方法采用中断进行任务分配,将串口接收程序使用串口中断对输入的数据进行检测和接收,将动态显示程序使用定时中断完成,而键盘扫描则采用主程序实时检测。

1.6参考程序流程

1.7程序代码

OUTBITEQU08002;

数码管位控制口

OUTSEGEQU0800;

数码管段控制口

INEQU0991;

键盘读入口

HASRCVEQU20H.0;

接受标志位

LEDBUFEQU40H;

显示缓冲

RECBUFEQU50H;

接受缓冲

ORG0000H

LJMPSTART

ORG0023H;

串口中断入口

LJMPSIN

LEDMAP

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DELAY:

MOVR7,#0

DELAYLOOP:

DJNZR7,DELAYLOOP

DJNZR6,DELAYLOOP

RET

DISPLAYLED:

MOVR0,#LEDBUF

MOVR1,#6

MOVR2,#00100000B

LOOP:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVA,@R0

MOVA,R2

MOVR6,#1

CALLDELAY

RRA

MOVR2,A

INCR0

DJNZR1,LOOP

TESTKEY:

MOVDPTR,IN

MOVXA,@DPTR

CPLA

ANLA,#0FH

KEYTABLE:

DB16H,15H,14H,0FFH

DB13H,12H,11H,10H

DB0DH,0CH,0BH,0AH

DB0EH,03H,06H,09H

DB0FH,02H,05H,08H

DB00H,01H,04H,07H

GETKEY:

MOVDPTR,#OUTBIT

MOVP2,DPH

MOVR0,#LOW

MOVR1,#00100000B

MOVR2,#6

KLOOP:

MOVA,R1

MOVR1,A

MOVXA,@R0

ANLA,@0FH

JNZGOON1

DJNZR2,KLOOP

MOVR2,#0FFH

SJMPWXIT

GOON1:

DECA

RLA

MOVR2,A

MOVR1,LOOPC

EXIT:

MOVDPTR,#KEYTABLE

MOVCA,@A+DPTR

WAETRELEASE:

MOVDPRT,#OUTBIT

CLRA

MOVR6,#10

CALLTESTKEY

JNZWAITRELEASE

START:

MOVSP,#60H

MOVIE,#0

MOVTMOD,#020H;

定时器1工作于方式2

MOVTH1,#0F3H

MOVTL1,#0F3H;

波尔率为2400

ANLPCON,#07FH

ORLPCON,#80H

MOVSCON,#05OH

MOVLEDBUF,#0FFH

MOVLEDBUF+1,#0FFH

MOVLEDBUF+2,#0

SETBTR1

SEEBES

SETBEA

MLOOP:

JBHASRCV,RCVDATA;

接受到数据?

CALLDISPLAYLED;

显示

JZMLOOP

CALLGETKEY

MOVSBUF,A

LJMPMLOOP

RCVDATA:

CLRHASRCV

MOVA,RCVBUF

MOVB,A

MOVDPTR,#LEDMAP

MOVLEDBUF+5,A

MOVA,B

SWAPA

MOVLEDBUF+4,A

SIN:

JNBTI,S0_R

CLRTI

NOP

SJMPS0_RET

S0_R:

CLRRI

MOVRCVBUF,SBUF

SETBHASRCV

S0_RET:

RETI

END

(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)

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

当前位置:首页 > 法律文书 > 判决书

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

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