电子音乐盒的设计.doc

上传人:scccc 文档编号:12442554 上传时间:2021-12-03 格式:DOC 页数:21 大小:157KB
返回 下载 相关 举报
电子音乐盒的设计.doc_第1页
第1页 / 共21页
电子音乐盒的设计.doc_第2页
第2页 / 共21页
电子音乐盒的设计.doc_第3页
第3页 / 共21页
电子音乐盒的设计.doc_第4页
第4页 / 共21页
电子音乐盒的设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《电子音乐盒的设计.doc》由会员分享,可在线阅读,更多相关《电子音乐盒的设计.doc(21页珍藏版)》请在三一文库上搜索。

1、电气信息学院微机与单片机综合课程设计报告 课题名称电子音乐盒的设计专业班级 13 电气3班学 号学生姓名 指导教师 评 分 2015年12月14日至12月20日课程设计的任务要求一、课程设计选题:从以下课题中任选一题进行,各课题具体要求详见“微机与单片机综合课程 设计题目汇总”文档。并在课程设计报告的正文中详细说明。1. 彩灯控制器的设计2. 电子时钟的设计3. 现代交通灯的设计4. 多路抢答器的设计5. 波形发生器的设计6点阵广告牌的设计7. 篮球记分器的设计8. 数字式温度计的设计9. 步进电机的控制10. 电子音乐盒的设计11. 电风扇模拟控制系统设计12. 洗衣机人机界面的设计13.

2、秒表系统的设计14. 多机串行通信的设计15. 电子密码锁的设计16.4位数加法计算器的设计17. 数字频率计18. 数字电压表二、选题说明:一人一题,一个教学班级同一题不能被选超过两次。鼓励同学们将各设计中的基本任务完成后,选做部分发挥项。题中带*和#符号的任务,属于发挥部分。三、设计时间及进度安排:第 16 周,12. 14 12.2012.14 题目分析,文献查阅12.15 设计方案12.1612.17元器件选型,硬件电路设计12.1812.19软件设计,系统调试12.20课程设计说明书(报告)撰写四、设计作品提交:(1) 课程设计说明书(纸质版,用于存档);(2) 课程设计说明书(电子

3、版),单片机源程序文件(电子版);3) Proteus仿真程序或实物。五、设计考核评定:教师评分:80%答辩成绩:20%答辩记录1、例举设计过程中遇到的主要问题及其解决方法。(1)问题说明: 编写好程序之后用keil调试没有错误,但将源程序导入到protues中去并进行 仿真时,音乐盒并不能放歌。 将问题一解决后再次进行调试时,音乐盒只能播放一首歌曲。(2)解决方法: 针对问题一,首先检查硬件电路,发现单片机的RSTI口始终都是高电平, 于是修改复位电路,并联一个接地的电阻,终于使单片机在工作时 RST接 口为低 电平。更正之后还是不能放歌,于是检查软件程序。发现主程序中令 count2=0,

4、 而count2是跳出播放音乐子程序的,于是将 count2=0改为count2=1,于是可以放 第一首歌。 针对问题二,在播放音乐子程序中加入了 if语句,当k仁0时,count2=1, 播放第一首歌曲;当k2=0时,count2=2,播放第二首歌曲;当k3=0时,count2=3, 播放第三首歌曲;当k4=0时,暂停歌曲。2、教师现场提的问题记录在此(不少于 2个问题)。 问:蜂鸣器的发声原理?答:用单片机的定时器产生不同频率的方波,方波驱动定时器发声。驱动方波频率越高,音调就越高;驱动方波频率越低,音调越低。 问:单片机的时钟频率和机器周期各是多少?答:时钟频率为12MHZ机器周期为1u

