二十一音电子琴的设计_第1页
二十一音电子琴的设计_第2页
二十一音电子琴的设计_第3页
二十一音电子琴的设计_第4页
二十一音电子琴的设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江苏技术师范学院毕业设计说明书(论文) JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文) 二十一音电子琴的设计 学院名称: 电气信息工程学院 专 业: 电气工程及其自动化 班 级: 04电气2 姓 名: 叶 浩 指导教师姓名: 陈 连 玉 指导教师职称: 讲 师 2008年 6 月 二十音电子琴的设计摘要:本次设计提出了用89C51单片机为核心控制元件,设计一个简易的电子琴. 本方案以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有21个按键和扬声器.根据使用者的操作随意弹奏想要表达的音乐。一首音乐

2、是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可1。 关键词:单片机;按键;扬声器;音阶The design of the 21 keys flowerAbstract : The design of the 89C51 used as the core control components.Design of a simple flower. The program to A

3、T89C51 as controlling core, and the keyboard loudspeakers core modules in the main control module on the main control module has 21 keys and speakers. According to users of the parade want to play for free expression in music. Music is one of many components of different scales, each scale correspon

4、ds to different frequencies. This way we can use a different frequency combinations, which may constitute what we want music. Of course microcontroller to generate different frequencies very convenient. We can use SCM timer / counter T0 to create square wave frequency signals, therefore. As long as

5、we put a song of the tune the frequency response relationship can get correct. Keywords : microcontroller; buttons; speakers; chromatic目 录序言第一章 单片机概述与AT89C51芯片概述1.1 单片机简介 1.2 AT89C51单片机 1.2.1 AT89C51单片机简介 1.2.2 AT89C51单片机引脚说明1.2.3 AT89C51单片机主要特性1.2.4 AT89C51 芯片内部资源 第二章 设计任务分析与系统的总体设计2.1设计任务的分析2.2系统的

6、总体设计规化 2.2.1硬件部分2.2.2软件部分2.2.3软硬件调试2.2.4程序固化第三章 系统的硬件设计3.1 硬件模块简介3.1.1 发声电路简介3.1.2 键盘电路简介3.1.3 W78三端集成稳压器简介3.2 Protel软件制板及硬件的制作3.2.1 Protel 99的特点3.2.2 印制电路板设计3.2.3 元器件的安装第四章 系统的软件设计4.1 单片机汇编语言的特点4.2 系统软件框图以及程序设计4.2.1初始化程序.4.2.2按键扫描及键盘防抖程序.4.2.3键盘服务程序4.2.4发声程序4.2.5定时器中断服务程序第五章 系统调试5.1 硬件调试5.2 软件调试521

7、 LCA51软件简介522 联机在线调试 5.3 芯片固化结束语参考文献附录1 二十一音电子琴源程序附录2 二十一音电子琴硬件电路图附录3 二十一音电子琴实物图附录4 英文文献翻译致谢序 言单片机因其体积小、功能强、价格低廉而得到广泛应用,同时随着我国经济的飞速发展,单片机在越来越多的领域中得到了很好的应用。观察几年以来各家厂商的销售地区比重,可以发现中国大陆市场比重逐渐提升,而在国内单片机多应用于电话、Caller ID、玩具与LCD等产品,预计在未来,销货至大陆的比重仍将持续增加。在中国产品应用领域十分广泛,也与人民生活越来越密切。作为一名电气自动化的应届毕业生来说,理解和掌握单片机的工作

8、原理和使用技巧是必备的技能。基于这种考虑,我此次毕业设计的题目为:二十一音电子琴。本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。整个设计利用单片机定时器可发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调原理来设计。首先,利用一个3×7的键盘电路把我所需要发出声音的信号输入单片机;其次通过程序,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,本设计中按键一次,就会调用一个延时程序,在延时后继续检测键盘,若此时又有键被按下,若被按下的仍为

