电子音乐闹钟的设计与仿真_第1页
电子音乐闹钟的设计与仿真_第2页
电子音乐闹钟的设计与仿真_第3页
电子音乐闹钟的设计与仿真_第4页
电子音乐闹钟的设计与仿真_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、本科毕业设计题 目电子音乐闹钟的设计与仿真电子音乐闹钟在日常生活屮具有很广泛的应用。木课题设计了一个基于单片 机控制的电子音怎闹钟,从硕件和软件两个方面对系统进行了详细设计。硕件系 统主要包括单片机主控模块、显示模块、按键模块和音乐播放模块。其中单片机 模块采用at89c51,显示模块采用简单实用的数码管,咅乐播放利用扬声器发声控 制。系统能够准确地显示时、分、秒信息,通过独立按键实现吋间调整和闹钟吋 间的设置,能够定吋播放预先设置的电子咅乐。软件方面基于模块化编程思想, 开发环境采用keil c51o最后利用硕件仿真软件proteus构建硕件仿真平台,对 系统进行了功能验证。仿真结果充分说明

2、系统设计是完全可行的。关键词:单片机;电了咅乐闹钟;led数码管;独立按键abstractelectronic music alarm clock has a wide range of applications in our daily life. this topic has designed a based on single chip microcomputer control electronic music alarm clock, from two aspects of hardware and software of the system has carried on the

3、detailed design. hardware system mainly includes the scm control module, display module, key module and music playback module. the at89c51 single chip microcomputer module, display module adopts the simple and practical digital tube, music playback using speaker voice control. system is able to accu

4、rately display hours, minutes and seconds, through independent key implementation time adjustment and the alarm time settings, can play a preset electronic music regularly. software based on the modular programming ideas, development environment keil c51. finally using hardware emulation software pr

5、oteus simulation platform building hardware, the system functional verification. the simulation results fully show system design is completely feasible.key words: single chip microcomputer; electronic music alarm clock; led digital tube; separate button摘要1冃 录31弓丨言11研究目的和意义11.2木系统主要研究的内容12方案的选择和论证12单

6、片机选择12.2按键的选择22.3显示器的选择22.4计时部分的选择22.5单片机播放音乐原理32.5.1音调的确定32.5.2音乐节拍的产生3表2所示为不同|11|调下的1/4和1/8节拍的时间设定。43电子音乐闹钟系统详细设计43.1系统功能方框图43.2硕件详细设计53.2.1 at89c51单片机简介53.2.2晶振电路6323复位电路73.2.4键盘电路的设计73.2.5显示电路83.2.6显刀p驱zjj模块83.2.7发音电路模块93.3软件详细设计93.3.1主程序设计93.3.2定时器定时模块103.3.3闹创模块113.3.4计时模块113. 3.5键盘扫描模块133.3.6

7、播放音乐模块144系统调试154软件介绍154.1.1 proteus isis 软件介绍154.2利用proteus和keil进行联合调式155仿真结果176结论18参考文献19致谢20附录211引言1.1研究目的和意义目的:设计一个电了闹钟,该闹钟可由使用者白己校准时间并根据需要在规 定的时间发出音乐提醒使用者,防止遗忘吋间。意义:电子音乐闹钟在生活屮很常'见,有了它,使得我们忙碌的生活不在枯 燥,也不用担心会错过什么重要的事。随着现在生活压力的增大,失眠现彖己经 很普遍,特别是当第二天有重耍事情的时候,老是怕睡过而导致人们睡不好,冇 了电了闹钟,我们再也不用担心这种事会发生了,而

8、是能好好地睡到闹钟闹醒的 那一刻,如果再加上那么一段美妙的音乐,这样,我们会伴随柔和的音乐而起床。 所以,电子音乐闹钟给人们的生活带来了极大的方便。于是,研究这样一个电子 音乐闹钟有着非常现实的意义。1.2本系统主要研究的内容木设计主要研究用proteus和keil协同仿真一个电子音乐闹钊主要包括硬件 电路详细设计和软件详细设计两方面。其中硬件电路部分可分为四个模块:键 盘模块;显示模块;计时模块;音乐播放模块。软件部分则应做到程序的 准确、简单、可读性强。最后通过硬软件的结合实现电了咅乐闹钟的精确计时、 闹钟设置和播放音乐功能。2方案的选择和论证2.1单片机选择通过分析多种单片机,认为at8

