单片机音频发生器程序设计

合集下载

音乐发生器的设计与实现

音乐发生器的设计与实现

实验课程名称:监测控制系统应用实验五实验项目名称:音乐发生器的设计与实现实验成绩:实验者:专业班级:电信130 班同组者:实验日期:周四3~4节课一.实验内容掌握单片机片内定时器应用设计技巧,会确定定时器的时间常数,能够进行定时器的初始化编程。

掌握利用微处理器设计音乐发生器的方法二.探究内容1.利用定时器产生特定的频率信号,设计一个音乐发生器,可以循环播放音乐,候选乐曲3首。

2.用按键选择播放哪一首音乐。

有音乐播放的启停键。

3.用8个LED灯随节拍闪烁(选做)4.扩展内容(选做),用7个按键分别产生音阶1、2、3、4、5、6、7,按一下键,即产生一个节拍的相应音符,也就是设计电子琴。

三.实验设计:1.设计要求具体任务:(1)设计一个音乐发生器,候选音乐有三种,K1可启动停止音乐,K2用于选择音乐段;(2)用proteous仿真电路,保证设计的正确性;(3)基于开发板完成实物制作。

2. 探究内容:(1)如何利用音阶计算定时器的时间常数?(2)音乐声音的洪亮稳定如何保证?(3)节拍如何实现?三、实验设计:1.设计音乐发生器的基本任务的基本任务:(1)研究产生音阶1、2、3、4、5、6、7的方法,计算7个音阶对应的时间常数 (2)设计产生单首乐曲循环的软件,调试后下载到开发板(3) 设计产生3首乐曲的音乐发生器,用按键选择循环的单曲,调试后下载到开发板,运行。

2.相关知识介绍2.3 音阶对应频率计数初值的计算单片机的振荡频率为f osc =12MHz ,通过定时器T0溢出后对P3.0口取反产生方波,故定时器溢出时间为1/2f 。

由:nosc n f f X ⨯=⨯-2112)2(16 , 则定时初值为:16224osc n n f X f =- 以音阶“1”为例:f =523 Hz ,则T =1/f定时初值:6161612102264580442424523osc n n f X FC Hf ⨯=-=-==⨯用同一方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查表向定时器T0装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。

单片机的音乐发生器设计开题报告

单片机的音乐发生器设计开题报告
[2]李强.51系列单片机应用软件编程技术.北京航空航天大学,2009.4
[3]周向红.51系列单片机应用与实践教程.北京航空航天大学,2008.5
[4]王晓君.MCS—51 及兼容单片机原理与选型.电子工业出版社,2003.11
[5]王义方.刘慧银微型计算机原理及应用-MCS-51系列单片机(第3版)机械工业出版社
系(院)审核意见:
审核人签字:年月日
说明:1、该表每生一份,系(院)妥善存档;
2、课题来源填:“自选”或“教师指定”或“其它”,课题类型填:“理论研究”或“应用研究”或“技术开发”或“实验设计”或“其它”。
5.08-5.15 完成论文拟写和相关修改工作;
5.16-5.19 论文递交指导教师自审,听取指导教师相关意见,完善毕业论文;
5.20-5.25 论文外审,根据评阅老师意见修改和完善;
5.26进行毕业设计答辩。
六、主要参考文献
1、参考文献目录
[1]苏凯.MCS-51系列单片机系统原理与设计.冶金工业出版社,2003.1
2.课题研究的主要目的及意义
进一步学习单片机的硬件、软件基本原理理论及系统扩展方面的一些基础知识:熟悉51汇编语言和51C语言的学习,熟悉51汇编语言和51C的开发环境,培养单片机开发能力。掌握51C的开发技能,对以后的发展和就业都会有很大帮助。
为人们生活的研究现况和发展趋向)
[10]田里,田青.51单片机C语言程序设计快速入门。北京:人民邮电出版社,2007.7
[11]odd D.Morton著,严隽永译. 嵌入式微控制器.北京:机械工业出版社 ,2005年9月
[12]王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002年8月
[13]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.

基于单片机的音乐发声器的设计(完整版,含程序和电路图)

基于单片机的音乐发声器的设计(完整版,含程序和电路图)

电子技能课程设计报告书课题名称 音乐发生器的设计姓 名 学 号 091250241 院 系 通信与电子工程学院 专 业 电子科学与技术指导教师2012年 6 月4日※※※※※※※※※ ※※ ※※ ※※ ※※※※※※※※※2009级学生电子技能课程设计一、设计任务及要求:本设计采用AT89C51制作简单音乐发生器,通过开关1控制蜂鸣器播放设计的音乐程序,再次按下开关1可切换歌曲,共两首歌曲。

