保捱科技网
您的当前位置:首页基于MCS—51单片机简单音乐发生器的设计

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

来源:保捱科技网


湖南工业职业技术学院

Hunan Industry Polytechnic

毕 业 实 践

类 别 毕业设计 题 目 基于MCS—51单片机简单音乐发生器的设计

系 名 称 专业及班级 学生姓名

学 号 10 指导教师 王皑 赵俊

完成日期 2009年 4月15日

湖南工业职业技术学院

毕业实践任务书

系 名 称 电气工程系 专业及班级 电信S06-4 学生姓名 毛 浩 学 号 10

毕业实践题目: 毕业设计

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

指 导 教 师(签字): 教研室主任(签字): 系 主 任(签字):

2009年1月10日

湖南工业职业技术学院/电气工程系/毕业设计

毕业实践课题及任务

该课题主要利用单片机技术,采用汇编语言或C语言编程来控制音乐发生器实现弹奏音乐的过程。其目的是培养学生利用单片机控制技术,汇编语言或C语言编程控制技术解决生产、生活中的实际问题,对提高学生的设计能力动手能力和工程实践技能有较重要的意义。学生在设计该课题时,应具备电路分析、电子技术、电子CAD技术、单片机控制技术、C语言程序设计等方面的相关知识,掌握电路设计流程图,电子元器件的选择、电路原理图的设计及连线。熟悉程序的编写,输入,修改和调试等。 课题简介 课题 任务 要求 1、 选择正确的电子元件„„„„„„„„„„„„„„„„„„„„„„ 2、 画出电气控制系统原理图及PCB板的布线设计„„„„„„„„„„„ 3、 用C语言或汇编语言编写出系统控制程序„„„„„„„„„„„„„ 4、 系统的安装与调试„„„„„„„„„„„„„„„„„„„„„„„ 进程安排 第3周:根据课题要求,查阅相关理论书籍,设计参考书及相关资料,进一步加深对课题的理解和认识。 第4周:根据控制要求,设计控制电路状态流程图,设计系统控制程序,设计系统电气控制原理图。 第5周:选择电子电器元件。 第6周:开始组装电路,上机开始调试控制程序。 第7周:调试 ,修改,完善设计,撰写毕业设计说明书。 第8周:设计资料的修改、整理、完善。毕业设计答辩。 毕业实习(第1周—第2周) 地点:湘计算机厂、湖南机床厂、长沙电机厂、曙光电子厂、长沙水泵厂或自找实习单位 实习内容及要求:了解企业现状及发展趋势,熟悉生产、装配及加工工艺流程,了解企业的新技术、新工艺的应用情况,调查了解企业对专业技术人员人才需求情况及人才特点,写出实习报告(5000字以上) 参考资料 1、徐仁贵、廖哲智主编《单片微型计算机应用技术》 北京:机械工业出版社2003 2、刘仁宇、施伟主编.《模拟电子技术》 北京:机械工业出版社1998 3、卢庆林主编 《数字电子技术》 北京:机械工业出版社2005 4、龙志文主编 《电力电子技术》 北京:机械工业出版社2005 5、邱丽芳主编 《单片机原理与应用》 人民邮电出版社2007 6、王廷才主编 《电子线路CAD Protel99使用指南》 机械工业出版社2006 7、林志琦主编 《基于Proteus的单片机可视化软硬件仿真[M]》 北京航天航空大学出版2006 8、徐仁贵主编 《单片微型计算机应用技术[M]》 北京:机械工业出版社2000 9、戴佳 戴卫恒主编《51单片机C语言应用程序设计实例精讲[M]》 北京:电子工业出版社2007 I

湖南工业职业技术学院/电气工程系/毕业设计

湖南工业职业技术学院毕业实践开题报告书

电气工程 系 电子信息工程 专业 学生姓名 毛浩 班级 电信S06-4 学号 10 课题名称 基于MSC-51单片机简单音乐发生器的设计 课题 在动手做设计之前,我们在网上查找了一些设计的思路和方法,再与之准备 关联的知识,在图书馆查阅了单片微型计算机应用技术、电力电子技术、电情况 路分析、电子线路CAD、微机原理与应用技术、等与音乐发生器有关书籍资料。 本次设计的核心器件是单片机芯片和音频功放芯片。单片机采用的是思路和Atmel公司的51单片机芯片ATC51,音频功放芯片使用的是国家半导体公方法 司的LM386,键盘使用4ⅹ4布局,用户可通过键盘上对应的音符键弹奏乐曲,编程语言使用C语言。 拟重点解决的课程设计中重点需要解决的有控制电路状态流程图的设计、汇编系统控问题 制程序、电气控制系统原理图设计、上机调试控制程序。 该设计我们准备用八个星期完成,前三周用来查阅相关理论书籍,设计计 参考书,进一步加深对课题的理解和认识,再拟好整体设计方法与思路。第划 四周根据控制要求,设计控制电路状态流程图,设计系统控制程序,设计系进 统电气控制原理图。第五到七周用C语言编写号系统运行的控制程序,选择度 电子电器原件,设计电路,上机开始调试控制程序,第八周设计资料的修改、整理、完善。撰写毕业设计说明书。 指导教 师意见 签名: 年 月 日 II