5、s。 问:如何用proteus改变单片机的时钟周期?答:在proteus界面左边有个激励源模式,里面有各种激励源。里面的DCLOC就是可以产生时钟信号的(也就是方波),在属性里面设置不同的频率就可以得到 不同的时钟信号课程设计量化评分标准指标分值评分要点得分方案设计20方案选择合理,分析、设计正确,原理清楚, 电路、程序流程图清晰,结构合理,程序简 洁、止确。设计报告20报告结构严谨,逻辑严密,论述层次清晰, 语言流畅,表达准确,重点突出,报告完全 符合规范化要求,用计算机打印成文。调试与结果20过程清晰,调试方案设计合理,测试点选择 适当,程序编写正确,调试步骤清楚。 电路及程序运行结果正确

6、,达到预期效果。工作态度20工作量饱满程度,题目难度;工作态度,按时元成设计任务,是否独立元成等。答辩成绩20思路清晰;语言表达准确,概念清楚,论点 正确;分析归纳合理,结论严谨;回答问题 有理论根据,基本概念清楚。总评成绩指导老师评语:指导教师签字:2015年 月 日摘 要本次课程设计是设计一个基于 51单片机的音乐盒,该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。本音乐盒共有三首歌曲,用4个按键控制。其中K1,k2,k3用于选择歌曲。按下按键k1时,播放第一首歌曲;按下按 键k2时,播放第二首歌曲;按下按键 k3时,播放第三首歌曲。k4用于暂停歌 曲,暂停后重新选歌即可再播放。

7、播放歌曲时,定时器产生不同频率的方波,使 蜂鸣器发出不同音调的声音,并通过延时控制音乐的节拍。本设计利用KEIL编程软件对音乐盒源程序进行编程和调试,配合PROTEUS*真软件对硬件进行仿真 调试,节约了设计时间。关键字:51单片机;按键;蜂鸣器;音调;节拍AbstractThis curriculum desig n is to desig n a music box based on AT89C51singlechip.This music box is mainly consist of key circuit,reset circuit,clock circuit and buzzer

8、.There are three songs in the music box.They are con troled by four keys.k1,k2 and k3 are used to choosesongs.When we push k1,the music box is playing the firstsong.Whenwe pushk2,it is playi ng thesec ond son g.Whe n we push k3,it is playi ngthe thirdson g.k4 is used to pause the son gs. Only if we

9、push other keys to choose music,ca n the misic box play aga in. The timer produces square waves of differentfrequency which let the buzzer makesound of differenttones.Andit con trols the music beat by delay function. Keil is used to programmeand debug the source program.Protues can debug and emulate

10、 the hardware. Both softwares can help us to save time.Key words: AT89C51; key; buzzer; tone; beat2.1任务分析3系统硬件设计3.13.3复位电路设计3.4键盘电路设计 错误!未指定书签。3.5蜂鸣器电路设计 错误!未指定书签。4系统软件设计 错误!未指定书签'4.1音调,节拍以及编码的确定 错误!未指定书签。4.2主要部分软件程序分析 错误!未指定书签。5仿真与性能分析 错误!未指定书签6心得体会 错误!未指定书签'参考文献 错误!未指定书签附录1系统原理图 错误!未指定书签&#

11、39;附录2程序清单 错误!未指定书签'I1 设计任务1.1 基本任务(1) 查阅资料,了解单片机控制单音喇叭发声原理。(2) 设计基于单片机的电子音乐盒。(3) 通过按钮可选择不同的音乐。1.2 设计目的(1) 通过设计,查阅相关资料,掌握如何利用单片机设计产品,同时了解单片机有关的软 件模拟器的使用。(2) 通过本课程设计巩固并扩展单片机课程的基本概念、 基本理论、 分析方法和实现方法。 结合 protues 和 keil 软件等, 学习单片机产品的设计方法, 有效地将理论和实际紧密 结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。(3) 学习 protue

