打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
电子

基于单片机的电子音乐门铃设计

              题目:电子音乐门铃设计      

              学院:                      

              专业:                      

              班级:                      

          学号:                      

          姓名:                      

              时间:                      

目   录

一、设计目的

二、设计任务

三、设计要求

四、设计步骤(流程)

五、设计原理

六、设计内容

    6.1硬件设计

    6.2单片机引脚说明

    6.3主要电路设计

        6.3.1时钟电路

        6.3.2复位电路

        6.3.3功率放大电路

    6.4软件设计

        6.4.1音乐符设计  

        6.4.2程序设计

        6.4.3程序流程图

        6.4.4仿真界面图

        6.5.5编程

七、设计小结

    参考文献

一、设计目的:

    1、动手焊接单片机硬件电路板,增进对单片机的感性认识,加深对单片机理论方面的理解。

    2、了解单片机的内部功能模块的应用。

    3、了解和掌握单片机应用系统的硬件设计和制作过程、方法及实现。

二、设计任务:

    1、了解单片机的组成结构,设计相关电路原理图;

    2、根据原理图焊接硬件电路。

    3、实现所要求的功能。

三、设计要求:

    1、要求理解单片机的组成结构;

    2、根据给出的主要芯片,设计相关电路原理图;

    3、焊接电路板,检测并调试。

四、设计步骤(流程):

    1、根据电子音乐门铃原理设计相关电路图;

    2、焊接电路板;

    3、编写程序、检测并调试。

五、设计原理: 

    音乐是由音符组成,不同的音符是由相应频率的振动产生。产生不同的音频需要有不同固定周期的脉冲信号。要产生音频脉冲,只要算出某一音频的周期T(1f) ,然后将此周期T除以2,即为半周期的时间。我们利用单片机的内部定时器TO,使其工作在计数器模式MODEl下.初始化适当的计数值THOTLO以计时这个半周期时间。每当计时时间到后就将输出脉冲的P1.0口反相。然后重复计时此半周期时间,再对P1.0口反相,就可在单片机Pl.0引脚上得到此频率的脉冲。P1.0引脚脉冲接LM386作音频功放,然后辅出到扬声器,从而发出美妙的乐音。

    例如设单片机晶振为12MHz,每计数一次用时1μs。我们要产生f低音DO,其频率为392Hz,周期T=1392=2551μs,半周期时间为1276μs。因此计数器应每计数1276次时将P1.0口反相, 即计数初值应设定为(THxTLx)=

1276=64260,就可得到低音D0P3.5口作为控制门铃的按钮,每按一次,产生的电子乐音就改变一次,按完6次,再重复循环。6首歌曲分别为《生日快乐》、《两只老虎》 、《三只小猫》、《哈巴狗》 、《不倒翁》 、《妹妹背着洋娃娃》 。

六、设计内容:

    传统的电子音乐门铃通常采用分立元件或专用的音乐IC制作。本文介绍一个用AT89C51单片机设计的电子音乐门铃,仅需AT89C51单片机最小系统再加一片LM386做音频小功放驱动扬声器发声。客人来访时,按一下按钮,门铃就会奏出优美的电子音乐声;再按一下,门铃又会奏出下一首电子音乐声音.共可以奏出六首不同旋律的歌曲。

61硬件设计

    电子音乐门铃设计系统以AT89C51单片机为核心加上外围电源时钟电路、LM386功放电路及扬声器电路组成。ATMEL公司生产的AT89C51单片机是一种低功耗且电压性能高的8位单片机,内部除CPU外,还包括128字节RAM48位并行I/O口,5个中断优先级,2层中断嵌套,216位可编程计数器,片内集成4k字节可改变程序FLASH,具有低功耗、速度快、程序擦写方便等优点,完全满足本系统设计需要,系统通过P1.0连接功放电路从而驱动扬声器产生电子乐声,P3.5口接门铃按键。

    电子音乐门铃的电路连接图如下图1

6.2单片机引脚说明

   AT89C51单片机是标准的40引脚双列直插式集成电路芯片,引脚分布可如下图2所示:

2   AT89C51单片机引脚分布图

    P0.0~P0.7  P08位双向线(在引脚的32~39号端子);

    P1.0~P1.7  P18位双向线(在引脚的1~8号端子);

    P2.0~P2.7  P28位双向线(在引脚的21~28号端子);

    P3.0~P3.7  P38位双向线(在引脚的10~17号端子)。

1P0口有三个功能:

    外部扩展存储器时,当作数据总线(如图中的D0~D7为数据总线接口)

    外部扩展存储器时,当作地址总线(如图中的A0~A7为地址总线接口)

    不扩展时,可作一般的I/O口使用,但内部无上拉电阻,作为输入输出时应在外部接上拉电阻。

