最新基于单片机的流水灯系统设计与实现

合集下载

基于51单片机的流水灯设计

基于51单片机的流水灯设计

基于51单片机的流水灯设计51单片机是一种常用的微控制器,它具有高性价比、易于编程和广泛的应用范围。

流水灯是一种常见的电子灯光装置,它通过类似于瀑布般的效果,逐个点亮一系列的灯。

本文将介绍基于51单片机的流水灯的设计。

流水灯的设计过程可以分为硬件设计和软件设计两个步骤。

硬件设计:在硬件设计方面,我们需要准备以下器件和材料:1.51单片机开发板2.杜邦线3.LED灯4.电阻接下来,根据流水灯的设计思路,将多个LED灯连接在一起,形成一个线性的灯带。

为了控制LED灯的亮灭,我们需要使用51单片机的GPIO 口来提供高低电平信号。

通过改变GPIO口的输出信号,我们可以实现各个LED灯的顺序点亮和熄灭。

软件设计:在软件设计方面,我们需要使用到汇编或C语言来编写控制程序。

以下是一个简单的流水灯程序的伪代码:```1.初始化51单片机的GPIO口方向,设置为输出模式2. 定义一个存储灯光模式的数组,比如`light_pattern[] = {0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01}`3.定义一个循环计数器`i`4.进入无限循环5. 通过将`light_pattern[i]`的值写入GPIO口,控制LED灯的亮灭6.延时一定时间(比如几百毫秒)7.更新循环计数器`i`8.如果`i`超过了数组的长度,将其重置为09.结束循环```在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。

通过不断更新`i`的值,我们可以实现灯光模式的循环播放。

总结:。

基于51单片机流水灯毕业设计

基于51单片机流水灯毕业设计

基于51单片机的流水灯毕业设计方案:一、引言流水灯是一种常见的电子设计项目,适合初学者练习和毕业设计。

通过使用51单片机和少量外围元件,可以实现一个简单而有趣的流水灯效果。

本文将介绍基于51单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。

二、硬件设计1. 材料准备:51单片机(如STC89C52)、LED灯若干(建议4-8个)、电阻、面包板、连线等。

2. 连接方式:将LED灯按顺序连接到51单片机的IO口,每个LED 灯通过一个电阻连接到IO口,确保电流限制。

3. 电源供应:连接电源至电路板,保证正常工作电压和电流。

三、软件设计1. 编程环境:使用Keil C51等集成开发环境进行程序编写。

2. 程序设计:设计一个循环移位的程序,控制51单片机的IO口依次点亮LED灯,形成流水灯效果。

3. 定时控制:通过定时器中断或延时函数控制LED灯的亮灭时间,实现流水灯的效果。

四、效果展示1. 烧录程序:将编写好的程序烧录到51单片机中。

2. 调试测试:连接电路并通电,观察LED灯按顺序点亮并流动的效果。

3. 优化改进:根据实际效果调整程序和硬件设计,优化流水灯的效果和稳定性。

五、注意事项1. 电路连接:确保电路连接正确,避免短路或接反现象。

2. 程序设计:合理设计程序逻辑,确保LED灯的流水效果符合预期。

3. 调试测试:在调试过程中注意观察LED灯的亮暗情况,及时发现问题并进行调整。

六、总结基于51单片机的流水灯设计是一个适合初学者和毕业设计的简单而有趣的项目,通过设计和实现可以提升对单片机编程和电路连接的理解和技能。

希望通过本文的介绍,读者能够顺利完成基于51单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。

2.掌握单片机电路原理图。

3.掌握单片机C语言软件开发以及试验箱使用。

二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。

四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。

4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。

4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。

五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。

课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。

基于51单片机的流水灯设计

基于51单片机的流水灯设计

基于51单片机的流水灯设计一.基本功能利用AT89c51作为主控器组成一个LED流水灯系统,实现8个LED 灯的左、右循环显示。

