版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南人文科技学院 课程设计报告 课程名称课程名称:单片机原理及应用课程设计 设计题目设计题目: 远程点歌系统 系系 别:别: 通信与控制工程系 专专 业:业: 通信工程 指导教师评语指导教师评语: 指导教师签名: 年 月 日 项项 目目权重权重成绩成绩 1、设计过程中出勤、学习态度等方面 0.2 2、课程设计质量与答辩0.5 3、设计报告书写及图纸规范程度0.3 成成 绩绩 评评 定定 总 成 绩 教研室审核意见: 教研室主任签字: 年 月 日 教学系审核意见: 主任签字: 年 月 日 摘要 本设计是一个基于 AT89C52 系列单片机的点歌系统,依据单片机技术原理,通 过硬件电路制作以及软件
2、编译,设计制作出一个多功能多功能点歌系统。该点歌系 统主要由单片机、8255 芯片、LED 显示电路、复位电路、时钟电路以及蜂鸣器组成。 用户从客户机选择要播放的曲目。客户机通过串口将选择信息传给单片机。单片机 根据客户机给的信息做出选择,播放预先存放在 ROM 中的音乐,并用 LED 显示播 放歌曲。放完后在提示客户机选择下一曲,用蜂鸣器播放音乐。本设计利用 KEIL 编程软件对点歌系统源程序进行编程并调试,节约了设计时间。 关键字:点歌;关键字:点歌;AT89C52 单片机;单片机;LED;串口;串口; 目录 1.引言 .4 1.1 设计目的.4 1.2 设计要求.4 1.3 设计内容.4
3、 2.设计方法对比 .4 2.1 设计方案一.5 2.2 设计方案二.5 2.3 方案选择.5 3.电路硬件分析 .5 3.1 总体设计框图.5 3.2 AT89C52 简介 .6 3.3 LED 显示电路设计与原理 .6 3.4 时钟振荡电路 .7 3.5 串口电路.7 4.软件分析 .8 4.1 音调的确定.8 4.2 节拍的确定.9 4.3 编码 .10 4.4 软件程序设计 .12 4.4.1 主程序流程图 .12 4.4.2 播放音乐子程序流程图 .14 4.4.3 程序源代码(见附录一).15 5.总结 .15 6.致谢 .16 参考文献 .16 附录一 .17 远程点歌系统 1.
4、引言引言 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。 点歌系统可以提高人们的精神文化享受。传统点歌系统较为复杂,一般嵌入在一些 专用影音设备中,且成本较高,本点歌系统是以单片机为核心元件的电子式点歌系 统,体积小、重量轻、能演奏和旋音乐及使用方便,加之性价比较高,具有一定的 商业价值。 1.1 设计目的设计目的 (1)熟悉单片机的应用与开发; (2)学习用 C 语言开发应用程序; (3)学习远程控制与歌曲播放的开发。 1.2 设计要求设计要求 利用单片机作为控制核心,完成一个从客户机选择的点歌系统。具体要求如下: (1) 用户从客户机选择要播放的曲目; (2) 电脑通
5、过串口将选择信息传给单片机。 (3)单片机根据电脑给的信息做出选择,播放预先存放在 ROM 中的音乐; (4)用扬声器播放音乐完后,提示下一次选择。 1.3 设计内容设计内容 (1)电路有两种工作模式:暂停模式和播放模式。 (2)按下按键 1 进入演奏音乐模式,再按切换歌曲,共两首歌曲。 (3)按下按键 2 进入花样灯模式,再按切换 LED 花样,共三种花样。 2.设计方法对比设计方法对比 本设计是一个基于 AT89C52 系列单片机的点歌系统,客户机选择所喜欢的歌曲, 单片机执行音乐播放程序。蜂鸣器发出某个音调,与之相对应的数码管显示播放的 曲目。硬件有单片机已确定,下面对软件设计语言进行比
6、较: 2.1 设计方案一设计方案一 使用 C 语言,它是目前最流行的程序设计语言之一,具有简洁、灵活、实用、 高效、可移植性好;它同时具备了高级语言和低级语言的特征,除此之外,C 语言 生成目标代码质量高、程序执行效率高。 2.2 设计方案二设计方案二 使用汇编语言,它能从分发挥指令系统功能和效率,可获得最简练的目标程序, 特别是在一些实时控制系统中,采用汇编语言可以准确地计算出控制操作时间。 2.3 方案选择方案选择 使用汇编语言,会使编程过程变得繁琐,复杂度上升,程序结构不易控制,加 之音乐播放对实时要求不高;而 C 语言能极大地简化编程过程,大大的提高的效率 与质量,故选择方案一。 3.
7、电路硬件分析电路硬件分析 3.1 总体设计框图总体设计框图 STC89C52 单片机 LED 显示8255 蜂鸣器 串口 震荡电路 图 3.1 总体设计框图 3.2 AT89C52 简介简介 AT89C52 是一种带 4K 字节闪存可编程可擦 除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高 性能 CMOS 8 位微处理器,俗称单片机。 AT89C2051 是一种带 2K 字节闪存可编程可擦除 只读存储器的单片机。单片机的可擦除只读存储 器可以反复擦除 100 次。该器件采用 ATMEL 高 密度非易失存储
8、器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功 能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C52 是一种高效微 控制器,AT89C2051 是它的一种精简版本。AT89C52 单片机为很多嵌入式控制系统 提供了一种灵活性高且价廉的方案。外形及引脚排列如图 3.2 所示 3.3 LED 显示电路设计与原理显示电路设计与原理 图 3.2 AT89C52 系列单片机 LED 显示电路是由 6 位 LED 数码管组成,连接方式为共阳极,数码管的位数由 8255 的 PA 控制,若为低电平则有效;数码管显示的内容的由 8255 的 PB 口
9、控制。 3.4 时钟振荡电路时钟振荡电路 AT89C52 中有一个用于构成内部振荡 器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶 体或者陶瓷谐振器一起构成自然振荡器。 外接石英晶体及电容 C1、C2 接在放大器 的反馈回路中构成并联振荡电路。对外接 电容 C1,C2 虽然没有什么严格的要求, 但电容容量的大小会轻微影响振荡频率的 高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体, 我们推荐电容使用 30PF10PF,而如果使用陶瓷振荡器建议选择 40PF10PF。用 户也可以采用外部时钟。采
10、用外部时钟的电路如图示。这种情况下,外部时钟脉冲 接到 XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。由于外部时钟信号 是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没 有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件 的要求。振荡器电路图如右。 图 3.4 单片机外部振荡电路 图 3.3 LED 显示电路设计与原 理 3.5 串口电路串口电路 由于单片机工作电压与客户机串口电压存在电压差,不能直接相连。这里使用 MAX232 芯片转换电压,再接上标准串口 CON32,从而达到与客户机通信的目的。 出口硬件连接电路图如下。 4
11、.软件软件分析分析 音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率, 它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。 因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱 多长的时间。 4.1 音调的确定音调的确定 (1)要产生音频脉冲,只要算出某一音频的周期(1/频率) ,然后将此周期除以 2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉 冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频 率的脉冲。 (2)利用 AT89C52 的内部定时器使其工作在计数
12、器模式 MODE1 下,改变计 数值 TH0 及 TL0 以产生不同频率的方法。 此外结束符和休止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H, 则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。 图 3.5 串口电路图电路 (3)例如频率为 523Hz,其周期 T=1/523=1912us,因此只要令计数器计时 956us/1us=956,在每次技术 956 次时将 I/O 反相,就可得到中音 DO(523Hz) 。 计数脉冲值与频率的关系公式如下: N=Fi2Fr N:计算值;Fi:内部计时一次为 1us,故其频率为 1MHz; 其计数值的求法如下: T=6
13、5536-N=65536-Fi2Fr 例如:设 K=65536,F=Fi=1MHz,球低音 DO(261Hz) 。中音 DO(523Hz) 。高音 的 DO(1046Hz)的计算值 T=65536-N=65536-Fi2Fr=65536- Fr=65536-/Fr 低音 DO 的 T=65536-/262=63627 低音 DO 的 T=65536-/523=64580 低音 DO 的 T=65536-/1047=65059 C 调各音符频率与计数值 T 的对照表如表 4.1 所示。 表 4.1 C 调各音符频率与计数值 T 的对照表 低音频率T参数中音频率T参数高音频率T参数 Do26219
14、08229Do523956115Do10465757 Do 2771805217 Do 554903108 Do 11095454 Re2941701204Re587852102Re11755151 Re 3111608193 Re 62280497 Re 12454848 Mi3301515182Mi65975991Mi13184545 Fa3491433172Fa69871686Fa13974343 Fa 3701351162 Fa 74067681 Fa 14804141 So3921276153So78463877So15683838 So 4151205145 So 83160272
15、 So 16613636 La4401136136La88056868La17603434 La 4641078129 La 93253664 La 18653232 Si4941012121Si98850661Si19763030 4.2 节拍的确定节拍的确定 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可 以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基 础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生 不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信 号。因此,需要弄清楚音乐中的音符和对应的频
16、率,以及单片机定时计数的关系。 表 4.2 节拍与节拍码对照 节拍码节拍数节拍码节拍数 11/4 拍11/8 拍 22/4 拍21/4 拍 33/4 拍33/8 拍 41 拍42/1 拍 51 又 1/4 拍55/8 拍 61 又 1/2 拍63/4 拍 82 拍81 拍 A2 又 1/2 拍A1 又 1/4 拍 C3 拍C1 又 1/2 拍 F3 又 3/4 拍 每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍, 图 5.2 为节拍码的对照。如果 1 拍为 0.4 秒,1/4 拍实 0.1 秒,只要设定延迟时间就 可求得节拍的时间。假设 1/4 拍为 1DE
17、LAY,则 1 拍应为 4DELAY,以此类推。所 以只要求得 1/4 拍的 DELAY 时间,其余的节拍就是它的倍数,如图 5.3 为 1/4 和 1/8 节拍的时间设定。 表 4.3 1/4 和 1/8 节拍的时间设定 曲调值DELAY曲调值DELAY 调 4/4125 毫秒调 4/462 毫秒 调 3/4187 毫秒调 3/494 毫秒 调 2/4250 毫秒调 2/4125 毫秒 4.3 编码编码 先将歌曲的简谱进行编码,储存在一个数据类型为 unsigned char 的数组中。程 序从数组中取出一个数,然后分离出高 4 位得到音调,接着找出相应的值赋给定时 器 0,使之定时操作蜂鸣
18、器,得出相应的音调;接着分离出该数的低 4 位,得到延 时时间,接着调用软件延时。 表 4.4 简谱对应的简谱码、T 值、节拍数 简谱发音简谱码T 值节拍码节拍数 5低音 SO16426011/4 拍 6低音 LA26440022/4 拍 7低音 TI36452433/4 拍 1中音 DO46458041 拍 2中音 RE56468451 又 1/4 拍 3中音 MI66477761 又 1/2 拍 4中音 FA76482082 拍 5中音 SO864898A2 又 1/2 拍 6中音 LA964968C3 拍 7中音 TIA65030F3 又 3/4 拍 1高音 DOB65058 2高音 R
19、EC65110 3高音 MID65157 4高音 FAE65178 5高音 SOF65217 4.4 软件程序设计软件程序设计 4.4.1 主程序流程图主程序流程图 主程序代码: void main(void) TMOD=0 x21;/定时器 0,1 都工作 16 位计数方式 初始化 用 LED 显示 向客户机发送提示 播放完歌曲 播放歌曲 客户机点歌 调用 PLAY调用 PAUSE 开始 等待 dis_play=0 中断响应 是否 图 4.1 主程序流程图 ET0=1; /允许定时器 0 溢出中断; EA = 1; /允许总中断(如不使用中断,可用/屏蔽) ES = 1; /允许 UART
20、串口的中断 SCON = 0 x50; /串口工作方式 1, TH1 = 0 xF3; /定时器初值高 8 位设置 TL1 = 0 xF3; /定时器初值低 8 位设置 PCON = 0 x00; /波特率不倍频 TR1 = 1; /定时器启动 dis_flag=0; a8255_CON=0 x81; a8255_PA=0 xff; dis_flag=0; while(1) if(dis_flag=0) /PAUSE leddisp5=0 x11;leddisp4=0 x0a; leddisp3=0 x13;leddisp2=0 x05; leddisp1=0 x0e;leddisp0=0 x
21、15; else/PLAY-X leddisp5=0 x11;leddisp4=0 x12; leddisp3=0 x0a;leddisp2=0 x14; leddisp1=0 x10; display(); if(dis_flag!=0)void song(); 4.4.2 播放音乐子程序流程图播放音乐子程序流程图 修改指针 取下一个编码 结束 dis_flag!=0 开始 取编码高 4 位 取低 4 位 调用延时程序 关闭定时器 0给定时器 0 赋初值 是否播放完 是否为:0 否是 否 是 图 4.2 播放音乐子程序 流程图 播放音乐子程序代码: void song() if(dis_fl
22、ag!=0) while(1)display();if(dis_flag!=0)break; if(*pmusic=0 x00) fm=1; TR0=0; leddisp0=0 x10; UART_S(send_data); dis_flag=0; while(1)display();if(dis_flag!=0)break; elseleddisp0=re_temp; music_temp=*pmusic; beat= music_temp /取得节拍数 beat=beat*4; freq =music_temp4; /取得音符编码 pmusic+; if(freq=0)TR0=0; els
23、e TR0=0; FreqTemp=FreqTabfreq; TL0= FreqTemp; TH0= FreqTemp8; TR0=1; delay(beat); 4.4.3 程序源代码(见附录一)程序源代码(见附录一) 5.总结总结 单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了一个学期的摸索 与实验,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能,还使我对于 一项设计研究的制作过程所需要的详细步骤和具体的实现方法的力度的掌握。 当然在这次宝贵的课程设计活动中,经验才是对于我们最大的收获,而且还增 强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这 次难忘
24、的活动我觉得再合适不过了。但是,光是完成了作品还是不可以自我满足的, 在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能 完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到 达了拓展的程度,我想这个目的将在不远的时期内被实现。 总之,这次设计从软件编写、调试到软硬件联机调试,我倾注了大量的时间和 心血。真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过, 也曾经为某一功能不能实现而犹豫彷徨过,但最终我成功了。 我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。 6.致谢致谢 感谢我的指导老师方智文,他们严谨细致、一丝不苟的作风一直是我工
25、作、学 习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。感谢我的 室友们,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。 从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的 帮助,在这里请接受我诚挚的谢意。 参考文献参考文献 1 张鑫. 单片机原理及应用,电子工业出版社,2005.8. 2 康华光. 模拟电子技术基础(第四版)M, 武汉:华中理工大学出版社,1999. 3 谭浩强. C 语言程序设计(第二版)M,北京:清华大学出版社,1991. 4 楼然苗. 单片机课程设计指导(第一版)M,北京:航空航天大学出版社, 2007.7. 附
26、录一附录一 程序源代码: #include #include #define a8255_PA XBYTE0 xD1FF /PA 口地址 #define a8255_PB XBYTE0 xD2FF /PB 口地址 #define a8255_CON XBYTE0 xD7FF /控制字地址 #define uchar unsigned char #define uint unsigned int uint FreqTemp; uchar music_temp; /暂时存放从 MusicTable 数组中读出的变量 uchar beat; / uchar freq; /简谱码对应 T 值数组的下标
27、 uchar *pmusic; /音乐编码指针 uint rece_data=1; /播放音乐标识符 uchar re_temp=0 x10; uchar dis_flag; uchar leddisp6; uchar send_data=播放完毕,请点歌.nr; uchar init_data=请点歌.nr; sbit fm=P33; /*数码显示表*/ uchar code display_code=/数码管显示代码表 0 xA0,0 xBB,0 x62,0 x2A, /0,1,2,3 0 x39,0 x2C,0 x24,0 xBA, /4,5,6,7 0 x20,0 x28,0 x30,
28、0 x25,/8,9,A,B 0 xE4,0 x23,0 x64,0 x74,/C,D,E,F 0 x7f,0 x70,0 xe5,0 xa1,0 x29,0 xff; /-,P,L,U,y,灭 /*音调(频率)*/ unsigned int code FreqTab= /简谱对应的简谱码、T 值 65535, 64260,64400,64524,64580,64684, 64777,64820,64898,64968,65030, 65058,65110,65157,65178,65217 ; /*音乐程序*/ unsigned char code musi_1=/音符节拍码 0 x82,0
29、 x01,0 x81,0 x94,0 x84,0 xb4,0 xa4,0 x04,0 x82,0 x01,0 x81,0 x94,0 x84, 0 xc4,0 xb4,0 x04,0 x82,0 x01,0 x81,0 xf4,0 xd4,0 xb4,0 xa4,0 x94,0 xe2,0 x01, 0 xe1,0 xd4,0 xb4,0 xc4,0 xb4,0 x04,0 x82,0 x01,0 x81,0 x94,0 x84,0 xb4,0 xa4, 0 x04,0 x82,0 x01,0 x81,0 x94,0 x84,0 xc4,0 xb4,0 x04,0 x82,0 x01,0 x8
30、1,0 xf4, 0 xd4,0 xb4,0 xa4,0 x94,0 xe2,0 x01,0 xe1,0 xd4,0 xb4,0 xc4,0 xb4,0 x04,0 x00 ; unsigned char code musi_2= /千年之恋 0 x32,0 x31,0 x21,0 x32,0 x52,0 x32,0 x31,0 x21,0 x32,0 x62, /竹林的灯火 到过的沙漠 0 x32,0 x31,0 x21,0 x32,0 x61,0 x51,0 x32, /七色的国度 不断飘逸风中 0 x32,0 x41,0 x21,0 x32,0 x52,0 x32,0 x31,0 x21
31、,0 x32,0 x62, /有一种神秘 灰色的旋涡 0 x32,0 x31,0 x21,0 x32,0 x83,0 x82,0 x71,0 x72,0 x02, /将我卷入了迷雾中 0 x63,0 xA1,0 xA2,0 x62,0 x92,0 x82,0 x52, /看不清的双手 0 x00/结束标志 ; unsigned char code musi_3= /寂寞沙洲冷 0 x12,0 x12,0 x22,0 x32,0 x31,0 x22,0 x21,0 x22,0 x21,0 x31,0 x51,0 x52,0 x31, 0 x52,0 x61,0 x15,0 x14,0 x51,0
32、 x52,0 x31,0 x52,0 x62,0 x13,0 x11,0 x13,0 x32, 0 x28,0 x08,0 x28,0 x31,0 x32,0 x31,0 x32,0 x11,0 x21,0 x51,0 x52,0 x51,0 x52, 0 x51,0 x51,0 x31,0 x32,0 x31,0 x32,0 x81,0 x72,0 x63, 0 x00 ; unsigned char code musi_4= 0 x34,0 x32,0 x32,0 x34,0 x42,0 x51,0 x62,0 x52,0 x42,0 x32,0 x34,0 x04,0 x74, 0 x7
33、4,0 x62,0 x62,0 x64,0 x3c,0 x04,0 x64,0 x62,0 x52,0 x42,0 x32,0 x34,0 x33, 0 x31,0 x32,0 x72,0 x76,0 x72,0 x83,0 x81,0 x82,0 x82,0 x82,0 x74,0 x72,0 x7c, 0 x04,0 x63,0 x61,0 x62,0 x62,0 x64,0 x72,0 x82,0 x72,0 x74,0 x72,0 x62,0 x52, 0 x42,0 x32,0 x42,0 x44,0 x42,0 x42,0 x52,0 x62,0 x52,0 x5c,0 x04,0
34、 x64,0 x62, 0 x62,0 x64,0 x72,0 x82,0 x72,0 x74,0 x72,0 x62,0 x52,0 x42,0 x32,0 x42,0 x46, 0 x53,0 x41,0 x42,0 x32,0 x3c,0 x04,0 x44,0 x48,0 x02,0 x32,0 x3f,0 x44,0 x48, 0 x02,0 x32,0 x3f,0 x34,0 x0c,0 x00 ; unsigned char code musi_5= 0 x52,0 x42,0 x58,0 x02,0 x42,0 x52,0 x42,0 x38,0 x04,0 x12,0 x32
35、,0 x44,0 x42, 0 x52,0 x42,0 x32,0 x12,0 x12,0 xC8,0 x04,0 x52,0 x42,0 x58,0 x02,0 x42,0 x52, 0 x42,0 x38,0 x04,0 x12,0 x32,0 x44,0 x42,0 x52,0 x42,0 x32,0 x12,0 x32,0 x48, 0 x04,0 x52,0 x42,0 x58,0 x02,0 x42,0 x52,0 x42,0 x38,0 x04,0 x12,0 x32,0 x44, 0 x42,0 x52,0 x42,0 x32,0 x12,0 x11,0 x31,0 xC8,0
36、 x04,0 x52,0 x72,0 x78,0 x02, 0 x72,0 x82,0 x72,0 x58,0 x04,0 x42,0 x42,0 x44,0 x42,0 x52,0 x42,0 x32,0 x12, 0 x12,0 x32,0 x32,0 x3C,0 x09,0 x72,0 x72,0 x82,0 xA2,0 x92,0 x92,0 x82,0 x52, 0 x42,0 x42,0 x42,0 x58,0 x02,0 x52,0 x52,0 x72,0 x84,0 x84,0 x02,0 x12,0 x52, 0 x42,0 x48,0 x04,0 x52,0 x72,0 x
37、72,0 x52,0 x74,0 x02,0 xA4,0 x92,0 x82,0 x92, 0 x54,0 x02,0 x82,0 x82,0 x92,0 x82,0 x72,0 x52,0 x42,0 x02,0 xC4,0 x12,0 x3C, 0 x00; unsigned char code musi_6= 0 x52,0 x62,0 x74,0 x74,0 x74,0 x34,0 x42,0 x34,0 x52,0 x56,0 x42,0 x34,0 x34, 0 x14,0 x32,0 x12,0 x12,0 xC2,0 xC4,0 x04,0 x52,0 x62,0 x74,0
38、x74,0 x74,0 x34, 0 x42,0 x34,0 x52,0 x56,0 x42,0 x34,0 x32,0 x12,0 x12,0 x34,0 x42,0 x4C,0 x52, 0 x42,0 x34,0 x32,0 x42,0 x32,0 x12,0 x12,0 xC2,0 xC2,0 x54,0 x52,0 x54,0 x52, 0 x52,0 x42,0 x32,0 x32,0 x12,0 x32,0 x42,0 x32,0 x52,0 x5C,0 x52,0 x42,0 x34, 0 x32,0 x42,0 x32,0 x12,0 x12,0 xC2,0 xC2,0 x5
39、4,0 x52,0 x54,0 x02,0 x52,0 x52, 0 x42,0 x32,0 x12,0 x32,0 x84,0 x72,0 x7F,0 x0F,0 x74,0 x72,0 x52,0 x54,0 x74, 0 x82,0 x52,0 x52,0 x72,0 x78,0 x34,0 x32,0 x32,0 x42,0 x54,0 x72,0 x7F,0 x86, 0 x82,0 x72,0 x52,0 x54,0 x72,0 x84,0 x32,0 x36,0 x52,0 x42,0 x52,0 x42,0 x32, 0 x34,0 x12,0 x32,0 x32,0 x42,
40、0 x4C,0 x86,0 x82,0 x72,0 x52,0 x54,0 x72,0 x84, 0 x52,0 x56,0 x52,0 x42,0 x52,0 x72,0 x82,0 x52,0 x34,0 x12,0 x12,0 x32,0 x3C, 0 x00; unsigned char code musi_7= 0 xC2,0 xC2,0 x12,0 x34,0 x32,0 x32,0 x32,0 x12,0 x12,0 x52,0 x54,0 x02,0 xC2, 0 x12,0 x32,0 x32,0 x32,0 x32,0 x34,0 x52,0 x72,0 x7C,0 x02
41、,0 x72,0 x82,0 x72, 0 x82,0 x72,0 x84,0 x72,0 x41,0 x51,0 x52,0 x41,0 x31,0 x34,0 x02,0 x32,0 x32, 0 x12,0 x34,0 x32,0 x12,0 x32,0 x54,0 x42,0 x32,0 x32,0 x32,0 x32,0 x34,0 x52, 0 x72,0 x7C,0 x72,0 x72,0 x82,0 x72,0 x82,0 x72,0 x84,0 x82,0 x72,0 x42,0 x52, 0 x42,0 x34,0 x12,0 x12,0 x32,0 xC4,0 x52,0
42、 x42,0 x34,0 x12,0 x12,0 x31,0 x41, 0 x32,0 x3C,0 x0A,0 x72,0 x82,0 xA2,0 x84,0 x82,0 x72,0 x82,0 x72,0 x52,0 x72, 0 x78,0 x02,0 x72,0 x82,0 xA2,0 x84,0 x82,0 x72,0 x82,0 x72,0 x82,0 x32,0 x38, 0 x02,0 x32,0 x42,0 x52,0 x64,0 x62,0 x72,0 x82,0 x82,0 x72,0 x82,0 x82,0 xA2, 0 x82,0 x82,0 x82,0 xA2,0 x
43、82,0 x72,0 x78,0 x72,0 x32,0 x82,0 x72,0 x78,0 x72, 0 x82,0 xA3,0 x51,0 x42,0 x51,0 x41,0 x3C, 0 x00; unsigned char code musi_8= 0 x12,0 x52,0 x52,0 x52,0 x56,0 x42,0 x32,0 x42,0 x32,0 x22,0 x18,0 x82,0 x82, 0 x82,0 x82,0 x86,0 x72,0 xB2,0 x72,0 x72,0 x62,0 x58,0 x52,0 x82,0 x82,0 x72, 0 x56,0 x42,0
44、 x32,0 x42,0 x32,0 x22,0 x16,0 xB2,0 xB2,0 x32,0 x32,0 x22,0 x16, 0 x52,0 x42,0 x32,0 x22,0 xC2,0 x88, 0 x00; unsigned char code musi_9= 0 xC4,0 x12,0 x32,0 x44,0 x42,0 x52,0 x52,0 x44,0 x32,0 x32,0 x12,0 x14,0 x12, 0 x12,0 x32,0 x42,0 x54,0 x44,0 x4F,0 xC4,0 x12,0 x32,0 x44,0 x42,0 x72,0 x58, 0 x42
45、,0 x32,0 x34,0 x14,0 x12,0 x32,0 x34,0 x32,0 x12,0 x1F, 0 x00; unsigned char code musi_a= 0 x04,0 x24,0 x14,0 xC4,0 x54,0 x54,0 x48,0 x04,0 x54,0 x44,0 x34,0 x22,0 x14, 0 xB2,0 xC8,0 x04,0 x12,0 xC2,0 x16,0 x12,0 x76,0 x52,0 x46,0 x12,0 x3F,0 x04, 0 xB4,0 xD4,0 xC4,0 x14,0 x28,0 xC4,0 x14,0 x12,0 x3
46、2,0 x16,0 xC2,0 x54,0 x78, 0 x34,0 x4C,0 x42,0 x52,0 x86,0 x72,0 x76,0 x52,0 x74,0 x28,0 x42,0 x52,0 x46, 0 x12,0 x26,0 x12,0 xCF,0 x04,0 x24,0 x14,0 xC4,0 x56,0 x52,0 x48,0 x04,0 x54, 0 x44,0 x34,0 x22,0 x14,0 xB2,0 xC8,0 x04,0 x34,0 x14,0 xC4,0 x12,0 x32,0 x18, 0 x42,0 x42,0 x74,0 x58,0 x44,0 x3F,
47、 0 x00; /*/ uchar music= musi_1,musi_2,musi_3,musi_4,musi_5, musi_6,musi_7,musi_8,musi_9,musi_a ; /*显示子程序*/ void display(void) uchar i,j=50,k=0 xdf; for(i=0;i1; k=k|0 x80; /*延时 1MS*/ void delay(uint z)/延时 1MS uint x,y; for(x=z;x0;x-) for(y=65;y0;y-)display(); /*/ void UART_T (unsigned char UART_data
48、) /定义串口发送数据变量 ES=0; /禁止穿行中断 SBUF = UART_data; /将接收的数据发送回去 while(TI = 0); /检查发送中断标志位 display(); TI = 0; /令发送中断标志位为 0(软件清零) ES=1; /打开穿行中断 /*/ void UART_S(unsigned char *str) while(1) if(*str=0) break; UART_T(*str+); display(); /*/ void song() if(*pmusic=0 x00) fm=1; TR0=0; leddisp0=0 x10; UART_S(send_data); dis_flag=0; while(1)display();if(dis_flag!=0)break; elseleddisp0=re_temp; music_temp=*pmusic; beat= music_temp /取得节拍数 beat=beat*4; freq =music_temp4; /取得音符编码 pmusic+; if(freq=0)TR0=0; else TR0=0; FreqTemp=FreqTabfreq; TL0= FreqTemp; TH0= FreqTemp8; TR0=1; de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 便利店厨房油烟净化装置操作规范
- 关于合同执行过程中的问题咨询的回复函7篇范文
- 工业设备电气控制柜维护方案手册
- 生产运营绩效考核指标表
- 安排合同签署日期与地点通知函(3篇)
- 通信技术工程师技术研发与问题解决能力KPI考核表
- 智能制造领域的人工智能技术选型手册
- 游戏策划游戏上线及用户体验KPI考核表
- 《呼兰河传》考试题及答案2篇
- (2026年)广东语文试卷高考(含答案)
- 《低空经济概论》课件 学习情境6 低空经济政策法规与标准体系
- 2026年广东省学法考试年度考试(考场一)参考答案
- 2026年脑血管介入考试题及答案
- 危化品重大危险源管理
- SK型静态混合器设计计算书
- 2026年5月23日甘肃省兰州市直机关公开选调笔试真题及解析
- 2025艾梅乙工作制度及流程
- 2026年全国肿瘤防治宣传周知识普及讲座课件
- 路由和交换技术(第四版)教案 项目13 IPv6技术
- AI赋能中小学英语写作教学:实 用策略与案例分析【课件文档】
- 议论文主体段写作(专项训练)-2026年高考语文一轮复习
评论
0/150
提交评论