
【LED】流水灯的设计与制作.pdf
9页摘 要 本设计是一种基于 89C52 单片机的彩灯控制方案,实现对彩灯的控制本方案以 89C52 单片机作为主控核心,由编程实现亮灯循环模式由在显示模块上有 8 个彩灯,根据用户需要可以编写若干种亮灯模式. 本系统具有体积小、硬件少、电路结构简单及容易操作和阅读等优点 该彩灯控制器实际应用效果较好, 亮灯模式多与其他彩灯相比,具有体积小、价格低、低能耗等优点在能源比较匮乏的今天,彩灯的循环控制在显示方面更表现出一种节约能源的魅力.这将使彩灯具有更广阔的发展天地 关键字:89C51 循环 彩灯 a a 89c52 89c52 8 8 a , a . : 89C51 目 录 绪论 3 1 流水灯方案设计与选择 3 1、1 设计要求 3 1、2 系统功能 3 1、3 方案选择 3 2 流水灯设计过程 4 2、1 元件选取 4 2、2 硬件设计 4 2、2、1 单片机介绍 4 2、2、2 流水灯总图 5 2、3 软件设计 6 2、3、1 编程介绍 6 2、3、2 编程选择 10 参考文献 11 绪 论 当今时代足一个新技术层出不穷的时代,在电子领域尤其足自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机 1 流水灯方案设计与选择 1、1 设计要求 本次毕业设计要求设计一个流水灯,其设计要求如下: (1)、用 8 个发光二极管作为显示电路 (2)、实现动态显示 (3)、能连续循环显示 1、2 系统功能 流水灯可直接与 220 V 交流市电相连接, 经过开关电源变换, 输出直流工作电压,一方面为管内模块提供 12 V 工作电源,另一方面为主控模块单片机系统提供5 V 工作电源整个系统工作由软件程序控制运行上电后,流水灯按程序设计好的模式进行显示,由全灭→按程序显示→全都熄灭为一个周期然后循环继续工作 1、3 方案选择 可只采用 89C51 作为主控芯片,将 P1 分别接 8 个实现显示,可用 C 语言或者汇编语言编程实现方案框图如图: 2 流水灯设计过程 电 源 89C51 显示 2、1 元件选取 名称 规格型号 数量 微处理器 89C51 1 电阻 … 若干 电容 … 若干 晶振 11.0592 1 … 8 2、2 硬件设计 2、2、1 单片机介绍 图 3 89C2051 引脚配置 89C2051 芯片的 20 个引脚功能为: 电源电压。
接地 复位输入当变为高电平并保持 2 个机器周期时,所有引脚复位至“1” 1 反向振荡放大器的输入及内部时钟工作电路的输入 2 来自反向振荡放大器的输出 P1 口 8 位双向口引脚 P1.2~P1.7 提供内部上拉,当作为输入并被外部下拉为低电平时, 它们将输出电流, 这是因内部上拉的缘故 P1.0 和 P1.1 需要外部上拉,可用作片内精确模拟比较器的正向输入(0)和反向输入(1) ,P1 口输出缓冲器能接收 20 电流,并能直接驱动显示器;P1 口引脚写入“1” 后,可用作输入在闪速编程与编程校验期间,P1 口也可接收编码数据 P3 口 引脚 P3.0~P3.5 与 P3.7 为 7 个带内部上拉的双向 0 引脚P3.6 在内部已与片内比较器输出相连,不能作为通用引脚访问P3 口的输出缓冲器能接收 20 的灌电流;P3 口写入“1”后,内部上拉,可用输入P3 口也可用作特殊功能口 2、2、2 流水灯总图 按照单片饥系统扩建和系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等89C51 单片机是美国 公司生产的低电 、高性能 8 位单片机,具有丰富的内部资源:4 闪存、128、32 根 I/O 口线、2 个 16 位定时/计数器、5 个向量阴级中断结构、2 个全 I 双工的串行、具有 4.25~5.50V 的电压工作范同和0~24 工作频率,使用 89C51 单片机时无须外扩存储器。
因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机其具体硬件组成如图所示 图:流水灯硬件原理图 从原理图中可以看出,如果要让接在 P1.0 口的 1 亮起来,那么只要把 P1.0 的电平变为低电平就可以了;相反,如果要接在 P1.0 口的 1 熄灭,就要把 P1.0 口的电平变为高电平;同理,接 P1.1~P1.7 口的其他 7 个的点亮和熄灭的方法同 1因此, 实现流水灯功能,我们只要将发光二极管 1~8 依次点亮、熄灭,8 只灯便会一亮一暗的做流水灯了在此,我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了 2、3 软件编程 2、3、1 编程介绍 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。
下面以最简单的流水灯控制功能即实现 8 个灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法 (1) 位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制 P1 口的每一个位输出高低电平,从而来控制相应灯的亮灭 程序如下: 0000H ; 单片机上电后从 O000H 地址执行 ; 跳转到主程序存放地址处 0030H : 设置主程序开始地址 : ,#60H ; 设置堆栈起始地址为 60H P1.0 ; P1.0 输出低电平,使 1 点亮 ; 调用延时子程序 P1.0; P1.0 输出高电平,使 1 熄灭 P1.1; P1.1 输出低电平,使 2 点亮 ; 调用延时子程序 P1.1 ; P1.1 输出高电平,使 2 熄灭 P1.2 ; P1.2 输出低电平,使 3 点亮 ;调用延时子程序 P1.2 ; P1.2 输出高电平,使 3 熄灭 P1.3 ; P1.3 输出低电平,使 4 点亮 ;调用延时子程序 P1.3 ; P1.3 输出高电平,使 4 熄灭 P1.4 ; P1.4 输出低电平,使 5 点亮 ;调用延时子程序 P1.4 ; P1.4 输出高电平,使 5 熄灭 P1.5 ; P1.5 输出低电平,使 6 点亮 ;调用延时子程序 P1.5 ; P1.5 输出高电平,使 6 熄灭 P1.6 ; P1.6 输出低电平,使 7 点亮 ;调用延时子程序 P1.6 ; P1.6 输出高电平,使 7 熄灭 P1.7 ; P1.7 输出低电平,使 8 点亮 ;调用延时子程序 P1.7; P1.7 输出高电平,使 8 熄灭 ; 调用延时子程序 ; 8 个流了一遍后返回到标号处再循环 : 延时子程序 ,#255 ;延时一段时间 : ,#255 ,8 , ; 子程序返回 ; 程序结束 (2) 循环移位法 在上个程序中我们是逐个控制 P1 端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采朋循环程序结构进行编程。
我们在程序一开始就给 P1 口送一个数,这个数本身就让 P1.0 先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1 口,这样就实现“流水”效果由于 8051 系列单片机的指令中只有对累加器中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到中,让其移动,然后将移动后的数据再转送到 P1 口,这样同样可以实现“流水”效果具体编程如下所示,程序结构确实简单了很多 0000H;单片机上电后从 O000H 地址执行 ;跳转到主程序放地址处 0030H;设置主程序开始地址 : ,#60H ;设置堆栈起始地址为 60H A, ;中先装入 1 亮的数据(二进制的 11111110) ,A ;将的数据送 P1 口 R0,#7 ;将数据再移动 7 次就完成一个 8 位流水过程 A;将中的数据左移一位 P1,A ;把移动过的数据送 P1 口显示 ;调用延时子程序 , ;没有移动够 7 次继续移动 ;移动完 7 次后跳到开始重来,以达到循环流动效果 : 延时子程序 M0V R0,#255; 延时一段时间 : R1.#255 ,$ R0 ;子程序返回 ;程序结束 (3) 查表法 上面的两个程序都是比较简单的流水灯程序, “流水”花样只能实现单一的“从左到右”流方式。
运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果我们首先把要显示流水花样的数据建在一个以为标号的数据表中,然后通过查表指令“ A, ”把数据取到累加器 A 中,然后再送到 P1 口进行显示具体源程序如下,标号处的数据表可以根据实现效果的要求任意修改 0000H ;单片机上电后从 0000H 地址执行 ;跳转到主程序存放地址处 0030H ;设置主程序开始地址 : ,#60H ;设置堆栈起始地址为 60H ,# ;流水花样表首地址送 : A ;累加器清零 A, ;取数据表中的值 A,#0,;检查流水结束标志 ;所有花样流完,则从头开始重复流 : P1,A ;将数据送到P1 口 ;调用延时子程序 ; 取数据表指针指向下一数据 ;继续查表取数据 : ;延时子程序 R0,#255 ;延时一段时间 D1: R1,#255 R1,$ R0,D1 ;子程序返回 ;下面是流水花样数据表,用户可据要求任意编写 11111110B ;二进制表示的流水花样数据,从低到高左移 11111101B 11111011B 11110111B 11101111B 11011111B 10111111B 01111111B 01111111B ;二进制表示的流水花样数据,从高到低右移 10111111B 11011111B 11101111B 11110111B 11111011B 11111101B 11111110B 0,0,0,0F7H ;十六进制表示的流水花样数据 0,0,0,7 7,0,0,0 0F7H,0,0,0 …… 0 ; 流水花样结束标志 0 ;程序结束 2、3、2 编程选择 要想能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果,所以我们选择查表法。
我们只要把要显示流水花样的数据建在一个以为标号的数据表中,然后通过查表指令“ A,”把数据取到累加器 A 中,然后再送到 P1 口进行显示即可 当程序编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到 89C51 单片机中,最后连接好电路通电,我们就看到 1~8 的“流水”效果了 参考文献 [1]康华光.电子技术基础数电部分(第四版) .北京:高等教育出版社,1998(7) [2]蔡明生.电子设计 .北京:高等教育出版社,2004(1) [3]李维.数字电路设计及实验 .大连:大连理工出版社,2008(9) [4]梁宗善.电子技术基础课程设计.武汉:华中理工大学出版社, 2009(5) [5]刘法治.常用电子元器件及典型芯片应用技术 .北京:机械工业出版社,2007(2) 。












