点亮LED灯
新建一个工程
首先,打开keil,我们会看到一个空白页面。
这个时候需要我们新建一个工程,点击上方菜单栏的Project,选择 New uVersion Project
这个时候需要我们选择工程地址,为了方便学习,我建议在桌面建立一个Keil Project的文件夹,在里面存放我们的工程。建立工程之前,需要提前创建工程文件夹,不然我们的工程文件会散落在Keil Project的文件夹里。创建文件夹的快捷键:Ctrl+shift+n或者鼠标右键->w->f
这里我建立的工程名字叫做Light_led
接下来需要我们选择固件库,来生成工程所需的底层文件(这样的说法有些不太准确,不过可以先这样理解),我目前用到的开发板是ST89C51,是国产的开发板,而keil对我们国家的产品不太友好,我们不能直接找到对应的Decice。
我们需要选择Legacy Device Database [no RTE],他的意思是传统设备数据库
我们找到Atmel(较旧版本keil在这个文件夹下)或者Microchip(新版本的keil在这个文件夹下),选择AT89C51
接下来会询问我们是否赋值启动文件在工程内,一般启动文件我们不需要修改,所以选择是,这个时候我们会看到如下页面
Target 1就是keil软件帮助我们生成的启动文件,接下来我们需要建立主函数文件。在Source Group 1文件夹处右键建立新的项目
建立一个C语言文件,命名为main.c
我们写如下C语言代码,然后编译,会看到下方0 Error(s),0 Warning(s)
这里分享一下调整字体的小方法:按住Ctrl,同时鼠标滚轮滚动,可以调节字体大小,或者在设置里面选择 “字体和颜色”,选择“C编辑器”,然后来改变字体大小
这样我们就完成了一个工程的建立,每次建立工程都可以按照这种方式。后续再来学习写代码的技巧。
LED简介
Light Emitting Diode,发光二极管,可以用于照明、广告灯、指引灯、屏幕
直插式LED
一般长脚为正极,短脚为负极
贴片或者板载LED
如下图,板子上已经有了Led,在板子的原理图中可以看到它的电路以及对应的管脚口。
点亮LED灯
现在来说说如何点亮LED。我用的开发板是淘宝上购买的STC89C52单片机实验板,实验板上已经外接了各种模块。从客服那里我要到了该实验板的原理图,在原理图中我们找到LED模块,就可以看到它的电路。原理图会在文末上传。
VCC代表5V电压,是MCU(以后就管单片机叫MCU)内置的电源。图中的电阻471代表47×10110^1101,即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,显然不符合要求。
我们也知道,四位二进制数是可以转换为一位十六进制数,为了简单表示,我们仅用两位十六进制数来表示我们的数据。
在数字前面加上0x,就可以将它强制转换为十六进制。二进制11110000相当于十六进制FE,这样代码就可以写成这样:
P2 = 0xFE
头文件
上面的代码写好后,显然是不能直接运行的,因为keil是不认识P2这个变量的,我们需要加入头文件来让keil认识这些管脚口的名字。在main.c最上面加上:
#include<REGX52.H>
这个头文件我们之前提到过,里面是对芯片的基础配置,我们可以打开它看看:
在这里我们可以看到,头文件内对P2进行了地址配置,具体原理先不用了解,我们只需要知道,导入头文件后,我们就可以对管脚口进行操控和配置了。
这样看来,我们的程序是没有问题的啦,现在编译,是不会报错的。
下载(烧录)程序
**我们需要在keil里面设置自动生成HEX烧录文件,不然我们程序无法下载到板子里。**HEX程序最终会生成在Object文件夹内,是编译后的程序,可以直接被板子读取。
打开软件STC-ISP软件,选择MCU型号:STC89C52, 插上实验板,电脑会自动识别串口号(这里一定要看我之前发的博客,提到了CH340的下载,下载后才能被电脑识别)。点击打开程序,选择我们的HEX文件,就可以了。
现象
我们可以看到第一个led灯亮了,而其他led都灭了。
原理图文件
链接:https://pan.baidu.com/s/1KNwZTbMCql8GgxdCFtteJA?pwd=g831
提取码:g831
–来自百度网盘超级会员V2的分享
有问题请朋友们在评论区留言讨论,我看到后会及时回复!!
感谢阅读!