2P1口功能

     P1口只作I/O口使用,其内部有上拉电阻。

3P2口功能

    扩展外部存储器时,当作地址总线使用;

    作一般I/O口使用,其内部有上拉电阻。

4P3口功能

    除了作为I/O口使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。

    当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源,所以如果P0口作为输入时,或处在高阻抗状态,只有外接一个上拉电阻才能有效。

5ALE/PROG地址锁存控制信号

    在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。

    PROG为编程脉冲的输入端,在AT89C51单片机内部有一个4kB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序。我们如何把编写好的程序存入这个ROM中的呢?实际上是通过编程脉冲输入采能写进去,而这个脉冲的输入端口就是PROG

6PSEN外部程序存储器读选通信号

    在读外部ROMPSEN低电平有效,以实现外部ROM单元的读操作:

    内部ROM读取时,PSEN不动作;

    外部ROM读取时,在每个机器周期会动作两次;

    外部RAM读取时,两个PSEN脉冲被跳过不会输出;

    外接ROM时,与ROMOE脚相接。

7EA/VPP访问程序存储器控制信号

    接高电平时:CPU读取内部程序存储器(ROM

    接低电平时:CPU读取外部程序存储器(ROM)。8031单片机内部是没有ROM的,因此在应用8031单片机时,这个脚时一直接低电平的。

8RST复位信号

    当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。

9XTAL1XTAL2

    外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

10VCC

    电源+5V输入

11GND

    接地

6.3主要电路设计

    AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的系统简单、可靠。本设计利用单片机芯片构成应用系统时,主要是将单片机街上时钟电路和复位电路。其应用特点:

    ◆有可供用户使用的大量I/O线

    ◆内部存储器容量有限

    ◆应用系统开发具有特殊性

6.3.1时钟电路

    AT89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89C51单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。

    本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。震荡晶体可在1.2MHZ12MHZ之间选择。电容值无严格要求,单电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1CX2可在20pF100pF之间取值,但在60pF70pF时振荡器有较高的频率稳定性。所以本设计中,震荡晶体频率选择12MHZ,电容选择20pF

    在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠工作。

6.3.2复位电路

     AT89C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个施密特触发器来抑制噪声。在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

复位电路通常采用上电自动复位和按钮复位两种方式。

    最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。时钟频率采用12MHZC10μFR1kΩ。本设计就是用上电复位。

    复位时,ALEPSEN成输入状态,片内RAM不受复位影响;复位后,PC指向0000H,单片机从起始地址0000H开始执行程序。所以单片机运行出错或进入死循环,可按复位键重新启动。在次单片机中,没有完全使用这些默认值,而是通过在程序中对单片机进行初始化。

复位电路采用的是简单的上电复位电路,此电路要求要保证在RESET引脚上提供10毫秒以上稳定的高电压。这种上电复位利用电容器充电来实现。当加电时,电容C充电,电路有电路流过,构成回路,在电阻R上产生压降,RESET引脚为高电平;当电容C充满电后,电路相当于断开,RESET的电位与地相同,复位结束。复位时间与充电的时间有关,充电时间越长复位时间越长,增大电容或增大电阻都可以增加复位时间。

6.3.3功率放大电路

    LM386是音频功率放大器。输入端以地位参考,同时输出端以地位参考,被自动偏置到电源电压的一半,在5V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。本实验采用LM386的封装形式8引线双列直插式。

6.4软件设计

6.4.1音乐符设计   

    首先建立音乐,把音乐的音符找出。建立各个音符的定时常数T值表,编写程序时我们把T值表按顺序建立在“TABLE”栏。每个发音符使用一个字节,字节的位(简谱码)代表音符的节拍。如果1拍为0.4秒,4分之一秒就是0.4秒。只要设定延时时间就求得节拍的时间。假设4分之一为1DELAY,则一拍应为4DELAY,依次类推。所以只要求出4分之一的DELAY时间。其余的节拍就是它的倍数。4分之一拍的延时在此我们设为125ms,节拍码如表:

 表 1  音符对应的简谱码、频率、定时常数

音符

简谱码

频率(Hz

定时常数(T

低SO

392

64260

低LA

440

64400

低TI

494

64524

中DO

523

64580

中RE

587

64684

中MI

659

64777

中FA

698

64820

中SO

784

64898

中LA

880

64968

中TI

988

65030

高DO

1046

65058

高RE

1175

65110

高MI

1318

65157

高FA

1397

65178

高SO

1568

65217

不发音

                  表2 节拍码及节拍数

节拍码

节拍数

1/4拍

2/4拍

3/4拍

1拍

1又1/4拍

1又1/2拍

2拍

2又1/2拍

3拍

3又3/4拍

6.4.2程序设计:

本系统采用MCS-51汇编语言编程。软件程序由主程序、定时器TO中断服务程序和延时子程序组成。系统初始化后,系统扫描按键(P3.5口的电平)判断是否有键按下,有键按下时,根据按下键的次数,向音频字符码指针赋以不同歌曲的地址,通过定时器TO中断子程序使P1.0口输出相应频率的音频脉冲,以达到发声目的。主程序流程图如图3所示。

6.4.3程序流程图如下图3所示:

(1)

N

Y

3  程序流程图

6.4.4仿真界面图

仿真界面图如下图4

仿真界面

6.4.5编程如下:

MAIN

    ORG 00H 主程序的起始地址

    JMP START 跳至主程序

ORG    0BH TIMER0中断起始地址

LJMP TIM0 跳至TIMER0中断子程序

STARTMOV TMOD#00000001B TIMER0MODE1

MOV IE#10000010B   中断使能

JB P3.4, $ 第一次按T0

CALL DELAY1 消除抖动

JNB P3.4, $ T0放开?

MOV 31H#00 T0计数指针初始值为00H

START0

MOV 30H#LOW  SONG 取简谱码指针(第1首)

NEXT MOV A30H

MOV DPTR# TABLE

MOVC A@A+DPTR 至相关页取码

MOV R2A     4位为音符的节拍

JZ END0     检查简谱码是否已结束(有无00

ANL A#0FH 取节拍(低4

MOV R5A     存入R5节拍的时间

MOV AR2 

SWAP A

ANL A#0FH 取音频值(4)

JNZ SING     是否为0,是0则不发音

CLR TR0

JMP D1

SING DEC A         0不列入

MOV 22HA     存入(22H 

RL A         2

MOV DPTR#TABLE

MOVC A@A+DPTR TABLE取码,取T的值

MOV  TH0A 取到的高位字节才存入TH0

MOV 21HA     取到的高位字节存入(21H

MOV A22H     在载入取到的音符码

RL A         2

INC A         1

MOVC A@A+DPTR TABLE取相对的低位字节计数值

MOV TL0A     取到的低位字节存入TL0

MOV 20HA     取到的低位字节存入(21H

SETB TR0         启动TIMER0

D1 CALL DELAY

INC 30H         取简谱码指针加1

JMP NEXT

END0 CLR TR0         停止计数器

MOV A31H     载入计数器指针

XRL A#00H     是否按第1

JNZ END1     不是则跳至END1

JB P3.4$     按第2次?

CALL DELAY1     消除抖动

JNB   P3.4$     放开否?

INC 31H         计次地址(31H)加1

MOV 30H#LOW  SONG1 2首歌指针

JMP NEXT

END1

MOV A31H     载入计数器指针

XRL A#01H     是否按第2

JNZ END2     不是则跳至END2

JB P3.4$     按第3次?

CALL DELAY1     消除抖动

JNB P3.4     放开否?

INC 31H             计次地址(31H)加1

MOV 30H#LOW  SONG2 3首歌指针

JMP NEXT

END2

MOV A31H     载入计数器指针

XRL A#02H         是否按第3

JNZ END3     不是则跳至END3

JB P3.4$     按第4次?

CALL DELAY1     消除抖动

JNB P3.4     放开否? 

INC 31H             计次地址(31H)加1

MOV 30H#LOW  SONG3 4首歌指针

JMP NEXT

END3

MOV A31H     载入计数器指针

XRL A#03H             是否按第4

JNZ END4     不是则跳至END4

JB P3.4$     按第5次?

CALL DELAY1         消除抖动

JNB P3.4$   放开否?

INC 31H                 计次地址(31H)加1

MOV 30H#LOW  SONG4 5首歌指针

JMP NEXT

END4

MOV A31H     载入计数器指针

XRL A#04H                 是否按第5

JNZ END5     不是则跳至END5

JB P3.4$     按第6次?

CALL DELAY1             消除抖动

JNB P3.4$   放开否? 

INC 31H                 计次地址(31H)加1

MOV 30H#LOW  SONG5 6首歌指针

JMP NEXT

END5

JMP START             回到第1次位置

TIM0 PUSH ACC A的值暂存于堆栈

PUSH PSW PSW的值暂存于堆栈

SETB RS0      设工作寄存器库1RS0=1RS1=0

CLR RS1

MOV TL020H 重设计数值

MOV TH021H

CPL P1.0      P1.0位反相

POP PSW 至堆栈取回PSW的值

POP ACC 至堆栈取回A的值

RETI          返回主程序

DELAYMOV R7#02 ;延时125毫秒

D2 MOV R4#125

D3 MOV R3#248

DJNZ R3$

DJNZ  R4D3

DJNZ R7D2

DJNZ R5DELAY 决定节拍

RET

DELAY1MOV R4#20

D4 MOV R3#248

DJNZ R3$

DJNZ R4D4

RET

ORG 300H

    ;定时常数T值表

TABLE

DW 64260644006452464580

DW 64684647776482064898

DW 64968650306505865110

DW 651576517865217

;音符节拍码数据表

SONG ;生日快乐

1

DB 82H01H81H94H84H

DB 0B4H0A4H04H

DB 82H01H81H94H84H

DB 0C4H0B4H04H

2

DB 82H01H81H0F4H0D4H

DB 0B4H0A4H94H

DB 0E2H01H0E1H0D4H0B4H

DB 0C4H0B4H04H

DB 00H

SONG1 ;两只老虎

1

DB 44H54H64H44H

DB 44H54H64H44H

DB 64H74H88H

DB 64H74H88H

2

DB 82H92H82H72H64H44H

DB 82H92H82H72H64H44H

DB 44H84H48H

DB 44H14H48H

DB 00H

SONG2 ;三只小猫

       1

       DB 62H82H82H62H98H

       DB 92H0B2H0B2H82H98H

       DB 62H82H82H52H68H

       DB 92H0B2H0B2H82H98H

       2

       DB 62H82H82H62H92H92H94H

       DB 92H0B2H0B2H92H84H94H

       DB 0B8H0B4H04H

       DB 00H

SONG3 ;哈巴狗

1

DB 42H42H42H52H64H04H

DB 62H62H62H72H84H04H

DB 92H92H82H72H64H04H

DB 82H82H52H62H44H04H

2

DB 42H42H42H52H64H04H

DB 62H62H62H72H84H04H

DB 92H92H82H72H64H04H

DB 82H82H52H62H44H04H

DB 00H

SONG4 ;不倒翁

1

DB 84H94H88H

DB 64H54H68H

DB 84H64H54H44H

DB 62H82H42H62H58H

2

DB 84H94H88H

DB 64H54H68H

DB 84H64H54H44H

DB 52H42H52H62H48H

        DB 00H

SONG5 ;妹妹背着洋娃娃

1

DB 84H02H82H64H54H

DB 64H54H48H

DB 64H02H52H44H24H

DB 14H24H18H

2

DB 24H02H22H42H24H

DB 44H54H68H

DB 54H02H52H84H84H

DB 54H64H48H

        DB 00H

        END

七、设计小结:

通过3个星期的实习,我懂得了很多。学会了常用的单片机控制音乐门铃的用法。将所学到的理论知识应用于实际,使所学的知识得到进一步巩固,使这些知识得到提高,初步培养了单片机设计的独立设计,为今后的工作打下良好基础,树立正确的设计思路。

在这次设计过程中遇到很多问题,通过老师的指导和帮助,我们克服了这些困难解决了问题,提高了解决问题的能力。在这次设计中,我们要学会亲自去尝试,不要害怕失败。

这次实习,使我们有了团队合作,培养了我们的团队合作精神。通过团队相互讨论,很多问题都迎刃而解了。通过团队合作,使我们认识到:一个人的能力是有限的,只有相互合作,相互学习才能把事情做得更好。

    最后,这次实习是我认识到:我们现在的知识还是薄弱,基础还不够扎实。今后我们要更加努力学习专业知识,只有扎扎实实打好基础,才能在社会的竞争中处于不败之地。今后我们要努力改正自己的不足,发扬自己的优点。

参考文献:

1】 李珍.单片机原理与应用技术  [M] .北京:清华大学出版社, 2003.

2】 孙函芳.MCS-51/96单片机原理及应用[M] .北京: 北京航空航天大学出版社 , 1994.

3】 刘进峰 .电子制作实训[M] .湖北:中国劳动社会保障出版社  2006

4】 张靖武 .单片机原理、应用与PROTEUS仿真 [M] .北京:电子工业出版社  ,2007.

5】陈明莹 . 8051单片机课程设计实训教材 [M] .北京: 清华大学出版社 , 2003.

6王昊等.通用电子元器件的选用与检测 [M] .北京:电子工业出版社,1996.

7张毅刚等.单片机原理与应用设计 [M] .北京:电子工业出版社,2005.

基于单片机的电子音乐门铃设计

              题目:电子音乐门铃设计      

              学院:                      

              专业:                      

              班级:                      

          学号:                      

          姓名:                      

              时间:                      

目   录

一、设计目的

二、设计任务

三、设计要求

四、设计步骤(流程)

五、设计原理

六、设计内容

    6.1硬件设计

    6.2单片机引脚说明

    6.3主要电路设计

        6.3.1时钟电路

        6.3.2复位电路

        6.3.3功率放大电路

    6.4软件设计

        6.4.1音乐符设计  

        6.4.2程序设计

        6.4.3程序流程图

        6.4.4仿真界面图

        6.5.5编程

七、设计小结

    参考文献

一、设计目的:

    1、动手焊接单片机硬件电路板,增进对单片机的感性认识,加深对单片机理论方面的理解。

    2、了解单片机的内部功能模块的应用。

    3、了解和掌握单片机应用系统的硬件设计和制作过程、方法及实现。

二、设计任务:

    1、了解单片机的组成结构,设计相关电路原理图;

    2、根据原理图焊接硬件电路。

    3、实现所要求的功能。

三、设计要求:

    1、要求理解单片机的组成结构;

    2、根据给出的主要芯片,设计相关电路原理图;

    3、焊接电路板,检测并调试。

四、设计步骤(流程):

    1、根据电子音乐门铃原理设计相关电路图;

    2、焊接电路板;

    3、编写程序、检测并调试。

五、设计原理: 

    音乐是由音符组成,不同的音符是由相应频率的振动产生。产生不同的音频需要有不同固定周期的脉冲信号。要产生音频脉冲,只要算出某一音频的周期T(1f) ,然后将此周期T除以2,即为半周期的时间。我们利用单片机的内部定时器TO,使其工作在计数器模式MODEl下.初始化适当的计数值THOTLO以计时这个半周期时间。每当计时时间到后就将输出脉冲的P1.0口反相。然后重复计时此半周期时间,再对P1.0口反相,就可在单片机Pl.0引脚上得到此频率的脉冲。P1.0引脚脉冲接LM386作音频功放,然后辅出到扬声器,从而发出美妙的乐音。

    例如设单片机晶振为12MHz,每计数一次用时1μs。我们要产生f低音DO,其频率为392Hz,周期T=1392=2551μs,半周期时间为1276μs。因此计数器应每计数1276次时将P1.0口反相, 即计数初值应设定为(THxTLx)=

1276=64260,就可得到低音D0P3.5口作为控制门铃的按钮,每按一次,产生的电子乐音就改变一次,按完6次,再重复循环。6首歌曲分别为《生日快乐》、《两只老虎》 、《三只小猫》、《哈巴狗》 、《不倒翁》 、《妹妹背着洋娃娃》 。

六、设计内容:

    传统的电子音乐门铃通常采用分立元件或专用的音乐IC制作。本文介绍一个用AT89C51单片机设计的电子音乐门铃,仅需AT89C51单片机最小系统再加一片LM386做音频小功放驱动扬声器发声。客人来访时,按一下按钮,门铃就会奏出优美的电子音乐声;再按一下,门铃又会奏出下一首电子音乐声音.共可以奏出六首不同旋律的歌曲。

61硬件设计

    电子音乐门铃设计系统以AT89C51单片机为核心加上外围电源时钟电路、LM386功放电路及扬声器电路组成。ATMEL公司生产的AT89C51单片机是一种低功耗且电压性能高的8位单片机,内部除CPU外,还包括128字节RAM48位并行I/O口,5个中断优先级,2层中断嵌套,216位可编程计数器,片内集成4k字节可改变程序FLASH,具有低功耗、速度快、程序擦写方便等优点,完全满足本系统设计需要,系统通过P1.0连接功放电路从而驱动扬声器产生电子乐声,P3.5口接门铃按键。

    电子音乐门铃的电路连接图如下图1

6.2单片机引脚说明

   AT89C51单片机是标准的40引脚双列直插式集成电路芯片,引脚分布可如下图2所示:

2   AT89C51单片机引脚分布图

    P0.0~P0.7  P08位双向线(在引脚的32~39号端子);

    P1.0~P1.7  P18位双向线(在引脚的1~8号端子);

    P2.0~P2.7  P28位双向线(在引脚的21~28号端子);

    P3.0~P3.7  P38位双向线(在引脚的10~17号端子)。

1P0口有三个功能:

    外部扩展存储器时,当作数据总线(如图中的D0~D7为数据总线接口)

    外部扩展存储器时,当作地址总线(如图中的A0~A7为地址总线接口)

    不扩展时,可作一般的I/O口使用,但内部无上拉电阻,作为输入输出时应在外部接上拉电阻。

2P1口功能

     P1口只作I/O口使用,其内部有上拉电阻。

3P2口功能

    扩展外部存储器时,当作地址总线使用;

    作一般I/O口使用,其内部有上拉电阻。

4P3口功能

    除了作为I/O口使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。

    当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源,所以如果P0口作为输入时,或处在高阻抗状态,只有外接一个上拉电阻才能有效。

5ALE/PROG地址锁存控制信号

    在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。

    PROG为编程脉冲的输入端,在AT89C51单片机内部有一个4kB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序。我们如何把编写好的程序存入这个ROM中的呢?实际上是通过编程脉冲输入采能写进去,而这个脉冲的输入端口就是PROG

6PSEN外部程序存储器读选通信号

    在读外部ROMPSEN低电平有效,以实现外部ROM单元的读操作:

    内部ROM读取时,PSEN不动作;

    外部ROM读取时,在每个机器周期会动作两次;

    外部RAM读取时,两个PSEN脉冲被跳过不会输出;

    外接ROM时,与ROMOE脚相接。

7EA/VPP访问程序存储器控制信号

    接高电平时:CPU读取内部程序存储器(ROM

    接低电平时:CPU读取外部程序存储器(ROM)。8031单片机内部是没有ROM的,因此在应用8031单片机时,这个脚时一直接低电平的。

8RST复位信号

    当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。

9XTAL1XTAL2

    外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

10VCC

    电源+5V输入

11GND

    接地

6.3主要电路设计

    AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的系统简单、可靠。本设计利用单片机芯片构成应用系统时,主要是将单片机街上时钟电路和复位电路。其应用特点:

    ◆有可供用户使用的大量I/O线

    ◆内部存储器容量有限

    ◆应用系统开发具有特殊性

6.3.1时钟电路

    AT89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89C51单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。

    本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。震荡晶体可在1.2MHZ12MHZ之间选择。电容值无严格要求,单电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1CX2可在20pF100pF之间取值,但在60pF70pF时振荡器有较高的频率稳定性。所以本设计中,震荡晶体频率选择12MHZ,电容选择20pF

    在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠工作。

6.3.2复位电路

     AT89C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个施密特触发器来抑制噪声。在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

复位电路通常采用上电自动复位和按钮复位两种方式。

    最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。时钟频率采用12MHZC10μFR1kΩ。本设计就是用上电复位。

    复位时,ALEPSEN成输入状态,片内RAM不受复位影响;复位后,PC指向0000H,单片机从起始地址0000H开始执行程序。所以单片机运行出错或进入死循环,可按复位键重新启动。在次单片机中,没有完全使用这些默认值,而是通过在程序中对单片机进行初始化。

复位电路采用的是简单的上电复位电路,此电路要求要保证在RESET引脚上提供10毫秒以上稳定的高电压。这种上电复位利用电容器充电来实现。当加电时,电容C充电,电路有电路流过,构成回路,在电阻R上产生压降,RESET引脚为高电平;当电容C充满电后,电路相当于断开,RESET的电位与地相同,复位结束。复位时间与充电的时间有关,充电时间越长复位时间越长,增大电容或增大电阻都可以增加复位时间。

6.3.3功率放大电路

    LM386是音频功率放大器。输入端以地位参考,同时输出端以地位参考,被自动偏置到电源电压的一半,在5V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。本实验采用LM386的封装形式8引线双列直插式。

6.4软件设计

6.4.1音乐符设计   

    首先建立音乐,把音乐的音符找出。建立各个音符的定时常数T值表,编写程序时我们把T值表按顺序建立在“TABLE”栏。每个发音符使用一个字节,字节的位(简谱码)代表音符的节拍。如果1拍为0.4秒,4分之一秒就是0.4秒。只要设定延时时间就求得节拍的时间。假设4分之一为1DELAY,则一拍应为4DELAY,依次类推。所以只要求出4分之一的DELAY时间。其余的节拍就是它的倍数。4分之一拍的延时在此我们设为125ms,节拍码如表:

 表 1  音符对应的简谱码、频率、定时常数

音符

简谱码

频率(Hz

定时常数(T

低SO

392

64260

低LA

440

64400

低TI

494

64524

中DO

523

64580

中RE

587

64684

中MI

659

64777

中FA

698

64820

中SO

784

64898

中LA

880

64968

中TI

988

65030

高DO

1046

65058

高RE

1175

65110

高MI

1318

65157

高FA

1397

65178

高SO

1568

65217

不发音

                  表2 节拍码及节拍数

节拍码

节拍数

1/4拍

2/4拍

3/4拍

1拍

1又1/4拍

1又1/2拍

2拍

2又1/2拍

3拍

3又3/4拍

6.4.2程序设计:

本系统采用MCS-51汇编语言编程。软件程序由主程序、定时器TO中断服务程序和延时子程序组成。系统初始化后,系统扫描按键(P3.5口的电平)判断是否有键按下,有键按下时,根据按下键的次数,向音频字符码指针赋以不同歌曲的地址,通过定时器TO中断子程序使P1.0口输出相应频率的音频脉冲,以达到发声目的。主程序流程图如图3所示。

6.4.3程序流程图如下图3所示:

(1)

N

Y

3  程序流程图

6.4.4仿真界面图

仿真界面图如下图4

仿真界面

6.4.5编程如下:

MAIN

    ORG 00H 主程序的起始地址

    JMP START 跳至主程序

ORG    0BH TIMER0中断起始地址

LJMP TIM0 跳至TIMER0中断子程序

STARTMOV TMOD#00000001B TIMER0MODE1

MOV IE#10000010B   中断使能

JB P3.4, $ 第一次按T0

CALL DELAY1 消除抖动

JNB P3.4, $ T0放开?

MOV 31H#00 T0计数指针初始值为00H

START0

MOV 30H#LOW  SONG 取简谱码指针(第1首)

NEXT MOV A30H

MOV DPTR# TABLE

MOVC A@A+DPTR 至相关页取码

MOV R2A     4位为音符的节拍

JZ END0     检查简谱码是否已结束(有无00

ANL A#0FH 取节拍(低4

MOV R5A     存入R5节拍的时间

MOV AR2 

SWAP A

ANL A#0FH 取音频值(4)

JNZ SING     是否为0,是0则不发音

CLR TR0

JMP D1

SING DEC A         0不列入

MOV 22HA     存入(22H 

RL A         2

MOV DPTR#TABLE

MOVC A@A+DPTR TABLE取码,取T的值

MOV  TH0A 取到的高位字节才存入TH0

MOV 21HA     取到的高位字节存入(21H

MOV A22H     在载入取到的音符码

RL A         2

INC A         1

MOVC A@A+DPTR TABLE取相对的低位字节计数值

MOV TL0A     取到的低位字节存入TL0

MOV 20HA     取到的低位字节存入(21H

SETB TR0         启动TIMER0

D1 CALL DELAY

INC 30H         取简谱码指针加1

JMP NEXT

END0 CLR TR0         停止计数器

MOV A31H     载入计数器指针

XRL A#00H     是否按第1

JNZ END1     不是则跳至END1

JB P3.4$     按第2次?

CALL DELAY1     消除抖动

JNB   P3.4$     放开否?

INC 31H         计次地址(31H)加1

MOV 30H#LOW  SONG1 2首歌指针

JMP NEXT

END1

MOV A31H     载入计数器指针

XRL A#01H     是否按第2

JNZ END2     不是则跳至END2

JB P3.4$     按第3次?

CALL DELAY1     消除抖动

JNB P3.4     放开否?

INC 31H             计次地址(31H)加1

MOV 30H#LOW  SONG2 3首歌指针

JMP NEXT

END2

MOV A31H     载入计数器指针

XRL A#02H         是否按第3

JNZ END3     不是则跳至END3

JB P3.4$     按第4次?

CALL DELAY1     消除抖动

JNB P3.4     放开否? 

INC 31H             计次地址(31H)加1

MOV 30H#LOW  SONG3 4首歌指针

JMP NEXT

END3

MOV A31H     载入计数器指针

XRL A#03H             是否按第4

JNZ END4     不是则跳至END4

JB P3.4$     按第5次?

CALL DELAY1         消除抖动

JNB P3.4$   放开否?

INC 31H                 计次地址(31H)加1

MOV 30H#LOW  SONG4 5首歌指针

JMP NEXT

END4

MOV A31H     载入计数器指针

XRL A#04H                 是否按第5

JNZ END5     不是则跳至END5

JB P3.4$     按第6次?

CALL DELAY1             消除抖动

JNB P3.4$   放开否? 

INC 31H                 计次地址(31H)加1

MOV 30H#LOW  SONG5 6首歌指针

JMP NEXT

END5

JMP START             回到第1次位置

TIM0 PUSH ACC A的值暂存于堆栈

PUSH PSW PSW的值暂存于堆栈

SETB RS0      设工作寄存器库1RS0=1RS1=0

CLR RS1

MOV TL020H 重设计数值

MOV TH021H

CPL P1.0      P1.0位反相

POP PSW 至堆栈取回PSW的值

POP ACC 至堆栈取回A的值

RETI          返回主程序

DELAYMOV R7#02 ;延时125毫秒

D2 MOV R4#125

D3 MOV R3#248

DJNZ R3$

DJNZ  R4D3

DJNZ R7D2

DJNZ R5DELAY 决定节拍

RET

DELAY1MOV R4#20

D4 MOV R3#248

DJNZ R3$

DJNZ R4D4

RET

ORG 300H

    ;定时常数T值表

TABLE

DW 64260644006452464580

DW 64684647776482064898

DW 64968650306505865110

DW 651576517865217

;音符节拍码数据表

SONG ;生日快乐

1

DB 82H01H81H94H84H

DB 0B4H0A4H04H

DB 82H01H81H94H84H

DB 0C4H0B4H04H

2

DB 82H01H81H0F4H0D4H

DB 0B4H0A4H94H

DB 0E2H01H0E1H0D4H0B4H

DB 0C4H0B4H04H

DB 00H

SONG1 ;两只老虎

1

DB 44H54H64H44H

DB 44H54H64H44H

DB 64H74H88H

DB 64H74H88H

2

DB 82H92H82H72H64H44H

DB 82H92H82H72H64H44H

DB 44H84H48H

DB 44H14H48H

DB 00H

SONG2 ;三只小猫

       1

       DB 62H82H82H62H98H

       DB 92H0B2H0B2H82H98H

       DB 62H82H82H52H68H

       DB 92H0B2H0B2H82H98H

       2

       DB 62H82H82H62H92H92H94H

       DB 92H0B2H0B2H92H84H94H

       DB 0B8H0B4H04H

       DB 00H

SONG3 ;哈巴狗

1

DB 42H42H42H52H64H04H

DB 62H62H62H72H84H04H

DB 92H92H82H72H64H04H

DB 82H82H52H62H44H04H

2

DB 42H42H42H52H64H04H

DB 62H62H62H72H84H04H

DB 92H92H82H72H64H04H

DB 82H82H52H62H44H04H

DB 00H

SONG4 ;不倒翁

1

DB 84H94H88H

DB 64H54H68H

DB 84H64H54H44H

DB 62H82H42H62H58H

2

DB 84H94H88H

DB 64H54H68H

DB 84H64H54H44H

DB 52H42H52H62H48H

        DB 00H

SONG5 ;妹妹背着洋娃娃

1

DB 84H02H82H64H54H

DB 64H54H48H

DB 64H02H52H44H24H

DB 14H24H18H

2

DB 24H02H22H42H24H

DB 44H54H68H

DB 54H02H52H84H84H

DB 54H64H48H

        DB 00H

        END

七、设计小结:

通过3个星期的实习,我懂得了很多。学会了常用的单片机控制音乐门铃的用法。将所学到的理论知识应用于实际,使所学的知识得到进一步巩固,使这些知识得到提高,初步培养了单片机设计的独立设计,为今后的工作打下良好基础,树立正确的设计思路。

在这次设计过程中遇到很多问题,通过老师的指导和帮助,我们克服了这些困难解决了问题,提高了解决问题的能力。在这次设计中,我们要学会亲自去尝试,不要害怕失败。

这次实习,使我们有了团队合作,培养了我们的团队合作精神。通过团队相互讨论,很多问题都迎刃而解了。通过团队合作,使我们认识到:一个人的能力是有限的,只有相互合作,相互学习才能把事情做得更好。

    最后,这次实习是我认识到:我们现在的知识还是薄弱,基础还不够扎实。今后我们要更加努力学习专业知识,只有扎扎实实打好基础,才能在社会的竞争中处于不败之地。今后我们要努力改正自己的不足,发扬自己的优点。

参考文献:

1】 李珍.单片机原理与应用技术  [M] .北京:清华大学出版社, 2003.

2】 孙函芳.MCS-51/96单片机原理及应用[M] .北京: 北京航空航天大学出版社 , 1994.

3】 刘进峰 .电子制作实训[M] .湖北:中国劳动社会保障出版社  2006

4】 张靖武 .单片机原理、应用与PROTEUS仿真 [M] .北京:电子工业出版社  ,2007.

5】陈明莹 . 8051单片机课程设计实训教材 [M] .北京: 清华大学出版社 , 2003.

6王昊等.通用电子元器件的选用与检测 [M] .北京:电子工业出版社,1996.

7张毅刚等.单片机原理与应用设计 [M] .北京:电子工业出版社,2005.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
从业十年,教你单片机入门基础。(连载)
AT89S51单片机并行I/O端口的扩展
KIA7033构成的51单片机复位电路
avr单片机技术
基于51单片机的电子密码锁系统设计制作,电路
单片机到底是个什么东西?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服