单片机课设设计论文:基于STC89C51单片机的简易电子琴设计_第1页
单片机课设设计论文:基于STC89C51单片机的简易电子琴设计_第2页
单片机课设设计论文:基于STC89C51单片机的简易电子琴设计_第3页
单片机课设设计论文:基于STC89C51单片机的简易电子琴设计_第4页
单片机课设设计论文:基于STC89C51单片机的简易电子琴设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计论文题 目:基于单片机的简易电子琴设计 学 院:机电工程学院 专 业:电气工程及其自动化 姓 名: # # # 指导教师: 完成日期: 2012-12-27 目 录摘要1绪论.21方案论证31.1原理图31.2主体方案31.3系统方案设计及主控芯片介绍41.3.stc89c51简介51.3.1单片机工作原理81.3.2数码管132实现过程142.1.1 程序设计内容142.1.2 i/o并行口直接驱动led显示142.2 音乐产生的方法152.2.1 原理152.2.2 程序框图163全文总结173.1结束语18参考文献19附录201.电路原理图202.程序框图213.系统流程图

2、224.语言源程序23摘 要在现代各种生活中,电子琴作为一种音乐型玩具 ,广泛用于与人们的日常生活中。市场上有各种各样的电子琴。特别是日本产的,音质优美,它是有专门的音乐控制芯片制造的。由于其价格较贵,无法大面积普及,且功能单一。用89c51作为主控中心,研制一种简易的微型电子琴,尽可能地体现较好的音质来,是一种可做的尝试。 以单片机为核心设计的简易电子琴系统,由按键扫描电路、声音产生驱动电路、复位电路、等模块组成的,是一种比较实用、廉价的电子玩具。 本论文所设计的简易电子琴,它分为两大部分,硬件电路的设计和软件的设计。硬件电路的设计以at89s51单片机为控制主板,辅以外围的扩展设备蜂鸣器、

3、矩阵键盘、共阳数码管,形成一个可被控制的显示系统。软件设计通过控制单片机内部的定时器t0来产生不同频率的方波,驱动喇叭发出不同音节的声音.再利用延迟来控制发音时间的长短,即可控制音调中的节拍.把乐谱中的音符对应的频率转换为定时常数,把相应的节拍变换为定时常数,然后作成表格存放在储存器中,由程序查表得到定时常数和延时常数,分别用以控制定时器产生方波的频率和该频率方波的持续时间.当延迟常数到时,再查下一个音符的定时常数和延迟常数.依次进行下去,就可演奏悦耳动听的音乐.主要实现 1能够发出1.2.3.4.5.6.7等七个音符。2能自动演奏完,自选的一首歌曲两种功能。 绪 论 本次设计的简易电子琴在其

4、功能上能用单片机控制蜂鸣器发声,拟合出乐曲曲调。能够相应按键,进行简单的乐曲弹奏。 本次设计是以单片机为基础,在论文中大概讲述了一下单片机的原理。 在此次设计中,简易电子琴的外围设备主要有以下二个部分: 1、发声器件的选择:发声器件比较多,例如喇叭、蜂鸣器、电铃等。这次发声元件采用蜂鸣器,蜂鸣器价格便宜,控制简单,广泛用于各种电子产品和玩具。本设计为保证声音的响亮,通过三极管进行电流放大,增加声音的响度。 2、 按键部分的设计:在本电路的按键接口设计,按键数量比较多。 3、数码管显示电路:为指示出当前演奏的曲目标号和显示当前按下的键号,我们采用1位数码管作为显示部件,为了节省成本,采用i/o口

5、直接驱动数码管。这样设计充分利用了单片机的资源,使此设计才功能上很丰富、完善。1 方案论证1.1原理图1.2主体方案 本文就是从单片机stc89c51入手,通过使用stc89c51的内部的可编程定时器/计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。该简易电子琴通过控制单片机内部的定时器t0来产生不同频率的方波,驱动喇叭发出不同音节的声音.再利用延迟来控制发音时间的长短,即可控制音调中的节拍.把乐谱中的音符对应的频率转换为定时常数,把相应的节拍变换为定时常数,然后作成表格存放在储存器中,由程序查表得到定时常数和延时常数,分别用以控制定时器产生方波的频率和该频率方