9、原键则声音不变,否则键盘会译出被按下的另一个键的音调。从而实现了一个简易电子琴的功能。毕业论文分五个章节来具体介绍整个毕业设计的设计内容和过程。第一章是对单片机进行大概的简介,第二章是整体的设计方案的介绍,第三章是系统硬件部分的具体设计过程的介绍,第四章是系统软件部分的具体设计过程介绍,第五章是系统在总装调试的具体过程。通过软硬件的调试,确认此设计已经达到设计要求,并可以稳定可靠运行。第1章 单片机概述与AT89C51单片机概述1.1 单片机简介电子计算机的发展经历了从电子管、晶体管、集成电路到大(超大)规模集成电路共四个阶段,即通常所说的第一代、第二代、第三代和第四代计算机。现在广泛使用的微

10、型计算机是大规模集成电路技术发展的产物,因此它属于第四代计算机,而单片机则是微型计算机的一个分支。从1971年微型计算机问世以来,由于实际应用的需要,一个是向高速度、大容量、高性能的高档微机发展方向;而另一个则是向稳定可靠、体积小和价格廉的单片机方向发展。单片机是一种集成电路芯片。它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。所以说,一片单片机芯片就具有了组成计算机的全部功能

11、。由此来看,单片机有着一般微处理器(CPU)芯片所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。然而单片机又不同于单板机(一种将微处理器芯片、存储器芯片、输入输出接口芯片安装在同一块印制电路板上的微型计算机),单片机芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果对它进行应用开发,它便是一个小型的微型计算机控制系统,但它与单板机或个人电脑(PC机)有着本质的区别。单片机的应用属于芯片级应用,需要用户(单片机学习者与使用者)了解单片机芯片的结构和指令系统以及其它集成电路应用技术和系统设计所需要的理论和技术,用这样特定的芯片设计应用程序,从而使该

12、芯片具备特定的功能。不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标。这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到。软件特征是指指令系54统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等。开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源。要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是

13、必须的。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的控制方法和设计思想。是控制技术的一次革命,是一座重要的里程碑2。1.2 AT89C51单片机1.2.1 AT89C51单片机简介89系列单片机是ATMEL公司的8位FLASH单片机系列。89系列单片机是以8031为核心构成的,它和8051系列单片机外部端子是一样的

14、、兼容的,其最大特点是片内含有FLASH存储器。由于内部含有FLASH存储器,因此在系统的开发过程中可以十分容易地进行程序的修改,大大缩短了系统的开发周期。同时,在系统的工作过程中,能有效的保存一些数据信息,即使外界电源损坏也不影响信息的保存。89系列随着用户的需要和发展,可以进行修改,使系统能够追随用户的最新要求。AT89C51单片机是一种低功耗、高性能、内含4KB的闪速存储器(Flash Memory)的8位CMOS微控制器。这种器件系以ATMEL高密度不挥发的存储技术制造,与工业标准MCS51指令系统和引脚完全兼容。片内闪速存储器的程序代码或数据可在线写入,也可通过常规的编程器编程。1.

15、2.2 AT89C51单片机引脚说明在89系列中,在器件引脚的封装上,MCS-51系列机通常有两种封装:一种是双列直插式,常为HMOS型器件所用;另一种是方形封装,大多数在CHMOS型器件中使用。89C51单片机DIP40封装如1-所示图1-1直插式封装89C51有40条引脚,分为端口线、电源线和控制线三类。1端口线(4*8=32条)89C51有四个并行I/O端口,每个端口都有8条端口线,用于传送数据或地址。由于每个端口的结构各不相同,因此它们在功能和用途上的差别颇大。先对它们的综述如下: P0.0-P0.7:这组引脚共有8条,为P0口所专用,其中P0.7为最高位,P0.0为最低位。这8条引脚

16、有两种不同的功能,分别使用于两种不同的情况。第一种情况是89C51不带片外存储器,P0口可以作为I/O通用口,P0.0-P0.7用于传送CPU的输入/输出数据。这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况89C51带片外存储器,P0.0-P0.7在CPU访问外部片外存储器的时用于传送外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。P1.0-P1.7:这8条引脚和P0口的8条引脚类似,P1.7为最高位,p1.0为最低位。当P1口作为通用I/O口使用时,P1。0-P1。7的功能和P0口的第一功能相同,也用于传送用户的输入/输出

