毕业论文之基于单片机的多模式带音乐跑马灯设计

合集下载

单片机原理与应用课程设计-基于单片机的音乐跑马灯设计

单片机原理与应用课程设计-基于单片机的音乐跑马灯设计

单片机原理与应用课程设计设计课题:音乐跑马灯班级:小组成员:时间:2013年1月6日音乐跑马灯的设计一、实验内容:1.使用8个发光管作跑马灯,其中有3种亮灭模式。

2.有专门的开关K1~K3用来切换跑马灯的模式。

3.每一种跑马灯模式用LED数码管进行显示1、2、3。

4.当跑马灯处于某种模式时,有对应的音乐响起。

有三首曲子可以选着。

提示:亮灭模式自己设计,可以从速度或者点亮方法上设计。

响音乐的程序可以参考实验手册上《电子音响》部分。

二、实验原理:用三个开关控制音乐跑马灯的三种模式,每一种模式都是在LED数码管显示模式的号码的同时先响音乐后闪灯。

跑马灯采用P3口作为输入口,外接三个开关用来控制跑马灯的亮灭模式。

P1口做输出口,P1口接的8个发光二极管L1~L8按16进制方式点亮发光二极管,即8个发光管相当于8位的二进制位。

当数值为1时,L1点亮;数值为2=00000010B时,L2点亮;数值为4=00000100时,L3点亮,依次类推。

不同的音符对应不同的频率,所以只要用不同频率的信号驱动喇叭,就能发出不同的音符了,所以转换为使用定时器在P1.7引脚输出某一频率的方波脉冲即可。

单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,因此单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间,乐谱中每一个音符都与某一个特定的频率相对应,所以只需要产生不同频率的方波信号(产生不同音调),并且延时不同的时间(产生不同节拍),即可完成音乐的播放。

三、硬件原理:1.跑马灯亮灭模式原理图,如图(1)所示。

图(1) 跑马灯亮灭模式原理图2.让喇叭响音乐的原理图,如图(2)所示。

图(2) 电子音响原理图3.使第三个LED数码管显示1、2、3、4、5,如图(3)和(4)所示。

图(3) LED共阳极连接原理图图(4) LED数据显示示意图用三个开关(K1~K3)控制音乐跑马灯的三种模式,每一种模式都是在LED 数码管显示模式的号码的同时先响音乐后闪灯。

《微型计算机系统》课程设计基于单片机的跑马灯设计大学论文

《微型计算机系统》课程设计基于单片机的跑马灯设计大学论文

《微型计算机系统》课程设计任务书题目名称:基于单片机的跑马灯设计专业自动化班自本132 姓名刘鑫伟学号201328201 学校:青岛理工大学自动化学院指导教师:史贺男2015年11月30日青岛理工大学自动化工程学院课程设计任务书课程名称:微型计算机系统设计题目:基于单片机的跑马灯设计系统硬件要求:根据实际要求,以MCS-51单片机为核心,设计3个按键,每个按键对应一个花样,可手动显示,即按一个按键,显示一种花样,也可以再设计一个按键用于连续显示每个花样,每个花样显示的时间和花样设计者自己规定,并在论文中给定。

设计控制系统硬件电路,编写C语言或汇编语言程序,并用PROTEUS软件进行实时仿真。

要求:(1)扩展接口(8255或8155),设计至少4个按键(2)设计至少32个LED(3)LED显示至少有3种花样,可单独显示也可自动循环显示软件设计:1)主程序设计2)各功能子程序设计其他要求:1、每位同学独立完成本设计。

2、依据题目要求,提出系统设计方案。

3、设计系统电路原理图。

1、调试系统硬件电路、功能程序。

2、编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于3000字目录第一节AT89C51芯片分析 (I)第二节设计概述 (3)第三节算法 (5)第四节编程技巧 (7)第五节电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介).8 第六节调试过程中的主要难点(自己遇到的)及解决思路和办法; (8)课设结果及分析、收获、体会和建议; (9)参考文献 (10)附录1 (11)附录2 (12)第一节AT89C51芯片分析ATMEL的AT89S51是一种高效微控制器,将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

单片机课程设计--跑马灯设计

单片机课程设计--跑马灯设计

