单片机课程设计报告数字音乐盒精品_第1页
单片机课程设计报告数字音乐盒精品_第2页
单片机课程设计报告数字音乐盒精品_第3页
单片机课程设计报告数字音乐盒精品_第4页
单片机课程设计报告数字音乐盒精品_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:单片机系统综合课程设计单片机系统综合课程设计 课程设计题目:数字音乐盒的设计与实现数字音乐盒的设计与实现 院(系):计算机学院 专 业: 班 级: 学 号: 姓 名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。不予通过。报告和电子数据必须作为实验现象重复的关键依据。 学术诚信声明 本人声明本人声明:所呈交的报

2、告(含电子版及数据文件)是我个人在导师指 导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别 加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表 或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一 同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明 并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本 教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后 果。 本人签名: 日期: 年 月 日 沈阳航空航天大学沈阳航空航天大学 课课程程设设计计任任务务书书 课程设计名称xxxx 课课程程设设计计专业 学生姓名班级学号 题目名称 起止日期年月

3、日起至年月日止 课设内容和要求: 参考资料: 教教研研室室审审核核意意见见: 教教研研室室主主任任签签字字: 指导教师(签名)指导教师(签名) 年月日 学学 生(签名)生(签名)年月日 课程设计总结:课程设计总结: 在不知不觉中两个星期过去了,回想起来,真是一言难尽,期间既有无奈辛酸, 又有成功的喜悦。学了一学期的单片机,对单片机的硬件设计,软件设计掌握的 掌握程度远远不够,但经过这段时间努力,在老师的耐心指导下,从设计、论证、 修改到编程、调试,终于使我的设计完成了。使我无论在理论基础知识还是在实 际的操作能力上都有了较大的提高,更让我懂得了一分耕耘一分收获的道理。 通过本次音乐盒的设计,极

4、大地激发了我对单片机的学习兴趣,同时也让我 学习到了很多新的东西,比如单片机的定时器功能,led 的数码显示,功能键盘 的设计等,这些都让我受益匪浅。这其中有以前书本上学习过的知识,也有很多 未曾注意到得新知识,比如如何将乐谱转换成机器能识别的代码,并让机器演奏 音乐这一点,课本上并未涉及,但通过查找资料,让我学会了如何实现,我认为 更主要的是让我明白了如何主动学习。这些曾使我的设计出错的问题,通过自己 的努力,老师指导和同学的帮助,终于被我一个一个的克服了,顺利把硬件实物 顺利做好,把软件调试完成了。 通过此次课程设计,让我明白了很多,不光让我明白了很多新的知识,更让 我懂得了如何学习,让我

5、知道了如何做人,这一点主要感谢我的课设指导老师, 是他一直在教导我,鼓励我,才让我顺利完成了任务,在这里我表示衷心的感谢。 一分耕耘一分收获,只要真心付出了,就一定会有所回报。我愿在未来的学 习和研究过程中,以更加丰厚的成果来答谢曾经帮助过我的老师,同学和朋友. 目目 录录 1 概述概述.1 1.1 数字音乐盒简介 .1 1.2 发声原理介绍 .1 2 音乐盒总体设计音乐盒总体设计.4 2.1 设计要求 .4 2.2 方案论证与设计 .4 2.2.1 总体方案设计.4 2.2.2 led 驱动模块设计 .5 2.2.3 系统总体结构框图.5 3 系统硬件设计系统硬件设计.6 3.1 管脚说明

6、.6 3.2 振荡器特性 .7 3.3 led 显示器的结构 .8 3.4 led 显示器工作原理 .8 3.5 键盘.9 3.6 时钟电路模块.9 3.7 音频输出部分 .11 3.8 整体电路设计 .12 4 子函数描述子函数描述.13 4.1 定时器中断设计: .13 4.2 数码管显示模块设计: .13 4.3 键盘控制模块设计: .14 4.4 蜂鸣器演奏子函数模块设计: .16 4.5 整体流程图设计: .18 5 调试与结果分析调试与结果分析.19 5.1 调试步骤及方法 .19 5.2 实验结果 .19 参考文献参考文献.20 附附 录(关键部分程序清单)录(关键部分程序清单)