湖南工业职业技术学院/电气工程系/毕业设计

湖南工业职业技术学院毕业实践考核表

电气工程 系 电子信息工程 专业 学生姓名 毛浩 班级 电信S06-4 学号 10 课题名称 基于MSC-51单片机简单音乐发生器的设计 课题 经过查找资料对音乐发生器的工作原理有了一定的了解与认识,在设计完成 的过程中也遇到过不少问题,但是本着“世上无难事,只怕有心人”的心态,情况及同时在指导老师的指导、同学之间的相互讨论下,最终按计划进度完成了课自我评题。通过设计使我对以前所学的知识进行了一次系统的整合与掌握,对系统价 的设计、产品的工艺流程也有了更进一步的了解认识。 评语 评分 指导教 师评价 (共40分) 签名: 年 月 日 评语 评分 评阅教 师评价 (共30分) 签名: 年 月 日 评语 评分 答辩小 组评价 (共30分) 组长签名: 年 月 日 经综合考核该学生毕业实践得分 分,评定为 毕业实 践评审 组审核 组长签名: 年 月 日 III

湖南工业职业技术学院/电气工程系/毕业设计

摘 要

本文是应用MCS-51单片机原理和控制理论设计音乐发生器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。

首先在绪论中介绍了本课题的课题背景、研究意义及完成的功能。本系统是以单片机的基本语言C语言来进行软件设计。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,并介绍了单片机微处理器的发展史,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程。其次阐述了程序的流程和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。

最后对我所开发的用单片机实现音乐发生器的设计思想作了详细的论述。

关键词:单片机,音乐,C语言,ATC51,LM386

IV

湖南工业职业技术学院/电气工程系/毕业设计

目 录

第一章 前言 .............................................................................................................................................. 1

1.1 单片机技术的特点及应用 ........................................................................................................ 1

1.1.1 单片机的特点 ............................................................................................................................ 1 1.1.2 单片机的应用 ............................................................................................................................ 1

1.2 单片机实现音乐发生器的意义 ............................................................................................... 2

第二章 系统总体分析 ......................................................................................................................... 3

2.1 2.2 2.3 2.4 2.5

音乐的基本知识........................................................................................................................... 3 单片机产生音频脉冲 ................................................................................................................. 3 单片机实现音乐节拍 ................................................................................................................. 5 建立音乐的步骤........................................................................................................................... 6 音频功放 ........................................................................................................................................ 6

第三章 硬件电路的设计 ................................................................................................................... 7

3.1 结构框图 ........................................................................................................................................ 7 3.2 主要器件 ........................................................................................................................................ 7

3.3.1 LM386 ......................................................................................................................................... 7 3.3.2 ATC51 .................................................................................................................................... 8

3.3 电路原理图及说明 .....................................................................................................................11

第四章 系统主要程序的设计 ....................................................................................................... 13

4.1 程序语言的选择......................................................................................................................... 13 4.2 C语言程序设计 .......................................................................................................................... 13

第五章 调试与检测 ............................................................................................................................ 21

5.1 硬件的焊接 .................................................................................................................................. 21 5.2 硬件的调试机器故障排除 ...................................................................................................... 22

总 结 ............................................................................................................................................................ 24 致 谢 ............................................................................................................................................................ 25 参考文献 ...................................................................................................................................................... 26

V

湖南工业职业技术学院/电气工程系/毕业设计

第一章 前言

1.1 单片机技术的特点及应用

随着大规模和超大规模集成电路技术的发展和计算机微型化的需要,将微型计算机的基本部件:处理器(CPU)、存储器、输入/输出(I/O)接口、定时器/计数器等多种资源集成在一个半导体芯片上,使得一块集成电力芯片就能构成一个完整的微型计算机。这种集成电路芯片被称为单片微型计算机(Single Chip Microcomuper),简称单片机。单片机在结构设计上,他的软、硬件系统及I/O接口控制能力等方面都有独到之处,具有较强而有效的功能。从其组成、逻辑功能上来看,单片机具备了微型计算机系统的基本部件。

目前,8位高档机和16位机在单片机应用中占主导地位,产品众多,已有几十个系列、几百个型号,除了通用单片机以外,集成更多资源,如A/D转换器、D/A转换器、“看门狗”(Watchdog)电路、LCD控制器、网路控制模块等,将单片机嵌入式系统和Intenet连接起来已是一种趋势。还有专用单片机产品,如专门用于数据处理(图像和语言处理等)的单片机。总之,单片机正在向微型化、低功耗、高速、集成、高集成度、多资源、网络化、专用型方向发展。

1.1.1 单片机的特点

单片机在一块芯片上集成了一台微型计算机所需要的基本部件。它在硬件结构、指令功能等方面均有独到之处,其特点如下:

性价比高。单片机性能稳定,功能强大,价格便宜。

体积小,集成度高、可靠性高。单片机将一台计算机所需要的基本部件集成在一块芯片上,减少了各部件间的连线,能大大地提高运行速度和抗干扰能力。

控制功能强。为了,满足工业控制的需要,单片机有很强的位处理功能。在其他的逻辑控制功能等方面,也都优于一般的8位微处理。

单片机系统配置灵活、方便。由于单片机带有一定数量的接口电路,容易构成各种规模的应用系统。