单片机课程设计(跑马灯设计)专业:电气自动化摘要AT89C51是一种带4K字节闪存可编程可擦除只读存储器)(FPEROM—Flash Programmable and Erasable Read Only Memory 的低电压、高性能CMOS 8位微处理器,即单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

该设计使用A T89C51芯片作为控制芯片,利用P1口连接8个发光二极管,通过I/O的值控制“跑马灯”的亮灭,以达到显示效果。

开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并要求有多种亮暗组合。

时继续,并要求有多种亮暗组合。

按键跑马灯 按键单片机 跑马灯关键词:A T89C51单片机目录摘要 (I)第一章芯片分析和设计概述 (3)第一节 AT89C51芯片分析 (3)第一节第二节 设计概述 (8)第二节第二章硬件电路设计 (9)第三章程序部分设计 (10)参考文献 (18)第一章 芯片分析和设计概述第一节 AT89C51芯片分析ATMEL 的AT89S51是一种高效微控制器,将多功能8位CPU 和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

且价廉的方案。

AT89C51AT89C51的芯片引脚图如下:的芯片引脚图如下:图1.1 AT89C51引脚图引脚图各引脚的说明和功能分析如下:各引脚的说明和功能分析如下:VCC VCC:供电电压。

:供电电压。

:供电电压。

GND GND:接地。

:接地。

:接地。

P0口:口:P0P0口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

时,被定义为高阻输入。

P0P0能够用于外部程序数据存储器,它可以被定义为数据外部程序数据存储器,它可以被定义为数据//地址的第八位。

跑马灯设计毕业论文

跑马灯设计毕业论文

目录【摘要】........................... 错误!未定义书签。

6一.总体设计.......................... 错误!未定义书签。

71.1控制芯片 (37)1.2 输入部分 (37)1.3 输出部分 (48)1.4时钟和复位 (48)二. 硬件设计 (9)2.1 总体电路介绍 (9)2.2.1 AT89C51的介绍 (9)2.2.2 AT89C51内部主要功能 (9)2.2.3 AT89C51主要特性 (10)2.2.4 AT89C51引脚分配和简介 (10)2.3振荡器电路 (13)2.4芯片擦除 (13)三. 软件设计 (14)3.1总体设计思想 (14)3.1.1伟煌MA51开发系统 (14)3.1.2 TOP851编程器简介 (15)3.2程序编写简介 (16)四.总体设计总结 (18)中文摘要近年来中国电子工业持续高速增长,带动电子元器件产业的强劲发展。

中国已经成为扬声器、铝电解电容器、显像管、印制电路板、半导体分立器件等电子元器件的世界生产基地。

随着我国电子信息产品制造业规模的不断扩张,电子测量仪器市场年均增长率在30%左右,呈现出高速增长的态势。

虽然美国次债危机愈演愈烈,但国内电子测量仪器厂商发展依然稳固,在力保海外出口市场的同时,积极的开拓国内市场。

单片机发展极为迅速,当前世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位等,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。

在单片机系列中,AT89S51/AT89C51应用最为广泛。

本设计介绍一种实用的单片机多功能按键的设计与制作,采用基于MS-51的单片机AT89C51,在该论文中的第一章节将详细介绍关于AT89C51芯片的结构,引脚功能及芯片的功能控制等。

本文将用单片机80C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以80C51为核心,辅以简单的设备和必要的电路,设计了一款简易的跑马灯电路板,并编写简单的程序,使其能够自动工作。

毕业设计21单片机是AT89S52跑马灯

毕业设计21单片机是AT89S52跑马灯

第1章绪论1.1 单片机技术的特点纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。

1.1.1单片机应用领域局统计我国的单片机年容量已达1 3 亿片且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1% 。

这说明单片机应用在我国才刚刚起步有着广阔的前景培意义合也毫不逊色。

体积小内部存储4量较小, I/0功能控制性强,但具有局限性。

1.1.2 8051类单片机最早由Intel公司推出的8051/31类单片机也是世界上用量最大的几种单片机之一。

由于Intel公司在嵌入式应用方面将重点放在186、386、奔腾等与PC 类兼容的高档芯片的开发上,8051类单片机主要由Philips、三星、华邦等公司接产。

这些公司都在保持与8051单片机兼容的基础上改善了8051许多特性(如时序特性)。

提高了速度、降低了时钟频率,放宽了电源电压的动态范围,降低了产品价格。

1.1.3、单片机的应用领域•3C: Communication Computer Control•SOC: System On a Chip•工业控制•通信•家用电器•玩具•航空航天PDA 、Ever第2章硬件的制作2.1 稳压电源制作2.1.1 电源的原理及设计单片机需要5V电源供电,我们设计并制作由7805构成的三端集成稳压电源,输出的电流为1.0A,输出电压为5V。

此电路由电源变压器,整流电路,滤波电路,稳压电路几部分组成。

经过电源电压由交流220V经变压器变压为交流6V后,再由桥对整流为直流,经电容滤波器滤波后加到7805上。

2.1. 2 电路原理图2.1.3 元件清单2.2 下载线的制作2.2.1 电路原理图11421531641751861972082192210231124122513Parallel Po rtDB 252.2.2 元件清单第3章程序的编写3.1 跑马灯程序的编写跑马灯也叫流水灯,是由24个发光二极管组成的,通过控制灯的亮和灭给人一种动态流水的感觉,通过改变单片机的程序就可以实现不同的闪烁效果,也就是花样,本次实习的任务是编写至少20种跑马灯花样,本次实习用的单片机是AT89S52,用P0口控制高电平。

51单片机8个跑马灯程序设计思路

51单片机8个跑马灯程序设计思路

51单片机8个跑马灯程序设计思路单片机是一种集成电路,内部包含了计算机的主要组件,如中央处理单元(CPU)、存储器等。

通过编程,可以实现各种不同的功能。

在这里,我将以设计一个8个跑马灯的程序为例,来讲解单片机程序的设计思路。

1.硬件准备首先,我们需要准备一个适用于单片机的开发板,例如STC89C52,以及8个LED灯。

将LED灯连接到开发板的GPIO引脚上,并通过电阻进行限流。

使用跳线将GPIO引脚与LED灯的正极连接。

2.程序结构设计在单片机程序中,我们通常会使用循环结构。

因此,在设计跑马灯程序时,我们可以使用一个无限循环,来实现LED灯的闪烁效果。

具体的程序结构如下所示:```c#include <reg52.h>sbit led0 = P0 ^ 0; //第1个LED灯sbit led1 = P0 ^ 1; //第2个LED灯sbit led2 = P0 ^ 2; //第3个LED灯//...sbit led7 = P0 ^ 7; //第8个LED灯void mainwhile (1)//跑马灯代码}}```在这段代码中,我们首先引入头文件`reg52.h`,它包含了STC89C52的寄存器定义和常用函数的声明。

然后,我们定义了8个宏,用于表示8个LED灯所连接的引脚号。

接下来,在`main(`函数中,我们使用一个无限循环`while(1)`,来实现LED灯的闪烁效果。

3.跑马灯实现思路在无限循环中,我们需要通过对GPIO的控制来实现8个LED灯的闪烁。

具体的实现思路如下:- 首先,我们可以定义一个变量`index`,用于表示当前亮起的LED灯的索引值。

初始时,`index`的值为0,表示第一个LED灯亮起。

- 然后,我们可以使用`switch...case`语句来判断当前的`index`值,从而控制不同的LED灯亮起。

- 在每次循环中,我们可以通过对`index`的递增来实现灯的滚动效果。

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告一、实训目的和要求本次实训的目的是通过设计一个基于AT89S52单片机的多模式带音乐跑马灯,加深对单片机、音乐、跑马灯等知识的理解,提高实际动手能力和创新能力。

要求通过实训设计实现以下功能:1.实现多种跑马灯效果,包括顺序、逆序、左移、右移等;2.实现音乐播放功能,增加趣味性;3.设计合理的电路布局和编程结构,提高系统的稳定性和可靠性。

二、实训内容和方案设计1.系统硬件设计:(1)主控单板:采用AT89S52单片机作为主控制器;(2)驱动器:使用ULN2003芯片驱动数码管和LED灯;(3)时钟电路:使用晶振频率为11.0592MHz的电路;(4)音频输出电路:使用LM386音频放大器作为音频输出电路。

2.程序设计:(1)主程序框架设计:主程序采用无限循环方式,根据按键输入选择跑马灯模式;(2)跑马灯模式设计:根据不同模式选择,使用对应的跑马灯效果函数进行控制;(3)音乐播放设计:通过PWM脉冲宽度调制方式,实现音乐播放功能。

三、实训步骤和实施过程1.硬件部分:(1)按照设计方案进行电路布线和焊接;(3)连接数码管、LED灯和音频输出电路,进行功能测试。

2.软件部分:(1) 在Keil C中建立项目并编写主程序的框架;(2)编写跑马灯效果函数,实现不同的跑马灯模式;(3)编写音乐播放函数,通过PWM方式产生不同频率的方波实现音乐播放;(4)完善主程序框架,添加按键输入和模式选择功能。

四、实训结果和实验分析经过实际测试,多模式带音乐跑马灯设计实现了预期的功能,能够根据用户的选择进行不同的跑马灯模式和音乐播放。

实训过程中,需要注意以下问题:1.硬件部分需要精确连接,尤其是音频输出电路的设计,需要注意电路布线,以防止杂音和干扰。

2.在软件编程过程中,需要合理利用中断和定时器等功能,确保跑马灯的流畅切换和音乐的正常播放。

3.在调试过程中,可以逐步调试并测试每个模块的功能,确保整个系统的稳定性和可靠性。

单片机多模式带乐跑马灯研发设计方案文档

单片机多模式带乐跑马灯研发设计方案文档

高等教育自学考试毕业论文学生姓名:黎政昌考籍号: 911411101567 专业年级:二年级题目:基于单片机的多模式带音乐跑马灯设计指导教师:向诚评阅教师:2012年4月目录1设计的作用、目的 (3)2设计的具体实现 (3)2.1系统概述 (3)2.2单元电路设计与分析 (3)2.3电路的安装与调试 (8)3建议 (9)结论 (10)致谢 (11)参考文献 (12)4附录 (13)摘要跑马灯,顾名思义,就是“会像马儿一样跑动”的小灯,故取名“跑马灯”。

跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。

在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。

当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。

此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。

关键词跑马灯;单片机;LED发光二极管1设计的作用、目的(1)使用32个彩色LED灯,用这32个发光二极管以不同的模式循环点亮;(2)三个功能键,K1模式键,通过按键调整显示结果,总共有十种模式;K2加速键;K3减速键;(3)当撤换最后一个功能模式时,蜂鸣器将会播放音乐,此时LED将当作音频灯使用;(4)十种模式通过一个共阳数码管显示出来,十个模式分别显示为0~9。

通过发光二极管的动态闪亮,显示非常炫目的效果,应用于各种建筑物,大楼,酒吧,KTV,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示,通过此次设计,可以加深对51单片机的应用、C51编程和protues软件操作的能力。

了解51单片机的外围引脚,以及各个端口的功能,还可以通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同时掌握C51软件与protues联机调试程序,对进一步学习单片机打下坚实基础。

单片机跑马灯实验报告

单片机跑马灯实验报告

单片机跑马灯实验报告摘要:本实验通过使用单片机来控制LED灯进行跑马灯效果的展示。

通过简单的电路连接和编程,我们成功实现了单片机跑马灯的功能。

实验结果表明,单片机跑马灯是一种简单而有效的显示系统,可广泛应用于娱乐和装饰等领域。

引言:跑马灯效果是一种常见且受欢迎的LED显示效果,它可以不断地循环显示LED灯的亮灭轮廓,给人们带来视觉上的愉悦。

单片机是一种可编程的微控制器,广泛应用于电子系统的控制和管理。

在本实验中,我们将利用单片机来实现跑马灯效果,通过编程控制LED灯的亮灭来模拟跑马灯的效果。

材料和方法:本实验所需材料如下:1. 单片机开发板2. LED灯3. 面包板4. 连接线实验步骤:1. 将单片机开发板放置在面包板上,确保连接稳固。

2. 将LED灯连接到面包板上,按照电路图正确连接。

3. 接通电源,将USB线连接到单片机开发板上。

4. 在计算机上打开开发板的编程软件。

5. 编写程序代码,实现跑马灯的效果。

6. 将程序代码下载到单片机开发板中。

7. 观察LED灯的亮灭情况,检查是否实现了跑马灯效果。

结果和讨论:经过实验,我们成功实现了单片机跑马灯的效果。

LED灯按照指定的顺序循环亮灭,产生出跑马灯的效果。

通过调整程序代码,我们可以控制跑马灯的速度和亮灭顺序,使其更加多样化和有趣。

单片机跑马灯是一种简单而有效的LED显示系统。

它可以应用于各种场景,包括室内和室外的装饰灯,新闻标语显示,广告牌等。

跑马灯效果不仅能够吸引人们的目光,还可以起到一定的宣传和广告效果。

总结:通过本次实验,我们了解了单片机的基本原理和应用,并成功实现了单片机跑马灯的效果。

单片机跑马灯具有简单、低成本、可编程等优点,适用于各种需要循环显示效果的场景。

未来,我们可以探索更多有趣的跑马灯效果,并将其应用于实际项目中。

在这个数字化时代,单片机跑马灯有着广阔的应用前景,希望能够为人们的生活和工作带来更多的灵感和乐趣。

单片机课程设计--跑马灯设计

单片机课程设计--跑马灯设计

单片机课程设计(跑马灯设计)专业:电气自动化摘要AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,即单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

该设计使用AT89C51芯片作为控制芯片,利用P1口连接8个发光二极管,通过I/O的值控制“跑马灯”的亮灭,以达到显示效果。

开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并要求有多种亮暗组合。

关键词:AT89C51单片机跑马灯按键目录摘要 (I)第一章芯片分析和设计概述 (3)第一节AT89C51芯片分析 (3)第二节设计概述 (8)第二章硬件电路设计 (9)第三章程序部分设计 (10)参考文献 (18)第一章芯片分析和设计概述第一节AT89C51芯片分析ATMEL的AT89S51是一种高效微控制器,将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51的芯片引脚图如下:图1.1 AT89C51引脚图各引脚的说明和功能分析如下:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH 编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

单片机课程设计跑马灯的控制

单片机课程设计跑马灯的控制

单片机课程设计跑马灯的控制摘要:本设计选择对跑马灯的控制,先构思跑马灯实现预想效果,然后进行分析,根据要求编写程序,选择硬件端口,并进行调试致预想效果,最后浅谈课程设计的经历,以及总结。

目录一)课程设计的目的二)课程设计的要求三)流程图四)原理图五)程序语言六)总结七)参考资料设计题目:试设计一个闪烁跑马灯控制器,该控制器可以控制8个灯顺序亮灭。