12、s 软件,掌握 protues 中各种芯片的功能以及灵活性,提供了实验室在数 量、质量上难以比拟的虚拟仪器、仪表,因而也提供了培养实践精神,创造精神的平 台。1.3 设计要求(1) 利用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(共 有 3 首歌曲)。(2) 可通过功能键进行选择歌曲和暂停操作。2 设计方案2.1 任务分析本设计是以AT89C51芯片的电路为基础,外部加上放音设备,从而来实现音乐演奏控 制器的硬件电路, 通过软件程序来控制单片机内部的定时器使其演奏出优美的音乐。 该软, 硬件系统具有很好的通用性,很高的实际使用价值。2.2 方案设计1. 硬件方案根

13、据设计的要求可知,系统的硬件原理框图如图 2.1 所示。图 2.1 系统的硬件原理框图以AT89C51为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣 器发声。要产生音频脉冲,只需算出某一音频的周期( 1/音频),然后取半周期的时间定 时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复 计时此半周期时间再对 I/O 口反相,就可在 I/O 脚上得到此频率的脉冲。当键盘有键按下 时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器发声,放出歌曲。2. 软件方案(1)主程序流程图开始系统初始化扫描键盘得到键值蜂鸣器选曲发音扫描键盘是继续放音结

14、束I主程序流程如下:首先对系统进行初始化,单片 机扫描键盘得到键值,若得到的键值为1,即 cou nt2=1时,蜂鸣器播放第一首歌曲;若得到的键 值为2,即count2=2时,蜂鸣器播放第二首歌曲; 若得到的键值为3,即count2=3时,蜂鸣器播放第 三首歌曲。在播放歌曲的过程中继续扫描键盘,若按下暂停键,则count2=0,蜂鸣器停止播放歌曲。图22主程序流程图否开始音乐播放流程如下:选定了歌曲后,蜂鸣器便 要播放音乐了,首先创建频率表,计算歌曲长度, 读音符,求出发音长度,定时器控制蜂鸣器发声, 在发声的过程中判断音符是否读完或暂停键是否按 下。若没有读完或者暂停键没有按下,继续读音符;

15、 若音符读完或者暂停键按下,蜂鸣器停止发声。图2.3音乐播放程序流程图3系统硬件设计3.1整体电路设计图3.1电子音乐盒整体电路AT89C5伪核心,通过单片机的定时器产生一定长度的方波, 方波脉冲驱动蜂鸣器发(2)音乐播放程序流程图声。要产生音频脉冲,只需算出某一音频的周期(1/ 音频),然后取半周期时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此 半周期时间,再对 I/O 口反相,就可在 I/O 脚上得到此频率的脉冲。当键盘有键按下时, 判断键值,启动计数器TO,产生一定频率的脉冲,驱动蜂鸣器发声,放出歌曲。3.2 时钟电路设计图 3.2 单片

16、机时钟电路单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接 线方式可以获得不同时钟电路,有内部时钟电路和外部时钟电路。如上图所示,外部时钟 电路会使电路复杂, 故采用的是内部时钟电路。 时钟电路在单片机的外部通过 XTAL1,XTAL2 这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器。本系统采用的为12MH的 晶振,一个机器周期为1us,C1,C2为30uF。3.3 复位电路设计图3.3 单片机复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位 信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源 插

17、头分 - 合过程中引起的抖动而影响复位。复位电路分为上电自动复位和按键手动复位,如图所示。RST引脚是复位信号的输入端,复 位信号是高电平有效这次采用的是手动复位,复位通过电容 C3和电阻R1来实现,按键手 动复位是图中复位键来实现的。3.4 键盘电路设计图 3.4 单片机键盘电路键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为 编码式键盘和非编码式键盘两种。编码键盘通过硬件电路产生被按按键的键码,这种键盘 所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。非编码键盘常用一 些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程 序

18、来决定。非编码键盘的硬件接口简单,但是要占用较多的CP时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非 编码开关。3.5 蜂鸣器电路设计图3.5 蜂鸣器电路一般所指的蜂鸣器是以压电陶瓷为主要元件的。压电陶瓷是一类有将压力与电流相互 转换能力的特殊陶瓷。这种能力缘于其特殊的晶体结构。当压电陶瓷在一定方向上受到一 个压力使其晶体结构发生形变时,它就会在内部产生一个电流,并且电流的变化与压力的 变化密切相关。反之亦然。所以利用这一特性,在压电陶瓷上通过一定频率的电流,就会 引起压电陶瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所