9、9c51是比较适合做电子音乐闹钟的芯片,器 件采用atmel高密度非易失存储器制造技术制造,与mcs-51指令集和输出管脚 相兼容。单片机的可擦除只读存储器可以反复擦除1000次以上,其寿命较长,使用 更方便。再者他的数据保留时间可达10年。at89c51是一种高效微控制器,是最 好的选择。2.2按键的选择方案一:矩阵式键盘。为了节省i/o口,通常将按键排列成矩阵形式。虽然电 路连接复杂,但是提高了i/oi i的利用率,在修改时钟或设置闹铃时间时可以直接 从键盘输入,快捷、方便。如果选择此方案,软件编程较复杂,适用于需很多个 按键的场合。方案二:独立式按键。独立式按键是直接用i/o口线构成单个

10、按键电路,一个 按键单独占用1根i/o线。虽然会给布线带来诸多不便,但程序设计简单,适合用 于按键较少的场合。如杲系统中的键较少,就可以使用独立式按键,因此,此方 案适用于按键较少的情况。如果使用该方案,无论从硬件还是软件方面实现起来 都比较方便,所以我选择方案二。2.3显示器的选择方案一:液晶显示器。此显示器体积小,便于携带;并11液晶显示器可视面积 大。其缺点为此显示器的亮度和对比度不是很好,并且寿命有限,驱动电路复杂, 使用起来更麻烦。方案二:数码管显示器。数码管的驱动电路简单,并冃在亮度、可视角度和刷 新速率等方面,都更具优势。led寿命长,背光功耗低、更环保,它不含有害金屈 汞,免去

11、了对人体对环境的损害;第三、led背光让显示器显得更轻薄,led采用 发光二极管,不需要复杂的光路设计,实现真正的光源平面化,所以显示器也能 节省很多空间。如果选择了此方案,那么在夜间看时间的时候就非常方便。其缺 点是耗电量较大。综合考虑,数码管使用起来较为方便,因此我选择用数码管做 显示器。2.4计时部分的选择ds1302时钟芯片,大可以实现计时功能,而r系统不怕掉电r时间精确。它 采用备份电池供电,在系统断电时仍可以工作。实时时钟芯片的这些优点,使得 它广泛应用于需要显示吋间的场合,但这种芯片比较贵,况且,设计本系统目的 是为了学习单片机程序的编写和调试,因此采用了软件编程的方法来计吋而没

12、有 采用价格较高的时钟芯片。2.5单片机播放音乐原理一般情况下,用单片机蜂鸣器来演奏音乐基本都是单音频率,不像专用乐器 那样能演奏多种咅色的咅乐。所以咅调和节拍是该设计耍了解的两个概念。咅调 表示了一个音符的频率有多高,节拍表示了一个音符能唱多久。2. 5. 1音调的确定咅调主耍是通过频率來确定的,我们可以根据咅调表查出各个咅符所对应的 相应频率,接下來就需要用51单片机发出相应的频率即可,主要方法就是使用定 吋器定吋屮断,将蜂鸣器对应i/o 口来回取反就行了。下面我举个例子说明一下 怎么确定一个频率对应的定时器的定时值。例如标准音高a :频率f = 440 hz,其对应的周期为:t= 1/f

13、 = 1/440二2272 us ,那么单片机上对应蜂鸣器的i/o 口来回取反的时间应为:t二t/2 = 2272/2 二1136 us ,也就是清零、置位在一个周期内完成.音符与节扌h数的关系如表1所示。表1音符与节拍数的关系咅符节拍数咅符节拍数x-(全音符)4拍匚(附点八分音符)3/4 扌nx-(二分音符)2扪xj (附点十六分音符)3/8拍x (四分音符)1拍000 (三分休止符)休止3拍x (八分音符)1/2拍00 (二分休止符)休止2拍x (十八分音符)1/4拍0 (四分休止符)休止1拍x (附点四分音符)1.5拍0 (八分休止符)休止1/2拍2. 5.2音乐节拍的产生一般情况卜,如