当单片机上电后,8个灯依次从左向右亮,并且每个灯亮的时间为1秒钟。

这时,如果按钮K1按下,则灯亮的顺序是从右向左,同样,每个灯亮的时间是1秒钟。

这时,如果按下按钮K2,则此时,4个灯亮4个灯灭,延迟4秒钟以后,又开始从左向右点亮。

最后,若按下按钮K3,则全部灯亮。

此时若想再次点亮灯,必须重新上电。

题目分析:该题目要求控制8盏灯的亮灭,可使用单片机的P1.0到P1.8口来控制。

按钮K1用P3.4口,K2用P3.2口,及外部中断0,K3用P3.3口,及外部中断1,分别来实现。

单片机使用AT89C52,电源使用5V标准电源。

顺序亮灭使用外部中断源构成循环控制语句。

一、课程设计的目的课程设计是本专业集中实践环节的主要内容之一。

训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。

学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。

例如组成系统、编程、调试、绘图等。

使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。

通过本课程设计,主要达到以下目的:1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。

2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。

3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。

二、课程设计的要求1.学生需认真阅读课程设计任务书,熟悉有关设计资料及参考资料,熟悉各种设计规范的有关内容,认真完成任务书规定的设计内容。

基于单片机的可控制的LED跑马灯设计_

