如何点亮led灯

目录

一:认识单片机     

二:认识led灯 

 2.1:led灯的使用

三:点亮led灯主函数

     四:认识led灯模块

 五:延时函数的作用

     六:进制表

   七:头文件的意义


一:认识单片机     

首先我们先来认识一下单片机,单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机IO口介绍 IO I/O input/output ==输入/输出; 所以IO口也叫输入输出口;这个口既可以用作输入,又可以用作输出; 什么是输入?输入就是电流从外面往单片机里面流; 什么是输出?输出就是电流从单片机里面往外面流; 就说STC89C52单片机吧,一般给它提供5V的工作电压,所以呢,它的IO口最大能提供的电压也就5V了,能往外输出多大的电流,或外面能往里面灌多大的电流就要看IO口内部的结构了,芯片的数据手册上会写清楚IO口的输入输出电流范围

a55a0631db9a4c8eb3ea33870812cfc6.png

二:认识led灯 

LED(light-emitting diode),即发光二极管,俗称LED小灯,是一种由磷化镓(GaP)等半导体材料制成的、能直接将电能转变成光能的发光显示件。当LED内部有一 定电流通过时,它就会发光,不同LED能发出不同颜色的光,常见的有红色、绿色、黄色等。LED灯是发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电能转化为光能。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。以下图片就是单片机的LED灯。

83522665cc55443396be0663ca7fb053.png

 2.1:led灯的使用

二极管正向导电,就是说电流可以从二极管的正极流向负极;电流想在二极管中流通,那二极管的正负极之间就得有个电压,叫正向电压,这个电压还不能太小,有个门槛电压,一般0.7V左右的样子;你不够这个门槛的话,电流就没法流啊,小马达带不动这个大车;图中的A点就是这个门槛点。超过A点的电压之后,电压越大,LED的电流就越大,但是也不能太大,比如电压达到C点的时候LED的电流就很大了,再大的话LED就烧了。

d26ffb7328b94b01ae4a1ca48052dce9.jpeg

       发光二极管具有单向导线性,电流只能从阳极流向阴极,所以低电平(0)能亮灯,高电平(1)就是灭灯。以下是点亮一个LED灯的 代码。如果想要点亮8个灯就在多写几行一样的代码就可以了。

三:点亮led灯主函数

be0235e0c87a43b3a8b8fa5b5b060f73.png

     四:认识led灯模块

单片机板上有8个LED灯,每个灯都有固定的引脚,如图中,LED1的引脚定义是P2^0,依次类堆。如果我们要点亮LED灯就需要在前面写上定义。不同发光二极管正向导通电压不同,具体压降根据二极管查询,但同一特点是二极管发光正级电压必须大于负极电压。在原理图所示中二极管的正极连接一个电阻然后接到Vcc上,负极直接连接P20端口。Vcc为高电平,则P20端口为低电平,电阻在这里提供一个压降,避免D1端口两端电压过高同时限制电流过大。于是得到我们需要设置的参数,P20端口电压为0,即在Keil中需要设置的参数为P20电压为0。

8fa077d9f3fc44fa93538e5357af110f.png

 五:延时函数的作用

流水灯延时的目的是为了控制每个LED灯的亮灭时间,使得整个LED显示屏上的灯光效果看起来是流动的。这个过程通常是通过一定的电路设计和电子元件参数来实现的。在传统的硬件设计中,为了让每一盏LED能够依次点亮并熄灭而不会互相干扰或者影响整体的效果,需要在每一个LED通电的时候进行一段延迟设置来确保其按照预设的时间顺序发光;同时也要合理设计所有节点的驱动方式和各个部分的信号分配方式以保证整体效果的连贯性和流畅性。这样设计的最终结果就是所有的小灯泡会在指定的时间内依次发出光亮。总的来说,通过添加流水灯延时功能,可以使灯光变化更加自然、连续和有节奏感,从而增强视觉体验。

e1406a1aaf1a4723b3a9ae5ed27ded3e.png

     六:进制表

正常点亮8个led灯后可以让他实现多种LED灯亮法。当然,让LED灯亮的代码不止可以这样写,还可以使用二进制转换成十六进制,

569d0d93a2f54d07b0d922d171dfdde2.jpeg

   七:头文件的意义

#include <REGX52.H>这个是我们单片机的头文件,在上面代码中如果没有这个头文件的话,我们的程序就无法去识别P2口了。头文件的作用相当于在该行位置键入文件“reg52.h”的全部内容。打开任意程序,编译后将鼠标放置“<reg52.h>”的任意位置

如图所示,选择“Open document<reg52.h>”,即可打开“reg52.h”的文档,部分内容如图所示,可以看到一系列的定义,主要是“sfr”和“sbit”这两个关键字来进行定义。以“sfr P0 =0x80”为例,意思是将单片机硬件的0x80这个地址赋给P0这两个字母。在项目1提到过,学习单片机的实质是通过寄存器实现对引脚的控制,在头文件中通过关键字“sfr”实现变量P0和地址的联系,每个寄存器都有唯一地址,操作地址的过程其实是控制寄存器的过程。通俗的讲,通过这样定义之后对P0的操作就会执行到0x80地址的寄存器中。因为程序最终是要由硬件来执行,所以本质上是对单片机的硬件地址进行操作。51单片机具有P0、P1、P2、P3,四个统称IO口,每个统称IO口有8个IO口。sfr P0 =0x80就是将P0的8个IO口定义为P0口,就是说sfr一次定义了8位,这时不难发现sfr和sbit的区别:sfr能一次定义8位,sbit一次只能定义一位。通过下面这个代码可以看出,P2是控制所有8个led灯亮灭状态。这里的P2=0x7,0x是一个前缀,代表后面的是十六进制。7就是转换成十六进制(0111 1111)。以下代码是我实现花样流水的代码,前四个灯轮流亮,后四个灯常亮。也是全部的代码内容和视频效果。

31fba7709ec04984a22aeee186fbaaa3.png

59ef753851e446f4994b67cc5449256f.png

WeChat_20231214232147

    一个C程序从main()开始执行,执行的内容在“{ }”中,“{}”总是成对出现,一对“{}”上下对齐,便于阅读和理解。一般称main()为主函数,一个程序里有且只有一个主函数。框架为:

void main() { //c程序内容 }

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值