【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)

【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)

前言

大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁

主要内容含:

一.点亮LED灯1.新建一个工程&存放工程的文件夹

打开软件Keil如图所示设置一个KeilProject文件夹,shift+ctrl+n新建三个文件夹,对应我们这次要做的三个实验(LED点亮&LED闪烁&LED流水灯)

如下图所示步骤操作

点击保存后,会出现【单片机器件选择界面】黄框里面是各种公司的名字,由于我们是STC,所以软件中没有出现,但我们可以选用Atmel公司的AT89c52,功能都相同找到AT89C52后,点击OK

随后它会询问我们是否添加启动文件,我们一般是不需要改动启动文件的,这里选择否

工程建立完毕

添加C语言文件

一般用C语言,C++语言效率会慢一些,汇编语言更加底层命名一个main文件

创建文件成功,右边是程序编辑框2.熟悉编译和建立文件项目的操作

在左上角有三个选项,分别代表【编译】,【建立工程】,【所有工程编译建立】一般选择第二个即可

点击【建立工程后】

3.LED发光二极管介绍

发光二极管:只有正极接正极,负极接负极才有电流通过 如何区分LED的正负极?

电极:小的是正极,大的是负极;引脚:长的是正极,短的是负极(长正短负)

4.开发板图查询

可以进入该传送门,下载对应资料:传送门

下载解压后得到文件如下图所示

找到对应的LED模块

5.单片机的进制转换问题

在单片机中: 一般都是把 二进制 转换成 十六进制 原因:比较好看出来,十六进制事实上是二进制的一种简写0x是一个前缀,代表后面的是十六进制数

6.单片机控制硬件(单片机)的原理

CPU通过配置控制的寄存器P2(0/1)来控制硬件电路(高低电平),(PS:该过程还要经过驱动器驱动)如下图所示:我们给P20置0,对应低电平,LED低接低高接高,第一个D1LED灯亮,其余不亮

相对应的代码设置会出现如下,于是我们要利用进制转换来解决这个问题

经过进制转换后,代码变化如下:

7.添加头文件让编译器识别寄存器P2

针对如下代码,编译后会报错

我们只要包含头文件就可以解决这个问题,右键编辑栏即可

包含头文件成功

头文件展开后我们可以发现,头文件中定义了P2寄存器的地址

8.将代码下载到单片机中

因为Keil默认不生成程序下载的文件,所以需要我们点击下图所示图标生成

再次点击编译则生成下载程序文件

打开软件STC-SIP选择单片机型号

插上单片机后,串口号会出现带USB的字样,直接选择就行

点击“打开程序文件”,选择文件夹中的下载程序文件

程序打开完毕后,点击“下载”

重新打开单片机开关

再次点击开关,点亮成功

二.LED闪烁(1s为周期)1.用循环让二极管能够反复接收到信号

在明白点亮LED灯的操作后,我们引入“循环”的概念;每一次while循环,二极管都会接到一次信号;我们如下所示设计代码,会发现由于循环发生的频率太快,人眼无法捕捉到亮灭,只能一直看到微弱灯光;形成一种视觉暂停效应

解决方法:我们要让他每次执行后,都要有一定的延时;2.利用STC-ISP的软件延时计算器

如下图所示得到延时子程序

复制粘贴到程序中

添加_nop函数的头文件

3.完整代码(重复第二大点中,写入开发板的过程)

写入过程参考第二大点所示,略

三.LED流水灯

大体操作和第四步的LED闪烁项目一致,主要区别是代码区别先写出二进制下的状态,再转换成十六进制代码:

相关文章

《百词斩》已斩单词查看方法
365bet足球外围网站

《百词斩》已斩单词查看方法

📅 11-21 👀 6680