51单片机串口通信及电子音响.docx

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

51单片机串口通信及电子音响.docx

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

51单片机串口通信及电子音响.docx

51单片机串口通信及电子音响

项目一:

电子音响

实训目的

了解计算机发出不同音调声音的编程方法。

 

实训内容

编写单片机程序组成乐谱,用I/O接口口输出,经过功率放大控制喇叭演奏一首完整的歌曲。

(歌曲自选)

 

编程提示

利用单片机内部的定时器可以产生不同周期(频率)的脉冲信号,输出的信号再经过功率放大电路可以驱动喇叭等电声设备发出声音。

(1)要产生音频信号,只要知道某一音频的周期(1/频率),然后将此周期除以2即为半周期的时间,利用定时器定时产生半周期时间,计时到后反相输出,重复此过程即得到此频率的脉冲信号。

(2)让定时器工作在定时方式,改变定时时间常数TH0及TL0,以产生不同的频率。

(3)把整首歌曲的乐谱信息存储在单片机数据存储区中一段连续的区域。

每个音符使用一个字节,字节的高四位代表音符的高低,低四为代表音符的节拍。

演奏时连续读取音符数据,在程序中分析处理后输出相应的脉冲信号。

 

]

 

:

实训电路

图1-1

 

实训步骤

实验连线:

把用导线连至VIN插孔上,打开音频驱动单元的按钮开关。

编写并运行程序,验证歌曲演奏效果。

附件:

音乐播放器软件设计相关知识

音乐相关知识

在设计之前,我们还需要了解一些音乐的相关知识。

在人类还没有产生语言时,就知道利用声音的高低、强弱等来表达自己的思想和感情。

声带、琴弦等物体振动时会发出声波,声波通过空气传播进入人耳,人们就听到了声音。

声音有噪音和乐音之分,振动有规律的声音是乐音,如人声带发出的歌声、由琴弦发出的琴音等。

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

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

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

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

音乐中所用乐音的范围从每秒钟振动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的对照表所示。

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

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

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

音符

频率

简谱码(T值)

音符

频率

#

简谱码(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

#4FA#

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

#6LA#

466

64463

高3MI

1318

65157

低7LA

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

#1DO#

`

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

#

65235

#2RE#

622

64732

高6LA

1760

65252

中3MI

659

64777

~

#6LA#

1865

65268

中4FA

698

64820

高7SI

1976

65283

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

;

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

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

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

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

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

曲调值(1/4节拍)

延时DELAY

曲调值(1/8节拍)

延时DELAY

调4/4

125ms

调4/4

.

62ms

调3/4

187ms

调3/4ms

94ms

调2/4

250ms

调2/4

125ms

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

[

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=6/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拍为秒,1/4拍是秒,只要设定延迟时间就可求得节拍的时间。

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

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

5)建立音乐的步骤:

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

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

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

-

 

程序流程图

 

 

%

 

程序设计

源程序设计如下:

org0000h

sjmpmain

org000bh

movth0,r1

movtl0,r0

cpl

reti

main:

movtmod,#01h

movie,#82h

movdptr,#tab

loop:

clra

movca,@a+dptr

movr1,a

incdptr

clra

movca,@a+dptr

movr0,a

orla,r1

jznext0

mova,r0

anla,r1

}

cjnea,#0ffh,next

sjmpmain

next:

movth0,r1

movtl0,r0

setbtr0

sjmpnext1

next0:

clrtr0

next1:

clra

incdptr

movca,@a+dptr

:

movr2,a

loop1:

acalld200c

djnzr2,loop1

incdptr

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号实验机的数码管上。

 

实训电路

 

实训步骤

 

实训连线

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

<

 

环境

1号机发送,2号机接收

①1号机:

在与PC联机状态下,编辑、调试程序,然后编译、连接、下载程序,退出系统,联机状态,释放串口;在“P.”状态下按F2功能键,使系统进入串行口出借状态,显示

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

②2号机:

在与PC联机状态下,编辑、调试程序,然后编译、连接、下载程序,退出系统联机状态,释放串口;在“P.”状态下按F2功能键,使系统进入串行口出借状态,显示

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

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

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

观察运行结果

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

编程提示

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

因此,程序将为分三个部分组成,其一是随时扫描键盘,如果有键按下,则调用串口发送程序;其二是串口接收程序,只要有数据到了,就执行数据接收程序,并把数据送到显示数组里;其三是动态显示程序。

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

 

.

 

参考程序流程

 

 

{

 

程序代码

OUTBITEQU08002;数码管位控制口

OUTSEGEQU0800;数码管段控制口

INEQU0991;键盘读入口

 

HASRCVEQU;接受标志位

[

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

MOVDPTR,#OUTBIT

MOVA,R2

{

MOVX@DPTR,A

MOVR6,#1

CALLDELAY

MOVA,R2

RRA

MOVR2,A

INCR0

DJNZR1,LOOP

RET

TESTKEY:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVDPTR,IN

MOVXA,@DPTR

CPLA

ANLA,#0FH

RET

 

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

CPLA

MOVX@DPTR,A

CPLA

RRA

MOVR1,A

MOVXA,@R0

CPLA

ANLA,@0FH

JNZGOON1

DJNZR2,KLOOP

MOVR2,#0FFH

SJMPWXIT

GOON1:

MOVR1,A

MOVA,R2

·

DECA

RLA

RLA

MOVR2,A

MOVA,R1

MOVR1,LOOPC

EXIT:

MOVA,R2

MOVDPTR,#KEYTABLE

MOVCA,@A+DPTR

MOVR2,A

WAETRELEASE:

MOVDPRT,#OUTBIT

CLRA

MOVX@DPTR,A

MOVR6,#10

CALLDELAY

CALLTESTKEY

JNZWAITRELEASE

MOVA,R2

RET

 

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;显示

CALLTESTKEY

JZMLOOP

CALLGETKEY

ANLA,#0FH

MOVSBUF,A

LJMPMLOOP

RCVDATA:

CLRHASRCV

MOVA,RCVBUF

MOVB,A

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOVLEDBUF+5,A

MOVA,B

SWAPA

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOVLEDBUF+4,A

LJMPMLOOP

SIN:

JNBTI,S0_R

CLRTI

NOP

SJMPS0_RET

S0_R:

CLRRI

MOVRCVBUF,SBUF

SETBHASRCV

NOP

S0_RET:

RETI

END

 

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

当前位置:首页 > 法律文书 > 调解书

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

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