二.硬件设计图1.总设计图1.单片机最小系统1.1选用AT89C51的引脚功能图2. AT89C51XTAL1:单芯片系统时钟的反向放大器输入端。

XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。

RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。

P3:端口3是具有内部提升电路的双向I/O端口,通过控制各个端口的高低电平了实现LED流水灯的控制。

1.2复位电路如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。

图3.复位电路1.3时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。

此电路采用12MHz的石英晶体。

图4.时钟电路2.流水灯部分图5.流水灯电路三.软件设计3.1编程语言及编程软件的选择本设计选择C语言作为编程语言。

C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。

而汇编语言使用起来并没有这么方便。

本设计选用了Keil作为编程软件,.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

流水灯控制系统设计(单片机)

流水灯控制系统设计(单片机)

实验报告单实验名称:流水灯控制系统设计实验项目:实验目的:1. 理解单片机系统软硬件开发的过程,单片机基本的I/O控制方法。

2. 掌握51单片机的汇编指令。

3. 掌握Proteus硬件仿真软件的使用及技巧。

4. 掌握Keil uVision程序开发软件的使用技巧。

实验器材:安装了Keil uVision5和Proteus的电脑;实验原理:通过更改P2口8位的高低电平,分别控制8个Led灯的亮灭。

单片机流水灯的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。

使用rl或rr a实现位的转换。

然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置操作。

具体的亮灭情况如下表:要实现“流水灯”效果,也就是需要将P2口的输出值发生以下变化:FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE ..... 可以使用一个循环,不断对数据进行移位运算实现。

这里的移位指令采用RL和RR,即不带进位的位移运算指令。

如果使用带进位的位移运算指令(RLC 和RRC),则需要定期把cy置0,否则会出现同时亮起两个发光二极管的情况。

实验步骤:1.在仿真系统Proteus中实现电路原理图设计;新建设计文档、设置工作环境、选择并放置元器件、对原理图进行布线、原理图的电器规则检查、调整、保存和输出报表等。

2.源代码的设计与生成目标代码;在Keil uVision5平台进行C语言和汇编语言源代码的输入、编译与调试,并生成可执行文件.hex。

C语言存储为.c文件,汇编语言存储为.asm文件。

3.调试与仿真在Proteus中将可执行文件.hex加载到单片机中,对系统进行虚拟仿真。

基于单片机的流水灯系统设计与实现.doc

基于单片机的流水灯系统设计与实现.doc

基于单片机的流水灯系统设计与实现. .摘要本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。

本系统就是充分利用了G2452芯片的I/O引脚。

系统以采用MSP430系列单片机G2452为中心器件来设计花样LED流水灯系统,通过按键实现8个LED灯不同花样式的闪烁。

关键词:流水灯;单片机;按键;闪烁word教育资料目录1 项目要求32 项目分析和系统设计33 硬件设计33.1单片机选型模块33.2 LED流水灯模块33.3功能模式选择模块34 软件设计34.1主程序34.2子程序35 系统调试35.1硬件调试35.2程序调试35.3联合调试36 外延37 项目演练38 项目总结3附录1电路设计原理图(参考)3附录2 PCB设计原理图(参考)3附录3 关键程序(参考)3基于单片机的流水灯系统设计与实现1 项目要求本项目花样流水灯采用MSP430单片机为控制器件,用于各方面的装饰,此花样流水灯有8个LED灯,六种花样灯光效果。

(1)初始化后,执行8个LED灯从右至左逐次点亮,每隔0.2s亮一个LED灯,直到8个LED灯全亮,再从左至右依次熄灭直到全灭,以此循环;(2)当按下按键后,执行8个LED灯从右至左每隔0.2s 逐一亮灭,直到点亮最左边一个灯后再从左至右每隔0.2s逐一亮灭,以此循环;2 项目分析和系统设计本系统分为硬件和软件模块。

硬件上我们打算在单片机的不同的i/o中装上一个流水灯来进行对流水灯进行控制。