14、果一首乐曲没冇说明,一拍的时长大约400ms到500ms z间, 我们可以通过软件延时的方法来延时这么长时间。for(tl 二 0; tl < t; tl+)for(t2 二 0; t2 < 8000; t2+);通过改变t的值就可以唱岀不同节拍的音怎。表2所示为不同曲调下的1/4和1/8节拍的时间设定。如果单片机要实现播放音乐,那么必须在程序设计屮要考虑到节扌n,节拍数和节拍码的对照表如表3所示。表2各调节拍的吋间设定曲调值(1/8节拍)delay曲调值(1/4节拍)delay调4/462ms调4/4125ms调3/494ms调3/4185ms调2/4125ms调2/4250ms

15、表3节拍数与节拍码的对照节扌n码节拍数节拍码节拍数i1/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍41/2拍51.25 拍55/8拍61.5拍63/4拍82拍81拍a2. 25 拍a125拍c3拍c1.5拍f3. 75 拍3电子音乐闹钟系统详细设计3.1系统功能方框图根据设计需求分析,系统主要包括以下儿个模块:微处理器模块、单片机最 小系统、数码管显示模块、按键模块以及扬声器发声模块,具体方框图如图3.1 所示。1mi.段码驱动.晶振6位数码管复位 |g > 位码驱动按键一. 蜂鸣器图3.1系统功能方框图下面从硕件和软件两个方面对系统进行详细设计。3.2硬件详细设计3.

16、 2. 1 at89c51单片机简介at89c51是这几年我国非常流行的单片机,at89c51是一种高性能、低电压的 cmos单片机,它的片内包含4k bytes可重复擦写的flash只读程序存储器,同时还 有128 bytes的随机存取数据的存储器。由atmel公司开发生产,在8051、8751的 基础上增强了许多特性。如时钟频率更高,运行速度更快。是嵌入式微控制器, 与嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,功耗和 成木下降,可靠性提高。at89c51是一种高效的微控制器,为很多域入式控制系统 提供了质优价廉的方案。它可以满足多方面的性能需求。at89c51采用了高性

17、能 的处理器结构,指令执行吋间较短。p0口是开路型漏极双冋输入输出口,也即数据、地址复用口。p1 口可作输入 口,因其自带有上拉电阻的双向输入输出口。p2口也是带有上拉电阻的双向输入 输出口。p3口也是一个双功能口,当作为通用i/o口外,p3口还可以工作于专用功 2 textxt心p0.0/a£0p0.1/ad1p0.2/ad2xt/4l2p0.3/ad3p0.4/al4p0.5/ad5p0.6/ae6rstp0.7/ad7p2.0zep2.1zc0p2.2a10psenaicp2.3a11do -4/a-ioeap2.5a13p2.6a14p2.7>a15p1j0p3.0/r

18、xdp1.1p3.vtxdp12p3.2/int0p13p3.3/int1p1.4p3.4t0p15p3.5tt1p1jbp3.6albrp1.7p3.7/rd191892930312346839383736353433322122z324252627281011121314151617图3.2. 1 at89c51单片机能,p3口在输入方面多了一个缓冲器,p3口无须再加上拉电阻。其电源止负极分 别接在40和20引脚上。3.2.2晶振电路晶振屯路是构成单片机的最小系统,单片机必须在时钟的驱动下才能进行工 作。单片机系统里都有晶振,在单片机里晶振的作用非常大,全称晶体振荡器。 反相放大器的输入端

19、为xtal1,即19引脚,输出端为xtal2,即18引脚。在xtal1 和xtal2两端跨接右英晶体及两个电容就可以构成稳定的自激振荡器。晶振电路 如图3.2.2所示。 i - . c122pf <text>c219i x1 ;.i11.059200mhz .<text>u1>xtal1xtal299np m d图3. 2. 2品振电路3.2.3复位电路个单片机系统至少冇单片机芯片、电源、晶体振荡器,还需要有能使单片机复位的电路。复位电路分上电复位和手动按键复位两种,电路如图3. 2. 3所示。图3. 2.3复位电路3.2.4键盘电路的设计键盘电路采用4个独立按键

