基于单片机的流水灯系统

合集下载

51单片机流水灯程序

51单片机流水灯程序

51单片机流水灯程序

51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。下面详细介绍51单片机流水灯程序的编写。

一、硬件连接

要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。具体连接方式如下:

•将LED灯的阳极通过限流电阻连接到VCC。

•将每个LED灯的阴极通过限流电阻连接到P1端口。

•将P2端口的每个引脚依次连接到每个LED灯的阴极。

二、程序实现

#include //包含51单片机头文件

#define LED P1 //定义LED为P1端口

#define ORDER P2 //定义顺序控制为P2端口

void delay(unsigned int t); //延时函数声明

void main()

{

unsigned char i;

while(1) //循环控制流水灯效果

{

for(i=0; i<8; i++) //控制8个LED灯

{

LED = 0x01<

delay(10000); //延时一段时间,使LED灯亮起后延时熄灭

LED = 0x01>>(i+1); //将第i个LED灯置灭

}

}

}

void delay(unsigned int t) //延时函数定义

{

unsigned int i, j;

for(i=0; i

{

for(j=0; j<1275; j++);

}

}

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

实验目的:

本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。

实验器材:

1)STC89C52单片机

2)最基本的LED灯

3)面包板

4)若干跳线

实验过程:

1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。

2.编写程序:按照题目要求编写所需程序。

3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。

程序详解:

1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。

2. 在程序中,我们通过P2口控制LED灯的亮灭状态。例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。

3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。

4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。

5. 整个程序比较简单,具体的代码实现可以参考以下程序:

#include <REG52.H>

#include <intrins.h>

#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();

五种编程方式实现流水灯的单片机C程序

五种编程方式实现流水灯的单片机C程序

五种编程方式实现流水灯的单片机

C 程序

//功能:

采用顺序结构实现的流水灯控制程序

/*此方式中采用的是字操作(也称为总线操作)*/

