【51单片机】点亮第一个LED灯(含创建文件等基础操作)

51单片机现在不仅是电子信息专业学生的必修课,也是进入嵌入式领域的踏脚石。

本系列将会按照江科大的视频进行,也算是相当于一个笔记,进行巩固

实现第一个LED灯的点亮其实并不复杂,重要的是有一些准备工作比较繁琐,就像我们第一次打印HELLO WORLD,创建文件和头文件,最后保存到哪个位置,对于初学者都比较繁琐,本文将会带着大家一步一步进行操作

目录

注意:

需要的软件:可以自己在B站观看江科大的视频进行安装,遇到困难了可以私信我,尽力帮助

--------------------------分割线-------------------------------

预备工作:

  1. 打开keil5进行创建文件:
  2. 之后会让你选一个保存的位置,默认是文档,但我们要自己创建一个新的文件夹,专门用来存储代码

下图是默认:

这是我自己用来存储的文件夹: (可以看到路径是在E盘的一个keilProject文件下) git 是用来进行代码托管的,有或没有都不影响,可以不用关注这个文件夹。

我们在选定的盘创建完keilproject文件夹后要再创建一个文件夹,防止存储的东西比较散乱,名字可以叫点亮一个LED灯,然后点进这个文件

进行文件名的命名,点击保存

------------

最后要再在弹出的这个界面搜索at89c52,因为keil5是外国软件,对于中国的板子stc89c52并不友好,但是这两个板子功能是一致的,点击OK后会有一个弹窗,我们点击

  1. 创建C语言文件

选择C语言实现,

最后点击Add,预备工作就大工告成。以后的博客就会省略这一步。

--------------------------分割线-------------------------------

元件介绍:

进行编程要先了解LED的资料

发光二极管发光的条件是正接正,负接负

我们看到板子中LED的原理图,那8个电阻是限流电阻 ,防止LED被烧坏,此时我们要让LED发光将8 个引脚进行高低电平的控制 就可以操纵亮灭,

单片机的高低电平叫做TTL电平0V为低,5V为高 ,我们发现,原理图的左侧已经接上Vcc,那我们此时将8个引脚 设置为需要的高低电平就可以控制,那我们应该如何控制高低电平呢?

这是单片机如何控制硬件设备的示意图(下图)(驱动器是用来增大电流以便操纵硬件),我们操纵CPU,CPU操纵寄存器,寄存器输出高低电平进行控制硬件 (LED灯),而这个寄存器就是P2,也就是我们需要控制P2

P2是8个孔,我们的LED也是8个,就可以很好的匹配,

我们在P2中1代表逻辑高电平,0相反

我们在P2中写入1,那么对应的输出就是5V

接下来就可以写代码了

--------------------------分割线-------------------------------

代码实现:

先来看代码,在来进一步解释。

假设我们这里实现点亮1个LED灯

c 复制代码
#include <REGX52.H>

void main()
{
	P2 = 0xfe;//1111 1110
	while(1)
	{
		
	}
}

我们在写C语言是需要include,编写单片机当然也需要,我们单击左键 ,会有一个insert<REGX52.H>(存放各种类似P2的寄存器的接口),我们点击就可以引用这个头文件了

关于P2 = 0xfe,我们说要用高低电平来控制,那么P2 = 1111 1110就可以,但这样单片机会识别为10 进制,所以我们要用16 进制来代替1111 1110,即为P2 = 0xfe(0x是代表这一串数字是16进制,方便识别,fe的大小写不重要)。

写好了后我们需要点击图中魔法棒

-------------勾选creat,点击OK

在左上角点击第二个,会生成.hex文件,我们在待会要用到

然后打开STC软件(记住要先连接电脑与单片机),进行配置

--------接着

进入到你写程序时创建的文件,点击Objects,进入点击

此时按单片机两次开关就可以点亮你的第一个LED灯啦

成品展示:

本系列会持续更新下去,有问题及时找博主哦

相关推荐
爱编码的小八嘎23 分钟前
第1章 程序点滴-1.3 正确的入门方法(3)
c语言
浅念-2 小时前
C++ :类和对象(4)
c语言·开发语言·c++·经验分享·笔记·学习·算法
道法自然|~2 小时前
BugkuCTF栅栏密码解题记录(原理+C语言实现)
c语言·开发语言
csg11073 小时前
PIC单片机进阶实战(六):4-20mA/0-5V/0-10V数据采集
单片机·嵌入式硬件·物联网
码农三叔4 小时前
《卷2:人形机器人的环境感知与多模态融合》
人工智能·嵌入式硬件·算法·机器人·人形机器人
Heart of Dream4 小时前
[STM32 HAL源码解析] 为什么中断里要判断挂起寄存器?为什么非要用回调函数?
单片机·嵌入式硬件
liwulin05065 小时前
【ESP32-S3】WINDOWS+VMware+ROS2+YDLIDA X2导航初步调试
windows·stm32·单片机
二年级程序员6 小时前
单链表算法题思路详解(上)
c语言·数据结构·c++·算法
麦德泽特7 小时前
构建统一的机器人武器与伤害感应接口:I²C总线与PWM地址分配的巧妙结合
c语言·开发语言·机器人
小乔的编程内容分享站7 小时前
C语言笔记一维&二维数组
c语言·笔记