6、波的持续时间.当延迟常数到时,再查下一个音符的定时常数和延迟常数.依次进行下去,就可演奏悦耳动听的音乐显示电路(89c51)主控模块键扫描电路发声电路1.3 主要芯片简介1.3.1 stc89c51简介一、 单片机的主要性能特点atmel公司生产的at89c51单片机采用高性能的静态80c51设计,欲先进工艺制造,并带有非易失性flash程序储存器。它是一它是一种高性能,低功耗的8位cmos微处理芯片,。主要性能特点有:8kb flash rom,可以擦除1000次以上。数据保存10年,256字节内部ram 电源控制模式:时钟可停止和恢复;空闲模式;掉电模式。6个中断源4个中断优先级4个8位i

7、/o 口全双工增强型uart3个16位定时/计数器,t9,t1和增加的t2全静态工作方式:024mhz二 、单片机的引脚功能89c51单片机的引脚图见图2.2所示,其中有2条主电源引脚,2条外接晶体引脚,4条控制或其他电源复用引脚,32条i/o引脚。下面分别叙述这些引脚的功能。 图2.2 89c51单片机的引脚图vcc(40脚):接电源+5v。vss(20脚):接地 也就是 gnd。xtal1 (19 脚) 和 xatl2(18 脚):接振荡电路,单片机是一种时序电路 必须有脉冲信号才能工作 在它的内部有一个时钟产生电路。psen(29 脚):片外 rom 选通信号,低电平有效.他同样可以驱动

8、8个lsttl输入。ale/prog(30 脚):地址锁存信号输出端/eprom 编程脉冲输入端。为了使地址与数据不混淆,通常是先送地址再传送数据。ale将p0口输出的低8位地址锁存,从而实现低位地址与数据的分离。rst/vpd(9 脚):复位信号输入端/备用电源输入端。当振荡器运行时,在此引脚上出现两个机器周期以上的高电平,将使单片机复位。vcc掉电期间,此引脚可以接上备用电源,以保存内部ram的数据不丢失;当vcc低于规定水平时,vpd向内部ram提供备用电源。ea/vpp(31):内/外部 rom 选择端。当ea端保持高电平时,不管是否有内部程序存储器,只访问外部程序存储器。当ea端保持

9、低电平时,访问内部程序存储器。p0 口(p0.0p0.7共8个引脚,既39-32 脚):双向 三态i/o 口。在访问外部存储器时,可分别用低8位地址线和8位数据线;p0口可以驱动8个lsttl p1输入。p1 口(p1.0p1.7共8个引脚,既1-8 脚)p1口是一个带有内部上拉电阻的8位双向i/0 口,在eprom编程和程序验证时,它接受低8位地址,能驱动4个lsttl输入。p2 口(p2.0p2.7共8个引脚,既21-28 脚):p2口是一个带有内部上拉电阻的8位双向i/0 口, 在eprom编程和程序验证时,它接受高8位地址,能驱动4个lsttl输入。p3 口 (p0.0p0.7共8个引

10、脚,既10-17 脚):p3口是一个带有内部上拉电阻的8位双向i/0 口。他是个多用途口。在这8个引脚里,其中p3.2的第二功能是外部中断0申请输入端;p3.3的第二功能是外部中断1申请输入端;p3.4的第二功能是定时器0申请输入端。三 、单片机内部结构及组成结构单片机是由中央处理器(cpu)、片内数据存储器(ram)、片内程序存储器(rom)和输入输出接口(i/o口)四大部分组成: cpu是单片机的核心部分。其作用是读入和分析每条指令,根据指令要求控制各个部件执行相应的操作,它包括运算器和控制器两大部分:一是运算器包括算术逻辑部件(alu)、累加器a、暂存寄存器、寄存器b、程序状态寄存器(p

11、sw),十进制调整电路等。运算器主要用于实现算术/逻辑运算及位操作运算。二是控制器包括时钟发生器,定时控制逻辑,指令寄存器,指令译码器,程序计数器pc,程序地址寄存器,数据指令寄存器dptr和堆栈指针sp等。控制器是用来统一指挥和控制计算机进行工作的部件。 单片机存储器,单片机在物理上有4个存储空间:片内程序存储器和片外程序存储器, 片内数据存储器和片外数据存储器.8051片内有4kb的程序存储器和256b数据存储器。下面分别介绍程序存储器和数据存储器。程序存储器用于存放编好的程序、表格和常数。8051单片机内部有4kb的片内rom和64kb的片外rom,两者是统一编址的。数据存储器8051内