基于单片机的可控制的LED跑马灯设计_
本 科 生 毕 业 设 计 (论 文)
题目:基于单片机的可控制的LED跑马灯设计
摘要:
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。矚慫润厲钐瘗睞枥庑赖。
单片机最小系统是在以MCS-52单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小ቤተ መጻሕፍቲ ባይዱ可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。本毕业设计主要在STC89C52RC单片机上扩展I/O口,复位电路,晶振电路,LED显示电路,数码管显示电路,蜂鸣器电路。适合于我们学生用于单片机的学习掌握和一些各种科研立项等的需求。因此,研究单片机最小系统有很大的实用意义。纣忧蔣氳頑莶驅藥悯骛。
复位电路:由电容和电阻构成,由电路图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。本设计中R=10K,C=10uF。挤貼綬电麥结鈺贖哓类。
The smallest system one chip computer is in expands at the base ofSTC89C52RCone chip computer,make it used more convient in the test system.This design mainly expands I/O in the take on chip computer,reset circuit, crystals circuit, the LED display circuitand writes the first floor procedure.Make for scrolling minimum system.酽锕极額閉镇桧猪訣锥。

基于单片机多模式带音乐跑马灯设计(附完整程序代码)

基于单片机多模式带音乐跑马灯设计(附完整程序代码)

单片机课程设计(论文)任务书信息工程学院学院计算机科学与技术专业计算机2009-1班一、课程设计(论文)题目基于单片机多模式的带音乐跑马灯设计二、课程设计(论文)工作自 2012年6月 11日起至 2012年6月 24日止。

三、课程设计(论文) 地点:四、课程设计(论文)内容要求:1.本课程设计的目的(1)利用所学单片机的理论知识进行软硬件整体设计,培养学生分析、解决问题的能力,锻炼学生理论联系实际、综合应用的能力。

(2)使学生掌握系统各功能模块的基本工作原理;(3)培养学生基本掌握电路设计的基本思路和方法;(4)使学生掌握接收系统调试;(5)培养学生分析、解决问题的能力;(6)提高学生的科技论文写作能力。

2.课程设计的任务及要求1)基本要求:1、有八个发光二极管做跑马灯,其中跑马灯有8种模式。

2、有专门的键盘用以切换跑马灯的模式,并且对于任何一种跑马灯模式都可以对亮灯速度进行控制。

3、每一种跑马灯模式用LED数码管进行显示。

4、当跑马灯处于一种模式时,伴随的音乐响起,音乐至少有3首,并可以对其进行切换。

2)创新要求:在基本要求达到后,可进行创新设计,如改善电路性能;对系统进行仿真分析。

3)课程设计论文编写要求(1)要按照书稿的规格打印誊写毕业论文(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等(3)毕业论文装订按学校的统一要求完成4)答辩与评分标准:(1)完成原理分析:20分;(2)完成设计过程:30分;(3)完成调试:30分;(4)回答问题:20分。