20、和上拉电阻实现对闹钟时间的设定。其分别接在单片机的pll p2、p3、p4引脚上,如图3.2.4所示。sw图3. 2.4键盘输入电路3. 2. 5显示电路此为六个七段共阳数码管,1、2、3、4、5、6表示数码管位控制管脚,分别 接在74hc138的15、14、13、12、11、10引脚上,实现对6位数码管位的选择;a、 b、c、d、e、f、g,就是数码管的段码输入,分别接在单片机p0口的p00p06 引脚。显示电路如图3.2.5所示。图3.2.5数码管显示电路3. 2. 6显乔驱动模块74hc138是一款高速cmos器件,适合内存地址解码或数据路由应用。可接受3 位加权地址输入(a, b,c)

21、,在高性能存贮器系统中,这种译码器可提高译码效率。 所以采用74hc138来驱动位码,段码由上拉电阻驱动。其三位地址输入1、2、3引 脚分别接在单片机p2口的21、22、23引脚上。具体电路如图3.2.6所示。u2图3.2.6 74hc138功能引脚图ls1 rrl/speaker <text>图3.2.7蜂鸣器发音电路3.2.7发音电路模块蜂鸣器是一种常用的电子器件,在很多的场合都冇广泛的应用,一般用来发 出报警或者提示的声咅。在木系统中,利用蜂鸣器进行闹钟咅乐的播放。其控制 端一端接在p3 口的p3.7引脚上,另一端接地。具体电路如图3.2.7所示。3. 3软件详细设计3.3.

22、 1主程序设计主程序部分采用程序设计的模块化思想设计,模块化设计的优点是效率高, 其模块相对独立,便于修改。在执行程序吋,主程序只需要调用子程序就可完成 相应的功能。主程序流程图如图3. 3. 1所示。闹铃判断v显示时间v 键盘扫描图3. 3. 1主程序流程图3. 3. 2定时器定时模块电子音乐闹钟设计屮主要使用定吋器to,利用屮断进行吋间的增加,进而实现计时功能。其流程图如图3. 3. 2所示。显示时间按键扌u描重装计数值> 中断返回图3. 3. 2定时程序流程图3.3.3闹钟模块判定冇没有到达闹钟设定时间是通过将闹钟设定时间与当前时间进行对比来确定是否进行闹铃。其程序流程图如图3.3

23、. 3所示。主程序显示时间图3. 3.3闹钟程序流程图3. 3. 4计时模块计时函数部分,主要是通过单片机定时器中断进行的,当单片机产生一次中 断,counter二20时,说明1秒时间到,然后把counter清0 ,把秒sec加1。以此 类推,然后再依次判断分钟和小吋。计吋模块流程图如图3. 3.4所示。> countercounter=0; secsec=0: minmin=0;hour图3. 3.4i|-吋流程图3. 3. 5键盘扫描模块开始图3.3.5键盘扫描流程图此部分主要是通过判断counter在不同值时通过调用加1、减1子函数对时 间和闹钟的吋、分、秒进行设置。在闹钟设置时,

24、按下keyl吋钟停止,进入闹钟 设置模式,key2用来选择时、分、秒的设定,按一下设置秒、两下设置分、三下 设置时,key3用来选择加,key4用来选择减,设定好了z后再次按下keyl即可完 成闹钟时间设定,时间止常走。3. 3. 6播放音乐模块当当前时间与所设的闹钟时间相等时,调用曲目,查找相应的音符,音符的 高四位(即音频)装入to,音符的低四位(即节拍)装入节拍单元。to开始计数, 从p3. 7输出脉冲信号,播放音乐。音乐播放结束,返回主程序。播放音乐流程图如图3. 3. 7所示。时间与闹钟相等调入|11| 0,装入相应字符图3. 3. 7播放音乐流程图4系统调试4.1软件介绍4. 1.

25、 1 proteus isis 软件介绍proteus软件是英国labcenter公司出版的eda工具软件。目前,proteus 仿真系统支持的主流单片机有arm7(lpc21xx)、8051/52系列、avr系列等,它支 持第三方软件开发、编译。proteus主要由isis和ares两部分组成,isis主要 用于原理图设计及与电路原理图的交互仿真。proteus的isis是一款专业的单片 机软件仿真系统,proteus isis是proteus软件的核心,具有高质量的原理图, 良好的用户界而,自动走线,层次设计,总线支持等特性。该软件具冇数字电路 仿真、模拟电路仿真等,isis提供的prot