12、部有256b ram,片外最多可以扩展64kb ram。片内256 kb ram按其功能划分两部分:低128b位片内数据ram区,地址空间为00h7fh;高128b位特殊功能寄存器的区域.地址空间为80hffh。内部数据存储器低128单元,8051内部低128b ram是真正的ram,可用于暂存运算结果及标志位等.按其用途可以分为三部分:工作寄存器区;位寻址区;用户ram区。内部ram的高于128单元是供给特殊功能寄存器使用,因此称特殊功能寄存器: 指令寄存器ir和指令译码器id。指令寄存器是存放指令代码的地方。当执行指令时,cpu把从程序存储器中读取的指令代码送入指令寄存器,然后指令译码器译

13、码后由定时控制电路发生相应的控制信号,最终完成指令所规定的操作。 程序计数器pc是一个16位的计数器。用于存放将要执行的指令地址,cpu每读取指令的一个字节pc便自动加1,指向本指令的下一个字节或下一条指令地址,pc可以寻址64kb范围rom。 累加器是一个最常用的8位特殊功能寄存器,它可以用于存放操作数,也没有用于来存放运算结果。 寄存器b是一个8位寄存器,主要用于乘法和除法的运算, 状态字寄存器psw是8位寄存器,用于存放程序运行状态信息,其格式如下图2.3所示 。 图2.3 程序状态字pswcy(psw.7):进位标志位。在进行加法(或减法)运算时,若运算结果最高位有进位或借位,则cy自

14、动置“1”,否则cy置“0”,在进行布尔操作运算时,cy(简称c)作为布尔处理器。ac(psw.6):辅助进位标志位。当进行加法或减法时,若低4位向高4位有进位(或借位)时,ac被置“1”,否则ac被置“0”。在十进制调整指令中ac还作为十进制调整的判别位。f0(psw.5):用户标志位。用户可用软件对f0位置“1”或清“0”以决定程序的流向。ov(psw.2):溢出标志位,当运算结果溢出时ov为“1”,否则为“0”,此标志位反映了运算结果是否溢出。p(psw.0):奇偶标志位。mcs-51单片机采用的是偶校验。当累加器a中“1”的个数为奇数时,p置“1”,否则p置“0”。此位反映累加器a中内

15、容“1”的奇偶性,它常常用于机间通信。rs1(psw.4)、rs0(psw.3):工作寄存器区选择位。用来选择当前工作的寄存器区。用户通过改变rs1 、rs0的内容来选择当前工作寄存器区。 堆栈指针sp 数据指针寄存器dptr是一个16位寄存器,由高位字节dph和低位字节dpl组成,用来存放16位数据存储器的地址,以便对外部数据存储器ram数据进行读写。 工作寄存器mcs-51有32个工作寄存器,分为四个区(或组)每个区为8个寄存器r0、r1、r2、r3、r4、r5、r6、r7,每一时刻只有一个区工作。由psw寄存器中的rs1、rs0的值来决定当前的工作区: 当 rs1 rs000时,0区为工

