简易声光电子琴

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

福建信息职业技术学院
机电工程系
机电一体化专业
实务专题
声光电子琴
专题生:机电1211班陈艺斌
机电1211班刘建森
机电1211班陈渊杰
机电1211班吴彬成
指导教师:翁伟
二O一五年十月二十八日
福建信息职业学院毕业设计
基于51单片机简易电子琴设计
摘要
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。

我们都会抽空欣赏世界名曲,作为对精神的洗礼。

本论文设计一个基于单片机的简易电子琴。

我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

在电子行业高速发展的今天,单片机已经广泛的应用到了各个行业之中,其中也就包括了我所设计的娱乐项目,随意的弹奏音乐并且伴着灯光的闪烁,这就是我所以利用89C51单片机所设计的声光电子琴,声光电子琴的设计理念完全是利用89c51单片机的功能的研究和理解以及延伸拓展。

以下我会详细介绍电路的设计和程序的编制过程。

关键词:89c51单片机电路程序
目录
目录 .......................................................................................................................................................... I I 一绪论 ...................................................................................................................................................... - 1 -
1.1 课题背景 .................................................................................................................................... - 1 -
1.2 设计依据 .................................................................................................................................... - 1 - 二系统方案设计及主控芯片介绍 .......................................................................................................... - 2 -
2.1 系统基本设计思路 .................................................................................................................... - 2 -
2.2 单元电路方案论证 .................................................................................................................... - 2 -
2.2.1 控制器模块 .................................................................................................................... - 2 -
2.2.2 发声模块 ........................................................................................................................ - 2 -
2.2.3 编程软件模块 ................................................................................................................ - 3 -
2.2.4 最终方案 ........................................................................................................................ - 3 -
2.3 AT89C51单片机 ......................................................................................................................... - 4 - 三硬件电路设计 ...................................................................................................................................... - 5 -
3.1 最小系统设计 ............................................................................................................................ - 5 -
3.2 时钟电路 .................................................................................................................................... - 5 -
3.3 复位电路 .................................................................................................................................... - 6 -
3.4 按键控制模块 ............................................................................................................................ - 6 -
3.5 播放模块 .................................................................................................................................... - 7 - 四程序流程 .............................................................................................................................................. - 7 -
4.1 程序流程图 ................................................................................................................................ - 7 -
4.2 重点程序分析 ............................................................................................................................ - 8 -
4.2.1 音阶程序 ........................................................................................................................ - 8 - 结论 ........................................................................................................................................................ - 8 - 参考文献 .................................................................................................................................................... - 9 - 致谢 ...................................................................................................................................................... - 10 - 附录 1 主要源程序 ................................................................................................................................ - 11 - 附录 2 原理图 ........................................................................................................................................ - 18 - 附录 3 PCB板图 ..................................................................................................................................... - 19 - 附录 4 实物图 ........................................................................................................................................ - 20 -
一绪论
1.1 课题背景
单片机因其体积小,功能强,价格低廉而得到广泛应用,同时随着我国经济的飞速发展,单片机在越来越多的领域得到了广泛的应用,现在国内的单片机多用于电话,玩具和LCD等产品,预计在未来,利用单片机发明的产品会越来越多,作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为简易电子琴。

我所设计的该产品时根据自身的兴趣和爱好所设计的,通过对传统电子琴的认识和了解,知道了传统的电子琴是利用单片机的汇编语言的编程来实现的,而且功能单一,只能弹奏而不能随意的播放音乐,我所设计的产品是基于对89c51单片机的深入理解对传统电子琴的小小的改革和创新,并且以简单的C语言程序替代了复杂的汇编语言程序,声和光是新电子琴的主题,我相信在声光电子琴的不断革新达到人们所需娱乐设备的标准的时候,电子琴会被投入到批量生产之中。

单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。

他的应用必定导致传统的控制技术从根本上发生变革。

因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

1.2 设计依据
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键,和一个复位按键。

主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴硬件的组成。

利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。

并且分别从原理图,主要芯片,个模块原理及各莫奎的程序的调试来详细阐述。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。

当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。

第二章系统方案设计及主控芯片介绍
2.1 系统基本设计思路
此设计是在LED小灯上显示灯光的变换,扬声器播放弹奏的曲子。

电路包括:键盘、单片机及LED显示电路,声音电路。

2.1.1 各部分说明
(1)键盘用于弹奏音乐,八个按键8种音符。

(2)单片机通过输出各种电脉冲信号驱动控制各部分正常工作。

(3)单片机发送的信号分别经过LED显示电路通过译码最终在LED小灯和声音电路通过扬声器显示出来。