单片机类型多。单从ROM类型来说,单片机的只读存储器有ROM、EPROM、EEPROM、Flash Memory等多种,可以根据实际需要进行选择。

1.1.2 单片机的应用

由于单片机具有如上所述的特点,因此在工业生产、日常生活等诸多领域,得到了日益广泛的应用,单片机的主要应用领域有:工业控制,如在工业生产过程中参数(如温度、

1

湖南工业职业技术学院/电气工程系/毕业设计

压力、流量、液位等)的控制,数据处理功能于一体,如转速测试仪、噪声测试仪、振动测试仪及电子秤等。计算机网络与通信,单片机上有并行I/O接口角儿串联I/0接口,可用于通信接口,如单片机控制的自动呼叫应答系统、列车无线通信系统、遥测遥控系统等。家用电器,由于单片机体积小,控制能力强,且片内与定时器/计数器,所以广泛应用于家用设备中。如空调、洗衣机、微波炉及防盗报警等。

本设计是单片机在音乐发生器方面的应用。

1.2 单片机实现音乐发生器的意义

本设计是以ATC51芯片的电路为基础,外部加上功率放大器、放音设备,以此来实现音乐发生器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。

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

为了完成音乐发生器的设计,我将进行以下工作: 1.分析音乐实现方法,选择合适设计的芯片。

2.进行硬件电路的设计,绘制音乐发生器电路原理图。 3.进行软件设计,设计程序代码。 4.调试硬件和软件电路,验证整个设计。

2

湖南工业职业技术学院/电气工程系/毕业设计

第二章 系统总体分析

2.1 音乐的基本知识

在人类还没有产生语言时,就已经知道利用声音的高低、强弱等来表达自己的思想和感情。声带、琴弦等物体振动时会发出声波,声波通过空气传播入人耳,人民就听到了声音。声音有噪音和乐音之分,振动有规律的声音是乐音,如人发出的歌声、有琴弦发出的琴音等,音乐中所用的声音主要是乐音。

乐音听起来有的高有的低,这就叫高音。高音是由发音物体振动频率的高低决定的,频率高的就声音高,频率低的声音低。比如男人唱歌时声带振动频率低,声音女人唱歌时声带振动频率高,所以男声比女声低。

音乐中所用乐音的范围从每秒钟振动16次的最低音到每秒钟振动4186次的最高音,大约97个。现在最大的钢琴可以演奏除其中的88个音,是乐音范围最大的乐器,人唱歌时因受生理,所能唱出的乐音只是其中的一部分。

不同的高音的乐音是用C、D、E、F、A、B来表示,这7个字母就是乐音的音名,他们依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7、相当于汉字“多来米阀梭拉西”的读音,这是唱曲时乐音的发音,所以叫唱名。把C、D、E、F、A、B这一组音的距离分成12个等分,每一个等分叫一个“半音”两个音之间的距离有两个“半音”的,就叫“全音”。在钢琴键盘乐器上,C-D、D-E、F-G、G-A、A-B两音之间隔着一个黑键,它们之间的距离就叫做全音;E-F、B-C两音之间没有黑键相隔,它们之间隔的距离就是半音。

通俗地说,那些唱成1、2、3、4、5、6、7的音叫做自然音,那些左上角加上#号的(如#4、#1)或者或者b号(如b7、b3)的叫变化音。#叫升记号,表示把音在原来的基础上升高半音;b叫降记号,表示在原来的基础上降低半音。

音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。

一首音乐是有许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。

2.2 单片机产生音频脉冲

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

3

湖南工业职业技术学院/电气工程系/毕业设计

的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。

例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系公式如下: N=Fi÷2÷Fr N:计数值;

Fi:内部计时一次为1us,故其频率为12MHz; Fr:要产生的频率; 其计数值的求法如下: T=65536-N=65536-Fi÷2÷Fr

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

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=580

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

5. C调各音符频率与计数值T的对照表如表1-1所示:

表1-1 C调各音符频率与计数值T的对照表

音符 低1DO #1DO# 低2RE #2RE# 低3M 低4FA #4FA# 低5SO #5SO# 低6LA #6 低7SI

频率(Hz) 262 277 294 311 330 349 370 392 415 440 466 494 简谱码(T值) 63628 63731 63835 63928 021 103 185 260 331 400 463 524 音符 频率(Hz) #4FA# 中5SO #5SO# 中6LA #6 中7SI 高1DO #1DO# 高2RE #2RE# 高3M 高4FA 740 784 831 880 932 988 1046 1109 1175 1245 1318 1397 简谱码(T值) 860 8 934 968 994 65030 65058 65085 65110 65134 65157 65178 4

湖南工业职业技术学院/电气工程系/毕业设计

中1DO #1DO# 中2RE #2RE# 中3M 中4FA 523 554 587 622 659 698 580 633 684 732 777 820 #4FA# 高5SO #5SO# 高6LA #6 高 1480 1568 1661 1760 1865 1967 65198 65217 65235 65252 65268 65283 2.3 单片机实现音乐节拍

除了音符以外,节拍也是音乐的关键组成部分。

节拍实际上就是因持续时间的长短,在单片机系统中可以用延时来实现。如果1/4拍的延时设为0.4秒,则一拍的延时是0.4秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的倍数。