26、eus vsm实现了混合式的spice电路仿 真,他将高级图表应用,单片机仿真,第三方程序与调试环境冇机结合,可以完 成原理图设计、电路分析与仿真及单片机程序仿真、测试及验证。并且有各种虚 拟仪器。4. 1.2 keil c51软件介绍keil c51是德国keil software公司出品的51系列兼容单片机c语言软件 开发系统,keil c51标准c编译器为8051微控制器的软件开发提供了 c语言环 境,同时保留了汇编代码高效快速的特点。ke1lc51软件捉供了丰富的库函数和 功能强大的集成开发调试工具,全windows界面。4.2利用proteus和keil进行联合调式根据前而的硕件详细

27、设计,利用proteus构建硕件平台,具体原理图如4. 2. 1 所示。在keil开发环境中完成软件代码的编写。首先新建立工程,选择目标器件, 再新建文件编写软件代码,对工程文件进行编译,得到二进制文件(*.hex)。最 后将该二进制文件烧到单片机芯片内部。具体程序加载过程如图4.2.2所示。然 后运行系统,进行功能仿真。仿真调试的过程比较慢,一般要经过调试、修改代 码、再调试,直到达到预期目标为止。一般调试可采用分模块进行。图4. 2. 1硬件原理图apacf®vtq<n、ij1-key-1ctextkeyekey 4c2 8vu1' 8vozxtal1xtaizro

28、nxra ro.wadi roa-adz roaatarosfaw ro»are fo.t/aot丰巳 n閉二albmf2d7g fz.vxb fzac f2 3*11 f2.wac f2wao f2j«fau f2.t/a»:'wd 3 tvo1# 4 5f1df1.1p12p1jpi.*pisp1j6p1.7r3.1h>0> fannn faatthf3vtof3st1f3j&pf3.t/w图4. 2.2程序加载窗口5仿真纟口果本设计为简易电子音乐闹钊i,主要完成如下功能。1 系统上电即开始计时,显示时间12:23:45,如果需要显

29、示不同时间只用修 改sec、min、hour即可,具体见程序。2. 四个独立按键用来控制闹钟,按下keyl吋钟停止,进入闹钟设置模式,key2 用来选择吋、分、秒的设定,按-下设置秒、两下设置分、三下设置吋,key3用 来选择加,key4用来选择减,设定好了之后再次按下keyl即可完成闹钟时间设定, 时间正常走。3. 当当前时间和设定时间一样时,闹钟开始播放歌曲“世上只有妈妈好”,播 放完毕后继续运行,如果需要在此设定只用重复步骤2即可。运行系统后,吋间显示效果图如图5.2所示。十.laeang图5. 2硬件仿真图rp1 . as9pac»s rxc»ttt ty'

30、key4ale 0p2dr>efz2tac pzaranpz.wacanewp1df1.1fi2xamrefaamrn八.rj.<nof11;rn.vn 17p3.7/wpo.wamrd.?/a»?'i : i * * w:二| :<t6xi< :畀jpduf儿po.1/a>1 pofaiapofaklydyiyzgyey?010203啓审*: *r*调整闹钟时间仿真效果图如图5. 3所示。xtal1xta12ow.8wzrstrp1fohaco fo.vah ro2tak?po3tad3 fo.wa»*fdj&awf0.7/a

31、i7p2d炮pz.1w fz2ta<j fzaii f2.waq f2j»ao fzau pz.?at5pzjdfzph wto ?3arnrnp3 7druubiiftb0b wkun wvroro o o|t>abbpacic <teka .芋e 图5.3调整后的时间6结论本课题设计了一个基于单片机控制的电子音乐闹钟。从硕件和软件2个方面 分别对系统进行了详细设计。利用proteus仿真软件搭建硬件平台对设计的系统 进行了功能仿真。通过仿真效果,充分验证了系统设计的可行性,达到了系统设 计的预期目标。仿真系统操作简单,运行较稳定。但系统功能还不够完善,需要 改进

32、的地方主要包括以下几点:1、系统只能显示时间信息的时、分、秒,而且运行一段时间后,存在一定的 误差,需要经常进行时间的校正。改进方法是釆用专用的时钟芯片,如ds1302, 不仅可以显示时、分、秒信息,还可以显示年、月、星期几等信息,而且时 间误差较小,无需经常校正。2、系统存储器内只存储了一手歌曲的相关数据,未能实现闹钊喑乐的选择设 置。改进方法是增加音乐歌曲的数目,如果数据较多,可考虑外扩存储器实现。3、系统显示信息较少,因此采用的是数码管显示。如果增加更多的显示信息, 叮考虑采用液品显示器。参考文献i 潘永雄新编单片机原理与应用.西安电子科技大学出版社,2002张友德,赵志英,涂时亮.单片