19、听 见,也就是产生了蜂鸣声。4系统软件设计4.1音调,节拍以及编码的确定1. 音调的确定一首音乐是由许多不同的音符组成的,而 用不同的频率组合,加以与拍数对应的延时 可以产生不同频率的音频脉冲即能产生音乐 常方便的,利用单片机的定时/计数器来产 乐中的音符和对应的频率,以及单片机定时-2. 节拍的确定每个音符使用1个字节,字节的高4 果1拍为0.4秒,1/4拍就是0.1秒,只 为1delay,则1拍应为4delay,以此类推。 拍就是它的倍数。3. 编码的确定Do,re,mi,fa,so,la,xi分别编码为 1-放长度以十六分音符为单位(在本程序中为 编为4,其它的播放时间以此类推。音调作为

20、 音调和节拍就构成了一个编码。以0xff作币每个音符对应着不同的频率,这样就可以利,构成音乐。了解音乐的一些基础知识,我们。对于单片机来说,产生不同频率的脉冲是非 尢生这样的方波频率信号。因此,需要弄清楚音 计数的关系。位代表音符的高低,低4位代表音符的节拍。如 要设定延迟时间就可得到节拍时间。假设1/4拍所以只要求得1/4拍的delay时间,其余的节7,重音do编为8,重音re编为9,停顿编为0。播165ms, 拍即四分音符等于4个十六分音符, 勺编码的咼 4位,而播放时间作为低4位,如此 为曲谱的结束标志。4.2主要部分软件程序分析1.延时165ms即十六分音符子函数voiddelay1(

21、 uintz)uint x,y;/延时165ms,十八分音符子for(x=z;x>0;x-)函数,即十六分之一拍。for(y=19000;y>0;y-);2.延时1ms子函数voiddelay2( uintz) uint x,y;/延时1ms子函数for(x二z;x>O;x-) for(y=110;y>0;y-);3. 定时器0中断子函数 while(1)void t0()in terrupt1TH0=a;TL0=b;BEEP二BEEP;4. 播放音乐子函数void son g()uint temp;uchar aa;c=0;/ aa/用于产生各种音 调,a是简谱高四位

22、,b 是简谱低四位。是简谱if(k1=0)/若按下k1,k1=0,扫描键盘后得到键值count2=1,则cou nt2=1;放第一首歌曲;若按下 k2,k2=0,扫描键盘后得到键值if(k2=0)count2=2,则放第二首歌曲;若按下k3,k3=0,扫描键盘cou nt2=2;后得到键值count2=3,则放第二首歌曲。if(k3=0)count2=3; if(count2=0) break; if(count2=1) / temp=table1c;if(count2=2)temp=table2c;if(count2=3) temp=table3c;if(count2=4)temp=tabl

23、e4c;if(temp=0xff)break;aa=temp/16;if(aa!=0) a=cuzhiaa*2; b=cuzhiaa*2+1;else选曲/ 取数的高 4 位TR1=0;BEEP=1;/关蜂鸣器/ 取数的低 4 位唱完一个音停 10msdelay1(temp%16);TR1=0; /BEEP=1;delay2(10);TR1=1;c+;TR1=0;BEEP=1;5. 主函数void main()TMOD=0x10;TH1=0;TL1=0;ET1=1;开总中断开外部中断 下降沿时触发中断开外部中断 0EA=1;/EX1=1;/IT1=1; /EX0=1;/IT0=1;/下降沿时触

24、发中断while(1)/大循环 song();5 仿真与性能分析5.1 系统仿真过程将用 keil 编写的源程序导入到 protues 中,当上电仿真时,单片机,蜂鸣器通电, 待按下功能键选择歌曲后,蜂鸣器便可发声。图 5.1 电子音乐盒仿真图5.2 仿真结果与分析结果:上电后,当按下k1键时,count2=1,蜂鸣器演奏第一首歌曲;当按下 k2键时, count2=2,蜂鸣器演奏第二首歌曲;当按下 k3键时,count2=3,蜂鸣器演奏第三首歌曲。 在演唱过程中,按下 k4 键时,音乐暂停,再次重新选择歌曲即可播放。分析:当按下 k1 键,产生外部中断,扫描键盘,得到键值 count2=1,

25、 所以蜂鸣器演奏 第一首乐曲,演奏其他乐曲时道理相同。演奏乐曲时,单片机读音符,高四位用于产生不 同频率的方波,不同频率的方波通过蜂鸣器发出不同的音调;低四位用于控制发音长度, 定时器通过低四位计算出延时时间,即可控制发音长度。6 心得体会这次单片机课程设计历时两个星期的时间, 在这两个星期里我们体验了从设计、 画板、 编程、仿真到调试的整个过程,让我们体验了一次工程师的感觉。首先我先到图书馆和网上查阅了大量有关蜂蜜器发声原理的资料,然后开始设计自己的方案,为了设计任务要求和抱着巩固知识的想法, 我选择已经学习过的AT89C51单片机。整天抱着电脑查资料、看资料是一件很痛苦的事情,一天下来眼都

26、花了,但每学会一点新 知识还是挺高兴的,有的时候知识遗忘了或者有很难理解的地方,就会向同学求助,他们 都会毫无保留的帮助我。设计完电路以后我便开始编写源程序,起初觉得无从下手,于是开始在网上搜集各种 资料,研究和比较了各种源程序,选择了一种比较完整和易懂的源程序作为模板进行研究 和校正。几天的反复研究,终于弄懂了程序的各个模块,对照自己的设计任务对程序进行 修改,终于没有了错误。 然后进行仿真调试, 刚开始仿真时, 蜂鸣器通电了但并不能发声, 对按键进行任何操作都没有作用。仔细对比和研究,在硬件电路和软件程序中均找到了不 恰当的地方,又经过反复修改,最终蜂鸣器终于可以发声了。但是仅仅只是 k1

27、 键有效, 其它按键无效。猜想肯定是音乐播放程序有问题,仔细研究,才发现程序中没有涉及功能 键的选择,于是自己编写了 if 程序,若有按下对应按键,则改变 count2 的值,进而选择 不同歌曲。最后,终于成功了!这两周的时间说轻松也不轻松, 说紧张却稍带着愉快的气氛, 整个过程应该是充实的, 时而惊喜,时而烦闷特别是最后调试阶段有一块调通让我高兴不已,当卡在某处时也确实 是让人抓狂。总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。更 重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实 实在在的需要我们亲自解决的问题。通过解决这些问题,我们处理实际问

28、题的能力有了很 大提高,积累了我们的实践经验,以便为以后打下牢固的基础。而这些才是我们作为一名 工科学生最宝贵的财富。参考文献1 郭天祥新概念51单片机C语言教程M.北京:电子工业出版社,2009.2 秦实宏,徐春辉 MCS-51 单片机原理及应用 M. 武汉:华中科技大学出版社, 2010.6.3 李群芳,张士军,黄建 . 单片机微型计算机与接口技术 J. 北京:电子工业出 版社, 2008.4 李群芳 单片机原理接口与应用 J. 北京:清华大学出版社, 2005.5 高峰 单片机微机应用系统设计及使用技术 M. 北京:机械工业出版社, 1999. 彭伟单片机C语言程序设计实例基于protu

29、es仿真M.北京:电子工业出版社, 2007.7 张迎新 单片机微型计算机原理、应用及接口技术 M. 北京:国防工业出版社, 1999.附录 1 系统原理图附录 2 程序清单#include<reg51.h>typedef unsigned char uchar; typedef unsigned int uint;sbit RS=P2A0;sbit RW=P2A1;sbit E= P2A2;sbit BEEP=P2A7;sbit k1=P1A0;sbit k2=P1A1;sbit k3=P1A2;sbit k4=P1A3;char count2;uchar a,b,c,aa,nu

30、m; uchar num1,num2;uchar code table1= 0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x 94,0xA8,0x08,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62, 0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22, 0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22, 0x32,0x3

31、1,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62, 0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02, 0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02, 0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76, 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36, 0x61,0x71,0x82,0x71,0x62,0xA3,0x7

32、3,0x62,0x53, 0x42,0x63,0x83,0x83,0x91,0x91,0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76, 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36, 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53, 0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff ;uchar code table2= 0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22, 0x21,0x31,0x51,0x52,0x31,0x

33、52,0x61,0x15,0x14, 0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28, 0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52, 0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63, 0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54, 0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26, 0x32,0

34、x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51, 0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34, 0x31,0x81,0x81,0x81,0x61,0x91,0x82, 0x51,0x51,0x51,0x51,0x31,0x61,0x53, 0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26, 0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52, 0x31,0x31,

35、0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56, 0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34, 0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,0xff;uchar code table3= 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x 20,0x30,0x20,0x39,0x10,0x30,0x1

36、0,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x 20,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,0x

37、20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,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,0x

38、10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,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,0x

39、40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0xff;uchar code qz=0xff,0xff,0xFC,0x8E,0xFC,0xED,0xFD,0x43,0xFD,0x6A,0xFD,0xB3,0xFD,0xF3,0xFE,0x2D,0xFE,0x47,0xFE,0x76,0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF,0x16,;uchar code yinyue=0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf

40、,0x7f,0x00,0x00;void delay1(uint z)uint x,y;for(x=z;x>0;x-) for(y=19000;y>0;y-);void delay2(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); void song() uint temp; uchar aa; c=0; while(1) if(k1=0) count2=1; if(k2=0) count2=2; if(k3=0) count2=3; if(count2=0) break; if(count2=1) temp=t

41、able1c; if(count2=2) temp=table2c; if(count2=3) temp=table3c; if(temp=0xff) break; aa=temp/16; if(aa!=0) a=qzaa*2;b=qzaa*2+1; else TR1=0;BEEP=1; delay1(temp%16); TR1=0;BEEP=1;delay2(10);TR1=1;c+; TR1=0;BEEP=1; void write_com(uchar com) RS=0;RW=0;P0=com;E=1;delay2(5);E=0;void write_data(uchar date)RS

42、=1;RW=0;E=0;P0=date;E=1;delay2(5);E=0;void key()if(k4=0)delay2(10);TR1=0;count2=0;c=0;if(RS=1)write_com(0x01);write_com(0x80+0);write_data('W');write_com(0x80+1);write_data('e');write_com(0x80+2);write_data('1');write_com(0x80+3);write_data('c');write_com(0x80+4);writ

43、e_data('o');write_com(0x80+5);write_data('m');write_com(0x80+6);write_data('e');void LCD1602_init()write_com(0x01);delay2(15);void main()TMOD=0x11;TH1=0;TL1=0;ET1=1;TH0=0;TL0=0;ET0=1;TR0=1;EA=1;EX1=1;IT1=1;EX0=1;IT0=1;LCD1602_init();while(1)song();void t0()interrupt 1num2+; i

44、f(num2=5) num2=0;key();void t1()interrupt 3TH1=a;TL1=b;BEEP=BEEP;void wb0()interrupt 0TR1=0;if(k1=0)delay2(10);count2+;c=0; write_com(0x01); delay2(10); write_com(0x80+0);write_data('1');write_com(0x80+1); write_data('2');write_com(0x80+2);write_data('3');if(count2>3)count2=1;c=0;TR1=1;while(!k1);void wb1() interrupt 2TR1=0;if(k2=0)delay2(10);count2-;c=0;if(count2<1)count2=3; c=0;TR1=1;while(!k2);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1