2.1.1系统工作过程
单片机要产生音频脉冲,主要处理过程是在CPU中完成的,CPU会随时对音符输入信号进行读取数据的操作。

在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把音乐通过扬声器播放出来。

2.2 单元电路方案论证
根据设计要求,本系统主要由控制器模块、显示模块和输入模块构成。

为较好的实现各模块的功能,我们分别设计了以下几种方案并分别进行了论证。

2.2.1 控制器模块
方案1:采用凌阳系列单片机为系统的控制器
凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。

凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。

方案2:采用51系列作为系统控制器
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。

由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。

而且抗干扰性能好。

因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案2。

2.2.2 发声模块
发声模块是本设计的最主要的部分。

基本方案:发生电路是这次设计电路中最重要的组成部分,他承载着把单片机所产生的声音信号放大并输出的重要作用,而我的设计中的发声电路主要是由两个CS9013
组成。

CS9013是一种小功率的放大管,属于NPN型号三极管,而对三极管引脚的判断有以下方法。

1.判断三极管的基极。

对于NPN型号的三极管,用黑表笔接某一个电极,红表笔分别接另外两个电极,若测量电阻值两个都小,调换表笔后被测电阻值都较大,则可判断第一次测量中黑表笔所接的是基极;如果测量值一大一小,相差很大,则第一次测量中黑表笔接的不是基极,应该更换其他电极重测。

2.测量三极管发射极e和集电极c。

三极管基极确定后,通过交换表笔,两次测量e,c极间的电阻,如果两次测量结果不相等,其中测得电阻值较小的一次为红表笔的是e极黑表笔接的是c极。

对于PNP型号的三极管,方法与NPN的相似,只是红黑表笔的作用相反,在测量e,c极间电阻时要注意,由于三极管的V(BR)CEO很小,很容易将发射结击穿。

当我们三极管的管脚判断结束以后,我们就可以用两个三极管构成一个达林顿结构。

首先当单片机P1.0口输出一个高电平,由两个三极管构成的达林顿成能导通,导通后又能对电流又一定的放大作用,这样传到扬声器时信号能让我们听的更清楚。

2.2.3 编程软件模块
方案1:采用汇编语言编程
汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU的资源,相对高级程序设计语言来说,它又显得难掌握。

方案2:采用C语言编程
C语言与其他高级语言相比,具有运算符的丰富性、语法表述的灵活性、对软硬件操作的兼容性、输入输出方式的新颖性等主要特征.深入分析研究这些特征,可以加深对C语言的认识;正确应用这些特征,可以灵活高效地解决各种实际问题.
因为我在大学期间对汇编语言没有深入的了解,而且在编程时一直用C语言,所以我选择了方案2。

2.2.4 最终方案
经过反复论证,最终确定了如下方案:
(1)采用STC89C51单片机作为主控制器。

(2)采用达林顿效应使音乐信号放大
(3)采用C语言编程
2.3 AT89C51单片机
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

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

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

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

主要功能特性:
· 兼容MCS-51指令系统· 4k可反复擦写(>1000次)ISP Flash ROM · 32个双向I/O口· 4.5-5.5V工作电压
· 2个16位可编程定时/计数器· 时钟频率0-33MHz
· 全双工UART串行中断口线· 128x8bit内部RAM
· 2个外部中断源· 低功耗空闲和省电模式
· 中断唤醒省电模式· 3级加密位
· 看门狗(WDT)电路· 软件设置空闲和省电功能
· 灵活的ISP字节和分页编程· 双数据寄存器指针
STC89C51是一种带8K字节可编程可檫除只读存储器的低电压、高性能COMOS8
位微处理器,俗称单片机。

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

单片机引脚图如图所示
图1 STC89C51单片机引脚图
第三章硬件电路设计
3.1 最小系统设计
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。

电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。

3.2 时钟电路
STC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。

时钟可以由内部方式产生或外部方式产生。

内部时钟在此不做详细介绍。

外部方式的时钟电路如图3所示,RXD接地,TXD接外部振荡器。

对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率在12MHz左右的方波信号。

图2 89c51内部时钟电路
3.3 复位电路
当在89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。

复位电路通常采用上电自动复位和按钮复位两种方式。

最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。

只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。

除了上电复位外,有时还需要按键手动复位。

本设计就是用的按键手动复位。

按键手动复位有电平方式和脉冲方式两种。

其中电平复位是通过RST(9)端与电源Vcc接通而实现的。

按键手动复位电路见图4。

时钟频率用11.0592MHZ时C取10uF,R取10k Ω。

