点亮LED灯

新建一个工程

首先,打开keil,我们会看到一个空白页面。

image.png

这个时候需要我们新建一个工程,点击上方菜单栏的Project,选择 New uVersion Project

image.png

这个时候需要我们选择工程地址,为了方便学习,我建议在桌面建立一个Keil Project的文件夹,在里面存放我们的工程。建立工程之前,需要提前创建工程文件夹,不然我们的工程文件会散落在Keil Project的文件夹里。创建文件夹的快捷键:Ctrl+shift+n或者鼠标右键->w->f

这里我建立的工程名字叫做Light_led

image.png

接下来需要我们选择固件库,来生成工程所需的底层文件(这样的说法有些不太准确,不过可以先这样理解),我目前用到的开发板是ST89C51,是国产的开发板,而keil对我们国家的产品不太友好,我们不能直接找到对应的Decice。

我们需要选择Legacy Device Database [no RTE],他的意思是传统设备数据库

我们找到Atmel(较旧版本keil在这个文件夹下)或者Microchip(新版本的keil在这个文件夹下),选择AT89C51

image.png

接下来会询问我们是否赋值启动文件在工程内,一般启动文件我们不需要修改,所以选择,这个时候我们会看到如下页面

image.png

Target 1就是keil软件帮助我们生成的启动文件,接下来我们需要建立主函数文件。在Source Group 1文件夹处右键建立新的项目

image.png

建立一个C语言文件,命名为main.c

image.png

我们写如下C语言代码,然后编译,会看到下方0 Error(s),0 Warning(s)

image.png

这里分享一下调整字体的小方法:按住Ctrl,同时鼠标滚轮滚动,可以调节字体大小,或者在设置里面选择 “字体和颜色”,选择“C编辑器”,然后来改变字体大小

这样我们就完成了一个工程的建立,每次建立工程都可以按照这种方式。后续再来学习写代码的技巧。

LED简介

Light Emitting Diode,发光二极管,可以用于照明、广告灯、指引灯、屏幕

直插式LED

一般长脚为正极,短脚为负极

image.png

贴片或者板载LED

如下图,板子上已经有了Led,在板子的原理图中可以看到它的电路以及对应的管脚口。

image.png

点亮LED灯

现在来说说如何点亮LED。我用的开发板是淘宝上购买的STC89C52单片机实验板,实验板上已经外接了各种模块。从客服那里我要到了该实验板的原理图,在原理图中我们找到LED模块,就可以看到它的电路。原理图会在文末上传。

image.png

VCC代表5V电压,是MCU(以后就管单片机叫MCU)内置的电源。图中的电阻471代表47×1 0 1 10^110 

1 ,即470omh(欧姆),电阻的表示法以此类推。

我们可以看出,P20到P27共8个接口都接着LED灯,我们控制这八个接口的高低电平输出,就可以控制灯的亮灭。P2是这一系列寄存器组的代号,它有八位,分别命名为P20~P27.

说人话,如果我们的管脚口比如P20输出低电平,那么它就和VCC,470omh电阻以及我们的LED灯形成通路,灯就会亮;如果我们输出高电平,那么它的电压和VCC是一样的,电路没有通,灯就不会灭。

而我们可以通过代码来控制一大堆寄存器,寄存器内保存的数据,就是我们管脚口的输出情况。

尝试写代码

假如我们要让P20亮,其它灭,我们需要给P20低电平,即置0,其它管脚口置1。我们说过MCU的管脚口可以用二进制数来表示,那么代码就可以这样写,意思很明了,就是P20赋值0,P21~P27赋值1:

P2 = 1111 1110

但是我们C语言一般是识别十进制的,这段代码会被认为是一个十进制的数据赋值给P2,显然不符合要求。

我们也知道,四位二进制数是可以转换为一位十六进制数,为了简单表示,我们仅用两位十六进制数来表示我们的数据。

image.png

在数字前面加上0x,就可以将它强制转换为十六进制。二进制11110000相当于十六进制FE,这样代码就可以写成这样:

P2 = 0xFE

头文件

上面的代码写好后,显然是不能直接运行的,因为keil是不认识P2这个变量的,我们需要加入头文件来让keil认识这些管脚口的名字。在main.c最上面加上:

#include<REGX52.H>

这个头文件我们之前提到过,里面是对芯片的基础配置,我们可以打开它看看:

image.png

在这里我们可以看到,头文件内对P2进行了地址配置,具体原理先不用了解,我们只需要知道,导入头文件后,我们就可以对管脚口进行操控和配置了。

image.png

这样看来,我们的程序是没有问题的啦,现在编译,是不会报错的。

下载(烧录)程序

**我们需要在keil里面设置自动生成HEX烧录文件,不然我们程序无法下载到板子里。**HEX程序最终会生成在Object文件夹内,是编译后的程序,可以直接被板子读取。

image.png

打开软件STC-ISP软件,选择MCU型号:STC89C52, 插上实验板,电脑会自动识别串口号(这里一定要看我之前发的博客,提到了CH340的下载,下载后才能被电脑识别)。点击打开程序,选择我们的HEX文件,就可以了。

image.png

image.png

现象

我们可以看到第一个led灯亮了,而其他led都灭了。

image.png

原理图文件

链接:https://pan.baidu.com/s/1KNwZTbMCql8GgxdCFtteJA?pwd=g831

提取码:g831

–来自百度网盘超级会员V2的分享

有问题请朋友们在评论区留言讨论,我看到后会及时回复!!

感谢阅读!

————————————————

版权声明:本文为CSDN博主「孤心亦暖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Destiny_Di/article/details/126716031