7、.21 1 概述 1.1 数字音乐盒简介数字音乐盒简介 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟 塔报时,而将大小的钟表上机械装置,被称为 “可发出声音的组钟 ”。 音乐盒 300 多年的产品发展,同时也是人类文明300 多年发 展的历史 鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发 展现状,它也成了时代的一面镜子。 现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏 一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念 ,或为了居室的美化,等等,而得到众多品位人士的追求。 音乐盒的分类 : 18 音,30 音,这些

8、是代表音乐盒机芯的音数,其实也就是机芯里面,那 一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富, 曲子也就是越好听,同时曲子的播放时间也相应长一点。一般18 音的曲子 为 25 秒左右,30 音的曲子为 35 秒左右。50 音的差不多有 60 秒。目前来说, 一般市面上卖的 “爱丽丝”都是 18 音的,其次是 30 音,50 音。 此次设计的目的就是运用单片机来设计一套控制系统,来完成音乐播放的控 制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。 1.2 发声原理介绍发声原理介绍 首先介绍蜂鸣器的发声原理。众所周知, 音调和音调的时长 是音符的主 要特征

9、,通过产生不同的音调和音调的时长可以奏出不同的音符来。然后一个 个音符串联在一起就可以产生美妙的音乐来了。 音调主要由声音的频率决定 , 通过单片机给蜂鸣器不同的音频脉冲来产生不同的音调。要产生音频脉冲,只 要算出某一音频的周期(周期 =1/频率),然后将此周期除以 2 即为半周期 的时间。利用单片机的定时器工作在计数模式mode1 下,设定 th0 和 tl0 的 值以产生这半个周期,每当计时到达时就将输出脉冲的i/o(即接蜂鸣器的 那个管脚)反相,然后重复计时此半个周期再对i/o 反相,就可以在 i/o 引 脚上得到此频率的脉冲。 下面附上不同音调所对应的频率表: 音符频率(hz)/初值(

10、 s )音符频率(hz)/初值( s ) 低 1do262/63627中 1do 523/64580 高 1do1042/65056低 2re 294/63835 中 2re589/64687高 2re 1245/65134 低 3m330/64021中 3m 661/64780 高 3m1318/65157低 4fa 350/64107 中 4fa700/64822高 4fa 1397/65178 低 5so393/64264中 5so 786/64900 高 5so1568/65217低 6la 441/64402 中 6la882/64969高 6la 1760/65252 低 7si4

11、95/64526中 7si 990/65031 表表 1.1 c 调各音符频率与计数初值调各音符频率与计数初值 t 的对照表的对照表 节拍的产生: 音乐中的节拍用延时时间产生。例如, 1 拍=0.4s,1/4 拍=0.1s,以此 类推。假设 1/4 拍执行一次延时程序,则 1/2 拍就执行两次延时程序,所以 只要求出 1/4 拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也 进行了编码,并且计算了乐谱节拍编程时的延时时间。 按 1/4 拍为一个延时时间的节拍编码与节 拍对应的表 按 1/8 拍为一个延时时间的节拍编码与节 拍对应的表 节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍 1

