单片机THMEMU-1实验指导书(5)

2018-12-17 12:57

实验九 音频驱动实验

一、实验目的

掌握单片机音频发声原理,掌握扬声器的驱动电路。 二、实验说明

使用I/O口输出音频脉冲,脉冲经放大滤波后,驱动扬声器发声。

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

利用内部定时器使其工作在计数器模式,改变计数值TH0及TL0以产生不同的频率。 例如频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计956μs/1μs=956,在每计数956次时将I/O反相,就可得到中音“哆”(523Hz)。

计数脉冲值与频率的关系公式如下: N=Fi÷2÷Fr

N:计数值;

Fi:内部计时一次为1μs,故其频率为1MHz; Fr:要产生的频率;

其计数值的求法:T=65536-N=65536-Fi÷2÷Fr

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表8.1为节拍与节拍码的对照。如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可以求得节拍的时间。假设1/4拍为1DELAY,则1拍应为4DELAY,依此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表8.2为1/4和1/8节拍的时间设定。

表1节拍与节拍码对照 节拍码 1 2 3 4 5 6 8 A C F 节拍数 1/4拍 2/4拍 3/4拍 1拍 1又1/4拍 1又1/2拍 2拍 2又1/2拍 3拍 3又3/4拍 节拍码 1 2 3 4 5 6 8 A C 节拍数 1/8拍 1/4拍 3/8拍 1/2拍 5/8拍 3/4拍 1拍 1又1/4拍 1又1/2拍

表2 各调1/4节拍的时间设定 各调1/8节拍的时间设定

20

曲调值 调4/4 调3/4 调2/4 DELAY 125毫秒 187毫秒 250毫秒 曲调值 调4/4 调3/4 调2/4 DELAY 62毫秒 94毫秒 125毫秒 建立音乐的步骤:

a.先将乐谱的音符找出,然后由表8.2建立T值表的顺序。

b.将T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。

表3 简谱对应的简谱码、T值、节拍数 简 谱 发 音 简谱码 T 值 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5

三、实验内容及步骤

使用单片机使扬声器发声,编程产生一段《祝你平安》的音乐。本实验需要用到单片机最小应用系统(F1区)和音频驱动模块(C2区)。

1.使用单片机最小应用系统模块,用导线连接INT1端口到音频驱动的SP+,SP-接GND。 2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH9_MUSIC.ASM”源程序,进行编译,直到编译无误。

4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。

5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,蜂鸣器奏出

21

节拍码 1 2 3 4 5 6 8 A C F

节拍数 1/4拍 2/4拍 3/4拍 1拍 1又1/4拍 1又1/2拍 2拍 2又1/2拍 3拍 3又3/4拍

低音SO 低音LA 低音TI 中音DO 中音RE 中音MI 中间FA 中音SO 中音LA 中音TI 高音DO 高音RE 高音MI 高音FA 高音SO 不发音 1 2 3 4 5 6 7 8 9 A B C D E F 0 64260 64460 64524 64580 64684 64777 64820 64898 64968 65030 65058 65110 65157 65178 65217 “祝你平安”音乐。(光盘中还附带TH9_MUSIC1.ASM)

6.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。(ISP烧录器的使用查看附录二)

四、实验参考程序(见光盘中的程序文件夹) 五、思考题

试用汇编语言编一首歌。 六、电路图

SP-VCCU2C3E3C621220uF2VCCVOUT5-INGAIN1RW1CR6CSPEAKSP+37+INE2C10K101BYPASS10uF2E1C10uF4GNDGAIN8C2CR5C10pFLM38610k音频驱动

22

实验十 定时器实验

一、实验目的

1.学习80C51内部计数器的使用和编程方法 2.进一步掌握中断处理程序的编写方法 二、实验说明

关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷12MHz=1uS (256-定时常数)31uS=100uS

定时常数=156。然后对100uS中断次数计数10000次,就是1秒钟。

在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 三、实验内容及步骤

本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。

1.使用单片机最小应用系统模块,用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。

2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH10_定时器.ASM”源程序,编译无误后。

4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。

5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二) 四、实验框图以及源程序(见光盘中的程序文件夹)

1.流程图

23

五、思考题

主程序框图 等待中断 输出状态位 恢中断允许 设置秒计数值 设置初始状态位 设置定时常数 置T1中断工作方式 开始 定时中断入保护现场 秒计数值减1 否 是否到一秒 是 重新设置秒计数值 状态位取反 复现场 中断返回 定时中断子程序框图

1.如何将LED的状态间隔改为2秒,程序如何改写?

2.如果更换不同频率的晶振,会出现什么现象?如何调整程序? 六、电路图

C3A33pFXTAL1A12MHzC2A33pFR1F1KR2F100C3F10uFVCCRESETVCCLED1510P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7123456789RXDTXDP3.2P3.3P3.4P3.5P3.6P3.71011121314151617181920U1FP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSS89C51VCCP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0EAALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0VCC4039P0.738P0.637P0.536P0.435P0.334P0.233P0.132P0.03130292827262524232221EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.024


单片机THMEMU-1实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初中历史北师大版《七年级上》《第二单元 国家的产生和社会变革

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: