51单片机入门教程(2):实现流水灯

目录

1、 硬件设计

2、 软件设计

3、综合调试

4、小结


1、 硬件设计

首先,介绍下流水灯的原理,下图为我们这个工程的原理图。其中主要包括51单片机芯片和流水灯模块,流水灯模块接在了单片机的P1口,200欧电阻是用来保护电路的。由原理图可以知道,我们可以看到LED的左边接了电源(高电平),在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,以此类推,8只LED变回一亮一暗的做流水灯了。

 大家可以打开Proteus新建一个名为LED的工程,然后照着我的硬件图进行连接,需要用到的元器如下图,大家可以在元件库(点击P按钮进入元件库,上一章讲过的)里面搜索。

2、 软件设计

硬件设计好了之后,我们就可以根据硬件连接来写代码了,也就是我们的软件设计环节。

首先我们要新建一个工程,打开Keil新建一个名为LED的工程,在下面的代码复制到main.c里。新建工程上一章详细讲过了,不知道怎么建工程的同学见第二章。我的代码将下面的代码复制到工程里,再进行初步编译,看看代码是否会报错。

#include <reg51.h> 
#include <intrins.h>
void delay(unsigned char i)
{
	unsigned char m,n;
	for(m=i;m>0;m--)
	for(n=200;n>0;n--);
}

void main()
{	unsigned char k;
	while(1)
	{
			P1=0xfe;
		 for(k=0;k<8;k++)
		{		
				delay(500);
				P1=_crol_(P1,1);		
		}	
	}	
}

我们可以看到,初步编译之后,编译窗口显示0错误0警告,说明我们的代码在语法上是正确的,软件设计部分就基本完成了,最后我们怎么把软件和硬件结合起来呢?

3、综合调试

在综合调试部分,我将教大家如何把代码烧录到硬件里,最后实现我们的流水灯效果。

首先我们必须知道一个概念,计算机是只认识0和1的,我们对电脑的所有操作和命令,最终都会变成很多0101010101001011010111,然后计算机就能看懂是什么意思,并作出反应,我们的单片机其实也是一台计算机,它也只认识0和1,但是我们刚刚软件设计写的代码是C语言写的,只有我们人能看懂,所以要怎么做才能把C语言转换为0和1的二进制语言呢,其实很简单,我们只需进行一个设置即可,跟我一起操作吧。

首先点击Keil主界面的这个魔法棒。

这个魔法棒很重要,里面有很多重要的设置,大家可以多摸索摸索,可以看到我们的2步骤是Create HEX File,翻译一下就是创建HEX文件,HEX文件其实就是机器代码,也就是计算机可以识别的文件了。

HEX文件:如何大家百度一下会发现HEX是十六进制的含义,那么刚刚不是说计算机只能识别二进制吗,为什么这里是十六进制。其实导入到单片机的是二进制文件,之所以要变为HEX文件,是因为HEX文件带校验,在传输、存储过程中有错误的话,容易提前发现,而二进制文件就不能,假如在存储中由于某一位或几位数受损,那么下载时照样按受损的文件导入到单片机。但最后烧录时HEX文件首先变成二进制数,再烧录进入单片机。

设置了之后我们再进行编译,这个时候就不需要全编译了,因为之前全编译过一次,现在进行部分编译即可,因为如果是很长的代码全编译一次很费时间,部分编译只会编译我们刚刚被修改过的设置和代码)

我们可以去流水灯工程的路径下找到这个HEX文件,用记事本打开给大家看看里面是什么。

这就是我们刚刚C语言的代码被转换成了计算机所能识别的文件了,虽然我们看不懂HEX文件的含义,但在计算机眼里,这就是让他做流水灯的指令。

下面我们来把这个文件放到单片机里面,也就是到了我们最后的环节了——烧录代码。首先打开Proteus,前面硬件部分已经连接好了。

进入编辑界面,我们在Program File里找到我们刚刚生成的hex文件

  现在我们的HEX文件已经烧录到单片机当中,我们只需要点击运行就可以看到仿真的现象了。

下面就是最后实现的流水灯效果(动态依次点亮),大家做出来了吗。

4、小结

在这个流水灯的实现教程中,我是以工程的形式展现出来的。原因在于我想让大家从入门开始就建立起工程的意识,从硬件设计再到软件设计,最后我们进行综合调试,把工程实现。包括在这章里面,我讲了很多细节的知识,比如全编译和部分编译的使用、HEX文件等,这都是在实际工程中经过自己的理解总结出来的,相信大家学习到这里,已经基本掌握了这两个软件的使用,对于刚入门51单片机,我们可以使用这两个软件做很多有意思的工程,下一章我会教大家如何如何用数码管显示自己的学号。

物联沃分享整理
物联沃-IOTWORD物联网 » 51单片机入门教程(2):实现流水灯

发表评论