5)参考文献:(1)张毅刚彭喜元彭宇.《单片机原理及应用》[M].北京:高等教育出版社(2)谭浩强.《C程序设计教程》[M].北京:清华大学出版社(3)/%D7%F6%B6%F8%C2%DB%B5%C0/home6)课程设计进度安排内容天数地点构思及收集资料2图书馆组装与调试5实验室撰写论文3图书馆、实验室学生签名:2012 年6 月24 日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差();(2)设计分析(30分):优()、良()、中()、一般()、差();(3)完成调试(30分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)格式规范性及考勤是否降等级:是()、否()评阅人:职称:副教授2012年 6 月27目录一、设计概述 (5)1.1设计目的: (5)1.3设计作用: (5)1.4设计要求: (5)二、设计的具体实现 (6)2.1系统概述 (6)2.2各模块分析 (7)2.2.1主控芯片STC90C51 (7)2.2.2 STC90C51性能简介 (7)2.2.3 LED显示部分 (7)2.2.4模式显示部分 (8)2.2.5单片机部分 (9)三、硬件电路设计及描述 (9)3.1 LED (9)3.2数码管 (9)3.3复位电路及晶振电路 (10)3.4蜂鸣器及按键 (10)四、程序设计思想及流程 (11)4.1程序设计思路 (11)4.2音乐部分设计 (13)五、电路的安装与调试 (14)六、总结 (16)七、参考文献 (17)附录 (18)实物图 (18)程序清单 (18)摘要跑马灯,顾名思义,就是“会像马儿一样跑动”的小灯,故取名“跑马灯”。

基于单片机AT89C51的花样跑马灯设计报告

基于单片机AT89C51的花样跑马灯设计报告

基于AT89C51的花样跑马灯一.课设简介1-1.课设目的为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。

通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

1-2.课设内容利用单片机的自动控制功能,设计出相应不同的电路,可以实现IED灯不同模式的显示效果。

本课程是利用AT80C51单片机的自动控制功能,并结合其它电子元器件以及软件实现的跑马灯,实现不同种类的LED灯显示效果。

二.硬件电路设计2.1AT89C51简介及接口说明AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51引脚排列图由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制所需要的信号数目却远远超过其引脚数目。

带音乐的跑马灯

带音乐的跑马灯

带音乐的跑马灯
一实验目的
1. 熟悉A VR-atmega128单片机音频输出功能;
2. 掌握LED点阵和TEXT-LCD显示原理及使用方法。

3. 初步掌握GCC的一般编程技巧。

4. 掌握A VR单片机中断、时钟的设置方法。

二实验内容:
实验题目带音乐的跑马灯。

实验要求:
1 利用试验向上所带的D/A转换电路实现以小段音乐程序的播放。

2 利用LDM点阵来显示声音的大小。

3 实现循环播放,停止,恢复播放,下一曲等功能。

4 利用LCD显示歌曲信息,并随着歌曲的播放,暂停,恢复,下一曲等做出相应的操作。

三硬件原理
四程序流程图
用来播放音乐的中断服务程序
用来进行暂停和下一曲播放的中断服务程序
主程序流程图
控制下一曲的中段。

基于单片机的音乐流水灯设计

基于单片机的音乐流水灯设计

基于单片机的音乐流水灯设计音乐流水灯在现代生活中越来越受到人们的喜爱,它将音乐与灯光相结合,创造出一种独特的视听效果。

而更是将这一创意发挥到了极致。

本文将围绕这一主题展开深入研究,探讨单片机技术在音乐流水灯设计中的应用。

首先,我们需要了解什么是单片机。

单片机是一种集成在一块芯片上的微处理器,具有中心处理器、存储器、输入输出端口等功能。

在嵌入式系统设计中,单片机被广泛应用于各种领域,包括家电、汽车电子、医疗设备等。

在音乐流水灯设计中,单片机可以控制灯光的亮度、颜色、闪烁效果,并实现与音乐的同步播放。

音乐流水灯设计的关键是如何实现音乐与灯光的同步效果。

传统的音乐流水灯主要通过模拟电路来实现,但是这种设计存在灵活性低、难以控制等问题。

而基于单片机的音乐流水灯设计则可以通过编程控制灯光效果,实现更加精确的同步效果。

单片机可以根据音乐的节奏和节拍,控制灯光的亮度和闪烁频率,达到视听效果的最佳匹配。

在实际的音乐流水灯设计中,我们可以选择不同的单片机芯片和周边器件,根据需求设计相应的硬件电路。

同时,我们还需要编写相应的控制程序,实现音乐与灯光的同步效果。

在程序设计中,我们可以利用单片机的定时器、中断、串口通信等功能,实现复杂的灯光效果。

除了硬件设计和程序编写,我们还需要考虑音乐流水灯的外观设计。

灯光的颜色、形状、布局等都会影响整体效果。

在外观设计中,我们可以采用不同的灯珠、灯管、灯带等灯具,搭配适当的灯罩或反光板,创造出独特的视觉效果。

此外,我们还可以设计出不同的灯光变换模式,如呼吸灯、闪烁灯、渐变灯等,增加灯光效果的多样性。

在音乐流水灯设计中,音乐的选择也是至关重要的。

不同类型的音乐会带来不同的视听感受。

我们可以选择流行歌曲、古典乐曲、电子音乐等不同类型的音乐,根据音乐的节奏和情感色彩,设计出相应的灯光效果。

此外,我们还可以考虑加入声控功能,让灯光根据声音的大小和频率进行变化,增加互动性和趣味性。

在实际应用中,基于单片机的音乐流水灯设计可以广泛应用于家庭装饰、商业展示、演艺舞台等场合。

走马灯多功能工作模式控制系统毕业设计

走马灯多功能工作模式控制系统毕业设计

信息职业技术学院毕业设计说明书(论文)设计题目: 走马灯多工作模式控制系统设计专业: 应用电子技术班级: 应电08-3学号:姓名:指导教师:二0一0年七月十日信息职业技术学院毕业设计(论文)任务书目录摘要 (1)第1章绪论 (2)第2章系统的方案论证与比较 (3)2.1 方案的比较 (3)2.2 方案论证 (4)第3章系统硬件设计 ...................................... 错误!未定义书签。