表1-2所示的为节拍与节拍码对照。

表1-3所示的为各调1/4节拍的时间设定 各调1/4节拍的时间设定

表1-2 节拍与节拍码对照

节 拍 码 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拍 表1-3 各调1/4节拍的时间设定 各调1/4节拍的时间设定

曲 调 值 调4/4 调3/4 调2/4 DELAY 125毫秒 187毫秒 250毫秒 曲 调 值 调4/4 调3/4 调2/4 DELAY 62毫秒 94毫秒 125毫秒 1/4拍的延迟时间=187毫秒

5

湖南工业职业技术学院/电气工程系/毕业设计

DELAY: MOV R7,#02

D2: MOV R4,#187 别的延迟值,只需修改这儿的值为相应值,即可。 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2

DJNZ R5,DELAY 节拍值放在R5,决定节拍 RET

2.4 建立音乐的步骤

1)先把乐谱的音符找出,然后建立T值表的顺序。

2)把T值表建立在TABLE1,构成发音符是计数值放在“TABLE”。

3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。

2.5 音频功放

在一定频率范围内,具有固定频率的振动就能产生乐音,但是单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。

本次设计使用国家半导体公司的低压高频功率放大器LM386实现音频功放电路。LM386具有以下功能特性:

● 适合于电池工作; ● 使用外部元件少;

● 供电范围宽:4~12V或者5~18V; ● 低静态电流消耗:4mA; ● 电压增益范围:20~200V;

LM386的增益可调,它广泛应用与各种音频电路中。

6

湖南工业职业技术学院/电气工程系/毕业设计

第三章 硬件电路的设计

这次设计的硬件电路较为简单,主要由键盘、单片机、音频功放及扬声器组成。

3.1 结构框图

系统硬件的结构框图如图1-1所示:

图3-1 系统硬件结构框图

3.2 主要器件

本次设计的核心器件是单片机芯片和音频功放芯片。单片机采用的是Atmel公司的51单片机芯片ATC51,它完全可以满足本次设计的需求,而且使用方便,价格便宜,易于获取。音频功放芯片使用的是国家半导体公司的LM386。

3.3.1 LM386

LM386的引脚分布图如图2-3所示:

图3-2 LM386引脚分布图

其引脚功能说明如下:

GAIN(一脚、8脚):增益控制引脚,如果两脚悬空,则增益为20V;如果两脚之间接一个大的极性电容,则增益可达到200V;如果再和电容串一个电阻;增益可设置为20~200V之间。

-IN(2脚):负极性输入脚。在单极性输入时,此引脚接地。 +IN(3脚):正极性输入脚。在单极性输入时,此引脚接输入信号。 GND(4脚):接地端。

Vout(5脚):电压输出脚,此引脚为音频功放电路的输出。 Vs(6脚):电源脚。供电范围:4~15V或者5~18V。

7

湖南工业职业技术学院/电气工程系/毕业设计

BYPASS(7脚):旁路脚,此引脚可悬空或者旁边接一个大电容接地。

3.3.2 ATC51

如图2-6所示。

图3-3 引脚图

1、电源引脚 Vcc 40 电源端 GND 20 接地端

工作电压为5V,另有ATLV51 工作电压则是2.7-6V, 引脚功能一样。 2、.外接晶振引脚

如图2-7所示。XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选

择。电容取30PF 左右。*型号同样为ATC51 图3-4 外接晶振引脚 的芯片,在其后面还有频率编号,有12,16,20,24MHz 可选。大家在购买和选用时要注意

8

湖南工业职业技术学院/电气工程系/毕业设计

了。如ATC51 24PC 就是最高振荡频率为24MHz,40P6 封装的普通商用芯片。 3、复位 RST 9

在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后P0-P3 口均置1 引脚表现为高电平,程序计数器和特殊功能

寄存器SFR 全部清零。当复位脚由高电平变为低 图3-5 常用复位电路图 电平时,芯片为ROM 的00H 处开始运行程序。常用的复位电路如图2-8所示。 4、输入输出引脚

(1) P0 端口[P0.0-P0.7] P0 是一个8 位漏极开路型双向I/O 端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8 个TTL。对内部Flash 程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低8 位)/数据总线,访问期

间内部的上拉电阻起作用。如图2-9所示。 图3-6 P0口一位结构图 (2) P1 端口[P1.0-P1.7] P1 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash 程序存储器编程时,接收低8 位地址信息。如图2-10所示。

图3-7 P1口一位

(3) P2 端口[P2.0-P2.7] P2 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash 程序存储器编程时,接收高8 位地址和控制信息。在访问外部程序和16 位外部数据存储器时,P2 口送出高8 位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

9

湖南工业职业技术学院/电气工程系/毕业设计

(4) P3 端口[P3.0-P3.7] P2 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。除此之外P3 端口还用于一些专门功能。如图

2-11所示。 图3-8 P3口一位结构图

P1-3 端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。P3口也可作为ATC51的一些特殊功能口,如下所示:

P3口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

