一、玩51单片机之LED灯篇

1、点亮一个LED灯

首先我们可以先了解一下LED灯的构造,以及正负极是如何区分的,如下图:

接下来就来点亮LED灯

首先我们打开keil5软件,创建一个新工程

然后我们最好在桌面创建一个文件夹,方便使用

因为keil5不支持stc89c52,但At89c52的使用与stc89c52大致相同,所以选中

后面可能会出现这个弹窗,但直接点否即可

之后我们便可以创建工程来写我们的程序了,这里我们用C语言来编写我们的程序

后面我们就可以在我们的.c文件中来编写一个主程序,下面0 error,0 warning ,即表示没有错误也没警告。

在正式编写程序前我们来了解一下LED灯的结构图,LED灯又称发光二极管,单向导电性。右边VCC为电源正极(提供5V电压),GND为电源负极,左边的P2口由CPU通过控制P2寄存器来控制P2的引脚电频,由TTL来规范电频,高电频为5V,低电频为0V。

上图右边有8个电阻,来防止电流过大导致LED烧毁,开发板一般在旁边标了电阻的大小,如下:

前二位或三位为有效数字,后面位数为放大倍率。

CPU通过控制寄存器来控制我们的硬件电路,通过硬件电路来完成我们想要执行的功能。寄存器中为1即为高电频,为0即为低电频。

接下来我们正式来编写一个程序来使LED电亮,在这之前需要了解二进制与十六进制的转化。

在编写完程序后,要保存hex文件,每次创建程序完成后都需要保存,如下:

这样我们的第一个程序就写好了,要注意引头文件,点击空白处右键引出头文件。程序写好后,我们就点击编译保存,然后打开stc-isp,将程序传入单片机内。

如下,左边芯片型号需要选择与单片机一致的型号,扫描串口现在会自动选择,但可以手动选择如下CH340,然后打开程序文件,打开我们在桌面创建的project项目即可。随后左下角下载编译(这上面的操作都需要在单片机在打开的情况下进行),接着重启单片机,就能让我们的LED灯亮起来了。这我懒得放效果图,需要的请上b站自行搜素。

这样我们的第一个程序就写好了,但是因为单片机一直在启动,所以程序一直从main函数在进去,再出来,P2口也一直在被改变,所以我们需要让程序停下来,不能让他一直跑,于是我们需要把他困起来,我们可以用一个循环来实现这种效果。如下:   这样的效果和上面代码一样,但是P2口不会一直被改变。

2、LED灯的闪烁

让LED灯闪烁编码如下,我们可以看到在代码中我们用到了延迟函数,如果没有延迟函数,单片机运行速度过快,我们就看不出LED灯的闪烁。在延迟函数中nop函数需要引头文件才能够使用。这个nop函数的作用就是让他停一微秒,可以将他省去。

那么我们如何得到延迟函数呢?当然,你可以自己编写延迟函数,但STC—ISP提供给我们一种更加容易得到延迟函数的方法,如下: 要得到符合我们单片机型号相同的延迟代码,我们需要调节数据,系统频率(即晶振频率)每种单片机的晶振频率可能会不同,所以要调节到符合我们型号的晶振频率(我这里的晶振频率是12MHz)。定时长度是你想定时的时间,直接调节即可。下面的8051指令集,不同型号的单片机适用不同的型号 ,我的单片机为STC89C52,故我选择STC89系列。接着我们可以生成代码并复制到 .c文件中去使用了。

完成上面所有操作后编译保存,再用STC-ISP软件读取代码即可,这样我们就完成了LED灯的闪烁。

3、LED流水灯

接下来我们就来编写流水灯的程序,如下: 

延迟函数和上面一样得到,但我们发现这样我们的流水灯每次都只能以同样的间隔来闪烁,而且需要改延迟函数时每次都需要用STC-ISP来重新得到新的延迟函数。那我们是否有什么改进的方法呢?

现在让我们来完成一个LED流水灯Plus版。但在编写程序前我们先来了解一下C51的数据类型。

数据类型是为了更方便我们对于空间的利用,不同的类型占用不同大小字节的内存空间。

其中我们来介绍整形和无符号整形,如下:整形(int) 短整型(short int) 长整形(long int)

无符号整形(unsigned int)...... 除整形外还有字符类型(char) 、浮点型 (单精度浮点型:float)

(双精度浮点型:double)  他们的区别在于向内存申请的空间大小不同。

在了解了我们的字符类型后,我们来编写流水灯Plus

首先我们需要1ms 的延迟函数(通过stc-isp),然后创建函数的形参(int xms),我们只需在延迟函数中加一个循环即可,每进一次循环就是1ms ,当while(常量表达式),当循环中的常量表达式为0,即为假,即退出循环。常量表达式为非0,即为真,则继续循环。

通过我们编写的延迟函数,我们就可以控制我们所想要的时间了。这样我们就得到了流水灯Plus版本了。

相关推荐

  1. 51 单片机[2-3]:LED流水

    2024-05-10 16:36:03       13 阅读
  2. 51单片机精进路-1点亮led

    2024-05-10 16:36:03       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 16:36:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 16:36:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 16:36:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 16:36:03       18 阅读

热门阅读

  1. 【C++ list所有函数举例如何使用】

    2024-05-10 16:36:03       11 阅读
  2. 【AAGNet】GNN模型用于BREP数模分割代码复现笔记

    2024-05-10 16:36:03       13 阅读
  3. 将每个Excel文件的数据量统一减少至120000行

    2024-05-10 16:36:03       13 阅读
  4. 商城数据库88张表DDL(71-88)

    2024-05-10 16:36:03       11 阅读
  5. 典型相关分析模型评价的标准和代码

    2024-05-10 16:36:03       9 阅读
  6. 设置docker容器时区

    2024-05-10 16:36:03       10 阅读
  7. leetcode55-Jump Game

    2024-05-10 16:36:03       10 阅读
  8. leetcode53-Maximum Subarray

    2024-05-10 16:36:03       10 阅读
  9. Gateway基础配置指南

    2024-05-10 16:36:03       9 阅读
  10. gateway基本配置

    2024-05-10 16:36:03       10 阅读