3.1 主控芯片的介绍.................................... 错误!未定义书签。

3.1.1 8051内部结构 (5)3.1.2 8051信号引脚 (6)3.2 时钟电路功能以及工作原理的分析 (8)3.3 复位电路功能以及工作原理的分析 (9)3.4 显示电路 (9)3.5 按键电路的结构和工作原理 (10)3.6 彩灯控制 (11)3.7 整机电路工作原理 (11)第4章软件设计 (13)4.1 主程序模块 (13)4.2 定时器中断模块 (14)4.3 显示部分模块 (16)4.4 模式选择模块 (17)第5章系统的仿真与调试 (20)5.1 Keil C51 软件的使用 (20)5.2 Proteus 软件仿真 (21)5.3 仿真效果 (21)结论 (22)参考文献 (23)附录1 源程序 (24)附录2 整机电路图 (33)附录3 元器件明细表 (34)摘要随着社会的进步电子技术的应用越来越广泛,单片机应用技术作为计算机技术的一个重要分支,也因此广泛应用到工业控制、智能化仪器仪表、家用电器、电子玩具等各个领域,它具有结构简单、控制功能强、可靠性高、体积小、价格低等优点。

电子设计也就成为整个的综合体。

通过电子设计可以培养学生的电子系统设计能力,加强实践能力和动手操作能力以及能力。

随着社会的发展广告越来越体现出其的重要价值。

夜晚,华灯初上整个城市被五颜六色丰富多彩的广告牌闪烁的格外美丽,它们闪烁的多姿多彩代表这整个城市的繁华与向荣,所以本次电子设计是以AT89C51单片机作为主控核心,与按键、发光二极管、LED数码管显示器等较少的辅助的硬件电路相结合,利用软件对彩灯进行控制闪烁样式,发光二极管采用多种颜色,显示的闪烁模式也是多样的,给人一种悦目的感觉。

基于单片机的跑马灯系统的设计与实现

基于单片机的跑马灯系统的设计与实现

《单片机及控制系统设计》课程设计报告题目:基于单片机的跑马灯系统的设计与实现院(系):机电与自动化学院专业班级:电气自动化技术0901学生姓名:***学号:***********指导教师:**2011年12月26日至2012年1月10日华中科技大学武昌分校目录1设计题目及要求 (1)1.1设计题目 (1)1.2设计目的 (1)1.3控制要求 (1)2硬件设计 (2)2.1单片机简介 (2)2.1.1 单片机的引脚 (2)2.1.2单片机的内部结构 (3)2.2电源电路 (4)2.3时钟电路 (4)2.4复位电路 (5)2.5 EA/VPP(31脚)的功能和接法 (6)2.6 P0 口外接上拉电阻 (6)2.7 发光二级管 (7)2.8 显示电路部分 (8)2.9 AT89C51单片机最小系统 (9)3 软件设计 (10)3.1源程序与注释 (10)3.2软件编译、调试与烧入 (11)总结 (16)附录实物图 (17)参考文献 (18)1.设计题目及要求1.1设计题目单片机小系统版控制LED灯1.2设计目的1.单片机最小应用系统的硬件设计技能训练;2.ASM语言或C51语言软件编程与调试技能训练;3.“下载及烧录(固化)程序”开发技能训练;4.Protell软件应用技能训练;1.3控制要求按键及外部中断控制二级管灯(自右向左)1.按键控制8个LED灯循环自右向左依次点亮2.间隔时间可以自行设计3.单号灯亮双号灯灭7→ 5→ 3→ 1→ 7→ 5→ 3→ 1……1.外部中断控制8个LED灯循环自右向左依次点亮2.间隔时间可以自行设计3.双号灯亮单号灯灭8→ 6→ 4→ 2→ 8→ 6→ 4→ 2……2.硬件设计2.1单片机简介2.1.1单片机的引脚(1)电源:40号引脚VCC是芯片电源,接+5V。

20号引脚VSS为电源接地端。

(2)时钟引脚:XTAL2(18号脚)采用内部时钟电路时,外接晶体振荡器;采用外部时钟电路时,此引脚接地。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高等教育自学考试毕业论文学生姓名:黎政昌考籍号: 911411101567 专业年级:二年级题目:基于单片机的多模式带音乐跑马灯设计指导教师:向诚评阅教师:2012年4月目录1设计的作用、目的 (3)2设计的具体实现 (3)2.1系统概述 (3)2.2单元电路设计与分析 (3)2.3电路的安装与调试 (8)3建议 (9)结论 (10)致谢................................................................................................1 1 参考文献 (12)4附录 (1)3摘要跑马灯,顾名思义,确实是“会像马儿一样跑动”的小灯,故取名“跑马灯”。

跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。

在单片机运行时,能够在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。

当单片机系统出现故障时,能够利用跑马灯显示当前的故障码,对故障做出诊断。

此外,跑马灯在单片机的调试过程中也特不有用,能够在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。

关键词跑马灯;单片机;LED发光二极管1设计的作用、目的(1)使用32个彩色LED灯,用这32个发光二极管以不同的模式循环点亮;(2)三个功能键,K1模式键,通过按键调整显示结果,总共有十种模式;K2加速键;K3减速键;(3)当撤换最后一个功能模式时,蜂鸣器将会播放音乐,现在LED将当作音频灯使用;(4)十种模式通过一个共阳数码管显示出来,十个模式分不显示为0~9。

通过发光二极管的动态闪亮,显示特不炫目的效果,应用于各种建筑物,大楼,酒吧,KTV,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示,通过此次设计,能够加深对51单片机的应用、C51编程和protues软件操作的能力。

了解51单片机的外围引脚,以及各个端口的功能,还能够通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同时掌握C51软件与protues联机调试程序,对进一步学习单片机打下坚实基础。

