多模式带音乐跑马灯单片机课程设计说明书.doc_第1页
多模式带音乐跑马灯单片机课程设计说明书.doc_第2页
多模式带音乐跑马灯单片机课程设计说明书.doc_第3页
多模式带音乐跑马灯单片机课程设计说明书.doc_第4页
多模式带音乐跑马灯单片机课程设计说明书.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计说明书课程设计任务书学生姓名: 魏冬冬 专业班级: 机自XS1101班 指导教师: 徐汉斌 工作单位: 机电工程学院 题 目: 多模式带音乐跑马灯设计初始条件:1采用MCS51作为主控芯片; 2采用16个发光二极管做跑马灯,要求有5种灯亮方式,并带音乐; 3可实现速度控制,显示当前模式号,可手动或自动切换模式。要求完成的主要任务: 1、 查阅参考资料,自学相关可编程接口芯片的内部结构、工作方式和初始化编程过程;2、 根据设计系统的具体功能和性能参数,明确设计目标;3、 单片机系统及其扩展接口电路设计,绘制系统硬件原理图;4、 编制系统控制源程序,绘制源程序流程图,包括初始化和监控程序;5、 撰写设计说明书(包括参考资料目录,字数不少于5000字)时间安排:(两周)序号内 容所用时间(天)1查阅资料,学习相关芯片知识22系统及扩展电路硬件设计33初始化程序和应用程序设计34相关硬件电路和程序调试35课程设计答辩1合计12指导教师签名: 2013年 12 月 27 日系主任(或责任教师)签名: 年 月 日第 39 页 共 39 页目录1、系统功能及需求分析及设计意义31.1 功能要求分析31.2 设计意义32、总体方案设计43、系统硬件部分分析及设计53.1 硬件总体设计53.2 硬件各部分设计说明53.2.1 主控芯片AT89C5253.2.2 跑马灯设计113.2.3 模式显示设计113.2.4 音乐播放设计123.2.5按键控制设计124、系统软件部分设计144.1 软件总体设计思路144.2 主程序说明144.3子程序说明174.4各个程序调用和被调用关系194.5编写程序时发现的问题195、总结与体会216、参考文献22附录 程序编写23附录 评分表39 1、功能需求分析及设计意义1.1 功能要求分析多模式带音乐跑马灯系统要求采用MCS51作为主控芯片,驱动16个发光二极管做5种模式跑马灯灯亮方式,并带有音乐;并且可实现速度控制,显示当前模式号,可手动或自动切换模式。本设计的要求是设计一个有多种功能的跑马灯,有多种不同的显示方式,速度控制功能,这里的速度控制还有显示方式都是由单片机内部的程序控制,在这里我将16个光二极管接在P1和P2引脚上,通过程序控制这两个个端口的电平高低,将16个光二极管的负极接地,正极接P1和P2口,即发P1和P2口的相应端口为低电平时,发光二极管的两端都为低电平,所以发光二极管不亮,当发光二极管的相应端口为高电平时就能被点亮。再通过程序循环的让各个端口以不同的方式点亮来达到走马的效果,并且当中要有一定的延时,延时时间大于人眼视觉暂留时间,否则人眼看上去每个灯都是亮的也就没有跑马效果。单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。演奏时,要根据音符频率的不同,把对应的、半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。1.2 设计意义 跑马灯的应用十分广泛,主要以它的制作简便、价格低廉、信息醒目而得到人们的亲睐。例如:跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息,实际应用中也常通过“跑马灯”来监视是否死机。证券业中常用“跑马灯”来显示不断变化的股票行情。也可应用于各种建筑物,大楼,酒吧,KTV,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示。2、总体方案设计本设计选择AT89C52作为主控芯片,16个发光二极管作为LED显示阵列,实现跑马灯的点亮功能;7SEG-COM-AN-BLUE作为LED数码显示器,显示当前模式号;SPEAKER作为音乐播放器,播放当前选择的音乐;并设置了4个按键,利用中断来实现模式切换,音乐切换,加速,减速等功能。 系统方框图如下: AT89C52 按键16图2-1 系统方框图3、系统硬件部分分析及设计3.1 硬件总体设计16个LED发光二极管的低电平-GROUND;16个LED发光二极管的高电平-P1和P2;LED数码管的共阴极-P3.0;LED数码管的阳极-P0.0P0.6;四个按键的低电平-GROUND;自动按键高电平-P3.2;手动按键高电平-P3.3;减速按键高电平-P3.4;加速按键高电平-P3.5;SPEAKER高电平-POWER;SPEAKER低电平-P3.7。 硬件总体设计图:图3-1 硬件总体设计图3.2 硬件各部分设计说明3.2.1 主控芯片AT89C52 a)AT89C52功能特性如下: 1、兼容标准MCS-51指令系统及80C51引脚结构 2、8kB可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 b)AT89C52性能简介: AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 c) AT89C52引脚图及引脚说明: 图3-2-1 AT89C52引脚图 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端这个反相放大器构成了片内振荡器 XTAL2:振荡器反相放大器的输出端,与上述片内振荡器的反相放大器的输出端相接,作为单片机内部时钟电路的输入。连接电路如图3-2-2。图3-2-2 振荡电路 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。电容既可以起到按键去除抖动的作用,还有一个更重要的作用就是上电复位,因为考虑到芯片刚刚上电时由于供电不稳定而做出错误的计算,所以增加一个上电复位以达到延时启动CPU的目的,使芯片能够正常工作。虽然现在很多芯片自带了上电延时功能,但是我们一般还是会增加额外的上电复位电路,提高可靠性。经计算复位时间约为6ms,远大于机器复位所需时间2us,充电电压约为2V。 图3-2-3 复位电路 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 PSEN:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H-FFFFH ) , EA端必须保持低电平(接地)。本设计只需将该引脚接上POWER即可,表示先访问内部程序。需注怠的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。 P0:P0口是一组8位漏极开路型双向1/O 口,也即地址/数据总线复用口。作为输出口用时每位能吸收电流的方式驱动8个TTL 逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:P1 是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL 与AT89C51不同之处是,P1.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2 )和输入(P1.1/T2EX)。P2口:P2 是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。对端口P2写“l,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIT )。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR 指令)时,P2送出高8 位地址数据。在访问8位地址的外部数据存储器、如执行MOVXRI指令)时,P2口输出P2锁存器的内容。FLASH编程或校验时,P2亦接收高位地址和一些控制信号。本设计考虑到P1和P2自带内部上拉电阻,因此不设计外部上拉电阻。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL) . P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:端口引脚第二功能P3.0RXD(串行输入口P3.1TXD(串行输出口P3.2INTO(外中断0P3.3INTO(外中断l)P3.4TO (定时计数器0 )P3.5Tl (定时计数器l )P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)表3-1 P3口第二功能 本设计用到P3.2和P3.3的第二功能。3.2.2 跑马灯设计 图3-2-4 跑马灯设计电路 16个二极管按照一定顺序接在P1和P2各引脚上,达到一种美观的跑马灯效果。当引脚输出高电平时,对应的二极管点亮。由于二极管额定电压为2.2V,额定电流为10mA,因此串联一个470的电阻,防止二极管被烧坏。3.2.3 模式显示设计 图3-2-5 模式显示电路 选用7SEG-COM-AN-BLUE作为LED数码显示器,可以显示当前跑马灯的模式号,从P0输出段选信号,经过排阻降压,传递给LED数码管,高电平点亮对应LED中的发光二极管,即为共阴极LED数码管。7SEG-COM-AN-BLUE额定电压为1.5V,所以也需要排阻进行减压。3.2.4 音乐播放设计图3-2-6 音乐播放电路 从P3.7输出规律的方波信号,通过NPN三极管放大后,传递给SPEAKER,使其发出不同频率的声音,组合起来就是音乐。3.2.5 按键控制设计图3-2-7 按键控制电路 四个BUTTEN分别接在P3口的P3.2P3.5上,其中P3.2和P3.3利用P3引脚的第二功能,作为两个中断源。当按键按下时,P3对应引脚从“1”变为“0”,在程序中就会引起中断或if程序的运行,实现自动、手动、加速、减速等功能。4、系统软件部分设计4.1 软件总体设计思路主程序中默认执行1号模式流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是K1,就执行自动切换跑马灯模式;如果是K2,就执行手动切换跑马灯模式以及音乐切换;如果是K3,就执行跑马加速,如果是K4,就执行跑马减速。模式切换采用中断的方法。即在主程序中只要有中断发生,就会引起跑马灯模式切换,以及音乐切换。而跑马加速和减速采用查询的方法,系统不断对速度速度标志位进行查询。而在中断服务程序中,只需要进行如下工作:去抖动,键盘识别,改变标志位。设定跑马灯初速 开中断 主程序 LED跑马灯亮闪播放音乐跑马灯亮显示模式减速键是否按下?加速键是否按下?跑马灯加速跑马灯减速YN自动键是否按下?N切换音乐和模式Y初始化手动键是否按下?自动切换音乐和模式查询按键NNYY图4-1 系统流程图4.2 主程序说明 在主程序中首先对四个中断(外部中断0、1,定时器T0、T1)进行设定,以及对程序初始化,并开启中断,播放音乐。a) 变量名:wei=0; 功能:控制LED数码管共阴极接低电平;b) 变量名:P0=table1; 功能:LED数码管初始显示为1;c) 变量名:zd 功能:判别是否自动模式。d) 被调用函数:SetSpeed(0); 功能:设定初始速度为5;e) 被调用函数:delay1(50); 功能:每首歌播放完后暂停50ms;f) 语句:count2+;if(count24) count2=1; 功能:用来对音乐播放的计数,当自动播放时,音乐不断循环播放;g) 语句:RunMode+; if(RunMode5) RunMode=1; 功能:用来对跑马灯模式计数,当自动切换时,跑马灯模式循环切换。 主程序如下:sbit key1=P32;/按key1可自动/外部中断sbit key2=P33;/按key2可切换/外部中断sbit fm=P37;/蜂鸣器连续的IO口sbit key3=P34;/按key3可加速跑马灯sbit key4=P35;/按key4可减速跑马灯sbit wei=P30;/控制LED数码管工作main()EX1=1;/开外部中断1IT1=1;/外部中断1下降沿触发方式EX0=1;/开外部中断0IT0=1;/外部中断0下降沿触发方式 TMOD=0x11;/定时器0工作在方式1TH0=0;TL0=0;TH1=0xFC;TL1=0xFB;/定时器1初值ET0=1;ET1=1;TR0=0;wei=0;/LED数码管工作P0=table1;/LED数码管显示1SetSpeed(0);/初始速度为5EA=1;/开总中断TR1=1; while(1)song();delay1(50);if(zd)count2+;if(count24) count2=1;RunMode+;if(RunMode5) RunMode=1; /音乐、模式自动切换 4.3 子程序说明a) 数组名:uchar code table 功能:对LED数码管显示数字的设定 原理:当P0口分别输出0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71,0x40时,对应数码管输出1,2,3,4,5,6,7,8,9, A,B,C,D,E,F。b)数组名:SpeedCode 功能:对跑马灯亮闪速度的设定 原理:对应的速度分别有5,14,30,60,100,数字越大,速度越快。c)数组名:chuzhi 功能:简谱音调对应的定时初值 原理:通过对TH0和TL0的确定,改变方波宽度。d) 数组名:qnzl 、jmszl、srkl、goon 功能:对应的音乐有四首分别为千年之恋、寂寞沙洲冷、生日快乐、康定情歌 原理:数组中每个字节高位表示简谱,低位表示该简朴持续时间,代表多少个十六分音符, 1-7代表中央C调,8-E代表高八度,0代表停顿,最后的0是结束标志。f) 函数名:Mode_1()、Mode_2()、Mode_3()、Mode_4()、Mode_5() 功能:对应的模式有5种 使用到的变量名:LEDIndex, 功能:作为调用函数LEDShow()的LEDStatus。 使用到的变量名:LEDDirection LEDFlag 功能:改变跑马灯亮闪方向。g) 函数名:LEDShow(unsigned int LEDStatus) 功能:对LED跑马灯引脚的设定 原理:P1输出的是LEDStatus的第八位,P2输出的是LEDStatus的高八位。h) 函数名:song() 功能:播放音乐,自动切换音乐,以及对按键的查询 原理:即K3=0时,表示减速键按下,K4=0表示加速键按下。 使用到的变量:SystemSpeedIndex 功能:用作调用函数SetSpeed() 的Speed。 使用到的变量:timeh timel 功能:确定T0的初值。i) 函数名:SetSpeed(unsigned char Speed) 功能:确定SystemSpeed的大小,与Timer0Count比较,从而确定跑马灯速度。j) 函数名:Timer0EventRun() 功能:对模式的选择子程序。 原理:对RunMode 进行switch 得到对应的模式。k) 函数名:int0()、int1() 功能:外部0中断和外部1中断 原理:即手动键和自动键按下时的中断程序,手动键按下,程序中断,执行int1(),切换 音乐和跑马模式,中断撤销以及中断返回;自动键按下时,程序中断,执行int0(), 切换但自动模式,中断撤销以及中断返回。l) 函数名:timer0() 功能:用来产生各种音调 原理:通过改变每个字节对应方波的宽度来改变声音的频率。m) 函数名:Timer1() 功能:跑马灯模式运行速度的标定。 原理:T1的定时中断,每次中断后执行Timer0Count+; 当Timer0Count=SystemSpeed 时,调用Timer0EventRun(),即模式不变,跑马灯运行。4.4 各个程序调用和被调用关系调用函数被调用函数main()SetSpeed() song() delay1()song()SetSpeed() delay()int1()、int0()delay1()Timer1()Timer0EventRun()Timer0EventRun()Mode_1()、Mode_2()、Mode_3()、Mode_4()、Mode_5()Mode_1()、Mode_2()、Mode_3()、Mode_4()、Mode_5()LEDShow()表4-1 各程序调用和被调用关系4.5 编写程序时发现的问题a) 未定义先使用,例如 warning C206: song: missing function-prototype .b) 少了,例如 error C141: syntax error near .c) 重复定义,例如 error C231: sound: redefinitiond) 语法错误,例如 error C141: syntax error near voide) LED跑马灯显示错误,应将P1 = (LEDStatus&0x00FF); P2 = (LEDStatus8)&0x00FF);改为P1 = (LEDStatus&0x00FF); P2 = (LEDStatus8)&0x00FF);f) 复位键无法复位,复位电路没接好。g) 按键无法工作,程序编写有误。h) LED跑马灯不亮,总线处网络标号名称不一致。5、总结与体会 经过了两周的单片机课程设计,我受益匪浅。我们的课设任务是对基于MCS-51单片机的多模式带音乐跑马灯设计进行调试、仿真,同时从中加深和巩固专业知识。 在利用KeilC对程序进行编译、调试的过程中让我明白了很多细节问题。例如源程序中I/O口P必须大写;调用函数的名称必须与定义该函数的名称一致,否则找不到该函数;保存自己设计的源程序时,名称后缀必须为“.C”。在使用Proteus7软件仿真过程中同样也遇到了很多问题。例如在仿真时七段数码管没有显示,经过反复检查是因为在选择数码管的时侯没有注意数码管的共阴极和共阳极,导致数码管不显示;仿真过程中单片机的I/O口有信号输出但是LED跑马灯没有亮,检查后发现是因为总线处网络标号名称不一致导致两端导线没有连通。在整个调试和仿真的过程中我对KeilC和Proteus7软件有了更深一步的了解和掌握。 有些事情在还没有接触它时,总感觉他它很困难很复杂,总认为自己办不到。但是在这次课设后我改变了观点,虽然我的课设完成的没有希望的那样好,但是至少自己去努力尝试过了。我们不能因为困难就要去逃避,而是要勇敢的去面对和克服它。并且我已经不会像以前那样去看待一件事情。同时明白了一个道理,当遇到问题时不能第一时间的去问别人,而要先自己独立思考,如果实在不在自己的能力范围,就一定要去寻求别人的帮助或者利用网络去查阅资料,然后再去反复思考。这样不仅可以提高自己的知识范围,更培养了自己的动手能力和严谨的工作作风。在课设的过程中我们应该明确什么是重要的和次要的,不求做的多或少,而应该着重于解决问题的能力。 通过本次课设我还认识到理论知识和实践相结合是相当重要的一个环节。在学习的过程中要时刻保持清醒的头脑,当出现问题时,一定要认真、冷静的去检查和分析错误。我相信,这次的课设对我以后的学习和工作都会有很大的帮助。6、参考文献1王贤勇,赵传申.单片机原理与接口技术M.清华大学出版社,2010.32徐汉斌,熊才高.单片机原理及应用M.华中科技大学出版社,2013.43蔡朝洋.单片机控制实习与专题制作M.北京航空航天大学出版社,2004.34谢维等.单片机原理与应用及C51程序设计M.清华大学出版社,2007.25温子祺、刘志峰、冼安胜等.51单片机C语言创新教程.北京航空航天大学出版社 2011.046林军.单片微型计算机原理及接口技术实验指导与实训M.中国水利水电出版社2004.10附录 程序编写#include #define uchar unsigned char#define uint unsigned intsbit key1=P32;/按key1可自动/外部中断sbit key2=P33;/按key2可切换/外部中断sbit fm=P37;/蜂鸣器连续的IO口sbit key3=P34;sbit key4=P35;sbit wei=P30;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40;/共阴极数码管显示码制0F/速度模式共有5种unsigned char code SpeedCode=5,14,30,60,100; uchar count2=1,RunMode=1;/音乐、流水灯标志uchar zd=1;/自动播放标志uchar timeh,timel,i;uint LEDIndex = 0;bit LEDDirection = 1,LEDFlag = 1;uint Timer0Count,SystemSpeed;char SystemSpeedIndex=0;/-简谱-/编程规则:字节高位是简谱,低位是持续时间,/代表多少个十六分音符/1-7代表中央C调,8-E代表高八度,0代表停顿/最后的0是结束标志uchar code qnzl= /千年之恋0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,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,0x52,0x32,0x31,0x21,0x32,0x62,/有一种神秘 灰色的旋涡 0x32,0x31,0x21,0x32,0x82,0x83,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,0x73,0x62,0x53,/你留下的轮廓 指引我 0x42,0x61,0x62,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,0x94,0x89,0xff/结束标志/用一生守候;uchar code jmszl= /寂寞沙洲冷0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,/自你走后心憔悴0x21,0x31,0x51,0x52,0x31,0x52,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,0x61,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,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 srkl=0x52,0x52,0x64,0x54,0x84,0x74,/生日快乐 0x52,0x52,0x64,0x54,0x94,0x84, 0x52,0x52,0xc4,0xA4,0x84,0x74,0x64, 0xB2,0xB2,0xA4,0x84,0x94,0x84, 0x52,0x52,0x64,0x54,0x84,0x74, 0x52,0x52,0x64,0x54,0x94,0x84, 0x52,0x52,0xc4,0xA4,0x84,0x74,0x64, 0xB2,0xB2,0xA4,0x84,0x94,0x84,0xff; uchar code goon=0x64,0x84,0x92,0x91,0x81,0x93,0x61, /康定情歌 。0x54,0x62,0x82,0x92,0x91,0x81,0x92,0x64,0x62,0x82,0x92,0x91,0x81,0x93,0x61,0x54,0x82,0x62,0x51,0x61,0x51,0x41,0x52,0x24,0x92,0x54,0x82,0x64,0x52,0x42,0x94,0x82,0x62,0x51,0x61,0x51,0x41,0x52,0x24,0xff; /-简谱音调对应的定时器初值-/适合11.0592M的晶振uchar code chuzhi= 0xff,0xff,/占位 0xFC,0x8E,/中央C调1-7 0xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D, 0xFE,0x47,/高八度1-7 0xFE,0x76, 0xFE,0xA1, 0xFE,0xC7, 0xFE,0xD9, 0xFE,0xF9, 0xFF,0x16 ;void LEDShow(unsigned int LEDStatus)P1 = (LEDStatus&0x00FF); /P1输出低八位P2 = (LEDStatus8)&0x00FF); /P2输出高八位/速度选择函数void SetSpeed(unsigned char Speed)SystemSpeed =SpeedCodeSpeed;void delay(uint z)/延时165MS,即十六分音符uint x,y;for(x=z;x0;x-) for(y=19000;y0;y-);void delay1(uint z)/延时1MSuint x,y;for(x=z;x0;x-) for(y=112;y0;y-);/模式1(一个灯右移)void Mode_1(void)LEDShow(0x8000LEDIndex);LEDIndex = (LEDIndex+1)%16;/Mode 2void Mode_2(void)if(LEDDirection)LEDShow(0x0001LEDIndex);if(LEDIndex=15)LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 3void Mode_3(void)if(LEDDirection)if(LEDFlag)LEDShow(0xFFFELEDIndex);elseif(LEDFlag)LEDShow(0x7FFFLEDIndex);elseLEDShow(0xFFFELEDIndex);if(LEDIndex=15)LEDDirection = !LEDDirection;if(LEDDirection)LEDFlag = !LEDFlag; LEDIndex = (LEDIndex+1)%16;/Mode 4void Mode_4(void)if(LEDDirection)LEDShow(0x000FLEDIndex);if(LEDIndex=15)LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 5void Mode_5(void)if(LEDDirection)LEDShow(0

温馨提示

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

评论

0/150

提交评论