16、作区, rs1rs001时,1区为工作区 rs1rs010时,2区为工作区 rs1rs011时,3区为工作区这32个工作寄存器不但有它们的名称和区号,而且还有地址。00h-1fh共32个单元。 00h07h为0区,分别对应r0r7 08h0fh为1区,分别对应r0r7 10h17h为2区,分别对应r0r7 18h1fh为3区,分别对应r0r7这32个单元为内部数据存储器(即片内ram)的00h1fh存贮空间,这与普通微机中的通用寄存器基本相同,所不同的是,普通微机的通用寄存器只有名称,不占有ram空间,因此只有名字,没有对应的地址;而mcs-51单片机的工作寄存器r0r7既可以用名字也可以用它

17、的地址来表示。其中r0、r1寄存器除做工作寄存器外还常做间址寻址的地址指针单片机的输入/输出端口c51中有4个位并行输入/输出端口记为p0、p1、p2、p3共32根线。每个并行i/o口都可以用作输入/输出,所以称它们为双向i/o口。p0口有位, p0口有两个用途,一是作为普通i/o口使用;二是作为地址/数据总线使用。p0口作为普通i/o口使用: 当控制线c=0时, mux开关向下, p0口作通用i/o口。这时与门输入为0,场效应管vt1截止。p0口作为分时复用的地址/数据总线: p0口一般是作为地址/数据总线,这时控制线c=1,mux开关向上,使数据/地址经反向器与场效应管vt2接通,当数据输

18、入时,数据信号从引脚通过输入缓冲器2进入内部总线。p1口是一个专用的8位准双向i/o口,只具有通用输入/输出口功能,每一位都能设定为输入或输出。p1口的驱动部分与p0口不同,内部有上拉电阻。p2口是一个8位准双向i/o口,具有两种功能。一是作通用i/o口用,与p1口相同。二是作扩展系统的高8位地址总线。p3口也是一个8位准双向i/o口,不但可以作通用i/o口使用,还具有第二功能。当工作在第二功能时,每位都具有新的功能,当p3口作通用i/o口时,与p1口相同。1.3.2单片机的工作原理一、 振荡器与时钟电路时钟电路用于产生单片机工作所需要的时钟信号。at89c51的时钟产生方法有以下两种: 内部

19、时钟方式 利用芯片内部的振荡器,然后在引脚xtal1和引脚 xtal2两端接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图2.4(在图中的外接线,上面的外接线接引脚xtal1,下面的外接线接引脚xtal2)外接晶振时,c1和c2的值通常选择我30pf左右;外接陶瓷谐振器时c1和c2的值大约为47pf。c1、c2对频率有微调作用,晶体或陶瓷谐振器的频率范围可在1.212mhz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。 图2.4 单片机外接振荡电路外部时钟方式 此方式是利用外部振荡脉冲接入xtal

20、1或 xtal2。chmos(互补金属氧化物hmos)是cmos和hmos(高密度沟道mos工艺)的结合,除了保持hmos高速度和高密度之外,还有cmos低功耗的特点.两类器件的功能是完全兼容的,区别在chmos器件具有低功耗的特点.它所消耗的电流比hmos器件少很多,主要在于其采用了两种降低功耗的方式:空闲方式和掉电方式.chmos器件在掉电方式(cpu停止工作,片内ram的数据继续保持)下时,消耗的电流可低于10a.采用chmos的器件在编号中用一个c来加以区别: 如80c51,80c31等. 外部时钟信号通过一个二分频的触发器而成为内部的时钟信号,要求高、低电平的持续时间都大于20ns,