33、机微型机原理应用与实验.复旦大学出版社,20003 周航慈、朱兆优、李跃忠.智能仪器原理与设计.北京航空航天人学出版社,20054 江秀汉町编程序控制器原理及应用(笫二版).西安电了科技大学出版社,20035 沈庆阳、郭庭吉.单片机实践与应用.清华人学出版社,2002年6 窦振屮.单片机外围器件实用手册存储器分册.北京航空航天大学出版社,1998 单片机c语言程序设计实训100例,彭伟编著8 高一卫东,51单片机原理与实践(c语言版)9 李建忠.单片机原理及运用西安电子科技人学出版社,200110 吴金戎、沈庆阳.8051单片机实践与应用.清华人学出版社,2001ii 何立民.mcs51系列单

34、片机应用系统设计.北京航空航天大学出版社,199912 李荣正、陈学军.p1c单片机实验教程.北京航空航天大学出版社,200613 张义和、陈敌北.例说8051.人民邮电出版社,200614 at89s5l 8-bit microcontroller with 4kb in-system programmable flash15 intel. microcontroller handbook. 198816 c程序设计(第三版),谭浩强著,清华人学出版社致谢毕业设计终于接近尾声了,首先要感谢我的导师陈老师,他指导我各个模块 的设计和论文写作的框架。这次毕业设计及论文写作的时间不算很长,毕业设计

35、是门己独立完成的,设 计开始时就对任务进行了按时分工,每天都要按时完成任务,这样才能为顺利完 成好毕业设计提供吋间基准。由于毕业设计是我独立进行的设计,刚开始吋,心 里十分茫然,不知从何入手,通过陈老师的指导,在论文的写作过程中,我不仅 对所学过的理论知识冇了更深入的理解,而r我的操作能力也冇了可喜的进步。我认为理论知识无论学得再好再透,毕竟是抽象的,在没用于实践而是毫无 意义可言的,而四年的学习中我所缺少的就是理论和实践的密切结合。毕业设计 则恰恰像一场及吋雨,让我通过亲身学习学会如何把理论知识应用于实践。给了 我充分的锻炼机会。受益匪浅!谢谢老师!/名称:简易电了咅乐闹钟/ 版本:vi.

36、0#inelude <reg52. h>#includeintrins. h>define fosc 11059200#dcfincn50/n为定时时间,nms#defineth1_res(65536 - n*fosc/12/1000)/256#definetl1_res(65536 - n*fosc/12/1000)%256sbitspeaker = p3 7;/蜂鸣器接口定义sbitb1t0=p2"0;/数码管位选接口sbitbit1=p2"l;sbi tbtt2二 p22/unsigned char timeroh, timero l, time;u

37、nsigned char sec = 45, min 二 23, hour = 12;/用来初始化系统时间unsigned char temp sec = 45, temp min 二 23, temp hour = 12;/用来保存设定 闹钟之前的吋间unsigned char targetsec = 0, targetmin = 0, targethour = 0;/闹钊】目标时间 unsigned int counter = 0;/定时器计数变量/ *闹钟时间设定标志*1:设定秒2:设定分3:设定时 unsigned char adjust_sclcct 二 0;/共阴数码管码表unsi

38、gned charcode dseg code = oxco,0xf9, 0xa4, oxbo,0x99, 0x92, 0x82, 0xf8,0x80, 0x90, 0x8& 0x83,0xa7, 0xa2, 0x86, 0x8e;unsignedchara6二0, 0, 0, 0, 0, 0 ;/用来保存每一位分解的值unsignedchardis_aa 二 0;unsignedcharkeyflag = 0;unsignedcharclock_flag = 0;unsignedcharfirst_flag = 0;unsignedcharmusic_flag二0;/闹钟吋间到播放音