12、1/466/411/866/8 22/488/422/888/8 33/4a10/433/8a10/8 44/4c12/444/8c12/8 55/4f15/455/8 表表 1.2 节拍数编码表节拍数编码表 乐谱节拍1/4 拍的延时时间乐谱节拍1/8 拍的延时时间 4/4125 ms4/462 ms 3/4187 ms3/494 ms 2/4250 ms2/4125 ms 表表 1.3 乐谱节拍编程时的时间延时表乐谱节拍编程时的时间延时表 如果没有必要进行精确的计时,可以用for 循环空语句来粗略计时即可 (本次课设选用此法)。当单片机使用11.0592mhz 的晶振时, for(i=0;i

13、115;i+);这个空循环延时约为 1ms;当晶振选用 12mhz 时,可使 用 for(i=0;i125;i+);这个空循环来延时 1ms。在这个空循环外头再进行一 次循环就可以实现延时若干 ms。 2 音乐盒总体设计 2.1 设计要求设计要求 本次数字音乐盒课程设计是利用 i/o 口产生一定频率的方波,从而驱动蜂鸣 器,发出不同的音调,从而演奏乐曲因为产生的频率不同,所以导致蜂鸣器发出 的音调不同,由不同的音调和节拍可组成不同的音乐。演奏过程中可采用七段数 码管显示当前播放的歌曲序号和播放时间。同时可通过键盘数字键直接选择乐曲, 也可以用功能键选择上一曲和下一曲,具有暂停和播放控制功能。例

14、如本次课设 按 1 键选择第一首歌曲,按 2 键选择第二首歌曲,按 a 键暂停,按 b 键继续唱歌。 2.2 方案论证与设计方案论证与设计 2.2.1 总体方案设计总体方案设计 通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。 要产生音频脉冲,只需算出某一音频的周期(1/音频) ,然后取半周期的时间 定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 i/o 反 相,然后重复计时此半周期时间再对 i/o 口反相,就可在 i/o 脚上得到此频率的 脉冲。如中音 d0,频率为 523hz,其周期 t=1/523=1912 微秒,因此只要令计 数器定时 1912/2=956

15、,在每计数 956 次时将 i/o 口反相,就可得到中音 d0(523hz)。 当键盘有键按下时,判断键值,启动计数器 t0,产生一定频率的脉冲, 驱动蜂鸣器,放出乐曲。同时启动定时器 t1,在 led 显示歌曲号, 。数码管 采用共阴极数码管,实现歌曲序号的显示;功能键盘采用按键开关,实现歌 曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的 p3.6 口控制,实现歌 曲播放。 通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前 播放歌曲的序号,蜂鸣器播放出音乐。 2.2.2 led 驱动模块设计驱动模块设计 方案一:采用静态锁存方式,将每一个 led 发光管的一端接至单片机的一

16、个 i/o 口,另一端通过电阻接电源。这种方法可以直接驱动 led,原理简单,驱动 能力强,led 的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单 片机的 i/o 口,只适合于较小的系统。 方案二:采用动态扫描方式,通过三极管驱动并联在一起的 led 发光管的一 端(共阴极),led 发光管的另一脚接通用 i/o 口,控制其亮灭。该方法能驱动较 多的 led,控制方式较灵活,而且节省单片机的资源。 比较以上两种方案,系统设计中采用方案二。 2.2.3 系统总体结构框图系统总体结构框图 mcs-51单 片机 电源电路 led显示 复位电路 晶振电路 蜂鸣器 电路 按键矩 阵电路 3

17、系统硬件设计 本设计中用到了 8051 单片机,4*6 键盘,蜂鸣器,8 段数码管等硬件电路常 用元器件。 3.13.1 管脚说明管脚说明 8051 芯片如图 3.1 所示: vcc:供电电压。 gnd:接地。 p0 口,p1 口,p2 口,p3 口:四个 8 位 i/o 口 p3 口也可作为 8051 的一些特殊功能口,如下所示: 管口管脚 备选功能 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(外部数

18、据存储器写选通) p3.7 /rd(外部数据存储器读选通) rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平 时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。 /psen:外部程序存储器的选通信号。 /ea/vpp:/ea 保持低电平时,在此期间为外部程序存储器(0000h-ffffh) , 不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 reset; 当/ea 端保持高电平时,此时为内部程序存储器。 x1:反向振荡放大器的输入及内部时钟工作电路的输入。 x2:来自反向振荡器的输出。 图图 3.13