8051单片机的内部高128个字节为专用寄存器区,其中51子系列有21个(52子系列有26个)特殊功能寄存器(SFR),它们离散的分布在这个区中,分别用于CPU并行口、串行口、中断系统、定时/计数器等功能单元及控制和状态寄存器。8051系列单片机在物理上有四个存储空间:片内程序存储器空间和片外程序存储器空间,片内数据存储器空间和片外数据存储器空间。8051单片机内部有256字节的数据存储空间RAM和4KB的程序存储器ROM。除此外还可以在片外扩展RAM和ROM,并且各自有KB的寻址空间。KB的程序存储器ROM中,有4KB地址区对于片内ROM和片外ROM是公用的。这4KB的地址为0000H-FFFH而1000H-FFFFH地址为外部ROM专用。CPU的控制器专门提供一个控制信号EA,用来区分内部ROM和外部ROM的公用地址区:当EA接高电平时,单片机从片内的4KB存储区取出指令,当指令地址超过0FFFH后,就自动地转向片外ROM取指令;当EA接低电平时CPU只从片外ROM取指令。

程序存储器的某些单元是保留给系统使用的:0000H-0002H单元是所有执行程序的入口地址,复位后,CPU总是从0000H单元开始执行程序;0003H-002A单元均匀地分为五段,用来做五个中断服务程序的入口。

10

湖南工业职业技术学院/电气工程系/毕业设计

数据存储器RAM也有KB的寻址空间,在地址上与ROM重叠。8051通过不同的信号来选择ROM或RAM;当从外部ROM取指令时用选通信号PSEN;当从外部RAM读写数据时采用读写信号线RD或WR来选通。因此不会因地址重叠而出现混乱。对于片内RAM的低128字节(00H-7FH),还可以分为三个区。第一个区从00H-1FH安排了四组工作寄存器,每组占8个RAM字节,记为R0-R7。在某一时刻CPU只能用其中一组寄存器,工作寄存器的选择是有PSW中的两位来决定。第二个区域是可位寻址的区,占用20H-2FH共16个字节(128位),这个区域除了作一般的RAM区还可以进行位操作。第三个区域就是一般的RAM区,地址为30H-7FH共80个字节。

3.3 电路原理图及说明

单片机音乐电路原理图如图2-4所示;

图中单片机工作时钟为20Hz,其中P1口为键盘接口,P2.0为音频脉冲的输出脚。

J1VCCJ2VCC单片机音乐原理图U1123123VCCVCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROTPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7PR1R112345678680161514131211109L1L2L3L4L5L6L7L8RSTP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXDTXDP3.2P3.3P3.4P3.5P3.6P3.7XT2XT1GND12345671011121314151617181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VPDRXD/P3.0TXD/P3.1INT0/P3.2INT1P3.3T0/P3.4T1/P3.5WRP3.6RD/P3.7XTAL2XTAL1GND987654321103JP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0VCC10uF/16VC1R28.2KRSTSTCC516RD+VCCVCC1C20.1UC310UGNDXT114XTALC5C630pF30pFVSP1.06357C418247UR310K2XT2R44704GNDBYPGAINGAINC90.0047USpeakerLM386KP3.2GNDGND

图3-9 单片机音乐电路原理图

GND 11

湖南工业职业技术学院/电气工程系/毕业设计

本次设计的4ⅹ4键盘布局如图2-5所示; 用户可通过键盘上对应的音符键弹奏乐曲

3. 4. 5. 6. 7. 1 2 3 4 5 6 7 1 2 3 4

12

湖南工业职业技术学院/电气工程系/毕业设计

第四章 系统主要程序的设计

4.1 程序语言的选择

51的编程语言常用的有二种,一种是汇编语言,一种是C 语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C 语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C 语言的开发周期通常要小于汇编语言很多。

综合以上C 语言的优点,我在学习时选择了C 语言指令的执行速度快,节省存储空间。

4.2 C语言程序设计

此程序用了外中断INT0,用于换歌曲,当有键按下时,产生中断,演奏下一首歌。没有中断时,循环演奏此曲。

#include \"reg51.h\"

#define uint unsigned int #define uchar unsigned char uchar * TABLE ;

code uint TABLE1 [15]={260,400,524,580, 684,777,820,8, 968,65030,65058,65110, 65157,65178,65217};

code uchar SONG [ ]={ //1. 迟来的爱 //0 0x08,0x08, //1

0x02,0x12,0x42,0x62,0x52,0x42,0x21,11, 0x18,0x18,

0x02,0x22,0x42,0x82,0x92,0x82,0x61,0x51,0x42, 0x58,0x58,

13

湖南工业职业技术学院/电气工程系/毕业设计

//2

0x66,0x51,0x61,0x84,0x62,0x82, 0x52,0x62,0x42,0x52,0x28,

0x52,0x42,0x52,0x62,0x94,0x81,0x91,0x81,0x61, 0x1C,0x12,0x82}; code uchar SONG1 [ ]={ //2.两只蝴蝶 //0 0x08,0x08, //1 [326]

0x51,0x61,0x81,0x61, 0x94,0x8C,

0x02,0x42,0x51,0x41,0x21,0x41,0x02,0x42,0x51,0x41,0x21,0x51, 0x04,0x03,0x11,0x21,0x41,0x52,0x51,0x41,0x21,0x41, 0x62,0x82,0x02,0x62,0x62,0x52,0x62,0x82, //2

0x94,0x93,0x81,0x86,0x81,0x91, 0xB2,0xB2,0xB2,0xC2,0xC2,0xB2,0xB4,

0x04,0x02,0x82,0x71,0x61,0x51,0x61,0x51,0x41,0x21,0x41, 0x42,0x52,0x62,0x82,0x84,0x62,0x52}; code uchar SONG2 [ ]={ //3.祝你平安 //0 0x08,0x08, //1

0x62,0x82,0x81,0x62,0x81,0x88, 0x62,0x42,0x42,0x21,0x41,0x48, 0x62,0x82,0x81,0x93,0x88,0x51,0x61, //2

0x52,0x62,0x82,0x51,0x61,0x58,

0x62,0x42,0x42,0x21,0x61,0x66,0x51,0x61, 0x62,0x42,0x42,0x21,0x61,0x68};