17、数据。p2.0-p2.7:这组引脚的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O口使用。它的第二功能和P0口的引脚的第二功能配合使用,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不像P0口那样还可以传送存储器的读写数据。P3.0-P3.7:这组引脚的第一功能与其余三个端口的第一功能相同。第二功能作为控制用,每个引脚并不完全相同,如表1-1所列。表1-1 P3口第二功能介绍P3口的位第二功能注释P3.0RXD串行口数据接受口P3.1TXD串行口数据发送口P3.2INTO外中断0输入P3.3INT1外中断1输入P3.4T0计数器0计数输入P3.5T1计数器1计数输入

18、P3.6WR外部RAM写选通信号P3.7RD外部RAM读选通信号 2电源线(2条)VCC为+5V电源线,VSS为接地线。3.控制线(6条) ALE/:地址锁存允许/编程线,配合P0口的第二功能使用。在访问片外存储器时,89C51CPU在P0.0-P0.7引脚上输出片外存储器的低8位地址的同时还在ALE/线上输出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器中,以便空出p0.0p0.7引脚线去传送随后面来的片外存储器读写数据。在不访问片外存储器的时候,89C51自动在ALE/线上输出频率为fosc/6的脉冲序列。该脉冲序列可用于外部时钟或作为定时脉冲源使用。/VPP:允许

19、访问片外存储器/编程电源线,可以控制89C51使用片内ROM还是使用片外ROM。若=1时,则允许使用片内ROM;若=0,则允许使用片外ROM。:片外ROM选通线,正在执行访问片外ROM的指令MOVC时,自动在线上产生一个负脉冲用于为片外ROM芯片的选通。其它情况下,线均为高电平封锁状态。RST/VPD:复位/备用电源线,可以使89C51处于复位(即初始化的)状态。通常,89C51的复位有自动上电复位和人工按钮复位,电路如图1-2所示:上电自动复位 手工自动复位图1-2 89C51复位电路图RST/V的第二人功能是作为备用电源输入端。当主电源V发生故障而降低到规定低电平时,RST/V线上的备用电

20、源自动投入,以保证片内RAM中的信息不丢失。XTAL和XTAL:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC的定时反馈回路,相应的电路如图1-3所示。 石英晶体起振后要能在XTAL线上输出一个3V左右的正弦波,使单片机片内的OSC电路按石英晶振相同频率自激振荡。通常,OSC的输出时钟频率为0.5MHZ-16MHZ,典型值为12MHZ或11.0592MHZ。电容C和C可以帮助起振,典型值为30PF,调节它们可以达到微调时钟频率的目的。图1-3 晶振连接图89C51所需的时钟有时也可以由外部震荡器提供,在此略讲。1.2.3 AT89C51主要特性:(1)

21、与MCS-51 兼容 (2)4K字节可编程闪烁存储器 (3)寿命:1000写/擦循环(4)数据保留时间:10年(5)全静态工作:0Hz-24Hz(6)128*8位内部RAM(7)32可编程I/O线(8)两个16位定时器/计数器(9)5个中断源 (10)可编程串行通道(11)低功耗的闲置和掉电模式(12)片内振荡器和时钟电路1.2.4 AT89C51芯片内部资源1. 中央处理器CPUCPU是单片机的核心。它由运算器和控制器组成。运算器以ALU为核心,用以完成二进制数饿算术和逻辑运算。控制器是单片机CPU的大脑中枢。它在时钟信号的同步作用下对指令进行译码,使单片机系统的各部件按时序协调工作。2.

22、片内RAMAT89C51芯片内部共有256个字节的RAM单元,但高128单元只有一部分被特殊功能寄存器占用,其余的单元用户不能使用。这些特殊功能寄存器,其功能已有专门饿规定,用户不能随意赋值。只有低128个单元可以作为随机存储单元供用户使用,这些单元主要用于存放随机的数据及运算的中间结果。通常说的RAM就是指这低128个单元。AT89C51单片机内部有4KB的闪存,主要用于存放程序,原始数据和表格内容,后被称之为程序存储器。3.定时器/计数器 AT89C51型单片机内部有2个16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数的结果对系统进行控制。4. 并行I/O口AT89C51型单