19、.1 80518051 芯片示意图芯片示意图 3.23.2 振荡器特性振荡器特性 x1 和 x2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振 荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,x2 应不接。 有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽 无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.33.3 ledled 显示器的结构显示器的结构 常用的 led 显示器为 8 段。每一个段对应 1 个发光二极管,这种显示器有共 阳极和共阴极两种:共阴极 led 显示器的发光二极管的阴极连接在一起,通常此 公共阴极接地。当某个发光二极管

20、的阳极为高电平时,发光二极管点亮,相应的 段被显示。同样,共阳极 led 显示器的发光二极管的阳极连接在一起,通常此公 共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相 应的段被显示。为了使 led 显示器显示不同的符号或数字,就要把不同段的发光 二极管点亮,这样就要为 led 提供代码,因为这些代码可使 led 相应的段发光, 从而显示不同字型,因此该代码称为段码。 7 段发光二极管,再加上 1 个小数点位,共计 8 位。因此提供给 led 显示器 的段码正好是 1b。各段与字节中各位对应关系如下表 3.2: 代码位d7d6d5d4d3d2d1d0 显示位dpgfedc

21、ba 表表 3.2 8 段段 led 结构及外形结构及外形 3.43.4 ledled 显示器工作原理显示器工作原理 由 n 个 led 显示块可以拼接成 n 位的 led 显示器。如图是 led 数码管。 图图 3.33.3 数码管结构图数码管结构图 n 个 led 显示器有 n 个位选线和 8*n 位 根段码线。段码线控制显示字符的字 型,而位选线为各个 led 显示块中各段的公共端,它控制该 led 显示位的亮或暗。 led 显示器有静态显示和动态显示两种。 3.53.5 键盘键盘 图图 3.43.4 键盘电路键盘电路 键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人

22、工干预单片机的主要手段。键盘实质上是一级按键开关的集合。通常,键盘开关 利用了机械触点的合、断作用。键的闭合与否,反映在行线输出电压上就呈现高 电平或低电平,如果高电平表示键断开,低电平则表示键闭合,通过对行线电平 高低状态的检测,便可确认按键按下与否。为了确保 cpu 对一次按键动作只确认 一次按键有效,必须消除抖动的影响。采用软件来消除按键抖动的基本思想是: 在一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时 10ms 的 子程序后,确认该行线电平是不否仍为低电平,如果仍为低电平,则确认为该行 确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时 10ms 的子程序

23、后,检测该行线为高电平,说明按键确实已经松开。 3.63.6 时钟电路模块时钟电路模块 时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。 在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要 由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。 图图 3.53.5 时钟电路时钟电路 为达到振荡周期是 12mhz 的要求,这里要采用 12mhz 的晶振,另外有两个 22p 的独石电容,两晶振引脚分别连到 x1 和 x2 振荡脉冲输入引脚。其中 74hc244-2 表示 74hc244 芯片的 2 号引脚。 3.73.7 音频输出部分音频输出部分

24、图图 3.63.6 音频输出部分音频输出部分 音频输出部分主要由 npn 三极管和蜂鸣器组成。用 p1.0 口控制蜂鸣器。 3.83.8 整体电路设计整体电路设计 图图 3.73.7 整体电路设计整体电路设计 4 子函数描述 4.1 定时器中断设计:定时器中断设计: 在本设计中采用定时器中断 0 方式。 工作方式寄存器 tmod 用于选择定时器/计数器的工作方式和工作模式。其格 式如下表 4.1: d7d6d5d4d3d2d1d0 gatem1m0gatem1m0 tmod t1 方式字段t0 方式字段 表表 4.14.1 寄存器寄存器 tmodtmod 工作方式和工作模式工作方式和工作模式