通过开关2控制电路进入花样灯模式,再次按下开关2可切换LED灯闪烁样式,共三种闪烁样式指导教师签名:2012年 6 月 4 日二、指导教师评语:指导教师签名:2012年 6 月4 日三、成绩验收盖章2012年 6 月4 日目录音乐发生器的设计 (1)1 设计目的 (1)2 设计的主要内容和要求 (1)3 整体设计方案 (1)4 硬件电路的设计 (2)4.1 系统总电路及信号流程 (3)4.2 LED显示电路的设计 (3)4.3 时钟振荡电路的设计 (3)5 软件设计 (3)5.1音调、节拍以及编码的确定 (3)5.2 主要程序设计 (4)6 系统仿真 (6)6.1 系统仿真环境及参数设置 (6)6.2系统仿真结果及其分析 (7)6.2.1系统仿真图 (7)6.2.2 花样灯3种花样图 (7)7 使用说明 (9)8 设计总结 (9)参考文献 (10)附件A (11)音乐发生器的设计李熙(湖南城市学院通信与电子工程学院电子科学与技术专业,益阳,413000)1 设计目的本设计是以AT89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。

用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。

对于不同型号的单片机只需要相应的改变一下地址即可。

该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。

单片机实现简单音乐发生器

单片机实现简单音乐发生器
break;
case 0x14:// 3行1列
k = 8;
break;
case 0x24:// 3行2列
k = 9;
break;
case 0x44:// 3行3列
k = 10;
break;
case0x84:// 3行4列
k = 11;
break;
case 0x18:// 3行4%256;
TR0 = 1;//开始计数
P1 = 0xf0;//发全0行扫描码
while ((P1&0xf0)!=0xf0)//若没有松开按键
{
P1 = 0xf0;
}
TR1 = 0;//若按键松开,则停止计数,不产生脉冲输出
}
}
}
}
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
if ((P1&0xf0)!=0xf0)//延时后再判断一次,去除抖动影响
{
key = getkey();//调用键盘扫描函数
//根据获取的按键位置得到k值
switch(key)
{
case 0x11://1行1列
k = 0;
break;
case 0x21://1行2列
k = 1;
break;
case 0x41:// 1行3列
k = 2;
break;
case 0x81:// 1行4列
k = 3;
break;
case 0x12:// 2行1列
k = 4;
break;
case0x22:// 2行2列
k = 5;
break;
case 0x42:// 2行3列
k = 6;
break;

简单音乐发生器

简单音乐发生器

简单音乐发生器单片机实训设计(论文)题目:简单音乐发生器系别电子信息工程专业班级 07电信2班学生姓名谢霭谦指导教师朱俊杰黄金杨提交日期 2010-12-14目录1 设计任务与要求 (1)2设计方案 (1)2.1 音乐相关知识 (1)2.2如何用单片机产生音频脉冲 (2)2.3如何用单片机实现音乐的节拍 (3)2.4音频功放 (4)3 硬件设计 (4)3.1结构框图 (4)3.2主要器件 (5)3.3 电路原理图及说明 (6)4 软件设计 (6)5 小结 (13)..................................................................................单片机实现简单音乐发生器1 设计任务与要求本设计将实现一种由单片机控制的简单音乐发生器,它具有16个音的键盘,我们可以根据乐谱在键盘上进行演奏,通过扬声器将音乐播放出来。

本次课程设计的任务是,设计一种由单片机控制的简单音乐发生器,要求键盘有16个键,能过用51单片机C语言编写程序来实现音乐发生器的发音。

要求:1.设计思路切明确;2.对各个芯片的功能要有所了解;3.对设计中的各个电路图能够要有所说明。

4.对设计的、中的源程序要有所注释。

5.在按音乐发生器的16个键的同时能够听到不同的音乐。

2设计方案进行本设计的设计之前,首先需要了解音乐的一些相关知识。

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

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

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

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

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

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

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

基于51单片机的音乐发生器的设计

基于51单片机的音乐发生器的设计
根据对应 的音符 , 定时/ 计数器 的初值为 : T H O =( 6 5 5 3 6一 计数次数) / 2 5 6 ;
收 稿 日期 : 2 0 1 4一o 2—1 2
基金项 目: 国家 自然科 学基金 ( 6 0 3 7 5 0 1 0) ; 安徽 省教育厅 自然科学 研究项 目 ( K J 2 0 1 2 Z 3 8 9 ) 。 作者简介 : 柴泉( 1 9 8 9一) , 男, 安徽 省合肥市人 , 在读硕士研究生 , 主要从事软件开发研究 。
c h i p a n d a a u d i o a m p l i f i e r( L M 3 8 6 ) , a n d i t a l s o p r o v i d e s c o r r e s p o n d i n g h a r d w a r e he t o r y s c h e me a n d s o f t w a r e
Ab s t r a c t : T h i s a r t i c l e i n t r o d u c e s a s y s t e m d e s i g n me t h o d . w h i c h i s t o r e a l i z e mu s i c p l a y e d b y MCS一5 1 mi c r o :
C H A I Q u a n , L I Y u e —b a n ’
( 1 . S c h o o l o f S o f t w a r e E n g i n e e r i n g o f U S T C, S u z h o u 2 1 5 1 2 3 , C h i n a ;
中表示音高关 系的最 小计量单位 , 两个半音 构成一个全音 。音符是乐谱 表上 用来表示 音的长短 的符号 , 不 同

单片机音乐发生器的制作

单片机音乐发生器的制作邢台职业技术学院毕业论文第1章绪论通过音乐发音器的设计方案,掌握了汇编语言的编程方法,并熟练的运用89C51单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,按下单键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律,可以扩充其功能如下:1、可设计多个按键操作来选择演奏哪一首歌曲。

2、以随即数方式自动演奏歌曲。

3、设计程序可以以按键来实现前进和后退。

4、修改程序可以演奏伴奏音,或是如手机上播放的和谐铃声。

第1 页共18 页邢台职业技术学院毕业论文第2章单片机概述一台能够工作的计算机要有这样几个部分构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)输入/输出设备(例如:串行口、并行输出口等)。

在个人计算机上这些部分被分成若干块芯片,安装一个称之为主板的印刷线路板上。

而在单片机中,这些部分全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上诉部分外,还集成了其它部分如A/D,D/A等。

单片机的体积也不大,一般用40脚封装,当然功能多一些的单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只有8只引脚。

MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减改变而来的,所以人们习惯于用8501来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。

INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机。

当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。

北邮 单片机 音乐发生器 程序

CALL ENABLE1
BSF PORTE,RS
MOVLW 55H
MOVWF PORTD
CALL ENABLE1
BSF PORTE,RS
MOVLW 53H
GOTO P11
GOTO P12
GOTO P13
GOTO P14
NOP
P1
MOVLW .131
MOVWF M1
MOVLW .136
MOVWF M2
M2 EQU 23H
COUNT EQU 26H
DATA1 EQU 50H
DATA2 EQU 51H
VALUE EQU 52H
TABLE EQU 40H
RXDATA EQU 53H
MOVWF TRISD
BCF STATUS,5
MOVLW 01H
MOVWF PORTD ;清屏
CALL ENABLE
MOVLW 4DH
MOVWF PORTD
MOVWF TRISC
BCF STATUS,RP0
MOVLW 0DBH ;0
MOVWF 40H
MOVLW 77H ;1
MOVWF 41H
MOVLW 7BH ;2
BSF STATUS,5
MOVLW 000H
MOVWF TRISD
BCF STATUS,5
MOVLW 01H
MOVWF PORTD ;清屏
PORTB EQU 6H
OPTION_REG EQU 81H
RBUP EQU 7
OPTION_REG EQU 81H
OPTION_TEMP EQU 0A6H

单片机音频发生器程序设计

实验三单片机音频发生器程序设计实验目的1、进一步掌握单片机定时器的用法。

2、了解用单片机的IO口输出方波的方法。

3、理解用单片机产生简单音频的方法。

实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、单片机IO口产生音频脉冲的原理我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若通过程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

喇叭驱动电路如图4-13所示。

图4-13 喇叭驱动电路例如,要产生中音1。

从下表可知,中音1的频率为523Hz,周期T=1/523=1912μs,其半周期为1912/2=956μs,因此只要在SPEAKER接口上产生半周期为956μs的方波,即可听到持续的1音。

C调部分音符频率与计数初值的对应表如下:表4-1 C调部分音符频率、计数初值与设置简谱码的对应关系注:上表定时器工作于模式12、音乐节拍的生成要唱出一首歌,只产生出音频脉冲还不够,还要考虑发出音频时间的长短(即节拍)。

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

我们也可以设1/8拍为1个延迟单位时间,则1拍应该是8个延迟单位时间,以此类推,所以,只要求得1/8拍的DELAY时间,其余的节拍就是它的倍数。

详见下表表4-2 节拍与节拍码对照表3、由前面的分析可知,音符频率有14种,节拍有10种,我们定义每个音节占用一个字节,字节的低4位代表音符的频率,高4位表示该音符的节拍。

定义一个音符频率表、一个音符节拍表。

程序首先读取一个音节,并从音符频率表和节拍表中读取音符频率所对应的定时器初始和节拍对应的延时参数。

利用单片机内部定时器0、1分别产生频率和节拍。

定时器0的初始值由音符的频率决定,定时器1的初始值是50ms对应的值。

每当一个音符输出完成就取出下一个音符,直到取出的是0FFH。

单片机播放音乐的编程方法网络整理版

我将阐述播放音乐的软件编程方法。

原理:1’要让单片机控制扬声器发出音调只要计算出某一音频的频率,进而计算出周期,然后将这一周期除以二,即为半周期的时间。

利用定时器计数这半个周期。

每当计数到这个时间就将输出I/O口取反,重复这个步骤就可以得到这个音调的脉冲。

2’利用80C51扥内部定时器使用其工作在计数器模式MODE1下,改变计数值TH0,及TL0易产生不同频率的方法。

例如长生频率为532HZ的脉冲,其周期为T=1/523=1912us。

因此只要计数器计数956/1us=956。

在每次计数956次后将I/O口取反,就可得到中音DO(523HZ)。

计数脉冲值与频率的关系公式如下:N=Fi÷2÷Fr N:计算值Fi:内部计数时一次计数为1us,故其频率为1MHZ.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=650594’ C调各音符频率与计数值T的对照表如下所示.在音乐中所谓音调其实就是我们所说的音高,在音乐中我们常把C 调上方的A作为标准音调,其频率等于440HZ。

当两个声音信号的频率相差一倍是也即f1=2f2,则称相差一个倍频程,在音乐中低音1和中音1,低和中2正好相差一个倍频程在音乐上称他们相差一个八度音,一个八音度有12个伴音,即为1-#1,#1-2,2-#2,#2-3,3-4,4-#4,#4-5,5-#5,#5-6,6-#6,#6-7,7-i.如果我们知道了这十二个基本音调的频率,我们就可以根据倍频程的关系得到其他调。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图4-13喇叭驱动电路
例如,要产生中音1。从下表可知,中音1的频率为523Hz,周期T=1/523=1912μs,其半周期为1912/2=956μs,因此只要在SPEAKER接口上产生半周期为956μs的方波,即可听到持续的1音。C调部分音符频率与计数初值的对应表如下:
表4-1 C调部分音符频率、计数初值与设置简谱码的对应关系
i=0;
这些语句也要占用时间。
2、如何产生占空比可调的方波?
答:void keyscan() interrupt 0 //外部中断0
{float TF0,TZ1;
EX0=0; //关中断
delay(10); //延时消抖
if(P1 !=0x0f) //判断是否有键按下
{ if(KEY1==0) freq+=100; //按键为1号,频率加100
if(KEY2==0) freq+=10; //按键为2号,频率加10
if(freq>500) freq=50; //频率大于500Hz,重新赋50Hz
if( KEY3==0) zkb+=10; //按键为3号,占空比加10
if( KEY4==0) zkb++ ; //按键为4号,占空比加1
if(zkb>99) zkb=1; //占空比大于99,重新赋值为1
bit flag;
void init()
{
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
}
void main()
{
init();
while(1)
{
TH0=chuzhi[gepu[i]]/256;
TL0=chuzhi[gepu[i]]%256;
times=jiepai[i];
flag=0;
TR0=1;
64820,64898,64968,65030,65058,65110,65157,65178,65217};//各个音调的初始值
uint8 code jiepai[]={4,8,1,2,14,10,20,24,8,1,2,4,2,1,2,8,24,16,4,6,6,2};//节拍
uint8 times,i;
typedef unsigned int uint16;
typedef unsigned char uint8;
sbit laba=P1^2;
uint8 code gepu[]={5,3,7,5,5,4,3,2,8,2,2,4,5,6,2,4,1,1,1,2,3,5};//歌谱
uint16 code chuzhi[]={64400,64524,64580,64684,64777,
TF0=(65536-fosc/(12.0*freq)); //频率定时初值
TZ1=(65536-(fosc*zkb)/(12.0*100*freq)); //占空比定时初值
TIMER0_H=(uint)TF0/256; //计算定时器0和定时器1的初值
TIMER0_L=(uint)TF0%256;
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
times--;
if(times==0)
{
flag=1;
TR1=0;
}
思考题
1、根据实验内容1,说明输出频率与理论有什么差别?
答:频率会比理论大,因为delay(1000);
TR0=0;
beef=1;
i++;
if(i==5)
表4-2 节拍与节拍码对照表
节拍数
1/8拍
1/4拍
2/4拍
3/4拍
1拍
延迟数
1
2
4
6
8
时间
0.05秒
0.1秒
0.2秒
0.3秒
0.4秒
节拍数
1又1/4拍
1又1/2拍
2拍
2又1/2拍
3拍
延迟数
10
14
16
20
24
时间
0.5秒
0.6秒
0.8秒
1秒
1.2秒
3、简谱发生器程序设计
由前面的分析可知,音符频率有14种,节拍有10种,我们定义每个音节占用一个字节,字节的低4位代表音符的频率,高4位表示该音符的节拍。定义一个音符频率表、一个音符节拍表。程序首先读取一个音节,并从音符频率表和节拍表中读取音符频率所对应的定时器初始和节拍对应的延时参数。利用单片机内部定时器0、1分别产生频率和节拍。定时器0的初始值由音符的频率决定,定时器1的初始值是50ms对应的值。每当一个音符输出完成就取出下一个音符,直到取出的是0FFH。代表所有音符全部输出完成。程序停止或重新开始。程序流程图如图4-14所示。
TR1=1;
while(flag==0);
i++;
if(i==22)
i=0;
}
}
void timer0() interrupt 1
{
TH0=chuzhi[gepu[i]]/256;
TL0=chuzhi[gepu[i]]%256;
if(flag==1)
TR0=0;
else
laba=~laba;
}
void timer1() interrupt 3
EA=1;
ET0=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();
beef=1;
while(1)
{
TH0=table[i]/256;
TL0=table[i]%256;
TR0=1;
TIMER1_H=(uint)TZ1/256;
TIMER1_L=(uint)TZ1%256;
}
P1=0x0f; //给键盘扫描口赋初值
EX0=1; //开中断
}
3、用STC单片机的可编程时钟模块如何实现上述功能,请分析并写出程序。
心得体会:
通过这次实验,认识到单片机功能的强大性,不仅有控制功能,显示功能等,还能控制蜂鸣器的发声。通过本次试验,了解到音调和节拍都可以通过控制频率来实现的,这次实验自己受益匪浅。
delay(1000);
TR0=0;
beef=1;
i++;
if(i==5)
i=0;
}
}
void time0() interrupt 1
{
TH0=table[i]/256;
TL0=table[i]%256;
beef=~beef;
}
程序二:
include<reg51.h>
#include<intrins.h>
音符
1
2
3
4
5
频率Hz
440
494
523
578
659
698
784
初值T
64400
64524
80
64684
64777
64820
64898
简谱码
2
3
4
5
6
7
8
音符
6
7
频率Hz
880
988
1046
1175
1318
1397
1568
初值T
64968
65030
65058
65110
65157
65178
65217
实验三
实验目的
1、进一步掌握单片机定时器的用法。
2、了解用单片机的IO口输出方波的方法。
3、理解用单片机产生简单音频的方法。
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
1、单片机IO口产生音频脉冲的原理
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若通过程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。喇叭驱动电路如图4-13所示。
#define uint unsigned int
sbit beef=P1^2;
uint code table[]={65036,65286,65436,65486,65258};//1KHz,2KHz,5KHz,10KHz,1.8KH
uint i;的初值
void init()
{
TMOD=0x01;
简谱码
9
A
B
C
D
E
F
注:上表定时器工作于模式1
2、音乐节拍的生成
要唱出一首歌,只产生出音频脉冲还不够,还要考虑发出音频时间的长短(即节拍)。如果一拍为0.4秒,则1/4拍是0.1秒,只要设定延迟时间就可获得节拍的时间。我们也可以设1/8拍为1个延迟单位时间,则1拍应该是8个延迟单位时间,以此类推,所以,只要求得1/8拍的DELAY时间,其余的节拍就是它的倍数。详见下表
图4-14音频发生器程序流程图
实验内容
1、在单片机P1.2口产生下列频率方波
1KHz,2KHz,5KHz,10KHz,学号后两位*100
2、在P1.2口产生简谱对应频率方波(简谱频率如上文)
3、在P1.2口播放简谱音乐。
程序一:
#include "reg52.h"
#define uchar unsigned char
相关文档
最新文档