通过前面的文章我们对单片机有了一个初步的认识,但都是知识理论的东西,没有实际操作。那么本文就将介绍如何利用软件搭建硬件环境,如何编写程序,如何生成HEX文件,我将以一个项目的态度去对待每一个实验,逐步介绍完成一个项目该如何去做。现在就需要大家来动手操作了,我们目前需要两款电脑软件Proteus和Keil uVision5,希望大家准备好。

0. 分析产品设计需求

我们要做一个产品,首先要知道它要实现什么样的功能。那么我们来分析一下点亮LED灯的功能。

该实验功能:实现单LED灯亮。

硬件需求:单片机最小系统,LED小灯,330Ω电阻。

功能框图:

51单片机只点亮一个led灯代码(51单片机入门第2篇)(1)

点亮LED小灯实验功能框图

这就是一个简单的功能框图,我们在设计产品的时候最先就要确定产品功能,画出功能框图。

1. 搭建硬件环境

当我们确定了产品功能之后就可以开始搭建硬件环境,当然如果是在真实的开发环境中,这中间还有许多步骤。这里就不展开赘述了。

根据功能框图我们在Proteus中绘制出实验原理图,下面我向大家展示如何使用Proteus。

第一步:打开软件

51单片机只点亮一个led灯代码(51单片机入门第2篇)(2)

proteus软件界面图

第二步:新建项目

51单片机只点亮一个led灯代码(51单片机入门第2篇)(3)

点击新建项目按钮

51单片机只点亮一个led灯代码(51单片机入门第2篇)(4)

新建项目界面示意图

51单片机只点亮一个led灯代码(51单片机入门第2篇)(5)

我比较推荐的做法

我比较推荐每一个项目都单独建一个文件夹存放,并且要取一个有意义的名字,知道自己做的是什么项目,方便后期自己查看。修改好之后点击NEXT就出现了下面这个界面。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(6)

proteus原理图纸张选择

这里是选择原理图纸张大小,一般我们选择默认(DEFAULT)大小就可以了,如果有打印或者其他需求再根据要求去选择纸张打下,然后点击NEXT。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(7)

proteus选择绘制PCB界面

这里是选择是否创建PCB,因为我们只是做实验,就不用绘制PCB了,第一个选项就行,然后点击NEXT。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(8)

proteus选择是否创建固件项目

我们当前实验需要用到的固件在软件自带的库里面都有,所以不需要创建固件库,选择第一个选项,然后点击NEXT。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(9)

完成项目创建示意图

到这里就完成了一个项目的创建,看着这么多步骤,其实就是新建项目,然后给项目取个名字,然后再选择保存路径,然后一直点NEXT就可以了。这里点击Finsh完成项目创建。

那么就下来就是将我们需要用到的元器件放在原理图上。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(10)

我们需要把元器件放在原理图上

怎么放置元器件呢?容我一步一步的讲解。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(11)

proteus侧边栏简介

放置元器件我们需要点击第二个按钮,"元器件选择",将输入法调成英文状态,按‘P’,或者点击总线按钮右边的‘P’,就会弹出如下界面,将我们需要的元器件找到,首先搭建一个单片机最小系统。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(12)

元器件选择

我们如何去找一个元器件呢?首先我们需要知道我们要找的元器件的逻辑名字,比如单片机,我们选择的是atmel公司的AT89C51单片机,那么我们在左边的搜索栏里面输入AT89C51,就有如下的界面出现。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(13)

搜索AT89C51

点击右下角的OK按键即可完成放置,图上的OK键被我的水印挡了一点,大家实际操作了就知道在哪个位置了。完成放置后就是下面这样。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(14)

接下来按照这个方法去把单片机最小系统中所需的其他元件找到放好,如下图所示

51单片机只点亮一个led灯代码(51单片机入门第2篇)(15)

单片机最小系统搭建

值得注意的是,有一些元器件需要选择ACTIVE的,就是可活动的,比如机械按键,电解电容,以及后面会用到的LED小灯。接下来把用导线把把各个元器件按照最小系统的要求连接起来,并修改电容电阻的值,当然我推荐是在放置元器件的时候就将值只修改好,并将元器件的导线连接好,如下图所示。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(16)

完成连线的最小系统

接下来将我们的功能器件LED小灯连接在P1.0口上,如下图所示。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(17)

完成功能搭建

这里面用到的元器件的名字详细说一下。

C1,C2:瓷片电容,容值 30pF, CAP。

C3:电解电容, 容值22uF,CAP。在元器件库中选择如下图所示的元器件。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(18)

电解电容选择

BTN1 机械按键,BUTTON。

R1,电阻, 阻值 10KΩ,RES。

R2,组织 330Ω。

X1, 晶振,频率 12MHz,CRYSTAL.。

D1,红色LED小灯,LED。

直接在搜索框里搜索对应的英文名字就会出现相应的元器件。

这里需要注意的是LED其实就是一个二极管,它具有方向性,我们通过单片机去控制LED的亮灭是通过单片机的I/O口输出高低电平去控制,这里我们选择低电平电点亮。所以整个电流通路就是从电源流出,经过D1,经过R2在流向单片的I/O口。因为LED的单向导通性,所以,我们要将LED的正极连到电源(VCC)上。为什么要选择低电平导通呢,在后面的文章中会讲到。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(19)

proteus中的LED的正极表示