23、片机由4个8位并行I/O口,即P0、P1、P2和P3口。这些端口可以用作一般输入或输出口。但通常P0口作为8位数据总线和低8位地址总线的复用口。P2口常用作高8位的地址总线。而P3口的各个管脚多以第二功能输出形式出现。因此,一般情况下只有P1口的8个管脚作为通用I/O口。5. 串行口AT89C51型单片机有一个全双工的串行口,用以实现单片机和其他设备之间的串行数据传送。该串行口功能较强,既可以作为全双工异步通信收发器使用,也可以作为同步移位寄存器使用。6. 中断控制系统AT89C51型单片机共有5个中断源,即2个外部中断、2个定时/计数器中断缘和1个串行中断源。全部中断源可设定为高低2个中断优

24、先级,用来满足控制应用的需要3。第二章 设计任务分析与系统的总体设计2.1 设计任务的分析本次毕业设计的课题是二十一音电子琴的设计,所要达到的要求如下:1、具有较高的实时性(反应时间小于0.1秒)。2、高、中、低音区发音准确并有明显区别。3、线路板焊点饱满、圆润,无虚焊等现象。4、PCB板制作要求线路清晰、布局合理。本次设计主要是要通过软硬件的配合实现一个二十一键电子琴的功能,操作人员可以通过按下键盘上任意一个键来发出相应的音符。AT89C51具有高速度、低电压、低功耗、且可靠性和成本都比较低的特点。因此本次毕业设计采用AT89C51单片机作为整个电路核心控制器件。对于本交通控制系统使用一片A

25、T89C51系列的单片机,不需要外扩展存储器,就能实现显示、预制状态、动态调节的功能,因而整体结构简单。AT89C51的运用能够使设计的二十一音电子琴系统满足于实用。设计电路时运用89C51系列单片机的接口来实现各种输入、输出功能。P1.0口用来作输出口,向发声电路输出信号;P2口和P0口共同实现一个矩阵键盘的功能。同时设计了一个直流稳压电路增加电路的适应性,增加了电路的适用性,使整个系统更加紧凑,工作十分稳定4。2.2 系统的总体设计规划2.2.1硬件部分本次毕业设计采用AT89C51单片机作为面板控制部件,AT89C51用上电自动复位,12MHZ的晶振和两个微调电容形成晶振电路。面板上有2

26、1个按键,用于输入音符;一个由两个CS9013组成的达林顿对构成声音信号的输出电路;一个直流稳压电路为系统提供一个稳定的直流电压。硬件系统框图如图2-1所示 图2-1 硬件原理框图2.2.2 软件部分软件部分采用单片机汇编语言编写程序。 单片机汇编语言程序设计步骤:第一步: 分析问题。 第二步: 画出程序的基本轮廓。 第三步: 实现该程序。2.2.3 软硬件调试使用LCA51软件,将程序输入进行编译。通过编译通过后,则将制作的PCB电路与AEDK51HB仿真机进行联机仿真。检测功能和设计任务能不能实现。如果不能达到预期效果,则必须重新检查硬件或修改程序。2.2.4 程序固化经过调试,实现了预期

27、的成果和功能。就可以开始程序固化了。运用AEDK51HB仿真将程序烧录到89C51内部ROM中,然后将单片机放入到电路中,再进行观察。 第3章 系统的硬件设计3.1硬件模块简介3.1.1发声电路简介发声电路是这次设计的电路中的一个重要的组成部分,它承担着把单片机所产生的声音信号放大并输出的重要作用。而我的设计中的发声电路主要是由两个CS9013组成。CS9013是一种小功率的放大管,属于NPN型三极管,而对三极管管脚的判断可以使用下面的方法5。一、判断三极管基极 。对于NPN型三极管,用黑表笔接某一个电极,红表笔分别接另外两个电极,若测量结果阻值都较小,交换表笔后测量结果阻值都较大,

