版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计论文单片机课程设计论文题 目 fsy电子音乐盒的单片机设计 学 院 通信与电子工程学院 专业班级 电子083 学生姓名 指导教师 王发智 2011年12月11日33摘 要为了实现单片机控制音乐播放,此次毕业设计做出了尝试,即电子音乐盒的设计。本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。现选用at89s51单片机。主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。数码管采用共阳极数码管,通过单片机p1口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机p3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的p2
2、口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。 此次设计要利用单片机及keilc51编程软件编程和proteus单片机仿真软件和电子电工等方面知识,用keilc51编程软件编程,用proteus单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用i/o口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。关键词:at89s51单片机 方波 音调abstractin order to achieve s
3、ingle-chip control music playback,the design made an attempt to,that the design of electronic music box,this design uses a buzzer sound to achieve the song playing, can maintain the same basic tone, smooth playback of songs. at89s51 microcontroller is used. major design modules include digital displ
4、ay part, function keyboard parts, some of the buzzer sound, lights parts. using common anode led digital tube, through the p1 port control chip to realize the song number display; function keyboard with key switch, controlled by microcontroller port p3, playing songs in order to achieve the exchange
5、 and pause functions; buzzer by the microcontroller p2 port control, to achieve the song playing; lights are replaced by the ordinary light-emitting diodes, to achieve long light and color flashing effect. main work process is achieved by pressing the function key and the next one on the head, and a
6、 pause, while a digital display serial number of the currently playing song, buzzer playing the music, when played with the last one nocturne shihai lights to take advantage of the chip design and software programming and programming keilc51 proteus microcontroller simulation software such as electr
7、ical and electronics knowledge, with keilc51 programming software programming, microcontroller simulation software with the proteus simulation. finally, the physical production, the program to the microcontroller, the use of i / o ports have a certain frequency square wave to drive the buzzer, to is
8、sue a different tone to play music.keywords:at89s51 microcontroller square wave tone目 录摘 要iabstractii第1章 绪论11.1 概述1第2章 音乐盒总体设计22.1 设计功能要求22.2 总体设计原理22.3 总体设计框图3第3章 芯片的选择和介绍43.1 mcs-51系列单片机简介43.2 单片机的选择43.2.1 at89s51芯片介绍5第4章 系统的硬件设计84.1 电源电路84.2 单片机最小系统84.3 数码管显示部分94.4 键盘部分34.4.1 按键开关34.4.2 轻触开关34.5
9、蜂鸣器部分3第5章 系统软件设计135.1 软件系统介绍135.2 编程语言的选择135.3 应用软件的选择keilc51135.4 系统程序设计145.4.1 主程序流程图145.4.2 主程序155.4.3 定时器定时18 第6章 系统仿真及硬件制作216.1 仿真的必要性216.2 系统仿真过程216.2.1 原理图的绘制216.2.2 程序的调入22结论23参考文献24附录125附录232致谢33第1章 绪论1.1 概述语音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟”。音乐盒悠扬的乐声,经常勾起人们对美好往事
10、的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。300多年来席卷全球市场的机械音乐盒的最大魅力,也许就在于它能将抽象的音乐,凝固成具象的艺术品。成为人们表达美好情感,追思逝去岁月的最佳选择吧!机械音乐盒的发展史,可追溯至14世纪初期,所发明挂在教堂钟楼上的排钟,这种用发条装置来演奏的乐器,能发出清脆如水晶般的乐声,一度风靡荷兰,比利时和法国北部。1811年以来,瑞士曾经是这项技艺的中心,它和瑞士钟表工业一样,两者相辅相成,一段时间名领风骚,称霸全球。音乐盒300多年的产品发展,同时也是人类文明300多年发 展的历史鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发展现状,它也成了
11、时代的一面镜子。现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。 音乐盒的分类:18音,30音,这些是代表音乐盒机芯的音数,其实也就是机芯里面,那一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富,曲子也就是越好听,同时曲子的播放时间也相应长一点。一般18音的曲子为25秒左右,30音的曲子为35秒左右。50音的差不多有60秒。目前来说,一般市面上卖的“爱丽丝”都是18音的,其次是30音,50音。此次设计的目的就是运用单片机来设计一套控制系统,
12、来完成音乐播放的控制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。第2章 音乐盒总体设计2.1 设计功能要求1.利用i/o口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲。2.采用七段数码管显示当前播放的歌曲序号。3. 可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。2.2 总体设计原理通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期时间再对i/o口反相,就可在i/o脚上得到此频率的脉冲
13、。如中音d0,频率为523hz,其周期t=1/523=1912微秒,因此只要令计数器定时1912/2=956,在每计数956次时将i/o口反相,就可得到中音d0(523hz)。 当键盘有键按下时,判断键值,启动计数器t0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器t1,在led显示歌曲号,也可使彩灯长亮和闪烁。数码管采用共阳极数码管,通过单片机p1口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机p3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的p2口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。通过按下功能键实现上一首和下一
14、首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。 2.3 总体设计框图单片机接+5v电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,控制音乐盒的上一首和下一首曲目,再由i/o接口输出控制蜂鸣器发声,led显示,彩灯亮或闪烁。另外,复位电路在于营造一个程序运行的初始状态,在程序出错时,重新启动单片机工作。 电源晶振部分复位电路at89s51蜂鸣器led显示功能键 电源晶振部分复位电路at89s51蜂鸣器led显示功能键 图2.3 总体设计框图编程设置好定时时间,通过编程器写入at89s51单片机系统。由at89s51单片机
15、的定时器每秒钟通过p1.0-p1.7口控制led数码显示,复位信号由按钮输入,每按下一次,系统恢复原设定状态。电源,晶振部分,复位电路,单片机,led,功能键,蜂鸣器部分后面均有详细介绍。第3章 芯片的选择和介绍3.1 mcs-51系列单片机简介单片机系统是本监控系统的核心部分,数据的处理以及对试验设备的控制都由其来完成。单片微型计算机(single-chip microcomputer)简称单片机。它是在一块芯片内集成了计算机的组成单元,包括中央处理cpu(central processing unit)、随机存储器ram(random access memory)、只读存储器rom(rea
16、d only memory)、定时器/计数器以及i/o(input/output)等主要的计算机部件。虽然单片机只是一个芯片,但它具有微机系统的组成和功能特征,可谓麻雀虽小五脏俱全。单片机经历了4位单片机、8位低档单片机、8位高档单片机、16位单片机等各个阶段,现在正向高性能、高速度、高集成度、大容量多功能、低功耗、加强i/0能力及结构兼容的32位和双cpu方向发展。从mcs-48单片机发展到如今的新一代单片机,大致经历了三代。如以intel位单片机为例,这三代的划分大致如下:一代以mcs-48系列单片机为代表。其主要的技术特征是将cpu和计算机外围电路集成到了一个芯片上,在与通用cpu分道扬
17、镳、构成新型工业微控制器方面取得了成功,为单片机的进一步发展开辟了成功之路。第二代以mcs-51系列的8051、8052单片机为代表。mcs-51系列8位高档单片机是在总结mcs-48系列单片机的基础上,于80年代初推出的新产品。第三代是intel随后推出的mcs-96系列单片机。与mcs-51相比,mcs-96不但字长增加一倍,而且在其他性能方面也有很大的提高,特别是芯片内还增加了一个4路或8路的a/d转换器,使其具有a/d转换功能。在这所有的系列中mcs-51系列以它较高的性能和较合理的价格仍占据着很大的市场地位。3.2 单片机的选择单片机型号的选择是根据控制系统的目标、功能、可靠性、性价
18、比、精度和速度等来决定的。根据本课题的实际情况,单片机型号的选择主要从以下两点考虑;一是要有较强的抗干扰能力。二是要有较高的性价比。由于51系列在我国使用最广,且该系列的资料和能够兼容的外围芯片也比较多,特别是atmel公司2003年推出新一代89s系列单片机,其典型产品at89s51单片机,与89c系列单片机相比具有较高的性能价格比。故本系统采用atmel公司生产的at89s51单片机作为交通灯的核心部件,该单片机是美国atmel公司生产的低电压、高性能coms8位单片机,片内含4kb的可反复擦写的只读程序存储器(eprom)和128字节的随机存取数据存储器(ram),片内置通用8位中央处理
19、器(cpu)和flash存储单元,是80c51的增强型并且指令完全兼容,at89s51新增加的功能由特殊功能寄存器完成,相信日后它将更广泛地应用于工业控制、汽车控制、智能仪器仪表及电机控制等应用领域。3.2.1 mcs-51系列单片机简介 图 3.1 at89s51芯片 图3.2 管脚排列图它有40个管脚,分成两排,每一排各有20个脚,其中左下角标有箭头的为第1脚,然后按逆时针方向依次为第2脚、第3脚第40脚,如图3.2所示at89s51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读
20、程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。at89s51具有如下特点:40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 管脚说明:vcc:供电电压gnd:接地 p0
21、口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2
22、口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为
23、低电平,p3口将输出电流(ill)这是由于上拉的缘故。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口同时为闪烁编程和编程校验接收一些控制信号。i/o口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个
24、三角形表示的就是输入缓冲器cpu将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0q端为0q为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类i/o口被称为准双向口89c51的p0/p1/p2/p3口作为输入时都是准双向口接下来让
25、我们再看另一个问题从图中可以看出这四个端口还有一个差别除了p1口外p0p2p3口都还有其他的功能 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用
26、。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。基于a
27、t89s51的各种特性,选用此型号比较合适。第4章 系统的硬件设计4.1 电源电路采用经市电变压,稳压的稳压电源电路图如图4.1所示 图4.1 电源电路单片机使用的是5(0.2)v的电源,对电压的稳定要求较高,我们可以用lm7805来实现此功能。首先,用交流变压器将220v电压变为大于5v的交流电,比如7.5v或10.5v,然后用桥式整流器,和电容进行整流滤波,将交流电处理为直流。然后用7805进行5v恒压输出,共给单片机电路使用。4.2 单片机最小系统 图4.2 单片机最小系统单片机最小系统以89s51为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有
28、要求.89s51单片机系列是在mcs-51系列的基础上发展起来的,是当前8位单片机的典型代表,采用chmos工艺,即互补金属氧化物的hmos工艺, chmos是cmos和hmos的结合,具有hmos高速度和高密度的特点,还具有cmos低功耗的特点.单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接线方式可以获得不同时钟电路,有内部时钟电路和外部时钟电路,如图4.3所示,外部时钟电路会使电路复杂,故采用的是内部时钟电路。时钟电路在单片机的外部通过xtal1,xtal2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为6mhz的晶振,一个机器周期为2u
29、s,c1,c2为22pf。图4.3 时钟电路图 图4.4 复位电路图复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。复位电路分为上电自动复位和按键手动复位,如图4.4所示。rst引脚是复位信号的输入端,复位信号是高电平有效.这次采用的是手动复位,复位通过电容c3,c4和电阻r1,r2来实现,按键手动复位是图中复位键来实现的。4.3 数码管显示部分歌曲序号显示部分用数码管来显示,led显示器件是通过发光二极管显示字段的器件。在单片机控制系统中常用的是由7段
30、led数码管,它的显示块中有8个发光二极管,7个发光二极管组成字符“8”,1个发光二极管构成小数点,因此有人称7段led数码管为8段显示器。led数码管的管脚配置如图4.5所示。led显示块,如图4.8所示。它们经过电阻和单片机的控制端口线一一相连,只要改变控制端口的电平就能使其发光或熄灭。led数码管有共阴极和共阳极两类,如图4.6所示。共阴极led数码管的发光二极管的阴极共地,如图4.6(a),当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极led数码管是发光二极管的阳极共接,如图4.6(b),当某个二极管的阴极电压为低电平时,二极管发光。 (a)共阴极 (b)共阳极图4.5 l
31、ed数码管管脚配置图 图4.6 两类led数码管本设计所用的数码管为共阳极数码管,数码管的每段的电流是10毫安。所以公共端接高电平,但在软件编码时需要和硬件相对应,p roteus电路图如4.8所示,实物如图4.9所示。图4.7 数码管引脚图 图4.8 数码管仿真图 图4.9 数码管实物图4.4 键盘部分键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。1.编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。2.非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对
32、应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的cpu时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。4.4.1 mcs-51系列单片机简介在接线时由于有六个引脚,连接时需要用万用表进行测量,然后接通两个引脚。4.4.2 轻触开关一种电子开关,使用时轻轻点按开关按钮就可使开关接通,当松开手时开关既断开,其内部结构是靠金属弹片受力弹动来实现通断的。但微动开关也有它不足的地方,频繁的按动会使金属弹片疲劳失去弹性而失效,连接时接通对角线即可。4.5 蜂鸣器部分一般所指的蜂鸣器是以压电陶瓷为主要元件的。压电陶瓷是一
33、类有将压力与电流相互转换能力的特殊陶瓷。这种能力缘于其特殊的晶体结构。当压电陶瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在内部产生一个电流,并且电流的变化与压力的变化密切相关。反之亦然。所以利用这一特性,在压电陶瓷上通过一定频率的电流,就会引起压电陶瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所听见,也就是产生了蜂鸣声。 1蜂鸣器的作用:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。2蜂鸣器的分类:蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3
34、蜂鸣器的电路图形符号:蜂鸣器在电路中用字母“h”或“ha”(旧标准用“fm”、“lb”、“jd”等)表示。(二)蜂鸣器的结构原理1压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515v直流工作电压),多谐振荡器起振,输出1.52.5khz的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片
35、及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。第5章 系统软件设计5.1 软件系统介绍一个系统的正常运行不仅需要硬件系统的支持,而且需要软件系统的支持。如果把硬件比作躯体,那软件就是灵魂,硬件系统和软件系统相互间密切的配合才构建了能够“思考”和“判断”的整体系统。借助软件的可编程性,可以精简硬件系统的组成;凭借软件的灵活性,可以不用对硬件系统进行修改而实现系统功能的修改。软件系统与硬件系统是密切相联的,软件系统建立在硬件系统之上,离开了硬件系统,软件将无法实现任何功能。软件的设计有一定的针对性,对于不
36、同的硬件系统,需要编写不同的软件。与硬件系统一样,软件系统的好坏,直接影响到系统的工作效率和可靠性。5.2 编程语言的选择基于单片机的交通灯控制这次采用汇编语言编程,它是一种面对机器的语言,可以直接控制硬件的语言。因为这次还要进行硬件连接,所以可以方便控制各个硬件接口如i/o接口,并且目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。具有保持了机器语言的优点,具有直接和简捷的特点。就是因为汇编语言的这些特点,所以70%以上的系统软件是用汇编语言编写的。例如某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。很多高级绘图程序、视频游戏程序是用汇编语言编写的。 所以汇编语言是
37、我们理解整个计算机系统的最佳起点和最有效途径,通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。 单片机烧录的代码,用来编程单片机。5.3 应用软件的选择keilc51单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为cpu可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于mcs-51单片机的汇编软件有早期的a51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开
38、发,单片机的开发软件也在不断发展,keil软件是目前最流行开发mcs-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持keil即可看出。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部份组合在一起。运行keil软件需要pentium或以上的cpu,16mb或更多ram、20m以上空闲的硬盘空间、win98、nt、win2000、winxp等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用c语言编程,那么keil几乎就是你的不二之选(目前在国内你只能买
39、到该软件、而你买的仿真机也很可能只支持该软件),即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在
40、开发大型软件时更能体现高级语言的优势。c51工具包的整体结构,其中uvision与ishell分别是c51 for windows和for dos的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用ide本身或其它编辑器编辑c或汇编源文件。然后分别由c51及a51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生成库文件,也可以与库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由oh51转换成标准的hex文件,以供调试器dscope51或tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写
41、入程序存贮器如eprom中。5.4 系统程序设计5.4.1 主程序流程图开始要定义音频输出端口,歌曲总数以及每首歌曲的入口地址;然后对定时器初始化,确定工作方式,赋初值,开放中断,启动定时器工作;对音频输出端口初始化;设置音节起始位置和节拍间距,把音节和节拍的入口地址信息存放在固定存储单元中;将取出的音符数+节拍数保存在存储单元中,查询音乐的节拍表;当六首歌曲的节拍表查询完,音乐播放完毕,程序结束。图5.1 系统流程图5.4.2 主程序out bit p2.0 ;定义音频输出端口,p2.0n equ 6 ;歌曲总数out_num equ p1 ;数码管显视当前所放歌曲曲数 org 0000h
42、ajmp main org 0003h ajmp last_song ;外部中断0用于接上一曲歌按键 org 000bh ajmp f_t0 ;定时器0用于定时,作音符发生器用 org 0013hq4: ajmp next_song ;外部中断1接下一曲歌按键 org 001bh ajmp start_pause ;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffh,方式2 org 0030hmain: mov sp,#60h mov dptr,#table ;dprt指向每首歌曲的入口地址的地址。 mov r0,#30h ;r0中存入数据30h,这里在以30h开始的单元存放每首歌曲
43、的入口地址,其中30h,31h存放 ;歌曲的节拍入口地址,32h,33h存放歌曲音符入口地址,每首歌占用四个存储存单元。 mov r5,#00h;r5中存放表table中正在执行操作的序号 mov r6,#1 ;r6存放正在设置入口信息的歌曲数set_tab: mov a,r5 ;设置每首歌曲的入口信息,存放在以30h开始的存储单元中。 movc a,a+dptr mov r0,a inc r5 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r5 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r0 inc r5 m
44、ov a,r5 movc a,a+dptr mov r0,a inc r0 inc r5 inc r6 ;设置完一首歌曲后,歌曲数加一 cjne r6,#n+1,set_tab ;是否设置完,没有便继续,否则进行下面的操作 对中断,计数器的相关参数进行设置 mov tmod, #61h;计数器0工作方式1,计数器1工作方式2 mov th1,#0ffh ;给计数器1置初值0ffh,又由于是工作方式2, mov tl1,#0ffh ;计数器计数为1,相当于一外部中断。 setb et1 ;允许计数器1中断 setb et0 ;允许计数器具0中断 clr pt0 ;计数器0为低优先级 setb p
45、t1 ;计数器1为高优先级 setb it0 ;外部中断0为跳沿触发 setb px0 ;高优先级 setb it1 ;外部中断1为跳沿触发 setb px1 ;高优先级 setb ex1 ;允许外部中断1中断 setb ex0 ;允许外部中断定0中断 setb ea ;开中断总开关 setb tr1 ;定时器1开始工作,作中断用 setb out ;音频输出端口初始化 设置结束 clr f0 ;设置f0=0,用来作暂停/播放的标置位用 mov 22h,#01h ;22h单元中存放正在播放的歌曲编号 mov dptr,#out_tab ;将正在播放的歌曲编号送数码管显视 mov a,22h m
46、ovc a,a+dptr mov out_num,a mov r7,#00h ;r7中存放歌曲总信息的入口地址start0:mov r4,#00h ;r4存放当前正在播放歌曲的第几个节拍数 mov r0,#30h ;30h开始的单元中存放歌曲的入口信息 mov a,r7 ;将歌曲的节拍表的入口地址送到dptr add a,r0 mov r0,a mov dph,r0 inc r0 mov dpl,r0 inc r0 mov a,r4 inc r4 movc a,a+dptr ;取出第一节拍数,其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符 mov 26h,a将取出的音符数+节拍数保存在职
47、26h单元中next: mov r0,#30h ;开始取出歌曲的第一个数据 mov a,r7 add a,r0 mov r0,a mov dph,r0 inc r0 mov dpl,r0 inc r0 mov a,r4 inc r4 movc a,a+dptr ;放在a中 jz end0 ;若为0,则表示为休止符,不唱,本次音符不唱, mov r1,a ;不为0,取出节拍数 anl a,#0fh mov r2,a mov a,r1 swap a anl a,#0fh jnz sing ;音符不为0,唱 clr tr0 ;为0,不唱,关频率发生器 sjmp sing1sing: dec a ;开
48、始唱,进行相应的数据处理 mov r3,a rl a mov dph,r0 inc r0 mov dpl,r0 inc r0 movc a,a+dptr mov 21h,a mov th0,a mov a,r3 rl a inc a movc a,a+dptr mov 20h,a mov tl0,a setb tr0 ;开唱sing1:lcall delay ;每个音符唱多久 jb f0,for ;是否暂停, ajmp next ;没有暂停,继续for: clr tr0 ;暂停,不唱 jb f0,$ ;等待播放 ajmp next ;开始播放end0: clr tr0 ;不唱 mov a,22
49、h ;唱完处理 cjne a,#n,ww ;是不是全部歌曲都唱完 mov 22h,#01h ;全部唱完,则从第一首开始再唱 mov r7,#00h mov out_num,#11111001b ;数码管显视第一首歌曲编号 ajmp wwww: mov a,r7 ;没有全部唱完,唱下一首,歌曲的入口信息调整 add a,#4 mov r7,a inc 22h clr ea push dph push dpl mov a,22h mov dptr,#out_tab movc a,a+dptr mov out_num,a ;数码管显视相应的歌曲编号5.4.3 定时器定时51单片机内部有两个16位的可编程的定时/计数器,称为定时器0(t0)和定时器1(t1),它们都具有定时功能和事件计数功能,可用于定时控制、延时、对外部事件检测和计数等场合。定时器的核心部件是加1计数器,通过设置tmod可使定时器工作在定时或计数方式,即将定时器用于定时或计数。实际上这两种工作方式没有本质的区别,都是对脉冲信号计数,只是计数的脉冲来源不同而已。如果计数脉冲是频率稳定的系统时钟的分频信号,则称为定时方式,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版企业派遣人员服务协议样本版B版
- 2024年环保型染料研发生产合同
- 2024年标准型风管产品销售合同样本版B版
- 2024年度绿化苗木种植与销售合作协议3篇
- 2024年度职业技能培训中心新生入学教育培训合同3篇
- 2024年新能源土地房屋股权转让与开发建设合同范本3篇
- 2024年商品房买卖合同违约责任认定及赔偿执行细则3篇
- 2024商铺租赁转租合同样本:绿色生态商业租赁协议3篇
- 2024年度实验室化学品储存与运输服务合同3篇
- 造纸厂钻孔桩施工协议
- 样品管理控制流程图
- 西方经济学考试题库含答案
- 监理公司各部门职责
- 253种中药材粉末显微鉴别主要特征
- 论辛弃疾词作的愁情主题及其审美价值
- 新形势下我国保险市场营销的现状、问题及对策
- LTE无线网络优化PPT课件
- 动态血压监测在社区高血压患者管理的意义
- 管道中英文对照表
- 240灯控台_说明书
- 新形势下加强市场监管局档案管理工作的策略
评论
0/150
提交评论