21、一般为频率低于12hz的方波。这种方式适用于多块芯片同时工作,便于同步。片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。 根据以上两种方式的特点,在次设计中从而采用了第一种方式。第一种方式比第二种更简洁为次设计而变的简单化。其图2.5就是本次设计中时钟信号产生的外部电路图。其中电容值所选用的是30pf,为了提高秒计时的精确度,采用12mhz的晶振。二、 单片机的工作方式单片机有三种工作方式:复位方式、程序执行方式以及节电工作方式。单片机复位方式:单片机复位方式有上简单复位电路和采用专用复位电路芯片构成复位电路两种。简单复位电路有上电复位和手动复位。不管那种方式都要保证

22、在reset引脚上提供10ms以上的稳定高电压。本次设计中采用的是按键式复位电路。程序执行方式:(a)连续执行方式(b)单步执行方式节电工作方式:(a)hmos单片机的掉电工作方式(b)chmos单片机的节电工作方式三 、单片机外部并行扩展原理单片微机是通过芯片的引脚进行系统扩展的。80c51系列带总线的单片微机芯片引脚可以构成图81所示的三总线结构即地址总线(ab)数据总线(db)和控制总线(cb)。具有总线的外部芯片都通过这三组总线进行扩展。(1)地址总线(ab)地址总线由单片微机p0口提供 低8位地址a0a7,p2口提供高8位地址a8a15。p0口是地址总线低8位和8位数据总线复用口,只

23、能分时用作地址线。故p0口输出的低8位地址a0a7必须用锁存器锁存。锁存器的锁存控制信号为单片微机ale引脚输出的控制信号。在ale的下降沿将p0口输出的地址a0a7锁存。p0、p2口在系统扩展中用做地址线后便不能作为一般i/o口使用。由于地址总线宽度为16位,故可寻址范围为64 kb。(2)数据总线(db) 数据总线由p0口提供,用d0d7表示。p0口为三态双向 口为三态双向口,是应用系统中使用最为频繁的通道。所有单片微机与外部交换的数据、指令、信息,除少数可直接通过p1口外,全部通过p0口传送。数据总线是并连到多个连接的外围芯片的数据线上,而在同一时间里只能够有一个是有效的数据传送通道。哪

