1、硬件设计
首先,介绍下流水灯的原理,下图为我们这个工程的原理图。其中主要包括51单片机芯片和流水灯模块,流水灯模块接在了单片机的P1口,200欧电阻是用来保护电路的。由原理图可以知道,我们可以看到LED的左边接了电源(高电平),在P2口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P2口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,以此类推,8只LED变回一亮一暗的做流水灯了。
2、软件设计
硬件完成后就可以进行软件设计
我们可以先打开Keil新建一个名为LED的工程,在下面的代码复制到main.c里。
#include "led.h"
#include "reg51.h"
#include "Delay.h"
//这里定义LED八个灯的引角
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
void style_1() //代码第一种运行名称
{
//16进制使LCD灯亮哪个,可进行自己更改
P2=0xFE;
Delay(200);
P2=0xFD;
Delay(200);
P2=0xFB;
Delay(200);
P2=0xF7;
Delay(200);
P2=0xEF;
Delay(200);
P2=0xDF;
Delay(200);
P2=0xBF;
Delay(200);
P2=0x7F;
Delay(200);
}
//第二种流水灯形式,和上方一样
void style_2()
{
P2=0x7F;
Delay(200);
P2=0xBF;
Delay(200);
P2=0xDF;
Delay(200);
P2=0xEF;
Delay(200);
P2=0xF7;
Delay(200);
P2=0xFB;
Delay(200);
P2=0xFD;
Delay(200);
P2=0xFE;
Delay(200);
}
然后我这里是分了模块的,我们还要把其他模块给添加上,不然会导致报错
延时函数的代码添加如下
#include "Delay.h"
#include "intrins.h"
//
void Delay(unsigned int a)
{
unsigned char i, j;
for(a;a>0;a--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
还要合并添加延时函数的.h文件,代码如下
#ifndef _DELAY_H
#define _DELAY_H
void Delay(unsigned int a);
#endif
LED文件的.h函数,如下
#ifndef _LED_H
#define _LED_H
void style_1();
void style_2();
void style_3();
#endif
最后将这个.c文件添上合并即可运行函数
#include "reg51.h"
#include "led.h"
void main()
{
while (1)
{
style_1();
style_2();
style_3();
}
}
3、综合调试测验
当我们硬件设计和代码都已经完成了之后我们就可以将代码录进我们设计好的硬件里,实现简单的控制LCD流水灯。
要使用代码我们需要把hex文件给勾选出来
然后将程序录进我们开始弄的硬件工程
可以看到我们的程序录用进去之后,它就随着我们设计的软件的方式跳动起来,当然也可以更改一些函数使它的跳动顺序不一,按自己的方式来进行操控。
4、小结
在这个流水灯的实现教程中,我是以工程的形式展现出来的。原因在于我想让大家从入门开始就建立起工程的意识,从硬件设计再到软件设计,最后我们进行综合调试,把工程实现。最后我是小白,讲的不清楚,见谅见谅