版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计设计(论文)单片机课程设计设计(论文) 第 i 页摘 要为了实现单片机控制音乐播放,此次毕业设计做出了尝试,即电子音乐盒的设计。本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。现选用 at89s51 单片机。主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。数码管采用共阳极数码管,通过单片机p1 口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机 p3 口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的 p2 口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。主要工作过程是通过按下功
2、能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。 此次设计要利用单片机及 keilc51 编程软件编程和 proteus 单片机仿真软件和电子电工等方面知识,用 keilc51 编程软件编程,用 proteus 单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用 i/o 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。关键词:关键词:at89s51 单片机 方波 音调 单片机课程设计设计(论文)单片机课程设计设计(论文) 第 ii 页目 录摘 要 .i目 录 .ii第 1 章 绪论 .1第 2
3、 章 音乐盒总体设计 .22.1 设计功能要求.22.2 总体设计原理.22.3 总体设计框图.2第 3 章 芯片的选择和介绍 .43.1 mcs-51 系列单片机简介 .43.2 单片机的选择.43.2.1 at89s51 芯片介绍 .5第 4 章 系统硬件设计 .84.1 电源电路.84.2 单片机最小系统.84.3 数码管显示部分.94.4 键盘部分.114.4.1 按键开关 .114.4.2 轻触开关 .114.5 蜂鸣器部分.11第 5 章 系统软件设计 .135.1 软件系统介绍.135.2 编程语言的选择.135.3 主程序 .14第 6 章 系统仿真及硬件制作 .216.1 仿
4、真的必要性.21结论 .22参考文献 .22附录 .23附录一 音乐歌曲源代码.23附录二 音乐盒原理图.26单片机课程设计设计(论文)单片机课程设计设计(论文) 第 0 页第 1 章 绪论音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为 “可发出声音的组钟 ”。音乐盒悠扬的乐声,经常勾起人们对美好往事的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。 300 多年来席卷全球市场的机械音乐盒的最大魅力,也许就在于它能将抽象的音乐,凝固成具象的艺术品。成为人们表达美好情感,追思逝去岁月的最佳选择吧!机械音乐盒的发展史,可追溯至 14 世纪初期,所
5、发明挂在教堂钟楼上的排钟 ,这种用发条装置来演奏的乐器,能发出清脆如水晶般的乐声,一度风靡荷兰,比利时和法国北部。 1811 年以来,瑞士曾经是这项技艺的中心,它和瑞士钟表工业一样,两者相辅相成,一段时间名领风骚,称霸全球。音乐盒 300 多年的产品发展,同时也是人类文明300 多年发 展的历史鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发展现状,它也成了时代的一面镜子。现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。 音乐盒的分类 :1
6、8 音,30 音,这些是代表音乐盒机芯的音数,其实也就是机芯里面,那一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富,曲子也就是越好听,同时曲子的播放时间也相应长一点。一般18 音的曲子为 25 秒左右,30 音的曲子为 35 秒左右。50 音的差不多有 60 秒。目前来说,一般市面上卖的 “爱丽丝”都是 18 音的,其次是 30 音,50 音。此次设计的目的就是运用单片机来设计一套控制系统,来完成音乐播放的控制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 1 页第 2 章 音乐盒总体设计2.1 设
7、计功能要求1.利用 i/o 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲。2.采用七段数码管显示当前播放的歌曲序号。3. 可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。2.2 总体设计原理通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频) ,然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 i/o 反相,然后重复计时此半周期时间再对 i/o 口反相,就可在 i/o 脚上得到此频率的脉冲。如中音 d0,频率为 523hz,其周期t=1/523=1912 微秒,因此只要令计数器定时 1
8、912/2=956,在每计数 956 次时将 i/o 口反相,就可得到中音 d0(523hz)。 当键盘有键按下时,判断键值,启动计数器 t0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器 t1,在 led 显示歌曲号,也可使彩灯长亮和闪烁。数码管采用共阳极数码管,通过单片机 p1 口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机 p3 口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的 p2 口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放
9、出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。2.3 总体设计框图单片机接+5v 电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,控制音乐盒的上一首和下一首曲目,再由 i/o 接口输出控制蜂鸣器发声,led 显示,彩灯亮或闪烁。另外,复位电路在于营造一个程序运行的初始状态,在程序出错时,重新启动单片机工作。 单片机课程设计设计(论文)单片机课程设计设计(论文) 第 2 页 图 2.3 总体设计框图 编程设置好定时时间,通过编程器写入 at89s51 单片机系统。由 at89s51 单片机的定时器每秒钟通过 p1.0-p1.7 口控制 led 数码显示,复位信号由按钮输入,每按下
10、一次,系统恢复原设定状态。电源,晶振部分,复位电路,单片机,led,功能键,蜂鸣器部分后面均有详细介绍。电源晶振部分复位电路at89s51蜂鸣器led 显示功能键单片机课程设计设计(论文)单片机课程设计设计(论文) 第 3 页第 3 章 芯片的选择和介绍3.1 mcs-51 系列单片机简介单片机系统是本监控系统的核心部分,数据的处理以及对试验设备的控制都由其来完成。单片微型计算机(single-chip microcomputer)简称单片机。它是在一块芯片内集成了计算机的组成单元,包括中央处理 cpu(central processing unit) 、随机存储器ram(random acc
11、ess memory) 、只读存储器 rom(read only memory) 、定时器/计数器以及 i/o(input/output)等主要的计算机部件。虽然单片机只是一个芯片,但它具有微机系统的组成和功能特征,可谓麻雀虽小五脏俱全。单片机经历了 4 位单片机、8 位低档单片机、8 位高档单片机、16 位单片机等各个阶段,现在正向高性能、高速度、高集成度、大容量多功能、低功耗、加强 i/0 能力及结构兼容的 32 位和双 cpu 方向发展。从 mcs-48 单片机发展到如今的新一代单片机,大致经历了三代。如以 intel 位单片机为例,这三代的划分大致如下:一代以 mcs-48 系列单片机
12、为代表。其主要的技术特征是将 cpu 和计算机外围电路集成到了一个芯片上,在与通用 cpu 分道扬镳、构成新型工业微控制器方面取得了成功,为单片机的进一步发展开辟了成功之路。第二代以 mcs-51系列的 8051、8052 单片机为代表。mcs-51 系列 8 位高档单片机是在总结 mcs-48 系列单片机的基础上,于 80 年代初推出的新产品。第三代是 intel 随后推出的 mcs-96 系列单片机。与 mcs-51 相比,mcs-96 不但字长增加一倍,而且在其他性能方面也有很大的提高,特别是芯片内还增加了一个 4 路或 8 路的 a/d 转换器,使其具有 a/d 转换功能。在这所有的系
13、列中 mcs-51 系列以它较高的性能和较合理的价格仍占据着很大的市场地位。3.2 单片机的选择单片机型号的选择是根据控制系统的目标、功能、可靠性、性价比、精度和速度等来决定的。根据本课题的实际情况,单片机型号的选择主要从以下两点考虑;一是要有较强的抗干扰能力。二是要有较高的性价比。由于 51 系列在我国使用最广,且该系列的资料和能够兼容的外围芯片也比较多,特别是 atmel 公司 2003 年推出新一代 89s 系列单片机,其典型产品 at89s51 单片机,与 89c 系列单片机相比具有较高的性能价格比。故本系统采用 atmel 公司生产的 at89s51 单片机作为交通灯的核心部件,该单
14、片机是美国 atmel 公司生产的低电压、高性能 coms8 位单片机,片内含 4kb 的可反复擦写的只读程序存储器(eprom)和 128 字节的随机存取数据存储器(ram) ,片内置通用 8位中央处理器(cpu)和 flash 存储单元,是 80c51 的增强型并且指令完全兼容,at89s51 新增加的功能由特殊功能寄存器完成,相信日后它将更广泛地应用于工业控制、汽车控制、智能仪器仪表及电机控制等应用领域。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 4 页3.2.1 at89s51 芯片介绍 图 3.1 at89s51 芯片图 3.2 管脚排列图它有 40 个管脚,分成两排,
15、每一排各有 20 个脚,其中左下角标有箭头的为第 1 脚,然后按逆时针方向依次为第 2 脚、第 3 脚第 40 脚,如图 3.2 所示at89s51 是一个低功耗,高性能 cmos 8 位单片机,片内含 4k bytes isp(in-system programmable)的可反复擦写 1000 次的 flash 只读程序存储器,器件采用 atmel 公司的高密度、非易失性存储技术制造,兼容标准 mcs-51 指令系统及 80c51 引脚结构,芯片内集成了通用 8 位中央处理器和 isp flash 存储单元,功能强大的微型计算机的 at89s51 可为许多嵌入式控制应用系统提供高性价比的解
16、决方案。at89s51 具有如下特点:40 个引脚,4k bytes flash 片内程序存储器,128 bytes的随机存取数据存储器(ram) ,32 个外部双向输入/输出(i/o)口,5 个中断优先级 2层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 管脚说明:vcc:供电电压gnd:接地 p0 口:p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电流。当 p1 口的管脚第一次写 1 时,被定义为高阻输入。p0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 fiash 编程时,p
17、0 口作为原码输入口,当 fiash 进行校验单片机课程设计设计(论文)单片机课程设计设计(论文) 第 5 页时,p0 输出原码,此时 p0 外部必须被拉高。p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能接收输出4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 flash 编程和校验时,p1 口作为第八位地址接收。p2 口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收,输出 4个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上
18、拉电阻拉高,且作为输入。并因此作为输入时,p2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,p2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2 口输出其特殊功能寄存器的内容。p2 口在 flash 编程和校验时接收高八位地址信号和控制信号。p3 口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3 口将输出电流(il
19、l)这是由于上拉的缘故。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 口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就
20、是输入缓冲器 cpu 将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心 1 然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置 1 端口锁存器原来的状态有可能为 0q 端为 0q为1 加到场效应管栅极的信号为 1 该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为 1 也会因端口的低阻抗而使信号变低使得外加的 1 信号读入后不一定是 1 若先执行置 1 操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类 i/o 口被称为准双向口 89c51 的p0/p1/p2/p
21、3 口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了 p1 口外 p0p2p3 口都还有其他的功能 单片机课程设计设计(论文)单片机课程设计设计(论文) 第 6 页rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个
22、ale 脉冲。如想禁止ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ale 禁止,置位无效。psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信号将不出现。ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储器(0000h-ffffh) ,不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 reset;当/ea 端保持高电平时,此间内部程序存储器
23、。在 flash 编程期间,此引脚也用于施加 12v 编程电源(vpp) 。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。基于 at89s51 的各种特性,选用此型号比较合适。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 7 页第 4 章 系统硬件设计4.1 原理图vcc40gnd20rst9x119x218psen29ale30p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1
24、.34p1.4/int25p1.5/int36p1.6/int47p1.7/int58p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427p2.7/a1528p3.0/rxd010p3.1/txd011p3.2/int012p3.3/int113p3.4/t014p3.5/t115p3.6/wr16p3.7/rd17ea31u1ds80c310-mcls1sw-pbs2sw-pbs3sw-pbk1f2g3e4d5k6c8dp7b9a10ds1dpy amber-ccls1speakerds2led112y1xt
25、al20pfc220pfc310kr12vcc一一一一一一+5vccs4sw-pb10ufc1vcc1kr16q12n3906q22n39061kr11kr2r3r4r5r6r7r8r94.2 电源电路 采用经市电变压,稳压的稳压电源电路图如图 4.1 所示in4007vi1vo3gnd27805fu11ac11000nfr150047ufinout+_ 图 4.1 电源电路单片机使用的是 5(0.2)v 的电源,对电压的稳定要求较高,我们可以用 lm7805来实现此功能。首先,用交流变压器将 220v 电压变为大于 5v 的交流电,比如 7.5v 或10.5v,然后用桥式整流器,和电容进行整
26、流滤波,将交流电处理为直流。然后用 7805进行 5v 恒压输出,共给单片机电路使用。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 8 页4.3 单片机最小系统p1.0p1.1p1.2p1.3p1.4p1.5p1.6p1.7xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int0
27、12p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u1at89c51x1crystalc122pfc222pfc322ufc422ufr11kr21k+5v21图4.2 单片机最小系统单片机最小系统以89s51为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求.89s51单片机系列是在mcs-51系列的基础上发展起来的,是当前8位单片机的典型代表,采
28、用chmos工艺,即互补金属氧化物的hmos工艺, chmos是cmos和hmos的结合,具有hmos高速度和高密度的特点,还具有cmos低功耗的特点.单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接线方式可以获得不同时钟电路,有内部时钟电路和外部时钟电路,如图4.3所示,外部时钟电路会使电路复杂,故采用的是内部时钟电路。时钟电路在单片机的外部通过xtal1,xtal2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为6mhz的晶振,一个机器周期为2us,c1,c2为22pf。 图4.3 时钟电路图单片机课程设计设计(论文)单片机课程设计设计(论
29、文) 第 9 页图4.4 复位电路图复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。复位电路分为上电自动复位和按键手动复位,如图4.4所示。rst引脚是复位信号的输入端,复位信号是高电平有效.这次采用的是手动复位,复位通过电容c3,c4和电阻r1,r2来实现,按键手动复位是图中复位键来实现的。4.4 数码管显示部分歌曲序号显示部分用数码管来显示,led 显示器件是通过发光二极管显示字段的器件。在单片机控制系统中常用的是由 7 段 led 数码管,它的显示
30、块中有 8 个发光二极管,7 个发光二极管组成字符“8” ,1 个发光二极管构成小数点,因此有人称 7 段 led 数码管为 8段显示器。led 数码管的管脚配置如图 4.5 所示。led 显示块,如图 4.8 所示。它们经过电阻和单片机的控制端口线一一相连,只要改变控制端口的电平就能使其发光或熄灭。led 数码管有共阴极和共阳极两类,如图 4.6 所示。共阴极 led 数码管的发光二极管的阴极共地,如图 4.6(a) ,当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极 led 数码管是发光二极管的阳极共接,如图4.6(b) ,当某个二极管的阴极电压为低电平时,二极管发光。 (b)共
31、阳极图 4.5 led 数码管管脚配置图 图 4.6 两类 led 数码管本设计所用的数码管为共阳极数码管,数码管的每段的电流是10毫安。所以公共端接高电平,但在软件编码时需要和硬件相对应,p roteus电路图如4.8所示,实物如图4.9所示。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 10 页图 4.7 数码管引脚图 图 4.8 数码管仿真图 图 4.9 数码管实物图4.5 键盘部分 键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。1.编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵
32、通常不被单片机系统采用。2.非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的cpu 时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。4.5.1 按键开关单片机课程设计设计(论文)单片机课程设计设计(论文) 第 11 页在接线时由于有六个引脚,连接时需要用万用表进行测量,然后接通两个引脚。4.5.2 轻触开关一种电子开关,使用时轻轻点按开关按钮就可使开关接通,当松开手时开关既断开,其内部结构是靠金属弹片受力弹动来实现通断的。但微动开关也有
33、它不足的地方,频繁的按动会使金属弹片疲劳失去弹性而失效 ,连接时接通对角线即可。4.5 蜂鸣器部分 1蜂鸣器的作用 :蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。2蜂鸣器的分类 :蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3蜂鸣器的电路图形符号 :蜂鸣器在电路中用字母 “h”或“ha”(旧标准用“fm”、“lb”、“jd”等)表示。(二)蜂鸣器的结构原理1压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光
34、二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515v 直流工作电压) ,多谐振荡器起振 ,输出 1.52.5khz 的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。单片机课程设计设计(论文)单片机课程设计设计(论文) 第 12 页第 5 章 系统软件设计5.1 软
35、件系统介绍一个系统的正常运行不仅需要硬件系统的支持,而且需要软件系统的支持。如果把硬件比作躯体,那软件就是灵魂,硬件系统和软件系统相互间密切的配合才构建了能够“思考”和“判断”的整体系统。借助软件的可编程性,可以精简硬件系统的组成;凭借软件的灵活性,可以不用对硬件系统进行修改而实现系统功能的修改。软件系统与硬件系统是密切相联的,软件系统建立在硬件系统之上,离开了硬件系统,软件将无法实现任何功能。软件的设计有一定的针对性,对于不同的硬件系统,需要编写不同的软件。与硬件系统一样,软件系统的好坏,直接影响到系统的工作效率和可靠性。5.2 应用软件的选择keilc51单片机开发中除必要的硬件外,同样离
36、不开软件,我们写的汇编语言源程序要变为cpu 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于 mcs-51 单片机的汇编软件有早期的 a51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,keil 软件是目前最流行开发mcs-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 keil 即可看出。keil 提供了包括 c 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision
37、)将这些部份组合在一起。运行keil 软件需要 pentium 或以上的 cpu,16mb 或更多 ram、20m 以上空闲的硬盘空间、win98、nt、win2000、winxp 等操作系统。掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 c 语言编程,那么 keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件) ,即使不使用c 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。keil c51 是美国 keil software 公司出品的 51 系列兼容单片机 c 语言软件开发
38、系统,与汇编相比,c 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用 c 来开发,体会更加深刻。keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。c51 工具包的整体结构,其中 uvision 与 ishell 分别是 c51 for windows 和 for 单片机课程设计设计(论文)单片机课程设计设计(论文) 第 13
39、页dos 的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用 ide 本身或其它编辑器编辑 c 或汇编源文件。然后分别由 c51 及 a51 编译器编译生成目标文件(.obj)。目标文件可由 lib51 创建生成库文件,也可以与库文件一起经 l51 连接定位生成绝对目标文件(.abs)。abs 文件由 oh51 转换成标准的 hex 文件,以供调试器 dscope51 或 tscope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 eprom 中。5.3 主程序main()uint i;k=8;init();
40、 for(i=0;i15;i+) writedata(tabi);/lcd 写数据函数写第一行 mydelay(50); mydelay(1000); writecmd(0 x80+0 x40+2);/将指针设到第二行空两字符 for(i=0;i6;i+) writedata(tab1i); mydelay(50); initialsound();/发音初始化程序while(1) getch();/扫描键盘,获得键值 if(k=0)/若键值为 0 uint i; init(); for(i=0;i10;i+)单片机课程设计设计(论文)单片机课程设计设计(论文) 第 14 页 writedata
41、(tab2i);/写第一首歌序号 mydelay(50); mydelay(1000); writecmd(0 x80+0 x40);/转到第二行 for(i=0;i9;i+) writedata(tab3i);/写歌名 mydelay(50); play(music_girl,0,3,360);/播放第一首歌 delay1ms(500);break; else if (k=1) /若键值为 1uint i; init(); for(i=0;i11;i+) writedata(tab4i); /写第二首歌序号 mydelay(50); mydelay(1000); writecmd(0 x80
42、+0 x40); /转到第二行 for(i=0;i11;i+) writedata(tab5i); /写歌名 mydelay(50); play(music_jingle,0,3,360); /播放第二首歌delay1ms(500);单片机课程设计设计(论文)单片机课程设计设计(论文) 第 15 页break; else if (k=2) /若键值为 2uint i; init(); for(i=0;i10;i+) writedata(tab6i); /写第三首歌序号 mydelay(50); mydelay(1000); /writecmd(0 x01); writecmd(0 x80+0
43、x40); /转到第二行 for(i=0;i6;i+) writedata(tab7i); /写歌名 mydelay(50); play(music_two,0,3,360); /播放第三首歌delay1ms(500);break; else if (k=3) /若键值为 3uint i; init(); for(i=0;i10;i+) writedata(tab8i); /写第四首歌序号 mydelay(50); mydelay(1000);writecmd(0 x80+0 x40); /转到第二行单片机课程设计设计(论文)单片机课程设计设计(论文) 第 16 页 for(i=0;i6;i+
44、) writedata(tab9i); /写歌名 mydelay(50); play(music_four,0,3,360); /播放第三首歌delay1ms(500);break;void play(unsigned char *sound,unsigned char signature,unsigned octachord,unsigned int speed)unsigned int newfretab12;/新的频率表unsigned char i,j;unsigned int point,ldiv,ldiv0,ldiv1,ldiv2,ldiv4,currentfre,temp_t,s
45、oundlength;unsigned char tone,length,sl,sh,sm,slen,xg,fd;for(i=0;i 11)j = j-12;newfretabi = fretabj*2; elsenewfretabi = fretabj;if(octachord = 1)newfretabi=2;else if(octachord = 3)单片机课程设计设计(论文)单片机课程设计设计(论文) 第 17 页newfretabi=2;soundlength = 0;while(soundsoundlength != 0 x00)/计算歌曲长度soundlength+=2;poin
46、t = 0;tone = soundpoint;length = soundpoint+1; / 读出第一个音符和它时时值ldiv0 = 12000/speed;/ 算出 1 分音符的长度(几个 10ms) ldiv4 = ldiv0/4; / 算出 4 分音符的长度 ldiv4 = ldiv4-ldiv4*sound_space; / 普通音最长间隔标准 tr0 = 0;tr1 = 1;while(point = 2; /低音 if (sm=3) currentfre = 2; /高音temp_t = 65536-(50000/currentfre)*10/(12000000/system_
47、osc);/计算计数器初值sound_temp_th0 = temp_t/256; sound_temp_tl0 = temp_t%256; 单片机课程设计设计(论文)单片机课程设计设计(论文) 第 18 页th0 = sound_temp_th0; tl0 = sound_temp_tl0 + 12; /加 12 是对中断延时的补偿 slen=lengthtablength%10; /算出是几分音符xg=length/10%10; /算出音符类型(0 普通 1 连音 2 顿音) fd=length/100;ldiv=ldiv0/slen; /算出连音音符演奏的长度(多少个 10ms)if (
48、fd=1) ldiv=ldiv+ldiv/2;if(xg!=1)if(xg=0) /算出普通音符的演奏长度 if (slen0;i-) /发规定长度的音 while(tf1=0);th1 = sound_temp_th1;tl1 = sound_temp_tl1;tf1=0;单片机课程设计设计(论文)单片机课程设计设计(论文) 第 19 页if(ldiv2!=0)tr0=0; beepio=0;for(i=ldiv2;i0;i-) /音符间的间隔while(tf1=0);th1 = sound_temp_th1;tl1 = sound_temp_tl1;tf1=0;point+=2; tone
49、=soundpoint;length=soundpoint+1;beepio = 0;单片机课程设计设计(论文)单片机课程设计设计(论文) 第 20 页第 6 章 系统仿真及硬件制作6.1 系统仿真过程6.2.1 原理图的绘制proteus 电路设计是在 proteus isis 环境中绘制的,该编辑环境具有良好的人机交互界面,功能强大极易上手。首先通过桌面进入主程序,然后在system选择设置纸张大小,通过快捷键 g 设置栅格的关闭与显示。绘制原来图的主要任务是从元件库中选取绘制电路所需要的元件。可以通过点击选择器顶端左侧的“p”或者通过命令打开,我们常用的是按钮;在查找到并放置完所有需要的
50、器件后,我们需要接着连接元件,即在proteus isis 的编辑窗口布线。 ,在电路原理图中放置两种通用的端子,一种是接地端子一种是电源端子。当在 proteus isis 编辑窗口放置元件时,每一元件都有唯一的元件标号及元件值与之对应。原件号是 proteus isis 的实时注释功能自动标注的,这一功能可在菜单中设置选择是否开启。proteus isis 中也支持块操作,当用户需要对电路中的某一部分进行操作时,可以使用该功能。系统共支持块移动、块复制、块旋转、块删除等实用功能,充分利用这些功能可以极大的提高我们绘图的效率。我们绘制完所有的元件后,最后进行统一标注,proteus isis
51、 支持注释功能,可以把我们所绘制的原理图中的器件根据我们的需要添加上特殊的注释,以表示特定的含义。根据设计电路绘制完后的电路图如图 6.1 所示单片机课程设计设计(论文)单片机课程设计设计(论文) 第 21 页6.1.2 程序的调入绘制完成电路图后,使用 keil 编译器,根据电路编译要实现功能的程序,调试运行通过后,然后将其产生的 hex 文件,双击图中的单片机,打开一个调入选项,浏览到keil 下 hex 文件,调入 proteus 中的单片机中,运行后就可以看出仿真的结果。如图6.2图 6.2 调入 hex 文件单片机课程设计设计(论文)单片机课程设计设计(论文) 第 22 页结论音乐盒
52、设计是一项趣味性很强的设计,能激发我的浓厚兴趣。同时要求我从程序编程,调试,软件仿真和绘制开始,到硬件的焊接和调试,再到修改程序,在这期间我了解到了单片机开发的大致流程。通过这次毕业设计,也让我学习到了很多新的东西,这些都让我受益匪浅。单片机的定时器功能,led 的数码显示,功能键盘的设计,这些内容都颇为丰富。有以前学习过的旧知识,也有很多未曾注意到得新知识,这些都曾使我的设计出错,通过自己的努力,老师指导和同学的帮助,终于克服了一个一个的困难,把硬件实物顺利做好,把软件调试顺利完成。最后,衷心感谢这次对我的毕业设计提供无私帮助的所有老师和同学!单片机课程设计设计(论文)单片机课程设计设计(论
53、文) 第 23 页参考文献1 贾伯年. 传感器技术. 南京: 东南大学出版社, 20002 阎石. 数字电子技术基础. 北京: 高等教育出版社, 19983 赵晶. protel 99 高级应用. 北京: 人民邮电出版社, 20004 周学毛. 汇编语言程序设计. 北京: 高等教育出版社, 1997 5 李叶紫. mcs-51 单片机应用教程. 北京: 清华大学出版社,2002 6 马西秦. 自动检测技术. 北京: 机械工业出版社, 2002 7 楼然苗. 51 系列单片机设计实例. 北京: 北京航空航天大学出版社,1999 8 罗万钧. 汇编语言程序设计. 陕西: 西安电子科技大学出版社,1
54、995 9 刘守亦. 单片机应用技术. 陕西: 西安电子科技大学出版社,199510 肖玲尼. protel 99 se 印刷电路. 北京: 清华大学出版社, 200311 梁立编. 程序设计基础与 c 语言. 陕西: 西安电子科技大学出版社,199812 黄菊生. 单片机原理与接口技术. 北京:国防工业出版社 2007.0913 杨素行. 微机原理及应用. 清华大学出版社 2007.0214 何宏主. 单片机原理与接口技术. 国防工业出版社 2006.07 15 杨西明、朱骐主. 单片机编程与应用入门. 北京:机械工业出版社 2004.0616 先锋工作室. 单片机程序设计实例. 清华大学出
55、版社 200217 谢宜仁. 单片机实用技术问答. 人民邮电出版社 2003.0118 孙江宏. protel99 电路设计与应用. 北京:机械工业出版社 2004.0719 房小翠、王金凤. 单片机实用系统设计技术. 北京:国防工业出版社 1999.06单片机课程设计设计(论文)单片机课程设计设计(论文) 第 24 页附录附录一 音乐歌曲源代码pop dpl pop dphwww: setb ea ajmp start0 ;开始下一首的演唱f_t0: mov th0,21h ;定时器 0 置初值 mov tl0,20h cpl out ;频率产生 retinext_song: push ac
56、c ;下一曲中断程序处理,保护现场 push dph push dpl clr ea ;关中断 mov a,22h cjne a,#n,q ;是最后一首吗? mov r7,#00h ;是最后一首,则 r7 指向第一首,演唱第一首 mov 22h,#01h ajmp backq: inc 22h ;不是最后一首,唱下一首,r7 内容加 4,歌曲数加 1 mov a,r7 add a,#4 mov r7,aback: mov r4,#00h ;数码管显视相应的歌曲编号 mov a,22h mov dptr,#out_tab movc a,a+dptr mov out_num,a mov b,r0
57、;对下首要演唱的歌曲的几分拍进行调整,同时对 r0 中的内容进行保护 mov r4,#00h 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 mov 26h,a ;结果存入 26h 单元中 dec r4 mov r0,b ;恢复 r0 中的内容单片机课程设计设计(论文)单片机课程设计设计(论文) 第 25 页 pop dpl ;恢复现场 pop dph pop acc setb ea reti ;中断返回last_song: push
58、 acc ;上一曲中断程序处理开始,保护现场 push dph push dpl clr ea ;关中断 mov a,22h ;曲目数送 a cjne a,#1,qq ;是否是第一首 mov 22h,#n ;是第一首歌曲 mov b,#4 ;将 r7 指向最后一首歌曲 mov a,#n-1 mul ab mov r7,a ajmp back2 ;处理结束qq: dec 22h mov a,r7 ;r7 减 4 subb a,#4 mov r7,aback2: mov r4,#00h mov a,22h mov dptr,#out_tab movc a,a+dptr mov out_num,a
59、;数码管显视相应歌曲的编号 mov b,r0;对下首要演唱的歌曲的几分拍进行调整,同时对 r0 中的内容进行保护 mov r4,#00h 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 mov 26h,a ;结果存入 26h 单元中 dec r4 mov r0,b ;r0 中的内容恢复 pop dpl ;恢复现场 pop dph pop acc setb ea reti ;中断返回start_pause:cpl f0 ;开始/暂停中断
60、处理程序,将标置位取反单片机课程设计设计(论文)单片机课程设计设计(论文) 第 26 页 jb f0,return ;为 1 返回 setb tr0 ;为 0 则播放return: reti ;中断返回delay: mov 27h,26h ;音符演奏时间控制d2: mov 28h,#125d3: mov 29h,#248 djnz 29h,$ djnz 28h,d3 djnz 27h,d2 djnz r2,delay retout_tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh,0ff
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电视台新闻编辑每日工作内容安排
- 高新技术企业法律合规部工作手册
- 京东物流配送优化面试指南
- 网络文学编辑面试技巧
- 国企能源行业技术岗位面试宝典
- 外包服务公司项目管理的职位面试要点解析
- 银行风险控制岗位面试技巧详解
- 中医药研究所医学研究岗面试解析
- 人工智能产品的创新:设计与实践
- 猜猜他是谁作文
- 小学六年级体育教案(表格式)
- 中药的起源和中药的发展培训课件
- 实用综合教程(第二版)外教社-第1册教案
- 2023年考研考博-考博英语-中央美术学院考试历年真题摘选含答案解析
- 2009-2022历年上海事业单位考试《基本素质测验》真题摘选附带答案详解(2023上岸必备)
- 广西版六年级下册《美术》全册教案
- GB/T 4056-2019绝缘子串元件的球窝联接尺寸
- 犯罪学全套教学课件
- 巴菲特三大经典演讲之二-1998年佛罗里达大学商学院演讲
- 2022年山东警察学院教师招聘考试笔试试题及答案解析
- 七年级下册心理健康教育教案(全册)
评论
0/150
提交评论