14

湖南工业职业技术学院/电气工程系/毕业设计

code uchar SONG3 [ ]={ //4.一个师傅三个徒弟 //0 0x08,0x08, //1

0xd2,0xe2,0xd2,0xe2,0xd2,0xe2,0xd2,0xb2, 0xa8,0x68,

0xd2,0xe2,0xd2,0xe2,0xd2,0xc2,0xb2,0xa2, //2 0xd8,0xd8, 0xd8,0xd8, 0x,0x,0x28,

0x44,0x22,0x12,0x24,0x04}; code uchar SONG4 [ ]={ //5.梦醒时分 //0 0x08,0x08, //1

0x21,0x41,0x81,0x61,0x62,0x21,0x41,0x81,0x62,0x81,0x81,0x91,0xa1,0xb1, 0x82,0x81,0x81,0x81,0x93,0x68, //2

0x21,0x41,0x81,0x61,0x62,0x21,0x41,0x81,0x62,0x81,0x91,0xa1,0xa1,0x91, 0xc6,0x91,0x91,0x86}; code uchar SONG5 [ ]={ //6.祈祷 //0 0x08,0x08, //1

0x84,0x92,0xf2,0xd8, 0xc4,0xb2,0xa2,0x98, 0xc4,0xb2,0xf2,0xd2,0xc4, 0xd8,0xd8,

15

湖南工业职业技术学院/电气工程系/毕业设计

0x14,0x22,0x82,0x68, 0x54,0x42,0x32,0x28, //2

0x14,0x22,0x42,0x44,0x14, 0x28,0x28, 0x28,0x28,

0x14,0x22,0x42,0x54,0x52,0x62}; code uchar SONG6 [ ]={ //7.春天的故事 //0 0x08,0x08, //1

0x02,0x12,0x22,0x12,0x68, 0x02,0x12,0x22,0x12, 0x58, 0x02,0x12,0x22,0x12, 0x58,0x52,0x52,0x62,0x92}; code uchar SONG7 [ ]={ //8.好大一棵树 //0 0x08,0x08, //1

0xdc,0xc2,0xd2,

0xc2,0x92,0xb2,0xa2,0xa2,0x82, 0x22,0x92,0xb2,0xd2,0xd2,0xc4,0x92, 0x94,0xd2,0xc2,0xb2,0xc2,0xc4, //2

0xe2,0xf2,0xfc,

0x62,0x82,0x83,0x61,0x86,0x02, 0x92,0xb2,0xb3,0x91,0x86,0x02}; code uchar SONG8 [ ]={ //9.爱就一个字 //0

16

湖南工业职业技术学院/电气工程系/毕业设计

0x08,0x08, //1

0x82,0x81,0x81,0x82,0xb1,0xb1,0xb2,0x92,0x93,0x91, 0x82,0x91,0x81,0x82,0x71,0x61,0x72,0x82,0x84, //2

0x82,0x81,0x81,0x82,0xb2,0xb2,0x92,0x03,0x91, 0x82,0xc2,0xc2,0xa1,0xb1,0xb4,0xd2,0xc2}; code uchar SONG9 [ ]={ //大约在冬季 //0 0x08,0x08, //1

0xb6,0xa1,0x91,0xa8, 0x96,0x82,0x66,0x61,0x81, 0x94,0xa4,0xb4,0xc4,0xf8,0xf8, //2

0x41,0x42,0x41,0x02,0x41,0x51,0x62,0x81,0x81,0x02,0x61,0x81, 0x92,0x61,0x61,0x52,0x51,0x61,0x,0x02,0x61,0x51}; code uchar SONG0 [ ]={ //10.生日快乐 //0 0x08,0x08, //1

0x83,0x81,0x94,0x84,0xb4,0xa8, 0x83,0x81,0x94,0x84, 0xc4,0xb8}; uchar hjsz; uchar ljsz; uchar jpm; uchar yfm; uchar t0 =0;

uint i=0;

17

湖南工业职业技术学院/电气工程系/毕业设计

sbit Speaker =P1^0;

uint k;

void Delay1() {

for ( k=0;k<20000;k++); }

void Lignt( )

{ uchar t;

for(t=0;t<10;t++) { P2=0xff; Delay1(); P2=0x00;

Delay1();

} }

void Lignt1( ) { P2=0xaa; Delay1(); P2=0x55;

Delay1();

} void Delay(uchar t0)//延时 {

