当前位置:文档之家› 用8051单片机定时器产生乐谱的各种频率方波

用8051单片机定时器产生乐谱的各种频率方波

电子科技大学微机单片机接口设计报告指导老师:学生:学号:电子科技大学机电工程学院2009年5月单片机最小应用系统设计报告一、设计题目 (1)二、设计目的 (1)三、系统硬件图 (2)3.1 电路设计原理图 (2)3.2 电路设计PCB图 (4)四、程序流程图 (6)五、系统说明与分析 (9)5.1设计思路及设计过程 (9)5.2系统结构及各部分说明 (9)5.3系统连线说明 (16)5.4系统参数分析 (17)六、源程序 (17)七、总结 (25)八、参考文献 (26)一、设计题目用8051单片机定时器产生乐谱的各种频率方波,要求信号经过放大后由喇叭发出声音。

可选取某段音乐令单片机连续播放。

二、设计目的1、通过单片机最小系统的设计,了解常用单片机应用系统开发手段和过程,进一步熟悉和掌握单片机的结构和工作原理,并能初步掌握一般单片机控制系统的编程和应用,从而进一步加深对单片机理论知识的理解。

2、掌握单片机内部功能模块的应用:如定时器、计数器、中断系统、I/O口等。

3、熟悉基本硬件电路的设计与制作。

4、掌握以单片机核心的电路设计的基本方法和技术,了解单片机的基本外围电路的设计和矩阵按键电路及数码管驱动电路的设计。

5、学习UVISION对单片机的编程和调试方法。

6、学习PROTEL软件的使用,掌PROTEL的基本用法,懂得绘制简单得原理图及其PCB的绘制。

7、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

三、系统硬件图3.1 电路设计原理图整个设计主要包括单片机基本的晶振电路,按键复位电路。

具体的电路图如下图所示:对于不同的电路模块进行了分别画图:下图是最小系统模块。

功放模块:四乘四键盘模块:图1 电路原理图3.2 电路设计PCB图本次小系统的设计要求设计的电路板实单面板,因为设计中电路板较小,二元器件的数目较多,尤其是矩阵按键部分需要的连线较多,所以本次设计的PCB 板中夹杂着几根跳线。

PCB的生成,主要是在绘制好电路原理图之后,定义各个元器件的封装形式,生成网络表之后,在新建的PCB中导入网络表,即可一自动生成PCB。

根据元器件之间的飞线,设置各个参数之后手动布线。

本次设计的PCB图如图2所示。

图2 电路PCB图四、程序流程图键盘扫描程序:4X4行列式键盘识别;音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低2 RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65283下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。

在这个程序中用到了两个定时/计数器来完成的。

其中T0用来产生音符频率,T1用来产生音拍。

图3 程序流程图五、系统说明与分析5.1设计思路及设计过程设计的主要思想:矩阵式按键识别系统,为了节省单片机的I/O口,我们采用了一种“行扫描法”。

单片机的P3口用作键盘I/O口,键盘的列线接到P3口的低4位,键盘的行线接到P3口的高4位。

列线P3.0-P3.3分别接有4个上拉电阻到正电源+5V,并把列线P3.0-P3.3设置为输入线,行线P3.4-P3.7设置为输出线。

4根行线和4根列线形成16个相交点。

按不同位置的按键的时候,在数码管上显示相应的键值。

显示部分使用数码管显示键值,单片机的P0口作为数码管的驱动口。

还包括单片机的基本外围电路,晶振电路和按键复位电路。

系统机构如图4所示。

图4系统结构图软件设计主要是通过UVISION软件使用C 语言进行编程。

设计过程:1、设计相应的电路原理图,编写C语言程序;2、在实验箱上进行程序调试;3、程序通过调试后,使用绘图软件PROTEL99,绘制相应的原理图,进行元器件封装后,生成相应的PCB 图,对其进行布局整理和单面板布线;4、打印PCB图,印制在电路板上,放入氯化铁溶液中进行腐蚀;5、腐蚀电路板之后进行元器件的焊接工作,焊接相应的电源线;6、通过试验箱和下载软件,将程序烧如到单片机中;7、进行最终的软、硬件的调试,直至完成相应的功能。

5.2系统结构及各部分说明本次设计的单片机最小系统包括:单片机AT89S51部分,矩阵按键识别部分,数码管显示部分以及软件设计部分。

下面就针对个法儿部分的特点进行简要的说明。

1、单片机部分(1)AT89S51介绍AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。

它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL 公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

图5 A T89S51引脚图AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

AT89S51有两种节电运行模式:空闲模式和掉电模式。

①空闲模式在空闲模式下,CPU处于睡眠状态,振荡器和所有片内外围电路仍然有效。

空闲模式可由软件设置进入(设IDL=1)。

在这种模式下,片内RAM和SFR中的内容保持不变。

空闲模式可通过任何一个允许中断或硬件复位退出。

若用硬件复位方式结束空闲模式,则在片内复位控制逻辑发生作用前长达约两个机器周期时间内,器件从断点处开始执行程序。

片内硬件禁止访问内部RAM,但不禁止访问端口。

为避免采用复位方式退出空闲模式时对端口的不应有的访问,在紧随设置进入空闲指令(即设IDL=1)的后面,不能是写端口或外部RAM的指令。

②掉电模式引起掉电模式的指令是执行程序中的最后一条指令(使PD=1的指令)。

在掉电模式下,振荡器停止工作,CPU和片内所有外围部件均停止工作,但片内RAM和SFR 中的内容保留不变,直到掉电模式结束。

退出掉电模式可用硬件复位或任何一个有效的外部中断INT0和INT1。

复位可重新设置SFR中的内容,但不改变片内RAM中的内容。

在Vcc电源恢复到正常值并维持足够长的时间之后,允许振荡器恢复并达到稳定,方可进行复位,以退出掉电模式。

(2)晶振电路图6 系统晶振电路系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路(如图6所示)。

AT89S单片机内部有一个用于构成振荡器的高增益反相放大器。

引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。

外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。

对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。

因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。

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

相关主题