28、则可断定第一次测量中黑表笔所接电极为基极;如果测量结果阻值一大一小,相差很大,则第一次测量中黑表笔接的不是基极,应更换其他电极重测。二、判断三极管发射极e和集电极c。 三极管基极确定后,通过交换表笔两次测量e、c极间的电阻,如果两次测量的结果应不相等,则其中测得电阻值较小的一次为红表笔接的是e极,黑表笔接的是c极。对于PNP型三极管,方法与NPN管类似,只是红、黑表笔的作用相反。在测量e、c极间电阻时要注意,由于三极管的V(BR)CEO很小,很容易将发射结击穿。当我们对三极管的管脚判断结束后,我们就可以用两个三极管构成一个达林顿结构。首先,当单片机P1.0口输出一个高电平,由两个三极

29、管构成的达林顿才能导通,导通后又能对电流有一定的放大作用,这样输送到喇叭的信号就能够让我们清楚地听到了。9013构成的达林顿如下图所示: 图3-1 达林顿结构3.1.2 键盘电路简介键盘电路作为二十一音电子琴系统中最重要的输入设备,在系统中承担着把操作人员想要输入的信号输入单片机的重要作用,所以对这这部分电路的设计我也花了不少心思,为了能最合理地应用单片机的端口,我采用了3×7的矩阵键盘电路。整个矩阵电路是共阳极接法,采用的扫描方式是低电平逐行逐列扫描。根据这样的设计思路,设计的键盘电路如下图所示 图 3-2 键盘原理图3.1.3 W78三端集成稳压器简介从外形上看,集成串联型稳压电

30、路有三个脚,分别为输入端、输出端和公共端,因此称为三端稳压器。按功能分为固定式和可调节式稳压电路;前者输出的电压不能进行调节,为固定值;后者可通过外接外接元件使输出电压得到很宽的调节范围。三端稳压器具有体积小、重量轻、性能好、成本低、靠性高和使用方便等优点。本设计中用的W78系列的三端稳压器为固定式稳压电路。下面就对W78做一下介绍。W78系列输出正电压,有七个等级W7805、W7806、W7809、W7812、W7815、W7818、W7824W79系列输出负电压、有七个等级W7905、W7906、W7909、W7912、W7915、W7918、W7924型号最后两位数为输出电压值,如本次设

31、计中采用的W7805其输出的电压为5V。当输出电压U因某种原因(如电网电压的波动和负载的变化)而增大时,内部比较放大电路的反相输入端电位随之生高,使得放大电路输出端电位下降,U势必随之减小;当输出电压因某种原因而减小时,各部分的变化与上述过程相反;因而输出电压稳定6。3.2 Protel软件制板及硬件的制作随着现代科学技术日新月异地发展,现代电子工业也取得了长足的进步,大规模、超大规模集成电路的使用使印制电路板的走线愈加精密和复杂。在这种情况下,传统的手工方式设计和制作印制电路板已显得愈来愈难以适应形势了。进入90年代以来,计算机技术取得了令人瞩目的成就。Protel 99保持了Protel

32、Technology公司的革新传统,比起Protel 98,它在许多方面都有大幅度的提高。它具有极为全面的工具、文挡以及设计项目的组织功能,使用户可比以往任何时候更轻松地驾驭电子线路设计的全过程。Protel软件的良好信誉以及Protel 99的卓越表现使之很快成为众多EDA用户的首选软件7。3.2.1 Protel 99的特点Protel99主要由两大部分组成:1、原理图设计系统。他主要用于电路原理图的设计,为印制电路板的设计打好基础。2、印制电路板设计系统(PCB 99)。它只要用于印制电路板的设计,产生最终的PCB文件,直接联系到印制电路板的生产。3.2.2 印制电路板设计一般而言,印制