39、乐标志变量unsigned char code freqh = 0xf2, 0xf3, 0xf5, 0xf5, 0xf6, 0xf7, 0xf8,/低音0xf9, 0xf9, oxfa, oxfa, oxfb, oxfb, oxfc, oxfc, /中咅oxfc, oxfd, oxfd, oxfd, oxfd, oxfe,oxfe, oxfe, oxfe, oxfe, oxfe, oxfe,高音oxff;/超高音unsigned char code freql = 0x42, oxcl, 0x17, 0xb6, oxdo, oxdl,0xb6,低音0x21, oxel, 0x8c, 0xd8,

40、 0x6& 0xe9,0x5b,0x8f, /oxee, 0x44, 0x6b, 0xb4, 0xf4, 0x2d,高音0x47,0x77,0xa2,0xb6, oxda,oxfa,0x16 ;/超高音/世上只冇妈妈好,表屮数据根据世上只冇妈妈好乐谱简谱编写而等unsigncd char code sszymmh = 6, 2, 2,5, 2, 1,3, 2, 2,5, 2, 2,1, 3, 2,6, 2, 1,5, 2, 1,/一个咅符有三个数字。第一个为第几个咅、屮为第几个八度、最后一个为吋长 (以半拍为单位)。6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1,

41、 5, 2, 2, 3, 2, 2, 1, 2, 1,6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2,3,3,2,1, 5, 2,2,5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2,4,5,2,3, 3, 2,1,2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1,6,0,0,0;/-半拍延吋函数void delay(unsigned char t)junsigned char tl;unsigned long t2;for(tl二0; tl t; tl+)/双重循环,共延吋t个半拍for(t2二

42、0; t2 8000; t2+) ; /延吋期间,可进入to屮断去发咅300-500mstro = 0;/关闭to,停止发音/单音演奏函数void song()tho = timero_h;tro = 1;delay(time);/定时器初始化函数 void timerl_inital() /定吋器0和定吋器1都工作在模式1: 16位th1 二 th1_res;tl1 = tl1_res;tri = 1;ea = 1;tmod 二 0x11;et1 二 1;eto 二 1;/开 to 屮断/数码管显示延时函数void dclayxus(unsigncd int n)unsigned int m

43、, j;for(m=0;m<n;m+)for(j=0;j<120;j+);i/数码管显示函数void refresh ()ifor (dis_aa=0;dis_aa<6;dis_aa+)i:po = dseg_codeadis_aa;switch(dis_aa)icase 5: b1t2=o;b1t1=o;b1to=o;break; case 4: bit2=0;bit1=0;bito=1;break;case 3: btt2=o;btt1=1;btto=o;break;case 2: bit2=o;bit1=1;bito=1;break;case 1: bit2=1;bit

44、1=o;bit0=0;break;case 0: bit2=1;bit1=o;bito=1;break;default:break;!delayxus (5);bit2=1;bit1=1;bito=1;/必须加上用来消影,如 果不加则扫描乱的一塌糊涂时间计算函数,用来求解时、分、秒每一位的值void calcuate_time()a0二 sec%10;al二 sec/10;a2 = min%10;a3 = min/10;a4 = hour%10;a5二 hour/10;/按键扫描函数,返冋扫描结果unsigned char key_scan()unsigned char key;if(pl !

45、二 oxff)delayxus (5);if(pl != oxff)key 二 pl;return key;return oxff; 没有实际意义,只是为了消除 not every exi t path returns a value 警告elsereturn oxff;/按键处理函数,调用按键扫描函数 void keyhandleounsigned char tcmp2 = 0; /tempi 不要初始化成一个 static 静态变量 pl 二 oxff;_nop_() ;_nop_();temp2 = key_scan();if (temp2 oxfd) = oxfd)ii、adjust_

46、select+;if (adjust_select = 4) adjust_select 二 0;whi1e(pl oxfd) = oxfd);if (temp2 oxfb)二二 oxfb) switch(adjust_select)icase 1: sec+; break;case 2: min+; break;case 3: hour+;break;default:break;while(pl ioxfb) = oxfb);if (temp2 0xf7)二二 0xf7)iswitch(adjustselect)i:case 1: sec-; break;case 2: min-; break;case 3: hour-;break;default:break;while(pl|0xf7)二二 0xf7);targetsec= sec; /保留目标时间值targetmin= min;targetho

温馨提示

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

评论

0/150

提交评论