图3 89C51 复位电路
3.4 按键控制模块
电子琴设有11个按键,其中8个作为音符输入。

8个按键分别代表8个音符,包括中音段的全部音符,通过软硬件设计。

另外3个分别是控制复位、流水灯的转换、自动播放音乐。

如下图:
3.5 播放模块
播放模块是由2个三极管构成,三级管将信号放大,然后传输到喇叭,喇叭它几乎不存在噪声,音响效果较好。

下图是该模块电路:
第四章程序流程
4.1 程序流程图
该设计方案是通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。

通过这样可以不断的弹奏我们想要的音符或者是音调,电路由复位电路,指示灯电路,和功能按键电路组成,通过功能键可以选择播放音乐或者弹奏音节,硬件主要有下面几个部分组成。

4.2 重点程序分析
4.2.1 音阶程序
uchar code yinfu[]={0xfb,0xe9, //Do
0xfc,0x5c, //Re
0xfc,0xc1, //Mi
0xfc,0xef, //Fa
0xfd,0x45, //So
0xfd,0x92, //La
0xfd,0xd0, //Si
0xfd,0xee, //Do#
0x00,0x00, //间隔
4.2.2
结论
通过对自己在大学两年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了本设计。

这为自己今后进一步深化学习,积累了一定宝贵的经验。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

将以调试好的程序烧进AT89S51芯片,再放到电路板中,按下按键就可以发出相应的音。

本次试验通过制作电子琴,将几个模块换呢好的融合起来,对使用单片机设计简易电子琴进行了分析,并接受了基于单片机电子期硬件组成。

利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。

说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时同股沟显示模块来确知自己所弹的音符。

通过这次实训设计,我感觉收获了很多:通过这次的单片机实训,我加深了对单片机系列知识及其系统的认识。

这个设计题目并不怎么新颖,但从中体现到了个系统开发设计的过程,足以让我们受益匪浅。

在这次的实训中,让我更进一步的提高了动手能力,也重新复习了一次单片机的程序编程能力,在这期间,让我更加深刻了体会到了汇编程序的思路,加强了对编程能力的理解和对相应资料的查阅。

参考文献
[1] 白炽贵编著.单片机C语言案例教程.北京:电子工业出版社,2011.1
[2] 周良权主编.模拟电子技术基础.北京:高等教育出版社,2005.6
[3] 卜锡滨主编.数字电子技术.北京:中国水利水电出版社,2011.1
[4] 李华.单片机C语言编程[M].北京:北京航空航天大学出版社,2005.8.1
[5] 徐爱钧.单片机原理实用教程--基于Protrues虚拟仿真[M].北京:电子工业出版社.2009.1
[6] 李萍.AT89S51单片机、原理、开发与应用实例[M].北京:中国电力出版
社.2008.7
[7] 张晔,王玉民等.单片机应用技术[M].北京:高等教育出版社.2006.3
[8] 付家才等.单片机控制工程实践技术[M].北京:化学工业出版社.2004.5
[9] 及力主编.电子CAD基于protel 99 SE.北京:北京邮电大学出版社,2008
[10]徐红升主编.电工基础及实训.北京:清华大学出版社,2009.5
致谢
三年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。

三年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。

伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的导师。

我不是您最出色的学生,而您却是我最尊敬的老师。

您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。

授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”。

感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意!
同时也感谢学院为我提供良好的做毕业设计的环境。

最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。

附录 1 主要源程序
sfr P4=0xe8;//定义P4组I0口
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit speaker=P1^4;//喇叭接30脚
sbit key1=P1^0;//流水灯按键(暂时)
sbit key2=P1^1;//播放音乐按键(暂定)
uchar a,b,num1,s1num,n1,n2;
char num;//定义num为可以负数
uchar code yinfu[]={0xfb,0xe9, //Do
0xfc,0x5c, //Re
0xfc,0xc1, //Mi
0xfc,0xef, //Fa
0xfd,0x45, //So
0xfd,0x92, //La
0xfd,0xd0, //Si
0xfd,0xee, //Do#
0x00,0x00, //间隔
};
uchar code shengri_tone[]={ 1,0,1,2,1,4,3,0, //生日快乐音调
1,0,1,2,1,5,4,0,
1,0,1,8,6,4,3,2,0,
7,0,7,6,4,5,4,0 //0代表不发声,即停顿;数字即为音调
};
uchar code shengri_beat[]={ 24,1,24,48,48,48,72,5,//节拍
24,1,24,48,48,48,72,5,
24,1,24,48,48,48,48,72,5,
24,1,24,48,48,48,72,5 //节拍,即tone 表各音调的延时
};
uchar code ledtable[]={0x7f,0xbf,0xdf,0xef, //取反
0xf7,0xfb,0xfd,0xfe};//P0组口的发光二极管代码(焊接过程可能会相反,具体更改)uchar code ledtable2[]={0x7f,0xbf,0xdf,0xef, //取反
0xf7,0xfb,0xfd,0xfe};//P2组口发光二极管代码,相反!
void check_key();//改为P3组为按键
void keyscan();
void turn();//顺时针流动
void back();
void qianhou();
void dangshuang();
void delay(uint z);//延时函数声明
void delay1(void);//声明第二个延时函数
void play1(void);//播放生日快乐
void main()
{
s1num=0;//流水灯种类标志
key1=1;
key2=1;
TMOD=0x01;
TH0=a;
TL0=b;
ET0=1;//打开定时器,但是未允许中断
TR0=1;
while(1)
{
check_key();
keyscan();
}
}
void time0() interrupt 1
{
TH0=a;
TL0=b;
speaker=~speaker;
}
void check_key()
{
P3=0xff;//先赋给P2组口高电平
switch(P3)//按下一个键相应4个灯亮
{
case 0xfe:P0=0xee;P2=0x77;a=0xfb;b=0xe9;EA=1;break;//P0,P2组为发光二极管组
case 0xfd:P0=0xdd;P2=0xbb;a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改为TR0
case 0xfb:P0=0xbb;P2=0xdd;a=0xfc;b=0xc1;EA=1;break;
case 0xf7:P0=0x77;P2=0xee;a=0xfc;b=0xef;EA=1;break;
case 0xef:P0=0xee;P2=0x77;a=0xfd;b=0x45;EA=1;break;
case 0xdf:P0=0xdd;P2=0xbb;a=0xfd;b=0x92;EA=1;break;
case 0xbf:P0=0xbb;P2=0xdd;a=0xfd;b=0xd0;EA=1;break;
case 0x7f:P0=0x77;P2=0xee;a=0xfd;b=0xee;EA=1;break;
default:EA=0;speaker=0;//P0=0xff;P2=0xff ;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(key1==0)
{
delay(5);
if(key1==0)
{
s1num++;
while(!key1);
if(s1num==1)
{
turn();
}
}
if(s1num==2)
{
back();
}
if(s1num==3)
{
qianhou();
}
if(s1num==4)
{
dangshuang();
}
if(s1num==5)
s1num=1;
}
if(key2==0)
{
delay(5);
while(~key2);
play1();
}
}
void delay1(void)//第二个延时函数{
uchar n=15;
while(n--)
{
uchar i;
for(i=0;i<125;i++); }
}
void play1(void)//播放生日快乐
{
uchar m=0;
uchar s;
uchar c=1;
P0=0xaa;
P2=0x55;
while(1)
{
EA=0;
c=shengri_tone[m]; //取音符
s=shengri_beat[m]; //取节拍
a=yinfu[2*c-2];
b=yinfu[2*c-1];
EA=1;
while(s--)
{
delay1();
P0=~P0;
P2=~P2;
}
m++;
if(m>=33) return; //数值是shengri相关表中的元素数量
}
}
/*以下为N种流水灯流动花式*/
void turn()//流水灯顺时针走动(5次)
{
for(num1=0;num1<8;num1++)
{
for(num=0;num<8;num++)
{
P0=ledtable[num];
delay(30);//时间暂定 }
P0=0xff;//之后关闭P1组
for(num=7;num>-1;num--)
{
P2=ledtable2[num];
delay(30);
}
P2=0xff;//之后关闭P2组
}
}
void back()//逆时针流动
{
for(num1=0;num1<8;num1++)
{
for(num=0;num<8;num++)
{
P2=ledtable[num];
delay(30);
}
P2=0xff;
for(num=7;num>-1;num--)
{
P0=ledtable2[num];
delay(30);
}
P0=0xff;
}
}
void qianhou()//前后来回
{
for(num1=0;num1<10;num1++)
{
for(num=0;num<8;num++)
{
P0=ledtable[num];
P2=ledtable2[num];
delay(30);
}
P0=0xff;
P2=0xff;
for(num=7;num>-1;num--)
{
P0=ledtable[num];
P2=ledtable2[num];
delay(30);
}
P0=0xff;
P2=0xff;
}
}
void dangshuang()//单数双数{
for(num1=0;num1<15;num1++)
{
P0=0x55;
P2=0xaa;
delay(150);
P0=0xaa;
P2=0x55;
delay(150);
}
}
附录 3 PCB板图
附录 4 实物图。

相关文档
最新文档