目录

一,硬件设计

二,软件设计

三,综合测试


一,硬件设计

        大多数学习51单片机的同学都会先完成一个流水灯的入门小程序设计。

         流水灯就是一组灯,然后在控制系统的控制下按照设定的顺序和时间来发亮和熄灭,这样就能形成一定的视觉效果,很多街上的店面和招牌上面就安了流水灯,使看上去更加的美观。

        首先,先介绍一下流水灯的原理图,如下图所示:

protues仿真流水灯 proteus流水灯元件_综合测试

        

        通过对上图的观察可知,流水灯主要是由三部分模块组成:     


protues仿真流水灯 proteus流水灯元件_protues仿真流水灯_02

电阻

protues仿真流水灯 proteus流水灯元件_protues仿真流水灯_03

LED灯

protues仿真流水灯 proteus流水灯元件_综合测试_04

51单片机芯片

 

        其中, 51单片机芯片主要用于对电路中的控制,LED灯接在了单片机的P1口,发光二极管旁边接的电阻主要是用来保护电路的。由原理图可以知道,我们可以看到LED的左边接了电源(高电平),在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。而要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,以此类推,这样就实现流水灯了。

二,软件设计

        理解原理后我们就需要通过代码来实现51单片机对LED灯的控制。

#include<reg52.h>
void Delay(int xms);

void main()
{
	char i;
	while(1){
        //LED灯自上而下亮
		for(i=0;i<8;i++)
		{
			P1=~(0x01 << i);
			Delay(100);
		}
        //LED灯自下而上亮
		for(i=0;i<8;i++)
		{
			P1=~(0x80 >> i);
			Delay(100);
		}
	}
}

void Delay(int xms)		//xms控制函数循环次数,一次延时1ms
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

 

三,综合测试

        代码写好之后,我们就需要测试效果了,首先我们必须知道一个概念,计算机是只识别二进制代码的,我们对电脑的所有操作和命令,最终都会变成很多0101010101001011010111,然后计算机就能看懂是什么意思,并作出反应,我们的单片机其实也相当于一台计算机,它也只认识0和1,但是我们刚刚软件设计写的代码是C语言写的,所以需要将它转换成计算机可以识别的代码。点击下图中的魔法棒,

protues仿真流水灯 proteus流水灯元件_综合测试_05

在弹出来的窗中选择Ouput 那一栏,勾选 Create HEX File 那一栏,最后点击OK就好了。

protues仿真流水灯 proteus流水灯元件_proteus_06

 

最后将写好的代码进行运行,出现下面方框中的内容就说明HEX文件创建成功,最后将生成的HEX文件插入51单片机芯片中去,就可以实现咱们的流水灯了。

protues仿真流水灯 proteus流水灯元件_综合测试_07

 

将HEX文件插入芯片中:在51芯片的属性里的 Program File 中选择我们刚才生成的HEX文件,最后点击确定就可以了。

protues仿真流水灯 proteus流水灯元件_综合测试_08

 

最后,再附上运行结果:


                    流水灯