在程序方面,首先对msp430的i/o口进行的定义和设置,然后在去定义了一个delay进行延时功能,在用一个switch循环来使得流水灯不断的循环亮灭。

花样流水灯采用MSP430单片机为控制器件,用于各方面的装饰,此花样流水灯有8个LED灯,两种花样灯光效果。

3 硬件设计本系统采用MSP430单片机为控制核心进行设计,该流水灯系统共可分为两个模块:单片机选型模块和LED流水灯模块。

单片机原理流水灯实验

单片机原理流水灯实验

单片机原理流水灯实验单片机原理流水灯实验是一种十分基础的单片机实验,在学习单片机的初级阶段非常重要。

流水灯可以通过多个灯依次亮起,再逐个熄灭,形成灯光流动的效果。

下面将详细介绍单片机原理流水灯实验的步骤和实现原理。

首先,我们需要准备的材料和工具有:1. 单片机主板:例如STC89C52RC型号。

2. LED灯:我们需要7个LED灯,可以选择不同颜色和尺寸的。

3. 面包板:用于连接电路。

4. 连接线:用于连接单片机主板和面包板以及连接LED灯。

接下来,我们开始进行单片机原理流水灯实验的步骤:第一步:连接电路1. 将7个LED灯连接到面包板上,按照流水灯的顺序连接,可以使用杜邦线连接。

2. 在面包板上连接7个电流限制电阻,以保护LED灯,限制电流的大小根据具体LED灯的要求确定。

3. 将面包板的VCC和GND引线分别连接到单片机主板的VCC和GND引脚上。

第二步:编写程序1. 打开Keil C51编译器,新建一个项目。

2. 编写C语言程序,实现流水灯的效果,代码如下:c#include <reg52.h>声明I/O口函数void delay(unsigned int t);void ledFlow(void);程序入口void main(void){主循环while (1){LED流水灯效果ledFlow();}}延时函数void delay(unsigned int t)unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}LED流水灯效果函数void ledFlow(void){unsigned int i;unsigned char flowData = 0x01;for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData <<= 1; 左移一位}delay(500); 延时500msflowData = 0x80; 数据复位for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData >>= 1; 右移一位}delay(500); 延时500ms}第三步:烧录程序1. 将单片机主板连接到电脑上,并打开STC-ISP烧录软件。

实训报告单片机流水灯

实训报告单片机流水灯

一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。

2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。

3. 提高动手实践能力,培养团队协作精神。

二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。

2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。

三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。

实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。

四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。

2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。

3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。