#include<reg

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数{while

(1){

P1=Oxfe;//点亮第1 个发光二极管,

delay

(200);//延时

P1=Oxfd;//点亮第2 个发光二极管,

delay

(200);//延时

P1=Oxfb;//点亮第3 个发光二极管delay

(200);//延时

P1=0xf7;〃点亮第4 个发光二极管delay

(200);//延时

P1=Oxef;//点亮第5 个发光二极管delay

(200);//延时

P1=Oxdf;//点亮第6 个发光二极管delay

(200);//延时

P1=Oxbf;//点亮第7 个发光二极管delay

(200);//延时

P1=0x7f; 〃点亮第8 个发光二极管delay

(200);//延时}}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i 控制空循环的外循环次数,共循环i*255 次

//返回值:无voiddelay(unsignedchari)//延时函数,无符号字符型变量i 为形式参数{unsignedcharj,k;〃定义无符号字符型变量j 和k

for(k=0;k<i;k++) 〃双重for 循环语句实现软件延时

for(j=0;j<255;j++);}//功能:

采用循环结构实现的流水灯控制程序

单片机流水灯实验报告

单片机流水灯实验报告

实验一流水灯实验报告

一、实验目的

1、熟练掌握JC-51A型开发板的使用方法和注意事项。

2、了解简单单片机应用系统的设计方法。

3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。

4、掌握应用USBISP烧录软件STC-ISP的操作方法。

5、掌握89C52RC单片机的流水灯操作过程。

二、实验内容

在JC-51A开发板上实现8个发光LED“流水”的现象,并通过编写程序控制流水现象。

三、实验主要仪器及软件

1,JC-51A开发板

2,一台电脑

3,STC-ISP-V479软件

4,KEIL软件

四、实验说明

当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出0111 1111时D1就会点亮。若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。

五、实验步骤

步骤一:把学习板连接到电脑上,把光盘安装到电脑里,注意电脑右下方显示的是COM几端口;

步骤二:打开光盘看到“4.程序烧写软件”字样并打开,安装PL-232驱动这个软件,并打开STC手动下载,找到STC_ISP_V479.exe并打开;

步骤三:打开看到一个界面,MCU type选择STC89C52RC,COM端口选择刚刚看到的几端口;

步骤四:点击open file,选择光盘里5.MINI-V22实例源程序,打开汇编参考样例,打开流水灯2,选择hex格式的文件,点击确定;

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告

实验目的:

通过编程实现单片机控制的流水灯电路的设计与实现,熟悉单片机的输入输出功能和简单的控制逻辑。

实验原理:

流水灯是一种常见的LED灯控制电路,通过依次点亮多个LED灯,从而形成“流水”的效果。单片机作为控制中心,根据程序设计的指令,通过I/0口控制LED灯的状态。

实验材料:

1. STM32F103C8T6 ARM Cortex-M3开发板

2. 杜邦线

3. LED灯

4. 220 Ω电阻

实验步骤:

1. 将STM32F103C8T6开发板与电脑连接,打开开发板软件。

2. 将LED灯分别连接到开发板的引脚PA0-PA7。

3. 在开发板软件中新建一个工程,选择合适的模板,例如“BlinkLed”模板。

4. 在程序中编写控制流水灯的代码,控制LED灯的点亮和熄灭。

5. 通过编译、下载和运行,将程序烧录到STM32F103C8T6开发板中。

6. 接通电源,观察LED灯的闪烁情况,确认流水灯控制电路的正常工作。

实验结果与分析:

经过实验,我们成功设计和实现了单片机控制的流水灯电路。LED灯按照预定的顺序依次点亮和熄灭,形成了流水灯的效果。调整程序中的控制逻辑,可以改变流水的速度和方向,实现不同的灯光效果。

实验总结:

通过这次实验,我们深入了解了单片机的输入输出功能和简单的控制逻辑。通过编写程序,实现了流水灯的控制,加深了对单片机的理解和应用。在实验过程中,我们还学会了使用开发板软件进行工程的创建、编译、下载和调试操作,提高了工程能力和实践能力。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告

引言:

单片机是一种集成电路,具有微处理器、存储器和输入输出设备等功能,被广泛应用于各个领域。流水灯是一种常见的实验项目,通过控制单片机的输出端口,使多个LED灯依次亮起,形成流动的效果。本实验旨在通过搭建流水灯电路,了解单片机的基本原理和操作方法。

实验目的:

1. 掌握单片机的基本工作原理;

2. 学习使用单片机控制LED灯的亮灭;

3. 熟悉流水灯电路的搭建和控制。

实验器材:

1. 单片机开发板;

2. LED灯若干;

3. 连线电缆。

实验步骤:

1. 将单片机开发板连接至电源,并接通电源开关;

2. 将LED灯连接至单片机的输出端口,确保极性正确;

3. 打开单片机开发板上的编程软件,编写流水灯控制程序;

4. 将编写好的程序下载至单片机开发板;

5. 按下开发板上的复位按钮,观察LED灯是否依次亮起。

实验结果:

经过实验,我们成功搭建了单片机流水灯电路,并通过编写程序实现了流水灯的效果。当按下复位按钮后,第一个LED灯亮起,随后依次是第二个、第三个……最后一个LED灯亮起,然后再从第一个开始循环。整个过程形成了一个流动的效果。

实验分析:

通过本次实验,我们深入了解了单片机的基本工作原理。单片机通过控制输出端口的电平状态,来控制外部设备的亮灭。在流水灯实验中,我们通过改变输出端口的状态,实现了LED灯的顺序亮灭。

同时,本次实验也让我们学会了使用单片机开发板上的编程软件。通过编写程序,我们可以灵活控制单片机的输出端口,实现各种不同的功能。在流水灯实验中,我们编写的程序控制了LED灯的亮灭顺序,形成了流动的效果。

单片机流水灯实验原理

单片机流水灯实验原理

单片机流水灯实验原理

单片机流水灯实验原理:

流水灯是一种基本的电子实验,通过使用单片机控制多个

LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。流水

灯实验原理如下:

1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单

片机的不同输出引脚上。每个 LED 灯的阴极与电流限制电阻

连接到负极(GND),而阳极连接到单片机的 IO 引脚。需要

注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。

2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设

置相应的输出引脚作为流水灯的控制引脚。通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。

3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。可以使用一个循环来实

现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。

4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。

通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。

基于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`超过了数组的长度,将其重置为0

9.结束循环

```

在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。通过不断更新`i`的值,我们可以实现灯光模式的循环播放。

单片机流水灯程序

单片机流水灯程序

单片机流水灯程序

流水灯是一种简单而常见的电子技术实验项目,也是学习

掌握单片机编程的基本操作之一。本文将介绍如何使用C语

言编写单片机流水灯程序,并通过Markdown文本格式输出。硬件准备

在开始编写流水灯程序之前,我们需要准备以下硬件设备:

1.单片机开发板(如:Arduino、STM32等)

2.LED灯(可根据自己的需求选择,一般使用红色、

黄色、绿色等常见颜色的LED灯即可)

3.杜邦线(用于连接单片机和LED灯)

程序编写

引入头文件

首先,我们需要引入相应的头文件,以便使用单片机相关

的功能库和定义常量。

#include

定义引脚

接下来,我们需要定义引脚,将LED灯的接口与开发板的引脚连接起来。

#define LED_PIN_1 2

#define LED_PIN_2 3

#define LED_PIN_3 4

#define DELAY_TIME 500

在这个例子中,我们使用了3个LED灯,分别连接到开发板的2、3、4号引脚。DELAY_TIME用于控制每个灯亮起的时间间隔,单位是毫秒。

初始化引脚

在进入主程序之前,我们需要对引脚进行初始化,设置引脚的输出模式。

void setup() {

pinMode(LED_PIN_1, OUTPUT);

pinMode(LED_PIN_2, OUTPUT);

pinMode(LED_PIN_3, OUTPUT);

}

主程序

接下来就是我们的主程序部分,我们可以使用循环语句来实现LED灯的流水效果。

void loop() {

digitalWrite(LED_PIN_1, HIGH);

单片机的应用流水灯PPT

单片机的应用流水灯PPT
测试流水灯的反应速度、稳定 性等性能指标,确保其在实际 应用中能够正常工作。
04
单片机流水灯的应用案例
广告牌显示
广告牌显示
单片机流水灯在广告牌显示中 应用广泛,通过控制LED灯的 亮灭和闪烁,可以展示动态的 广告内容,吸引人们的注意力 。
动态效果
利用单片机编程控制LED灯的 亮灭顺序和时间间隔,可以实 现多种动态效果,如渐变、闪 烁、滚动等,增加广告的视觉 冲击力。
网络化控制
总结词
通过物联网技术,实现单片机流水灯的网络化控制。
详细描述
通过与物联网技术的结合,单片机流水灯可以与手机、电脑等设备进行连接, 用户可以通过远程控制来开关灯、调整亮度和颜色等,实现智能家居的便捷控 制。
人性化设计
总结词
注重用户体验,实现单片机流水灯的人性化设计。
详细描述
在设计和制造单片机流水灯时,应充分考虑用户的需求和习惯,如可定制的亮度 和颜色、节能环保、易于安装和使用等,以提高用户的使用体验和满意度。
动态节奏
根据音乐节奏或演出进程,单片机 流水灯可以编程实现动态的灯光效 果,增强舞台的表现力。
交通信号灯控制
交通信号灯控制
安全可靠
单片机流水灯可以用于交通信号灯的 控制,通过编程控制LED灯的亮灭顺 序和时间间隔,实现交通信号的指示 和调度。
单片机流水灯具有高稳定性和可靠性, 能够保证交通信号灯在各种环境下的 正常运行,提高交通安全性。

单片机花样流水灯设计实验报告

单片机花样流水灯设计实验报告

**大学

物理学院

单片机花样流水灯设计实验

课题:花样流水灯设计

班级: 物理 ***

姓名: ***

学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。

制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。

本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。

关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况

单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。

2. Protues仿真软件简介

Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告

引言

单片机是一种集成电路,可以通过编程来控制不同的功能。其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。

实验原理

流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。

实验步骤

1. 硬件准备

将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片

机的引脚连接到各个 LED 灯。我们需要将一个引脚连接到方向控

制信号,用于控制灯的点亮方向。同时,我们还需要连接一个电

位器,用于调节流水灯的速度。

2. 程序设计

使用 Arduino 开发环境来编写 AVR 单片机的程序。首先需要

包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。然后,

我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的

输出状态。同时,还需要定义一个变量“dir”,来表示流水灯的方向。

在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。

另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实

现流水灯的闪烁效果。

3. 程序烧录

使用 AVR ISP 编程器将编写好的程序烧录到单片机中。在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。

51单片机流水灯实验报告

51单片机流水灯实验报告

51单片机流水灯实验报告

一、实验目的

1.熟悉51单片机的硬件资源

2.掌握51单片机的I/O口编程

3.掌握51单片机的定时器/计数器编程

二、实验原理

流水灯是一种简单的电子设计,通过依次点亮和熄灭多个LED灯来形成流水灯的效果。本实验使用的是51单片机,它有40个I/O口和3个定时器/计数器,可以方便地实现流水灯的效果。

三、实验器材

1.51单片机开发板

B数据线

3.LED灯若干

4.面包板

5.连线材料(公对公、公对母杜邦线)

四、实验过程

1.准备工作:

a.将51单片机开发板和LED灯连接起来,将LED灯依次插在面包板上,并与51单片机的I/O口相连接。

b.连接电脑与51开发板,使用USB数据线将它们连接起来。

2.编写程序:

a. 打开Keil开发环境,新建一个工程。

b.在C代码文件中编写流水灯的控制程序,并引用51单片机的头文件和IO口控制相关的函数。

代码示例:

```c

#include <reg51.h>

sbit LED1 = P1^0;

sbit LED2 = P1^1;

sbit LED3 = P1^2;

sbit LED4 = P1^3;

sbit LED5 = P1^4;

void delay(unsigned int t)

while(t--)

for(unsigned int i = 0; i < 125; i++);

}

void mai

while(1)

LED1=0;//点亮LED1

delay(1000); // 延时

LED1=1;//熄灭LED1

LED2=0;//点亮LED2

delay(1000); // 延时

基于51单片机的流水灯实训报告.doc

基于51单片机的流水灯实训报告.doc

基于51单片机的流水灯实训报告.doc

一、实训背景

基于51单片机的流水灯是单片机学习的基础实训之一,它需要我们掌握单片机的IO 口输入输出、定时器的应用以及编程能力等知识点。通过设计与搭建流水灯电路,可以提高学生的实际操作能力,培养学生的动手能力与创新能力,同时也为后续的单片机项目实践打下基础。

二、实训设备

1. 51单片机

2. LED灯

3. 数字万用表

4. 面包板

5. 杜邦线等。

三、实训步骤

1. 搭建电路。

将LED灯连接在P1口上,采用共阴极的接法,多个LED灯共用一个负极,正极逐个连接。连接好之后,选择不同的端口进行实验,一般可以选择P1口,也可以根据需要选择其他IO口。

2. 编写程序。

根据流水灯的原理,我们可以采用定时器的方式来实现。程序的基本思路是通过不断计时,在每个时间段内依次点亮LED灯,从而实现灯的流动效果。具体实现代码如下:

```

#include<reg52.h>

#define FREQ_OSC 12000000UL // 定义晶振频率

typedef unsigned char u8; //定义无符号字符型

u8 code LedCode[]={0xEF,0xDF,0xBF,0x7F,0xBF,0xDF,0xEF,0xFF};

u8 k = 0;

void Delay10ms(u8 t) //延迟函数 10us

{

u8 i;

while(t--)

{

for(i=0; i<169; i++);

}

}

// 定时器中断函数

void Timer0() interrupt 1

单片机控制流水灯

单片机控制流水灯
单片机控制流水灯
汇报人:
202X-12-20
CONTENTS 目录
• 引言 • 流水灯硬件设计 • 单片机程序设计 • 流水灯控制实现 • 性能优化与改进方案 • 总结与展望
CHAPTER 01
引言
主题介绍
单片机控制流水灯
通过单片机控制LED灯的亮灭顺 序,实现流水灯效果。
流水灯的应用
流水灯在各种场合都有应用,如 广告牌、舞台灯光、家居装饰等 。
电源管理优化
采用高效的电源管理方案,降 低流水灯的能耗。
制定改进方案
根据性能指标评估结果,制定 相应的改进方案。
软件优化
对控制程序进行优化,提高流 水灯的响应速度和稳定性。
测试与验证
对改进后的流水灯进行测试和 验证,确保性能提升满足要求 。
CHAPTER 06
总结与展望
项目成果总结
实现了单片机对LED灯的 精确控制
硬件连接
将单片机与LED灯连接,通过GPIO口控制LED灯的亮灭。
控制逻辑
通过编写程序控制单片机GPIO口的输出,实现LED灯的顺序亮 灭,形成流水灯效果。
延时控制
通过程序延时控制LED灯亮灭的时间间隔,实现流水灯的速度变 化。
控制程序编写及调试
编程语言
01
使用C语言或汇编语言编写单片机程序。
程序结构
在连接LED灯和单片机时,要确 保电源和信号的正确连接,以免 出现故障。

单片机应用-流水灯设计

单片机应用-流水灯设计

使用移位运算符和循环程序结构编程,实现流水灯。
源自文库
左移位运算符: <<
若 a: 11111110
执行:a<<1; //左移一位
高位移出
1 11111100 低位补0
右移位运算符: <<
若 b: 01111111
执行:b>>1; //右移一位
高位补0
00111111 1 低位移出
程序设计思路
a=0x80;
任务3-1 流水灯设计
一、任务导入
任务要求
使用单片机控制8个发光二极管按顺序点亮 。 将8个发光二极管连接到51单片机的P1口,用C语言编程来控制 单片机的并行I/O端口,显示流水灯效果。
硬件电路
向P1口写入一个8位二进 制数来改变每个引脚的输出电 平状态,从而控制8个发光二 极管的亮灭。
二、程序设计
//设初值,a:10000000
a>>=1;
//右移一位运算,a:01000000
P1=~a;
//a取反后,赋值10111111到P1
void main()
//主函数
{ unsigned char a,i; //定义字符变量aa,i
while(1)
{
//开始循环程序段
a =0x80;
//给变量a赋值0x80,即10000000
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1.系统方案选 (x)

1.1 设计要求 (x)

1.2 方案选择 (x)

2 系统的硬件设计与实现 (x)

2.1芯片介绍 (x)

2.2 电源 (x)

2.3 时钟 (x)

2.4 I/O线 (x)

2.5 晶振电路 (x)

2.6 LED电路 (x)

2.7按键电路 (x)

3 系统的软件设计 (x)

3.1 程序流程图 (x)

3.2 程序设计 (x)

3.3 仿真电路图 (x)

3.3.1仿真电路初始化图 (x)

3.3.2 仿真结果(设计实现的功能) (x)

3.3.3 结论 (x)

4.设计心得与体会 (x)

5.参考文献 (x)

【摘要】:若干个灯泡有规律依次点亮或者依次熄灭叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。一般情况下单片机的流水灯由若干个LED发光二极管组成,在单片机系统运行时,可以在不同的状态下让流水灯显示不同的组合,作为单片机运行正常的指示,当单片机系统出现故障时,可以利用流水灯显示当前的故障码,对故障做出诊断。

本设计采用一块单片机(AT89C52.BUS)作为流水灯系统的控制核心,通过编程来实现单片机I/O口对LED的控制,使流水灯显示上下流动、停止流动、闪灯等功能,并由按键控制流水灯的不同亮法,LED的工作方式通过键盘的扫描实现。其中的LED采取共阳极接法,通过依次向连接的LED的I/O口送出低电平来实现LED的点亮。

【关键词】:流水灯按键控制单片机

1、方案:

1.1设计要求:

以单片机为核心,设计一个节日彩灯控制器:

P1.2—开始,按此键则灯开始流动(由上而下)。

P1.3—停止,按此键则停止流动,所有灯为暗。

P1.4—上,按此键则灯由上向下流动。

P1.5—下,按此键则灯由下向上流动。

1.2方案选择:

根据题目的要求,控制模块需要选择单片机作为核心控件,可以选择的单片机有AT89C51、AT89C52还有各自的总线型号的,而对于按键,可以选择BUTTON,当然用SWITCH来代替也是可以实现的;显示模块的LED发光二极管也有很多颜色可以供选择如红色、蓝色、绿色等。

考虑到题目的要求与电路图布线的问题,经过仔细的分析和论证,最终的方案如下:单片机:AT89C52.BUS、按键:BUTTON

发光二极管:LED-RED。

系统的基本框图1.2.1所示,单片机主要用于对流水灯模块(发光二极管)的控制,实现流水灯从上往下流、停止、由下往上流、闪烁的功能,而按键模块控制单片机I/O口的输出电平,间接地控制流水灯模块。

图1.2.1 系统基本框图

工作过程:系统开始工作后,按下按键1(由上往下),流水灯模块上循环的显示由上往下流动,放开按键,停止流动;按下按键2,流水灯模块循环的显示由下往上流动,放开按键,流动停止;按下按键3,流水灯模块循环的显示交错闪烁,放开按键,闪烁停止;按下按键4,流水灯模块循环的由上往下全部点亮,全部点亮时,一下子全灭,再由下往上全部点亮;无论按下哪个键,只要再按下按键5,循环停止直到松开按键5为止。

2、系统的硬件设计与实现

2.1芯片介绍

按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等AT89C52单片机是美国ATMEL 公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:8kB 闪存、256BRAM 、32根I/O 口线、3个16位定时/计数器、6个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V 的电压工作范围和0~24MHz 工作频率,使用AT89C52单片机时无须外扩存储器因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机.

从图2.1.1中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口和P2.0~P2.7口的其他15个LED 的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED16依次点亮、熄灭,16只LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

单片机 AT89C52

按键模块

流水灯模块(发光二 极管)

图2.1.1 硬件电路图

2.2电源

VCC - 芯片电源,接+5V。VSS - 接地端。用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。

2.3时钟

XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

2.4 I/O线

89C52共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总)。

2.5晶振电路

对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒(往往用低电压以求低功耗)的系统。这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡。在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易。在振荡回路中,晶体既不能过激励(容易振到高次谐波上)也不能欠激励(不容易起振)。晶体的选择至少必须考虑:谐振频点,负载电容,激励功率,温度特性,长期稳定性。

相关文档
最新文档