33、电路板设计最基本的完成过程大体可分为3个步骤:一、原理图的设计。二、产生网络表。三、印制电路板的设计。具体有以下几个步骤:(1)先打开SCH原理图编辑器。(2)新建一个SCH。(3)放置元器件。(4)连线(如图3-3所示)。 连线之后,得到的就是Protel软件设计的原理图。 图 3-3 二十一音电子琴硬件原理图(5)设置零件的属性(标号,值,PCB封状)。(6)制作元件封装(如图3-4所示)。图3-4 元件封装的制作(7)产生网络表(8)打开PCB编辑器并定边框。(9)加载网络表。(10)零件布局。(11)手动布线(如图3-6所示)。 图 3-6 二十一音电子琴PCB图(12)电气规则检查8

34、。3.3 元器件的安装经过多次修改后画出了附录3中的PCB图最后将设计好的PCB板送到厂里做出来。最后购买清点元器件,进行板子的焊接,在过程中必须注意焊接的质量及工艺,避免存在漏焊,虚焊的情况,元器件的安装注意美观,引脚问题!第四章 单片机的软件设计4.1 单片机汇编语言简介机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。由于机器指令与CPU紧密相关,所以,不同种类的CPU所对应的机器指令也就不同,而且它们的指令系统往往相差很大。但对同一

35、系列的CPU来说,为了满足各型号之间具有良好的兼容性,要做到:新一代CPU的指令系统必须包括先前同系列CPU的指令系统。只有这样,先前开发出来的各类程序在新一代CPU上才能正常运行9。由于用机器语言编写程序有以上诸多的不便,现在几乎没有程序员这样编写程序了。虽然用机器语言编写程序有很高的要求和许多不便,但编写出来的程序执行效率高,CPU严格按照程序员的要求去做,没有多余的额外操作。所以,在保留“程序执行效率高”的前提下,人们就开始着手研究一种能大大改善程序可读性的编程方法。为了改善机器指令的可读性,选用了一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与

36、此同时,也把CPU内部的各种资源符号化,使用该符号名也等于引用了该具体的物理资源。如此一来,令人难懂的二进制机器指令就可以用通俗易懂的、具有一定含义的符号指令来表示了,于是,汇编语言就有了雏型。现在,我们称这些具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。汇编语言是汇编指令集、伪指令集和使用它们规则的统称。伪指令是在程序设计时所需要的一些辅助性说明指令,它不对应具体的机器指令,有关内容在以后的各章节中会有详细叙述,在此不展开介绍。用汇编语言编写的程序称为汇编语言程序,或汇编语言源程序,也可简称为源程序。汇编语言程序要比用机器指令编写的程序容易

37、理解和维护10。4.2系统软件框图以及程序设计针对需要解决的问题需要,将CPU所要执行的操作写在一个方框里,并以一定的次序,用带箭头的直线把这些框框连接起来,指示出CPU的操作过程,这种表示出CPU操作过程的方框图称为程序框图或程序流程图。主程序流程图如图4-1所示 开始初始化是否有键按下防抖动程序键盘服务程序发声程序 结束 图 4-1 主程序流程图二十一音电子琴系统的软件部分主要是有主程序、初始化程序、按键扫描子程序、防抖动子程序、键盘服务子程序、发声子程序、T0中断服务子程序、延时子程序构成。下面就具体来介绍每一个部分的设计内容。4.2.1初始化程序初始化程序的主要作用是定义一些变量的初值

38、以及对中断、定时器的初始化。只有完成了了初始化程序后,后面的程序才能正常运行。在初始化程序中要对R0,A赋初值,要对中断进行设置,也要对定时器进行设置。根据这个思路,初始化程序如下11: CLR TR0 ;关中断 MOV SP,#60H ;定义堆栈 SETB P2.0 ;使P2.0口为高电平 MOV A,#00H ;清零A寄存器 SETB EA ;开中断 SETB ET0 ;允许T0 中断 MOV IP,#2 ;令T0的中断优先级最高 MOV TMOD,#1 ;设定T0 工作于方式1 MOV TH0,#00H ;设定 T0 初始值 MOV TL0,#00H 4.2.2按键扫描以及键盘防抖程序在