(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。

(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。

(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。

4. 编译程序,生成HEX文件。

5. 将生成的HEX文件导入Proteus软件,运行仿真实验。

6. 观察实验现象,检查LED灯的流水灯效果是否正常。

五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。

2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。

实验过程中,可以调整定时器的定时时间,改变流水灯的速度。

六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。

2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。

3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。

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

摘要本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。

本系统就是充分利用了G2452芯片的I/O引脚。

系统以采用MSP430系列单片机G2452为中心器件来设计花样LED流水灯系统,通过按键实现8个LED灯不同花样式的闪烁。

关键词:流水灯;单片机;按键;闪烁目录1 项目要求 (3)2 项目分析和系统设计 (3)3 硬件设计 (3)3.1单片机选型模块 (3)3.2 LED流水灯模块 (4)3.3功能模式选择模块 (5)4 软件设计 (6)4.1主程序 (6)4.2子程序 (7)5 系统调试 (8)5.1硬件调试 (8)5.2程序调试 (8)5.3联合调试 (9)6 外延 (11)7 项目演练 (14)8项目总结 (14)附录1电路设计原理图(参考) (15)附录2 PCB设计原理图(参考) (15)附录3 关键程序(参考) (16)基于单片机的流水灯系统设计与实现1 项目要求本项目花样流水灯采用MSP430单片机为控制器件,用于各方面的装饰,此花样流水灯有8个LED灯,六种花样灯光效果。

(1)初始化后,执行8个LED灯从右至左逐次点亮,每隔0.2s亮一个LED 灯,直到8个LED灯全亮,再从左至右依次熄灭直到全灭,以此循环;(2)当按下按键后,执行8个LED灯从右至左每隔0.2s逐一亮灭,直到点亮最左边一个灯后再从左至右每隔0.2s逐一亮灭,以此循环;2 项目分析和系统设计本系统分为硬件和软件模块。

硬件上我们打算在单片机的不同的i/o中装上一个流水灯来进行对流水灯进行控制。

在程序方面,首先对msp430的i/o口进行的定义和设置,然后在去定义了一个delay进行延时功能,在用一个switch循环来使得流水灯不断的循环亮灭。

花样流水灯采用MSP430单片机为控制器件,用于各方面的装饰,此花样流水灯有8个LED灯,两种花样灯光效果。

3 硬件设计本系统采用MSP430单片机为控制核心进行设计,该流水灯系统共可分为两个模块:单片机选型模块和LED流水灯模块。

Power MCUMSP430G2553LED花样流水灯图1 系统框图3.1单片机选型模块MSP430单片机是16位的单片机,采用了精简指令集(RISC)结构,只有简洁的27条内核指令,大量的指令则是模拟指令;众多的寄存器以及片内数据存储器都可参加多种运算。

这些内核指令均为单周期指令,功能强,运行的速度快。

图2单片机选型模块3.2 LED流水灯模块要实现流水灯功能,我们只要将发光二极管LED1~LED8 依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

且每一个LED灯于一个电阻串联。

电阻的作用就是对通过LED灯的电流进行一定的限制起到去LED灯进行的保护作用。

使得其在高电压的时候使得LED在电阻的保护下不会烧坏。

此图为共阴极接法,因此当LED_RED给高电平“1”时LED_RED亮;当LED_RED 给低电平“0”时,LED_RED灭。

图3 LED流水灯模块图如图3可知此原理图的LED灯为共阴极的接法,因此我们只要给它一个高电平就能点亮此LED灯。

3.3功能模式选择模块此设计有6种功能模式可以选择:(1)初始化后,执行8个LED灯从右至左逐次点亮,每隔0.2s亮一个LED 灯,直到8个LED灯全亮,再从左至右依次熄灭直到全灭,以此循环;(2)当按下按键后,执行8个LED灯从右至左每隔0.2s逐一亮灭,直到点亮最左边一个灯后再从左至右每隔0.2s逐一亮灭,以此循环;功能(1):○○○○○○○●○○○○○○●●○○○○○●●●○○○○●●●●○○○○○○●●○○○●●●●●○○○○○●●●○○●●●●●●○○○○●●●●○●●●●●●●○○○●●●●●○○●●●●●●○●●●●●●●●●●●●●●●功能(2):○○○○○○○●○○○○○○●○○○○○○●○○○○○○●○○○○○○○○○●○○○○●○○○○○○○○○●○○○○●○○○○○○○○○●○○○○●○○○○○○○○○●○○○○○○●○○○○○○●○○○○○○●○○○○○○○图4 流水灯的功能示意图4 软件设计4.1主程序本系统整体工作主要由单片机程序控制实现,其工作过程为:对端口进行初始化,在主程序中用不同的端口定义分别来点亮流水灯。

再用switch语句来对不同的LED灯进行不同类型的流水灯效果。

在用延时程序来实现每一个LED的亮灭。

程序整体框架如下图5所示。

开始端口初始化主程序点亮LED延时程序返回开始开始使LED灯右移一位熄灭最右边LED灯是否熄灭使被点亮的LED灯右移一位延时延时4.2子程序一个完整的程序是由一个主程序和若干个子程序组成。

在一个加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。

主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。

本系统中所使用的子程序都是比较简单的,用for语句实现循环之后再使用延时函数进行延时。

子函数的功能流程图如下:功能1流程图:功能2流程图:图6 功能程序流程框架图使LED灯左移一位点亮8个LED灯是否全灭延时使被点亮的LED灯左移一位8个LED灯是否全亮延时最左边LED灯是否点亮亮5 系统调试本单片机的流水灯系统的设计分为硬件电路设计和软件设计两个部分,因此调试也分成两部分进行调试。

5.1硬件调试主要根据系统框图和硬件原理设计进行原理的绘制、各参数的设置、电路板的制作,以及元器件的焊接等。

具体如下:5.1.1 各单元电路,确认各单元电路链接无误,尤其是关键元器件,一定要接保护电阻。

(1)选择合适规格的元器件,在放置期间前一定要检查规格;(2)关键器件放置:在器件布置方面与其它逻辑电路一样,应把相互有关的器件尽量放靠近些,这样可以减少材料,更加美观。

5.1.2 PCB设计原则:在进行PCB设计时,必须遵守PCB设计的一般原则,并应符合要实现的效果设计的要求。

(1)尽量采用印制电路板,印制电路板不像万用板一样会有一定的接触不好或者焊盘不稳和线路连接有问题的情况,印制电路板的制作可防止产生地电位差和元件之间的耦合。

(2)元件面和焊接面应采用相互垂直、斜交、或者弯曲走线,避免相互平导线尽量短,使用45°或者圆弧折线布线,不要使用90°折线,以减小高频信号的发射。

5.2程序调试在本系统中,主要分为主程序部分、中断程序、子程序等。

在调试过程中,按照程序功能一项项进行调试,首先确认主程序正确,在确认其他程序。

调试方法主要跟踪调试、断点调试等等,可以参考相关专业书籍。

5.1.1 CCSV5的打开步骤(1)右键Code Composer Studio v5快捷方式,左键打开。

会出现如图6所示界面:图6 Code Composer Studio v5软件加载界面(2)加载完毕之后会有如图7所示界面出现:图7 Code Composer Studio v5软件打开界面(3)选择Project->Import Existing CCS Eclipse Project,导入程序文件夹中的工程;具体操作如图8:图8 Code Composer Studio v5程序导入步骤图5.3联合调试整个系统的软硬件都完成后,需要进行联合调试,主要是针对系统设定的功能能否完成和完善进行调试。

调试步骤:(1) 将PC和硬件电路通过USB线相连;(2) 选择对该工程进行编译链接,生成.out文件。

然后选择,将程序下载到实验板中。

程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3查看具体函数。

也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。

再按下实验板的复位键,运行程序。

(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)图 9 联合调试效果图6 外延花样流水灯的流水方式各式各样,因此我们在以上功能基础上,还能将程序稍作修改,使之有如下花样流水效果。

(1)在以上功能下,当再次按下此按键后,执行8个LED灯从中间2个开始每隔0.2s向左右两边依次点亮,直到8个LED灯全亮,再由两边开始灭,直到全灭以此循环;(2)第三次按下此按键之后,执行与上次相反的效果,以此循环;(3)第四次按下此按键之后,8个LED灯同时闪烁,时间间隔为0.1s;(4)第五次按下按键之后,依次执行前面五个程序的效果,以此循环。

以上花样流水灯的流水功能如图10,功能(4)是前面几种功能集中的效果。

功能(1):○○○○○○○○○○○●●○○○○○●●●●○○○●●●●●●○○○○●●○○○○○●●●●○○○●●●●●●○●●●●●●●●功能(2):●○○○○○○●●●○○○○●●●●●○○●●●●●●●●●●●○○○○○○○○●○○○○○○●●●○○○○●●●●●○○●●●功能(3):●●●●●●●●○○○○○○○○8个LED 灯是否全灭开始LED4左移i 位 LED3右移i 位LED4左移i 位 LED3右移i 位 延时 延时8个LED 灯是否全亮图10 流水灯的功能示意图功能1流程图: 功能2流程图:开始BIT1左移i 位 BIT8 右移i 位8个LED 灯是否全灭 延时点亮LED 3和LED 4BIT 1左移i 位 BIT 8 右移i 位 8个LED 灯是否全亮 亮点亮LED 1和LED 8延时功能3流程图:7 项目演练对于本设计,尚可以进一步进行如下设计:(1)设计一个心形呼吸流水灯设计思路如下:运用MSP430g2553单片机(28PIN、TSSOP封装)、74HC573锁存器(20PIN、SOIC封装)、TLV117稳压组成。

主要原理是利用430单片机产生PWM信号,通过573的使能控制一定数量的LED产生同节奏的“呼吸”效果。

通过对产生PWM信号的寄存器的设置,可以得到程度不同的“呼吸”效果。

(2)如今大多数电子产品都是触碰式按键,可以把流水灯的按键设计成触摸式,实现商品现代化;8项目总结基于单片机的流水灯系统设计与实现,充分运用了LED灯通过MSP430单片机为控制核心,多个中断程序控制其亮灭,来实现多样化的亮灭样式,从而使单一的LED灯变得多元化。

主要利用的知识点有中断操作、单片机原理知识等,并利用C语言编程,最后制作出一个完善的作品,该作品再经过一定的功能完善和外观制作,符合现代化商场和各市场的装饰,更有利于推广。

附录1电路设计原理图(参考)附录2 PCB设计原理图(参考)附录3 关键程序(参考)功能(1)子程序:void effect1(){int i,j;for(i=0;i<=8;i++){P2OUT |= (1<<i); // 1左移i位delay_ms(200); //延时200MS }for(j=0;j<8;j++){ // 0x80右移j位P2OUT &=~ (0x80>>j);delay_ms(200); //延时200MS }}功能(2)子程序:void effect2(){int i,j;for(i=0;i<8;i++){P2OUT = (1<<i); // 1左移i位delay_ms(200); //延时200MS}for(j=0;j<=8;j++){P2OUT = (0x80>>j); // 0x80右移j位delay_ms(200); //延时200MS}}主程序:void main(void){WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗Clock_init(); //时钟设置子程序IO_init(); //IO口子程序//_EINT();__enable_interrupt(); // 中断控制开启while(1){switch(a){case 1: effect1();break; //a==1 执行效果1case 2: effect2();break; //a==2 执行效果2case 3: effect3();break; //a==3 执行效果3case 4: effect4();break; //a==4 执行效果4case 5: effect5();break; //a==5 执行效果5case 6: effect6();break; //a==6 执行效果6default : P2OUT &=~ 0XFF;break; //a为其他结果时 P2口清零 }}}#pragma vector=PORT1_VECTOR__interrupt void Port_1(void){//判断P1.3按键是否按下if(!(P1IN&BIT3)){delay_ms(100); //延时消抖if(!(P1IN&BIT3)){a++;}if(a==7){a=0;}}P1IFG&=~(BIT3); //消除中断标志}外延功能(1)子程序:void effect3(){int i,j;for(i=0;i<=4;i++){P2OUT |= (BIT4<<i)+(BIT3>>i); //BIT4左移i位 BIT3 右移i位delay_ms(200); //延时200MS}for(j=0;j<=4;j++){P2OUT &=~ ((0x01<<j)+(0x80>>j)); //0x01 左移j位 0x50右移j位delay_ms(200); //延时200MS}}外延功能(2)子程序:void effect4(){int i,j;for(i=0;i<=4;i++){P2OUT |= (0x01<<i)+(0x80>>i); //0x01 右移i位 0x80 右移 i位delay_ms(200); //延时200MS}for(j=0;j<=4;j++){P2OUT &=~ ((0x10<<j)+(0x08>>j)); //0x10 左移j位 0x08右移j位delay_ms(200); //延时200MS}}外延功能(3)子程序:void effect5(){int i;for(i=0;i<8;i++){P2OUT ^= 0XFF; //状态反转delay_ms(100); //延时100MS}}外延功能(4)子程序:void effect6(){effect1();effect2();effect3();effect4();effect5();}int a=0;仪器设备检测、维护保养情况记录表。

相关文档
最新文档