24、个芯片的数据通道有效,则由地址线控制各个芯片的片选线来选择。 (3)控制总线(cb) 控制总线包括片外系统扩展用控制线和片外信号对单片微机的控制线。mcs51系列中有5个中断源(或6个中断源),如图所示。它们可分为2个优先级其中每一个中断源的优先级都可以由程序排定。5个中断源的中断要求是否会得到响应,受允许中断寄存器ie中各位的控制;它们的优先级分别由中断优先级寄存器ip的各位确定;同优先级内的各中断源同时要求中断时,还要靠内部的查询逻辑来确定响应的次序,不同的中断源有不同的中断向量。52子系列的中断系统与此类同,只不过增加了一个中断源。1.允许中断寄村器ie(1)ea(ie7总允许位。ea=

25、0禁止一切中断。eal,则每个中断源是允许还是禁止,分别由各自的允许位确定。(2)一(ie 6)保留位。 (3)et2(ie5)定时器2中断允许位。et20,禁止定时器2中断。 (4)es(ie.4)串行口中断允许位。es0,禁止串行口中断。 (5)etl(ie.3)定时器1中断允许这。et10,禁止定时器1中断。 (6)exl(ie.2)外部中断l允许位。ex10,禁止外部中断1。 (7)et0(ie.1)定时器0中断允许位。et00,禁止定时器0中断。 (8)ex0(ie .0)外部中断0允许位。ex00,禁止外部中断02.中断优先级寄存器ip mcs51的中断分为2个优先级。每个中断源的

26、优先级都可以通过中断优先级寄存器ip中的相应位来设定。其中:(1)一(ip.7)保留位。 、(2)一(ip .6)保留位。(3)pt2(ip.5)定时器2中断优先级设定位。pt2l,设定为高优先级。(4ps(1p.4)串行口中断优先级设定位。ps1,设定为高优先级o(5)pt1(1p.3)定时器1中断优先级设定位。ptl1设定为高优先级。(6)pxl(ip.2)外部中断1优先级设定位。pxl1,设定为高优先级。(7)pt0(ip.l)定时器0中断优先级设定位。pt01,设定为高优先级。(8)px0(1p0)外部中断0优先级设定位。px01,设定为高优先级。3.优先级结构靠ip寄存器把各中断源的

27、优先级分为高低两级。它们遵循这样两条基本规则:(1)低优先级中断可被高优先级中断所中断,反之不能;(2)一种中断(不管是什么优先级)一旦得到响应,与它同级的中断不能再中断它。 为了实现这两条规则,中断系统内部包含两个不可寻址的“优先级激活”触发器。其中一个触发器指示某高优先级的中断正在得到服务,所有后来的中断都被阻断。另一个触发器指示某低优先级的中断正得到服务,所有同级的中断都被阻断,但不阻断高优先级的中断。 当同时收到几个同一优先级的中断要求时,哪一个要求得到服务,取决于内部的查询顺序,相当于在每个优先级内,还同时存在另一个辅助优先结构。如;中断源 同级内的优先权外部中断0 最高定时器/计数

28、器0溢出外部中断1定时器/计数器1溢出串行口定时器/计数器2溢出 最低在每一机器周期中,所有中断源都顺序地被检查一遍;这样到任一周期的s6状态时,找到了所有已激活的中断请求,并排好了优先权。在下一机器周期的s1状态,只要不受阻断就开始响应其中最高优先级的中断请求。若发生下列情况,中断响应会受到阻断:(1)同级或高优先级的中断已在进行中;(2)正在执行的指令,尚未完成其最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应); (3)正在执行的是一条reti或者访问专用寄存器ie或ip的指令(换言之,在reti或者读写ie或ip之后,不会马上响应中断请求,而至少在执行一条其他指

29、令之后才会响应)。若存在上述任一种情况,中断查询结果就被取消。否则在紧接着的下一个机器周期,中断查询结果变为有效。4.中断响应协议 当某中断源提出中断请求后,作为应答,cpu首先使相应的“优先级激活”触发器置位,以阻断同级和低级的中断。然后,根据中断源的类别,在硬件的控制下,程序转向相应的向量单元,执行中断服务子程序。 硬件中断服务子程序调用时,把当时程序计数器pc的内容压入堆栈(在mcs5l中,pc是16垃的,占用了2个字节,没有自动保存程序状态字psw的内容),同时还根据中断的来源,把相应的向量单元地址装入pc中。这些向量地址是: 中断源 向量单元 外部中断0 0003h 定时器0溢出 0

30、00bh 外部中断1 00l3h定时器1溢出 001bh串行口 0023h定时器2溢出或t2ex端出现负跳变 002bh中断服务子程序的最后一条指令应是reti(中断返回)。reti指令将清除”优先级激活”触发器(该触发器在响应中断时被置位)。然后由堆栈弹出两个字节(下一条指令地址)装入到pc中。5.外部中断 外部中断的激活方式分为两种:一种是电平激活另一种是边沿激活。这两种方式可以靠tcon寄存器中的中断方式位iti或it0来控制。若itx0(x为0或l,后文中用到类同的符号,其含意相似),则采用电平激活方式:在引脚上检测到低电平,将触发外部中断。若itx1则采用边沿激活方式:在相继的两个周

31、期中,对引脚进行连续两次采样,若第一次采样值为高,第二次为低,则tcon寄存器中的中断请求标志iex被置1,以请求中断。由于外部中断引脚每个机器周期被采样一次,为确保采样,由引脚输入的信号应至少保持一个机器周期,即12个振荡器周期。如果外部中断为边沿激活方式,则引脚处的高电平和低电平值至少各保持一个机器周期,才能确保cpu检测到电平的跳变,而把中断请求标志iex置1。如果采用电平激活外部中断方式,外部中断源应一直保持中断请求有效直至所请求的中断得到响应时为止。6 .中断请求的撤除 cpu响应某中断请求后,在中断返回(reti)前,该中断请求应该撤除,否则会引起另一次中断。 对于定时器0或1溢出

32、中断,cpu在响应中断后,就用硬件清除了有关的中断请求标志tf0(tcon.5)或tfl(tcon.?),即中断请求是自动撤除的,无需采取其他措施。对于边沿激活的外部中断,cpu在响应中断后,也甩硬件清除了有关的中断请求标志ie0(tcon.1),或iel(tcon.3), 自动撤除了中断请求。 对于电平激活的外部中断,由于在硬件上,cpu对和引脚的信号完全没有控制(在专用寄存器中,没有相应的中断请求标志),也不像某些微处理机那样响应中断后会自动发出一个应答信号。因此在mc55l的用户系统中,要另外采取撤除外部中断的措施。例如,可以利用单稳态触发器对中断源信号进行整形,使之符合要求。7.中断响

33、应时间 现以外部中断为例,说明中断响应的最短时间。在每个机器周期的s5p2,和端的电平被锁到内部保持寄存器中,而实际上在下一个周期才会查询这些值。如果中断请求有效,一般情况下,下一条要执行的指令将是一条硬件子程序调用指令,调用所要求的服务程序。调用本身要花费两个机器周期。这样,从外部中断请求有效到开始执行服务程序的第一条指令,中间要隔3个周期,这是最短的响应时间。 如果发生了第3节所述的3种情况之一,那么中断请求受阻,中断响应时间会更长些。如果一个同级的或高优先级的中断已经在进行,则很显然,附加的等待时间将取决正在进行的中断服务程序。若正在执行的一条指令还没有进行到最后一个周期,那么附加的等待

34、时间不会超过3个周期,因为一条指令的最长执行时间为4个周期(mul和div)。如果正在执行的是reti指令或者是访问ie或ip的指令,则附加的等待时间不会超过5个周期(为完成正在执行的指令,还需要一个周期,加上为完成下一条指令所需要的最长时间4个周期,故最长为5个周期)。若系统中只有一个中断源,则响应时间在3个同期到8个周期之间。1.3.2数码管段数码管a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流 80ma(每段 10ma);动态:平均电流 4-5ma 峰值电流 100ma上面这只是七段数码管引脚图,其中共阳极数码管引脚图和共

35、阴极的是一样的。数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5s(3)表面有保护膜的产品,可以在使用前撕下来。 程序设计内容 (1)led数码显示原理: 七段led显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 led数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表(如表2-1所示)表2-1 字形码表table 2-1 font code table“0”3fh“8”7f

36、h“1”06h“9”6fh“2”5bh“a”77h“3”4fh“b”7ch“4”66h“c”39h“5”6dh“d”5eh“6”7dh“e”79h“7”07h“f”71h(2)由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:tabledb 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh。2.2 音乐产生的方法2.2.1 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低,不同音商的乐

37、音是用c、d、e、f、g、a、b表示的,这7个字母就是乐音的音名,它们一般依次唱成do、re、mi、fa、so、la、si,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。2.2.2 如何用单片机实现音乐的节拍 除了音符以外,节拍也是音乐的关键组成部分。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪

38、数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(c调)具体如下表:曲调值delay 曲调值delay调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms 音乐节拍表2.3.3如何用单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样

39、的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本设计中,单片机工作于12mhz时钟频率,使用其定时/计数器t0,工作模式为1,改变计数值th0和tl0可以产生不同频率的脉冲信号,在此情况下,c调的各音符频率与计数值t的对照如下表: 音符频率与计数值t的对照表t的值决定了th0和tl0的值,其关系为:th0=t/256,tl0=t%2562.3程序框图音乐发声程序框图如图2-4所示:图2-4 音乐发声程序框图3 总结通过这次课程设计,我们学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。首先在课程设计刚开始的调研阶段,我们

40、学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我们大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。了解了单片机方面的先进技术,这些都为我们的未来的学习指明了方向。我们的课程设计主要涉及硬件和软件两方面的内容,通过这些我们的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了protel99se原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我们对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如led数码管,键盘等

41、。在软件方面,通过串行口调试工具的开发,使我加深了对累封装的理解,熟悉了51系列单片机内部的寄存器和编程规则,以及如何控制外围电路。结 束 语将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器t0来产生这样方波频率信号,因此,我们只要把

42、一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。 不足之处有:1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。 2.音量不可调。可通过改进功放电路,即在lm386的1脚和8脚间增加一直外界电阻和电容,将3脚与地之间的电阻换为10k的变阻,即可调节其放大增益。参考文献1 陈明荧8051单片机课程设计实训教材m北京:清华大学出版社,2003年9月2 徐新艳单片机原理、应用与实践m北京:高等教育出版社,2005年3月3 吴金戌,沈庆阳,郭庭吉8051单片机实践与应用m第一版北京:清

43、华大学出版社,2002年4 吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用m清华大学出版社,20015 冯博琴,微型计算机原理与接口技术m清华大学出版社,20046 张毅刚,mcs-51单片机应用设计m哈尔滨工业大学出版社,20047 张淑清,姜万录等,单片微型计算机接口技术及应用m国防工业出版社,20038 吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用m清华大学出版社,20019 冯博琴,微型计算机原理与接口技术m清华大学出版社,200410 张毅刚,mcs-51单片机应用设计m哈尔滨工业大学出版社,200411 龙威林,杨冠声,胡山.单片机应用入门:at89s51和avrm.北京:化

44、学工业出版社,2008. 12 黄鑫,马善农,赵永科.基于cpld的电子琴研究与设计j.科技广场,2007(5). 13 赵亮,侯国锐.单片机c语言编程与实例m.北京:人民邮电出版社,2003. 14 杨恢先,黄辉先.单片机原理及应用m.北京:人民邮电出版社,2006. 15 张虹.单片机原理及应用m.北京:中国电力出版社,2009. 16 李云钢,邹逢兴,龙志强. 单片机原理与应用系统计j.北京:中国水利水电出版社,2008.附 录电路原理图:程序框图程序框图如图所示:系统程序流程如图所示:程序开始关闭定时器,进行下一次琴键识别延迟10ms读p0口的状态y再读p0口的状态判断是否是抖动n启动

45、定时器t0判断是几号琴键,并跳转到相应的程序查表得相应琴键的定时初值重装定时器t0处值对p1.0求反中断返回y等待中断,并判断此次琴键是否被释放 语言源程序#include#defineuchar unsigned char#define uint unsigned intunsigned char count,m;sbit kai=p24;sbit key0=p10;sbit key1=p11;sbit key2=p12;sbit key3=p13;sbit key4=p14;sbit key5=p15;sbit key6=p16;sbit key7=p30;sbit key8=p31;sb

46、it key9=p32;sbit key10=p33;sbit key11=p22;sbit key12=p35;sbit key13=p36;sbit key14=p34;uint code table1=64580,64684,64777,64820,64898,64968,65030;uint code table2=65058,65110,65157,65178,65217,65252,65283;uchar code tab1= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x

47、71;uchar code tab2= 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87, 0xff,0xef,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar sth0;uchar stl0;unsigned char code song = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0

48、x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0

49、x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0

50、x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /路边的野华不要采0x30,0x1c,0x10,0x20,0x40,0x1c,0x10,0x18,0x10,0x20,0x10,0x1c,0x10,0x18,0x40,0x1c,0x20,0x20,0x20,0x1c,0x20,0x18,0x20,0x20,0x80,0xff,0x20,0x30,0x1c,0x10,0x18,0x20,0x15,0x20,0x1c,0

温馨提示

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

评论

0/150

提交评论