39、初始化程序结束后,就进入了按键扫描程序,这部分程序主要就是完成对键盘电路所输入的信号进行扫描,为下一步发声程序做好准备。扫描程序首先会给P0.5P0.7低电平,又由于P2.6P2.0经过按钮和电阻接的是高电平,所以如果此时读取的P2.6P2.0口的数据与#0FFH不相等的话,就是有键按下,随后,调用键盘防抖程序。在防抖动程序运行结束后重复一次扫描的程序,如果在P2.6P2.0读入的数据与之前的数据相同,则确实有键按下,按键扫描程序结束。根据这样的思路,写出按键扫描程序如下: SCAN: MOV R0,#00H ;清零R0 MOV P0,#01FH ;让P0.4P0.6输出0 MOV A,P2

40、;把P2口的输入情况传送给A CJNE A,#0FFH,SCAN1 ;让A与FFH比较,判断是否有键按下 NOP AJMP SCAN ;没有按键按下,继续扫描SCAN1: LCALL DELAY ;调用防抖动程序 MOV A,P2 ;再次测试是否真的有键按下 CJNE A,#0FFH,TEST ;真的有键按下,调用键盘测试程序 NOP SJMP SCAN ;继续扫描键盘 DELAY: MOV R7,#2 ; 防抖动程序D1: MOV R6,#10D2: DJNZ R6,D2 DJNZ R7,D1 RET4.2.3键盘服务程序前面的按键扫描程序已经完成了对是否有键按下的判断,但这还是不够的。因为

41、现在我们还不知道具体是哪一个键按下了,而这个工作正是由键盘服务程序来完成。其工作原理非常简单,就是分别让P0.5P0.7口中的一个端口为低电平,然后利用JNB指令来判断具体是哪一个键被按下了。根据这种思路,写出键盘服务程序如下: TEST: MOV P0,#0DFH ;给P0赋初值准备检测第1行 JNB P2.6,K_1 ;测试第1行第1列是否有键按下 JNB P2.5,K_2 ;测试第1行第2列是否有键按下 JNB P2.4,K_3 ;测试第1行第3列是否有键按下 JNB P2.3,K_4 ;测试第1行第4列是否有键按下 JNB P2.2,K_5 ;测试第1行第5列是否有键按下 JNB P2

42、.1,K_6 ;测试第1行第6列是否有键按下 JNB P2.0,K_7 ;测试第1行第7列是否有键按下 MOV P0,#0BFH ;给P0赋初值准备检测第2行 JNB P2.6,K1 ;测试第2行第1列是否有键按下 JNB P2.5,K2 JNB P2.4,K3 JNB P2.3,K4 JNB P2.2,K5 JNB P2.1,K6 JNB P2.0,K7 MOV P0,#07FH ;给P0赋初值准备检测第3行 JNB P2.6,K1_ ; 测试第3行第1列是否有键按下 JNB P2.5,K2_ JNB P2.4,K3_ JNB P2.3,K4_ JNB P2.2,K5_ JNB P2.1,K

43、6_ JNB P2.0,K7_ LJMP SCANK_1: LJMP KEY_1K_2: LJMP KEY_2K_3: LJMP KEY_3K_4: LJMP KEY_4K_5: LJMP KEY_5K_6: LJMP KEY_6K_7: LJMP KEY_7K1: LJMP KEY1K2: LJMP KEY2K3: LJMP KEY3K4: LJMP KEY4K5: LJMP KEY5K6: LJMP KEY6K7: LJMP KEY7K1_: LJMP KEY1_K2_: LJMP KEY2_K3_: LJMP KEY3_K4_: LJMP KEY4_K5_: LJMP KEY5_K6_:

44、 LJMP KEY6_K7_: LJMP KEY7_4.2.4发声程序在完成了键盘服务子程序后,我们就知道了具体是哪一个键被按下了,下一步就是要让喇叭发出这个按键所特有的音符。我们知道,每个音符之所以不同是因为它们都有各自不同的频率,而我们正好可以利用89C51中的定时器来产生不同的频率以达到这个目的。我们只要对定时器的初值进行合理的设置就可完成这个工作,那么我们根据什么来为定时器赋初什呢?主要是根据一张频率表,表3-1如下所示12: 表 4-1 电子琴音符频率表音符频率(HZ)简谱码(T值) 音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论