原创 基于AT89C51型单片机的号音自动播放器设计

2009-8-13 19:25 2407 4 4 分类: MCU/ 嵌入式

1 引言 电子园51单片机学习网Aal X(x!I M

电子园51单片机学习网~G0R:X6VY R7QB2h ]

    机关、院校日常作息需要计时和号音提示,笔者利用AT89C51型单片机和LM386型音频功率放大器构成了自动计时和号音播放器,成本低,效果好,值得推广。 电子园51单片机学习网L iY@Y4n[i(XI


7e qN3@SMs12 AT89C51的主要特性和引脚功能 电子园51单片机学习网 u0[/C c+s4{

电子园51单片机学习网{[W Q [F

    AT89C51是带4K字节闪烁可编程可擦除只读存储器(EPEROM)的低电压、高性能CMOS 8位微处理器(俗称单片机)。该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。AT89C51将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制提供了灵活性高且价格低廉的方案。 电子园51单片机学习网Z4H}V MeW3hz

电子园51单片机学习网@L lF1sw#s

AT89C51的主要特性如下: 电子园51单片机学习网_"Z+J-]!O)[{\5Q


J/VS3j2`L6q7H1寿命达1000写/擦循环; 电子园51单片机学习网*haR7Y0SD+Q)Z


L\ qX/{ bKjM1数据保留时间:10年;

_ TAr6~l1 电子园51单片机学习网!W)R}zk7E A"njG

全静态工作:0Hz-24MHz;

4M9L#ZJ.V/VS'V1

L'd/U/Ee T1三级程序存储器锁定; 电子园51单片机学习网 LGPV+h1L

电子园51单片机学习网7^}W6zH

128×8位内部RAM;

1S3z"pn}1

0G-q#VCC^%V M132可编程I/O线;

7h[!k6J@9u2{{1 电子园51单片机学习网+P-B~:S-~a!VL

2个16位定时器/计数器; 电子园51单片机学习网#|+Dx6o+T`O;J


"h ~n&y _#e9o15个中断源; 电子园51单片机学习网yR!}Z%s

电子园51单片机学习网P}Uy$B$j {p t

可编程串行通道;

vq9w9C{1 电子园51单片机学习网L@dx~x Y

低功耗闲置和掉电模式;

#jw*m9M W H'C1K1 电子园51单片机学习网]-p'Rr3[.}v L*_

片内振荡器和时钟电路。 电子园51单片机学习网(jR(GR*o


6ek9q:_!ssJ;SBi1AT89C51引脚排列如图1所示,引脚功能如下: 电子园51单片机学习网:^Xypp

电子园51单片机学习网B |*CZ gD h A

/B}byfP1
6136_200904061404141dTWm.jpg

za3A bnj2C1VCC(40):+5V。

Jn1c i|\N5G.I1

/W9DV.\.q8^z9YM1GND(20):接地。 电子园51单片机学习网fS \Z0mpq'OX

电子园51单片机学习网ld#Y*rN,J1?

P0口(39-32):P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流。

Af/a-bc+dFmq)?1

.PK^mTk|J"ky1P1口(1-8):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。 电子园51单片机学习网 oJz*A*p'fx3xr$`

电子园51单片机学习网ZV"bG:R)ovwb1l f

P2口(21-28):P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流。

9^q j} Wy6[1

/G8I2^g/eX!V9}1P3口(10-17):P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。 电子园51单片机学习网?mF4e2sy

电子园51单片机学习网b | GG%O8xu$C

RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。 电子园51单片机学习网aQ!C{3\RZ

电子园51单片机学习网1Z ~%p/N P~g

ALE/PROG(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。 电子园51单片机学习网HJ6[S8Y `-j

电子园51单片机学习网'^^0l-{&f){;\

PSEN(29):外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。

b"f2P }(c&w1 电子园51单片机学习网.A;Zo w+AA

EA/VPP(31):当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

"G UOSAz#q1 电子园51单片机学习网,v$e(} W$a VC9|%~ z

XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入。

`m bG2^D3uI1

].Fd3d Oy'PS3D1XTAL2(18):来自反向振荡器的输出。

HU S$B%w1 电子园51单片机学习网r(AM9`Z~0K?2{,X;W

3 号音自动播放系统的设计 电子园51单片机学习网1E GaCW d1s


^T0pV [)o1    号音自动播放系统如图2所示,AT89C51的P1.0端接音频放大模块的IN+端口,在音频放大模块的VOUT端接一个8欧姆或者16欧姆的喇叭。 电子园51单片机学习网9A nb2Qx+Xd


/W Yd\ C1uV13.1 电路设计及音乐编程原理

xd"k \FAM:Bw1

\0Wz(u&| R1    若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。

5A8sz,j:W4} Xu1 电子园51单片机学习网a7US6@7uD6CVh*j

    利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为 523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO (523Hz)。 电子园51单片机学习网n}0D n:mU P

电子园51单片机学习网y^1Jsj w"F

电子园51单片机学习网.B6S'QXSD3JB


6136_200904061404142y97G.jpg
电子园51单片机学习网? \Ih@OMNTr

计数脉冲值与频率的关系式是: 电子园51单片机学习网&lJ [kb8xF5h


#BT\,a9m'Y{1N=fi÷2÷fr电子园51单片机学习网_9QL [5N4plg

电子园51单片机学习网HnD {l Xz9q

    式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。

t|&| SR1

;]L"yYA;?.u.b1其计数初值T的求法如下:

w+B,z^8Vi1 电子园51单片机学习网q%sI1C}e5|E1@

T=65536-N=65536-fi÷2÷fr

T C@%io0Dp L6b1 电子园51单片机学习网 c?4V3zE9e.a5x

    例如:设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。

!I4IrPM b1 电子园51单片机学习网N9T TF"o&yplo:F

T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr

?4T9eM#X1

t,O3e"Y i1低音DO的T=65536-500000/262=63627 电子园51单片机学习网 {w$vowu i vT

电子园51单片机学习网,h eG#r&f;?

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

lO~ e6B0vL1 电子园51单片机学习网#qpfNA/G

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

?(P1N6R"|!uD0@1

?W&TBY'm1C调各音符频率与计数初值T对照如表1所示。

U&G5i0R Q's Oa8N7[1

y@]&P#MH1

'W%f8AI8hM1
点击看大图
电子园51单片机学习网&x m3rx"J+O o

3.2 主程序流程 电子园51单片机学习网${.EW_~ aK5E0e


R5d7ljgrJ*^8z5l1    本系统主要完成作息定时和号音播放功能,因此用定时器T1中断方式产生100ms基准时间,再根据作息表上各段时间的长短对基准时间用软件计时。可以用查表方式取得计数参数,计时到后将播放子程序地址送DPTR,转入播放子程序,放2遍对应号音后再继续计时。主程序流程如图3所示。

2B Wm*`(b(I_*jWr1 电子园51单片机学习网 d(E!P$d0f yu.}J

n.bAb/HC"Z~Z!Es6N1
6136_200904061404144Z649.jpg
电子园51单片机学习网$`4r0Cw |(x](K

     播放子程序是用T0中断方式控制P1.0不断取反以产生不同频率音符,节拍的长短靠调用200ms延时子程序次数来完成。子程序也用查表来完成。
tEgk6bF4df|1电子园51单片机学习网5gi {!B {,?B ?]

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条