51单片机只点亮一个led灯代码(51单片机入门第2篇)(20)

LED小灯实物

LED的正极如何去区分呢?

在原理图中一般是如下图所示

51单片机只点亮一个led灯代码(51单片机入门第2篇)(21)

LED小灯原理图逻辑图

一般的原理图中都是这样绘制LED的,它的左边便是正极,表示电流可以流通,右边有一条竖线,表示电流不能从右边流至左边。

如果是拿到一个实物的LED小灯怎么去区分正负极呢?

我们可以看引脚的长短,较长的一般是正极。如果引脚一样长了,那我们可以通过万用表的蜂鸣档去测试,红表笔一般是正极,红表笔和黑表笔分别再接LED的两个脚上,LED亮,那么红表笔所在的脚脚就是正极。

2. 搭建软件环境

讲了如何搭建硬件,接下来就是如何去编写软件的问题了。

首先也是一样的,打开我们Keil Vision5。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(22)

工程按键

新建工程,这自然是必不可少的,点击Project按键,选择New Project,给自己的工程见一个文件夹,最好放在仿真文件放在一起。方便查看,然后点击保存。

然后就是选择驱动程序,我们用的AT89C51,所以直接在搜索框中输入AT89C51。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(23)

选择驱动

然后点击OK,接下来出现是否复制STARTUP.51这个文件,我一般选择是,先不管有什么用,他的用处我在后面会讲。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(24)

完成项目创建

到现在,这个工程就完成创建了,我们就可以开始编写程序了。

可能有部分读者装的软件不能选择驱动程序,这是因为版本可能装错了,如果出现这个问题不知道怎么解决可以关注私信我帮助解决。

到了这里,大家离实现编程就只差最后一步了,怎么去写程序呢,这有两方面的问题,第一,这个页面怎么添加编辑页面,第二,如何编写C语言程序。

对于第二个问题我会在下一篇文章中去将,现在我们就只解决如何去添加编辑页面。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(25)

新建编辑页面

选择好之后就会出现如下界面。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(26)

选择文件类型

我们要编写C语言程序,所以选择C File,并给这个文件去一个名字,我一般把它叫做‘main’然后点击Add。

那么我们就正式开始编写程序了,就有如下界面。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(27)

编写界面

点灯实验如何编写呢?直接给出代码。

#include <reg51.h> // 包含reg51.h头文件,其中包括51单片机的寄存器 void main() { while(1) // 无限循环,让系统一直运转。 { P1 = 0xfe; // 字节操作,直接给P1口赋值,让P1.0输出低电平。 } }

这是一种最简单的编写方式,利用字节操作,直接给I/O赋值。

有了代码,那么接下来就需要进行编译和链接,可以给单片机烧写的是.hex文件,这是一个十六进制的文件,还有二进制文件(.bin)也可以烧写,不过这里就不多做介绍了。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(28)

编译链接

点击编译按键,在软件界面的下面出现如下图所示的情况就可以点击链接。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(29)

无错误,无警告

这里需要注意的是,我们需要设置一下Options,如图所示。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(30)

设置Output

勾选创建HEX文件,完成设置,点击OK,再次编译链接。出现如下图所示即为成功。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(31)

创建hex文件

到此以及完成程序的编写了,我们来查看我们通过软件生成的.hex文件,它在我们创建工程文件下面的Objects文件夹下。知道这个有什么用呢?我们烧写程序的时候就是烧写的这个文件。接下来我将会介绍在仿真情况下如何烧写程序。

3. 烧写程序与软件仿真

在仿真软件下烧写程序并不难,将我们的仿真图打开,然后双击MCU(就是AT89C51),就会出如下图所示的界面。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(32)

双击AT89C51并选好hex文件

选好之后点击OK就可以开始仿真了。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(33)

仿真按键

在proteus软件的左下角有一排按键,点击仿真按键就会出现如下图所示的仿真效果。

51单片机只点亮一个led灯代码(51单片机入门第2篇)(34)

仿真效果

到此,我们的整个实验就完成了。通过软件一步一步的搭建硬件,编写软件,完成第一个点灯实验,硬件的点灯实验就像是软件的“hello, world!”一样重要,它是带我们入门最简单的例子。

今天我们先不管它是如何实现的,我们先一步一步的去搭建完成,把它弄亮,让我们有兴趣去尝试它。

下一篇文章我将回去介绍关于C语言的基础知识,以及对这个实验的延展,让我们可以做出更有趣的产品来。

写在最后

学习单片机,是一个有趣的过程,通过软件去控制硬件,让硬件去做我们想让他做的事情,我相信,今天是一个简单的LED灯,明天就是一排灯,各种复杂的硬件,做出有用的产品,通过这个过程去提高自己,关于软件上的问题可以随时私信我,帮助解决。

总结:做一个实验或产品我们需要经过几步,

第一步,确定功能,画出功能框图。

第二步,搭建硬件环境,调试硬件。

第三步,搭建软件环境,编写软件,调试软件。

第四步,软硬件联调。

第五步,完成实验或产品开发,撰写开发文档(如果是做实际产品,这个很重要)。

这便是我们作为开发的一个简单流程,当然我能力有限,有很多都没讲到,以后会慢慢补充的,敬请期待。

如果想要了解更多关于单片机的知识,关注我,持续更新,觉得我写的不错的可以点赞评论转发。

,