25、定时器初始化子函数如下: void timerconfiguration() tmod = 0 x01; /选择工作方式 1 th0 = 0 xfc; /设置初始值,定时 1ms tl0 = 0 x18; ea = 1;/打开总中断 et0 = 1;/打开定时器 0 中断 tr0 = 0;/关闭定时器 0 4.2 数码管显示模块设计:数码管显示模块设计: 模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送, 高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英 钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校, 数字式电子钟用集成电路计时时

26、,译码代替机械式传动,用 led 显示器代替显示 器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时 间的功能,还可以进行时和分的校对,片选的灵活性好。 子函数如下: void digdisplay() /显示函数 unsigned char i; unsigned char pos; unsigned char led; pos = 0 x04; / 从左边开始显示 for (i = 0; i = 1; / 显示下一位 4.3 键盘控制模块设计:键盘控制模块设计: 此模块主要由键盘扫描程序组成,在主函数中通过 switch()语句根据键盘 扫描函数的返回值来进入相应的功能

27、函数中。 扫描程序具体为先扫描列找出按键所在的列再扫描行找出按键所在的行,列 为高四位行为低四位,因此有键值=列*4+行,然后等待键位释放,最后根据相应 的键码值返回按键对应的值,若无按键则返回 0 xff。 流程图如下: 开始 扫描列 有低电平 扫描行 是 计算键值 结束 返回键 值 下一列 图图 4.24.2 键盘扫描流程图键盘扫描流程图 函数代码如下: unsigned char getkey() unsigned char pos; unsigned char i; unsigned char k; i = 6; pos = 0 x20; / 找出键所在列 do outbit = po

28、s; pos = 1; k = in while (-i != 0) / 键值 = 列 x 4 + 行 if (k != 0) i *= 4; if (k else if (k else if (k outbit = 0; do delay(1); while (testkey(); / 等键释放 return(keytablei); / 取出键码 else return(0 xff); 4.4 蜂鸣器演奏子函数模块设计:蜂鸣器演奏子函数模块设计: 本模块通过循环获取频率和节拍数组来使蜂鸣器发出不同的音调以及延时音调时 间,子函数如下: void yanzou(unsigned char pi

29、nlv,unsigned int jiepai)/播放乐曲 unsigned char pl; unsigned int jp; for(jp=0;jpjiepai;jp+) keydown(); if(flag=1) tr0=0; displaydata0=ledmapkeyvalue; displaydata1=ledmaps/10; displaydata2=ledmaps%10; while(1) keydown(); digdisplay(); if(flag=2) tr0=1; break; else if(flag=3) tr0=0; buzzer=0; for(pl=0;plp

30、inlv;pl+); buzzer=1; for(pl=0;plpinlv;pl+); 4.5 整体流程图设计:整体流程图设计: 开始 初始化 有按键 是 键值为1 演奏乐曲1 是 有按键 获取键值 是 暂停音乐和 计时 判断键值 键值为10 判断键值 结束 否 关定时器 否 判断按键 键值11 演奏乐曲2 键值为2 否 结束 有按键 否 是 关定时器 获取键值 是 判断键值 暂停音乐和 计时 键值为10 判断按键 键值11 否 图图 4.34.3 整体流程图设计整体流程图设计 5 调试与结果分析 5.1 调试步骤及方法调试步骤及方法 1.在实验箱上连接所需要的线 2.将实验箱 lab8000

31、 和电脑相连接 3.将程序载入实验箱 4.复位 5.运行程序 5.2 实验结果实验结果 程序运行后,实验箱的数码管显示三个 0,按 1 键蜂鸣器开始演奏第一首音乐, 同时开始计时,并且显示当前演奏音乐的序号程序运行过程中,按 a 键音乐暂停,同 时计时暂停,再按 b 键,音乐继续演奏,数码管继续计时,音乐结束后,可继续选 择播放音乐序号,如此循环 。 综上,本次设计符合设计要求。 参考文献 1 张毅刚.单片机原理及应用m.哈尔滨:哈尔滨工业大学出版社,2008 2 戴仙金.51 单片机及其 c 语言程序开发实例m.北京:清华大学出版社,2011 3 黄惟公.单片机原理及应用技术m.西安:西安电

32、子科技大学出版社,2010 4 高锋.单片微型计算机原理与接口技术m.北京:科学出版社,2007 5 李叶紫.mcs-51 单片机应用教程m .北京:清华大学出版社,2002 6 刘守亦.单片机应用技术m .陕西:西安电子科技大学出版社,1995 附 录(关键部分程序清单) #include xdata unsigned char outbit _at_ 0 x8002; / 位控制口 xdata unsigned char outseg _at_ 0 x8004; / 段控制口 xdata unsigned char in _at_ 0 x8001; / 键盘读入口 sbit buzzer=

33、p10; /蜂鸣器 unsigned char displaydata10; /数码管显示码 unsigned char code ledmap = / 共阴极八段管显示码 0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d, 0 x07, 0 x7f, 0 x6f, 0 x77, 0 x7c, 0 x39, 0 x5e, 0 x79, 0 x71; unsigned char code wema= 0 x20,0 x10,0 x08,0 x04,0 x02,0 x01 ;/位选,0-5 位数码管 code unsigned char keytabl

34、e = / 键码定义 0 x16, 0 x15, 0 x14, 0 xff, 0 x13, 0 x12, 0 x11, 0 x10, 0 x0d, 0 x0c, 0 x0b, 0 x0a, 0 x0e, 0 x03, 0 x06, 0 x09, 0 x0f, 0 x02, 0 x05, 0 x08, 0 x00, 0 x01, 0 x04, 0 x07 ; unsigned char code pinlv1=131,110,98, 87, 73, 87, 110,98, 131,0,110,98, 87, 73, 73, 65, 98, 87,87,87,73,65,73,65,55,58,6

35、5,73,65,87,110,98,87,73,110,131,110,98,87,65,73,73,0,87, 65,65,73,82,87,98,87,73,131,110,98,0,110,98,87,73,65,55,58,65,73,87,65,65,; unsigned int code jiepai1=110,131,147,494,196,165,131,294,440,1,131,147,165,588,196,440,294,660,3 30,165,196,880,588,220,262,124,110,196,220,330,131,147,495,196,262,22

36、0,131,147,1 65,22,0,784,392,2,660,660,220,196,175,330,588,495,196,110,131,147,2,131,147,330,3 92,440,524,247,220,196,165,880,880; unsigned char code pinlv2=66 ,55 ,44, 55, 49, 65, 55, 44, 37, 37, 65, 37, 41, 44, 41, 37, 29, 33, 44, 58, 65, 44; unsigned int code jiepai2=220,262,350,262,587,262,247,66

37、0,587,880,262,330,392,440,392,349,2640,6 98,784,492,440,660; unsigned int num=0; /计数到 1s unsigned int s=0,i=0; unsigned char flag=0; unsigned char keyvalue=0; unsigned char key; unsigned char k=0; unsigned char t=0; unsigned char pos=0 x04; void delay(unsigned char cnt);/延时函数 void digdisplay(); /数码管

38、显示函数 void timerconfiguration(); /配置定时器 unsigned char getkey(); /获取键值 unsigned char testkey(); void keydown(); void yanzou(unsigned char pinlv,unsigned int jiepai);/播放音乐 void music_1(); /第一首乐曲 void music_2(); /第二首乐曲 void main() /主函数 displaydata0=ledmap0; displaydata1=ledmap0; displaydata2=ledmap0; timerconfiguration(); while (1) displaydata1=ledmaps/10; displaydata2=ledmaps%10; digdisplay(); if(testkey() tr0=1; keyvalue=getkey(); displaydata0=ledmapkeyvalue; switch(keyvalue) case 1 : music_1();keyvalue=0;tr0 = 0;break; case 2 : music_2();keyvalue=0;tr0 = 0;break; void yanzou(unsigned char pinl

温馨提示

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

评论

0/150

提交评论