while(t0--) //决定节拍 Lignt1(); }

void Delay2(uchar w0)//延时 {

while(w0--) //决定节拍

Lignt();

18

湖南工业职业技术学院/电气工程系/毕业设计

}

void T0Int() interrupt 1//TIMER0

{

TL0 = ljsz; TH0 = hjsz; Speaker=!Speaker; }

void ExtInt0() interrupt 0//INT0 {

if(t0>10) t0=0; i=0;

switch(t0++) {

case 0 : TABLE=SONG;break; //选择第1首 case 1 : TABLE=SONG1;break;//选择第2首 case 2 : TABLE=SONG2;break;//选择第3首 case 3 : TABLE=SONG3;break;//选择第4首 case 4 : TABLE=SONG4;break;//选择第5首 case 5 : TABLE=SONG5;break;//选择第6首 case 6 : TABLE=SONG6;break;//选择第7首 case 7 : TABLE=SONG7;break;//选择第8首 case 8 : TABLE=SONG8;break;//选择第9首 case 9 : TABLE=SONG9;break;//选择第10首 } }

void songsing()//发音程序

{ i=0;

while(TABLE[i])

{

jpm=TABLE[i]&0x0f; //节拍值

19

湖南工业职业技术学院/电气工程系/毕业设计

yfm=(TABLE[i]>>0x04)&0x0f;//简谱值

if(yfm) //简谱为1,取计数值 {

yfm=yfm-1;

hjsz=(uchar)(TABLE1[yfm]>>0x08);//取计数值高字节 TH0 = hjsz;

ljsz=(uchar)(TABLE1[yfm]); //取计数值低字节 TL0 = ljsz;

TR0 = 1; //启动TIMER0 }

else TR0 = 0; //简谱为0,不发音 Delay(jpm); //节拍延时 i++; } } void main(void) {

TMOD =0X01;//设TIMER0在MODE1 TCON =0X01;//外部中断INT0,下降沿触发 IE =0x83;//开中断(INT0,TIMER0)

IP =0x00;//设置中断优先级

TABLE=SONG0; while(1) { Lignt( ); songsing();//调用发音程序 TR0 = 0;//停止TIMER0 Delay2(1); TABLE=SONG0;

songsing();

}

}

20

湖南工业职业技术学院/电气工程系/毕业设计

第五章 调试与检测

调试与检测是毕业设计中重要的环节,用的工具很简单:电烙铁、焊丝和镊子。因为我们选用的是实验板,所以要用导线把各个元器件连接起来,这就要有一定的技术基础,幸好这个在我们以前的电装实习中已经掌握。焊接要细心,还要有耐心。焊接前要对照电路图对元器件有一个合理的布局,那样的话就会使电路简洁明朗,而且不易出错,即使出错也容易检查。下面就来介绍元器件的焊接方法和过程。

5.1 硬件的焊接

5.1.1 底座的焊接

我的电路板有两个底座,一个是单片机ATC51的,另一个是数码显示管的。我们用的是40脚的双排直插式的,在焊接时,要先把底座插到电路板上再进行焊接,底座脚的焊点要小,以免脚之间导通,还不能形成虚焊,虚焊会导致电路不通,底座要焊接牢固,不能和电路板距离太远,以免导致虚焊。底座还要放在公共线的两边,因为那两条线是火线和地线。焊接好后要对照电路仔细检查,再用万用表检测,看焊接是否良好。

5.1.2 按键的焊接

我的电路中用到了5个按键,一个复位键、一个发射键、两个置数键,还有我自己加的一个计数控制键。我虽然做的是发射机,但只要对软件进行一些改动,也可以作为接收机,那时发射控制键就变成接收控制键了。

我所用的按键是普通的断开按键,有4个脚,两边各两个,其中每边的两个脚是导通的,在焊接的时候要特别注意,我就是不小心,把相连的两个脚焊接当成不连的脚用来作开关,结果按键按下后不起作用。所以在焊接前一定要用万用表测出那两个脚是导通的,焊接完后再检测,看焊接是否良好。

5.1.3 时钟电路的焊接

我们的电路中时钟电路包括一个晶震,两个电容。晶震是6M的,电容是普通电容,焊接前要刮腿,以免接触不好。晶震和电容要尽量靠近芯片,这样有利于时钟电路的稳定,减少干扰。焊接好后要用万用表检测。

5.1.4 导线的焊接

导线的焊接比较麻烦。因为导线比较多,就要先对导线进行布局,找好于元器件相对的管脚,焊接前先要检测导线是否导通。焊接完成后要检测是不是连接良好。

5.1.5 电路板的检测和故障排除

电路板完成后要进行全面检测,包括以下几个方面:

21

湖南工业职业技术学院/电气工程系/毕业设计

1、火线和底线的检测

检测单片机底座的Vc(40脚)是否与火线相连,检测数码管的功用端是否与火线连接,手动复位开关是否连接上火线。地线检查:其他按键接地是否良好,时钟电路接地端的检测,单片机GND端(20脚)是否接地。检查完后再用万用表检查火线和地线是否导通。

2、元器件之间的连接的检查

参照电路图,用万用表仔细检查各个元器件连接是否良好,是否对应。

5.2 硬件的调试机器故障排除

硬件的调试在上电后的工作是不是正常,主要包括不插单片机的调试和插上单片机的检测。

5.2.1 无单片机的调试

无单片机调试主要检查电路工作是否正常,调试数码管是否点亮,显示数据是否正确,具体步骤如下:

A:打开电源,将输出电压调到5伏,然后关闭电源。 B:将电路板的火线与电源正极相连,地线与负极相连。

C:打开电源,用万用表检测电路板是否有输出电压,如果有就是好的,没有就要检测是否有短路。

D:电路检查完后,关闭电源,用一根导线与电源负极相连,然后打开电源,用导线的另一端逐个与P0、P2口的管脚接触,看数码管显示是否正确。

调试过程中遇到的问题及解决办法:

(1)上电后,用导线一端接低电平,另一端逐一连接P0、P2管脚,数码管显示不正常,检测后发现管脚有短路现象,将短路管脚重新焊接后,显示正常。

(2)反复调试几次后,发现电路不稳定,有时没反应。仔细分析后,觉得是稳压管有问题,拆除后直接5V电压源,问题解决。

5.2.2 有单片机的调试

加上单片机,目的是看单片机能否正常工作,有效地控制显示数据。编写一个小程序,烧入芯片中加点调试。 A:程序如下:

ORG 0000H LJMP MAIN ORG 0030H

22

湖南工业职业技术学院/电气工程系/毕业设计

MAIN:MOV DPTR,#DDSS

MOV A,#0

MOVC A,@A+DPTR MOV P0, A

MOV P2,A

DDSS:DB 3FH,06H,5BH,4FH,66H DB 6DH 7DH,07H,7FH,6FH END

B:将编好的程序进行编译,即将*.ASM文件转化为*.BIN文件,然后烧入片子。程序的编译和烧入将在以后介绍。

C:把单片机ATC51接入底座插入底座,加电,看各位显示是不是正确。 D: 用复位键看显示是否正确,如果稳定,表示调试成功。 调试过程中遇到的问题:

上电后,用示波器检测30脚,发现没有时钟频率输出,仔细分析发现30脚没接高电平,重新焊接后,输出漂亮的时钟脉冲。

23

湖南工业职业技术学院/电气工程系/毕业设计

总 结

一个简单的音乐发生器就是一个小型的单片机系统。它应该有功率放大器、放音设备,

以此来实现音乐发生器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成简谱码存入单片机的存储器中。

本设计实现一个简单音乐发生器,以单片机ATC51的使用为例,用4x4键盘组成0~9数字键以作为输入设备,介绍了如何利用单片机实现音乐发生器。设计在选择芯片后进行硬件和软件设计。

由于水平有限,使用软件编写方面不顺手,软件流程方面比较繁琐。使许多简单的问题都复杂了。希望通过已后的努力学习把设计搞得更加完善。

24

湖南工业职业技术学院/电气工程系/毕业设计

致 谢

首先感谢我的导师王皑老师。王老师渊博的学识、认真的治学态度让我由衷的钦佩。这一段来,我在王老师的教诲和悉心指导下地完成了毕业设计。我不仅学习到了很多有用知识,而且懂得了许多做人的道理。我相信这些对于我以后的生活是大有裨益的。本文是在导师的直接关怀和指导下完成的,在论文的选题、展开到论文的形成,导师也给予了充分的关心并倾注了大量的心血。我在此向导师致以最崇高的敬意和最衷心的感谢。

同时,我要感谢电气系的老师们对我的教育。

衷心感谢所有帮助、支持和关心我的老师、同学、朋友!在此,我要向他们表示我深深的谢意和美好的祝福!

谢 谢 !

25

湖南工业职业技术学院/电气工程系/毕业设计

参考文献

[1]徐仁贵、廖哲智主编 单片微型计算机应用技术 北京:机械工业出版社,2003 [2]刘仁宇、施伟主编 模拟电子技术 北京:机械工业出版社,1998 [3]卢庆林主编 数字电子技术 北京:机械工业出版社,2005 [4]龙志文主编 电力电子技术 北京:机械工业出版社,2005 [5]邱丽芳主编 单片机原理与应用 人民邮电出版社,2007

[6]王廷才主编 电子线路CAD Protel99使用指南 机械工业出版社,2006

[7]林志琦主编 基于Proteus的单片机可视化软硬件仿真 北京航天航空大学,2006 [8]徐仁贵主编 单片微型计算机应用技术[M] 北京:机械工业出版社,2000

[9]戴佳 戴卫恒主编 51单片机C语言应用程序设计实例精讲[M] 电子工业出版社,2007 [10]张迎新主编 单片机计算机原理技术 国防工业出版社, 1994 [11]李朝清编 单片机原理及接口技术 北京航空航天大学出版社, 1994 [12]何立民主编 MCS一51系列单片机应用系统设计 北京航空航天大学出版社, [13]谢宜仁 单片机实用技术问答 人民邮电出版社.2003

[14]王芳主编 电子线路Protel 99 SE实用教程.中南大学出版社,2005 [15]谭浩强著 C程序设计,第2版.清华大学出版社,1999

26

因篇幅问题不能全部显示,请点此查看更多更全内容