2设计的具体实现2.1系统概述本设计的要求是设计一个有多种功能的走马灯,有多种不同的显示方式,加速功能和减速功能,那个地点的加速减速还有显示方式差不多上由单片机内部的程序操纵,在那个地点我将32个光二极管分不接在P0和P1,通过程序操纵这两个端口的电平高低,将32个光二极管的正极接电源,负极接P0和P1口,即发P0和P1口的相应端口为高电平常,发光二极管的两端都为高电平,因此发光二极管不亮,当发光二极管的相应端口为低电平常就能被点亮。

再通过程序循环的让各个端口以不同的方式点亮来达到走马的效果,同时当中要有一定的延时,延时时刻小于人眼视觉暂留时刻,否则人眼看上去每个灯差不多上亮的也就没有跑马效果。

系统框图如图一:图一 系统框图2.2 单元电路设计与分析1. 主控芯片AT89S52AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采纳ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式操纵应用系统提供高性价比的解决方案。

2. AT89S52性能简介AT89S52具有如下特点:40个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出MCU(AT89S51) LED 显示阵列12M晶振 复位电路7段共阴数码管 键盘(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可接着工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

AT89S52 PDIP Pin Configurations如图二:图二 AT89S52 Pin Configurations3.显示部分:显示部分用32个发光二极管分不接在P0和P1,通过程序操纵P0和P2的16个端口按照一定的方式依次为低电平以点亮相应端口的LED。

LED阵列如图三:图三 LED显示阵列4. 模式显示部分:模式即跑马的方式,共十种。

相应方式由数码管显示出来,每当模式按钮按下时,相应的模式加一,数码管显示相应模式。

共阴数码管结构如图四:a 各段代码b 实物外观图四共阳数码管结构5.单片机部分:该部分要紧涉及功能的实现方式,即程序编写。

程序要实现的功能包括读键盘,通过对读入键盘的值操纵LED点亮方式和数码管显示。

键盘有三个按键K1、K2、K3,K1操纵LED点亮模式,K2、K3键操纵跑马灯速度,K2加速,K3减速。

不论K1被按下多少次,LED 九种点亮模式是循环的,K2、K3键操纵速度分不有上限和下限,多按无效。

6.音乐播放部分:撤换最后一个功能模式时,蜂鸣器将会播放音乐,现在LED将当作音频灯使用。

当中共有三首音乐,分不是《我的骄傲》《同一首歌》和《两只蝴蝶》现在K2加速充当下一曲的作用,K3减速充当上一曲的作用,歌曲是循环播放的,现在LED彩色灯将从当随音频变化的指示灯。

程序设计思路:主程序中默认执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。

把两次获得的按键状态比较,假如不同,就表示是抖动,退出中断;否则,就去推断是哪个按键按下。

假如是K1,就执行下一个跑马;假如是K2,就执行跑马加速;假如是K3,就执行跑马减速。

采纳置标志位的方法。

即在主程序中设定两个标志位,一个跑马模式标志位,一个跑马速度标志位。

不断的对这三个标志进行查询:假如是跑马模式标志为状态0,就执行右向跑马;假如是状态1,就执行左向跑马灯,依次类推。

跑马速度标志默认值为10,对应延时值为200ms。

而在中断服务程序中,只需要进行如下工作:去抖动,键盘识不,改变标志位。

程序流程图如图五:图五程序流程图2.3电路的安装与调试用keil将程序编写好之后,检查程序有无错误。

有错误就改正,直到没有错误,最后生成.HEX文件,再用peoteus画好硬件电路图,将单片机指向刚生成的.HEX文件并进行仿真调试,在调试过程当中通过调试的结果完善程序。

一切OK之后,下面就进行最后时期,即在面包板上搭电路,然后用烧写器将.HEX文件下载到AT89S52单片机中。

调试电路,带着笑容观赏胜利的成果。

仿真图如图:3建议希望老师多给我们讲一些单片机的研究方向,平常也多给我们出一些小设计课题,我觉得像如此自己做一个设计对理论学习是一个专门好的总结,当我们有不明白的东西的时候也能够得到老师的指点,如此才能够更全面的认识和学好单片机。

结论通过此次课程设计,不仅初步掌握了51单片机的一些差不多功能应用,还学会了使用keil和protues两个软件。

明白了如何用keil新建工程文件、编写调试程序、生成.HEX文件;如何用protues软件画图,特不是总线的画法,如何仿真等。

致谢我会以此为起点,进一步学习和使用单片机,为今后工作打基础。

感谢我的单片机启蒙老师戴严炯老师的教诲。

也感谢向诚老师的指导。

参考文献[1] 谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999。

[2] 李群芳.单片机微型计算机与接口技术(第3版)[J].北京:电子工业出版社2008。

[3] 百度搜索引擎.网址.4 附录实物图如图六:C程序如下:#include <REG52.H>#include "SoundPlay.h" unsigned char RunMode;//**************************** ******SystemFuction*********************** **************************void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}unsigned char code LEDDisplayCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x9 2,0x82,0xF8, //0~70x80,0x90,0x88,0x83,0xC6,0xA1, 0x86,0x8E,0xFF};void Display(unsigned char Value){P3 = LEDDisplayCode[Value];}void LEDFlash(unsigned char Count){unsigned char i;bit Flag;for(i = 0; i<Count;i++){Flag = !Flag;if(Flag)Display(RunMode);elseDisplay(0x10);Delay1ms(100);}Display(RunMode);}unsigned char GetKey(void){unsigned char KeyTemp,CheckValue,Key = 0x00; CheckValue = P2&0x32;if(CheckValue==0x32)return 0x00;Delay1ms(10);KeyTemp = P2&0x32;if(KeyTemp==CheckValue)return 0x00;if(!(CheckValue&0x02))Key|=0x01;if(!(CheckValue&0x10))Key|=0x02;Key|=0x04;return Key;}unsigned int Timer0Count,SystemSpeed,System SpeedIndex;void InitialTimer2(void){T2CON = 0x00; //16 Bit Auto-Reload ModeTH2 = RCAP2H = 0xFC; //重装值,初始值 TL2 = RCAP2L = 0x18; ET2=1; //定时器 2 中断同意TR2 = 1; //定时器 2 启动EA=1;}unsigned int code SpeedCode[]={ 1, 2, 3, 5, 8, 10, 14, 17, 20, 30,40, 50, 60, 70, 80, 90, 100, 120, 140, 160,180, 200, 300, 400, 500, 600, 700, 800, 900,1000};//30void SetSpeed(unsigned char Speed){SystemSpeed =SpeedCode[Speed]; }void LEDShow(unsigned int LEDStatus){P1 = ~(LEDStatus&0x00FF); P0 = ~((LEDStatus>>8)&0x00FF); }void InitialCPU(void){RunMode = 0x00;Timer0Count = 0; SystemSpeedIndex = 9;P1 = 0x00;P0 = 0x00;P2 = 0xFF;P3 = 0x00;Delay1ms(500);P1 = 0xFF;P0 = 0xFF;P2 = 0xFF;P3 = 0xFF;SetSpeed(SystemSpeedIndex); Display(RunMode);//Mode 0unsigned int LEDIndex = 0;bit LEDDirection = 1,LEDFlag = 1; void Mode_0(void){LEDShow(0x0001<<LEDIndex); LEDIndex = (LEDIndex+1)%16;}//Mode 1void Mode_1(void){LEDShow(0x8000>>LEDIndex); LEDIndex = (LEDIndex+1)%16;}//Mode 2void Mode_2(void){if(LEDDirection)LEDShow(0x0001<<LEDIndex);LEDShow(0x8000>>LEDIndex); if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16; }//Mode 3void Mode_3(void){if(LEDDirection)LEDShow(~(0x0001<<LEDInde x));elseLEDShow(~(0x8000>>LEDInde x));if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16;//Mode 4void Mode_4(void){if(LEDDirection){if(LEDFlag)LEDShow(0xFFFE<<LEDInde x);elseLEDShow(~(0x7FFF>>LEDIn dex));}else{if(LEDFlag)LEDShow(0x7FFF>>LEDInde x);elseLEDShow(~(0xFFFE<<LEDIn }if(LEDIndex==15){LEDDirection = !LEDDirection;if(LEDDirection) LEDFlag = !LEDFlag;}LEDIndex = (LEDIndex+1)%16; }//Mode 5void Mode_5(void){if(LEDDirection)LEDShow(0x000F<<LEDIndex); elseLEDShow(0xF000>>LEDIndex); if(LEDIndex==15)LEDDirection= !LEDDirection;LEDIndex = (LEDIndex+1)%16;}//Mode 6void Mode_6(void){if(LEDDirection)LEDShow(~(0x000F<<LEDInde x));elseLEDShow(~(0xF000>>LEDInde x));if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16; }//Mode 7void Mode_7(void){if(LEDDirection)LEDShow(0x003F<<LEDIndex); elseLEDShow(0xFC00>>LEDIndex); if(LEDIndex==9)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%10;}//Mode 8void Mode_8(void){LEDShow(++LEDIndex);}void Timer0EventRun(void) {if(RunMode==0x00){Mode_0();}else if(RunMode ==0x01) {Mode_1();}else if(RunMode ==0x02) {Mode_2();}else if(RunMode ==0x03) {Mode_3();}else if(RunMode ==0x04)Mode_4();}else if(RunMode ==0x05) {Mode_5();}else if(RunMode ==0x06) {Mode_6();}else if(RunMode ==0x07) {Mode_7();}else if(RunMode ==0x08) {Mode_8();}}void Timer2(void) interrupt 5 using 3{TF2 = 0; //中断标志清除( Timer2 必须软件清标志!)if(++Timer0Count>=SystemSpeed) {Timer0Count = 0;Timer0EventRun();}}unsigned char MusicIndex = 0; void KeyDispose(unsigned char Key){if(Key&0x01){LEDDirection = 1;LEDIndex = 0;RunMode = (RunMode+1)%10;Display(RunMode);if(RunMode==0x09)TR2 = 0;elseTR2 = 1;}if(Key&0x02){if(RunMode==0x09){MusicIndex =(MusicIndex+MUSICNUMBER-1)%MU SICNUMBER;}else{if(SystemSpeedIndex>0){SetSpeed(SystemSpeedI ndex);}else{LEDFlash(6);}}}if(Key&0x04){if(RunMode==0x09){MusicIndex =(MusicIndex+1)%MUSICNUMBER;}else{if(SystemSpeedIndex<28)++SystemSpeedIndex;SetSpeed(SystemSpeedI ndex);}else{LEDFlash(6);}}}}//*****************************Music****************************************************** //挥着翅膀的女孩unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, //同一首歌unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,0x16,0x03, 0x17,0x03, 0x16,0x00,0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,0x1A,0x0C, 0x18,0x0D, 0x17,0x03,0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x16,0x03, 0x16,0x03, 0x18,0x66,0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,0x00,0x00 };//两只蝴蝶unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,0x10,0x03, 0x15,0x00, 0x00,0x00 };//**************************** ****************************** ************************* unsigned char * SelectMusic(unsigned char SoundIndex){unsigned char *MusicAddress = 0; switch (SoundIndex){case 0x00:MusicAddress = &Music_Girl[0]; //挥着翅膀的女孩break;case 0x01: &Music_Same[0]; //同一首歌break;case 0x02:MusicAddress = &Music_Two[0]; //两只蝴蝶break;case 0x03:break;case 0x04:break;case 0x05:break;case 0x06:break;case 0x07:break;case 0x08:break;case 0x09:default:break;}return MusicAddress;}void PlayMusic(void){Delay1ms(200);Play(SelectMusic(MusicIndex),0 ,3,360);}//**************************** ****************************** ************************* main(){unsigned char Key;InitialCPU();InitialSound();InitialTimer2();while(1){Key = GetKey();if(RunMode==0x09){PlayMusic();}if(Key!=0x00){KeyDispose(Key);}}}。

相关文档
最新文档