LED 点阵实验~点亮一个点、数字、汉字、图

2023-05-16

LED 点阵简介

 

        LED 点阵是由发光二极管排列组成的显示器件,如下所示为8*8LED 点阵:

        以 16*16LED 点阵为例,其内部结构图如下所示:

        16*16 点阵共由 256 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,正极连接成一行,负极连接成一排。当对应的某一行置 1 电平,某一列置 0 电平,则行列交点处相应的二极管就亮。

硬件部分

        使用到硬件资源如下:

  1. 16*16LED 点阵模块
  2. 74HC595 模块

        74HC595 模块电路在前文IO 扩展(串转并)介绍过,电路如下:

        该模块独立,使用了 4 块级联的 74HC595 芯片,即 RCLK 和 SRCLK 管脚并联在一起,并且 74HC595 (A)的串行数据输出 /QH 连接到 74HC595(B)的串行数据输入口 SI(SER),而 74HC595(B)的输出/ QH 又连接到 74HC595(C)的串行输入口 SI(SER),依次类推。 

        74HC595 需要用到的控制管脚有 RCK(RCLK)、SCK(SRCLK)、SI(SER) 。

        要想控制 LED 点阵,可以将单片机管脚按照 74HC595 芯片的通信时序要求来传输数据。因为使用了 4 片 74HC595 芯片,A、B 两块控制点阵行: POS1-POS16,C、D 两块控制点阵列: NEG1-NEG16,即可控制 LED 点阵。根据 LED 发光二极管导通原理,当阳极(行)为高电平,阴极(列)为低电平则点亮,否则熄灭。因此通过单片机发送 4 组设置行列的数据,通过74HC595将这四组数据分配到对应输出,即可控制 LED 点阵。

软件部分

LED 点阵~点亮一个点

        代码很简单,与上一个实验核心代码是一样的,主要是理解如何让 LED 点阵的左上角第一个LED点亮。实际上就是将第一个点对应的行为高电平,列为低电平即可。也就是让第一个 74HC595 输出 0X01(0000 0001),第二个 74HC595 输出 0X00(0000 0000),这样点阵第一行就是高电平,其余行为低电平。而第 3 个 74HC595 输出 0XFE(1111 1110),第 4 个 74HC595 输出 0XFF (1111 1111),这样点阵第一列就是低电平,其余列为低电平,从而让 LED 点阵第一个LED点亮。

        源代码:

#include "reg52.h"

typedef unsigned int u16;//使用关键字 typedef 对系统默认数据类型 unsigned int 重新命名
typedef unsigned char u8;
 
/*定义74HC595控制管脚*/
sbit SI=P3^4;	 //串行数据输入
sbit RCK=P3^5;	 //存储寄存器时钟输入
sbit SCK=P3^6;   //移位寄存器时钟输入

void delay_10us(u16 ten_us)//延时函数,ten_us=1 时,大约延时 10us
{
 	while(ten_us--);
}

void HC595_WRITE_DATA(u8 cs_data1,u8 cs_data2,u8 cs_data3,u8 cs_data4) //最后两个形参表示所有列的数据,前面两个形参表示所有行的数据
{
 	u8 i=0;
	for(i=0;i<8;i++)//传入第四个形参
	{
	 	SI=cs_data4>>7;	 //因为595芯片先传高位,所以将最高位移到最低位(比如 12345678——>00000001,此处12345678这样写只为方便理解),然后给个上升沿把1传入寄存器中
		
		cs_data4<<=1;	 /*这一步是将原先cs_data(比如12345678)的第二个高位(1后面的2)移到第一个高位(即变成了23455670),这一步是
		                   为了执行下一次循环的时候,将最高位移到最低位做准备,也就是SI_SER=cs_date4>>7;*/
						   	
		SCK=0;	 //此处开始产生上升沿,先设为0,后面再设置为1,上升沿就有了,数据在 SCK 的上升沿输入存储器
		delay_10us(1);
		SCK=1;	  //此刻,最高位就输入到寄存器中了,然后下一次循环依次按照此方法传入第二个高位、第三个....
		delay_10us(1);
	}
	for(i=0;i<8;i++)//传入第三个形参
	{
	 	SI=cs_data3>>7;	 
		cs_data3<<=1;	 		              	
		SCK=0;
		delay_10us(1);
		SCK=1;
		delay_10us(1);
	}
	for(i=0;i<8;i++)//传入第二个形参
	{
	 	SI=cs_data2>>7;	 
		cs_data2<<=1;	 		              	
		SCK=0;
		delay_10us(1);
		SCK=1;
		delay_10us(1);
	}
	for(i=0;i<8;i++)//传入第一个形参
	{
	 	SI=cs_data1>>7;	 
		cs_data1<<=1;	 		              	
		SCK=0;
		delay_10us(1);
		SCK=1;
		delay_10us(1);
	}
	RCK=0;	 //这里需要一个上升沿,将存储器的数据,在 RCK 的上升沿的作用下,输入到锁存器中(此时输出使能控制端/G或/OE接地)
	delay_10us(1);
	RCK=1;
}

void main(void)	 //主函数
{				  	   
	while(1) 
	{
		HC595_WRITE_DATA(0x01,0x00,0xfe,0xff); 		
	}
}

        现象:

LED 点阵~显示数字

        同时点亮多个 LED 灯来显示数字,实现行列不同位置亮灯,需要用到动态数码管的动态扫描原理。在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一 段时间以后灭掉,如此点亮,直到八行全部点亮一次。在第一行点亮到最后一行灭掉的总时间不能超过人肉眼可识别的时间,即 24 毫秒。在每一行点亮的时候, 给列一个新的数据,此时对应列的数据就可以体现在这行上要点亮的灯上。这样就和动态数码管的显示一样,只不过数码管的 LED 灯是段值。这里使用 LED 点阵显示数字,也是多个 LED 同时点亮。

        要想在点阵上显示数字等字符,首先要获取在 LED 点阵上显示数字字符所需的数据,即一个数字字符在 LED 点阵上显示,对应的每行每列都会有一些灯点亮或者熄灭,这样就会构成一组数据,也就是数字字符的显示数据,只要将这些数据通过 74HC595 发送到点阵对应的行或列就能显示数字字符。

        通常使用"文字取模软件" 获取数字字符数据。文字取模软件链接: https://pan.baidu.com/s/15o5n-w3xjDEF0O2zeUNMIg?pwd=57rf 提取码: 57rf 

        文字取模软件使用方法:

        1,双击打开该软件,首先选择“基本操作->新建图像”,设置图像的宽度和,度为 16,点击确定后将在显示窗口出现一个 16*16 的白色格子,这个就类似于 16*16LED 点阵,具体操作如下:

        2,选择“模拟动画”, 后点击“放大格点”,如下所示:

        3,然后在这个 16*16 白色格子里面点击,点击后会在对应位置出现 一个黑点,表示在 LED 点阵对应位置的 LED 灯点亮,未点击位置(白色)表示 LED 点阵对应位置的 LED 灯熄灭。 比如在 16*16LED 点阵上显示数字 0,那么可以在图中 16*16 白色框内通过点击对应位置描出一个数字 0 的外形,如下所示:

        4,然后设置取模数据的取模方式等内容,选择“参数设置”后点击“其他 选项”。具体操作如下:

         5,然后点击“取模方式”,选择 C51 格式选项,然后在点阵生成区自动会生成数字字符对应的数据(如果是使用汇编编程,那么汇编对应的汉字数据可选择 A51 格式)。如下所示:

        6,数字 0 的数据生成之后,然后将生成的数据复制到程序定义的数组中,如下所示:

//LED点阵显示数字0的列数据
u8 gled_col[32]=
{0x00,0x00,0xE0,0x03,0x10,0x04,0x08,0x08,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,
0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x08,0x10,0x04,0xE0,0x03,0x00,0x00};

          这些数据就是上述描绘的数字 0 从上到下依次每行对应的列数据。比如0x00,0x00表示第一行。0xE0,0x03表示第二行,0xE0为第二行前8位,0x03为第二行后8位。

        这里解释一下参数设置中一些选项的意思,横向取模是按行读取数据,纵向取模是按列读取数据。字节倒序指的是字节数据的高位和低位的位置。比如第一行为:0x00,0x00,第二行为:0xE0,0x03。以第二行为例,0xE3化为二进制:1110 0000, 0x03化为二进制:0000 0011,因为设置了字节倒序,所有右边为高位,左边为低位,体现在图像上第二行就是:0000011111000000  。同理,第三行 0x10,0x04,体现在图像上第三行就是:0000100000100000 。而且,取模的参数设置,应该视具体硬件连接和程序设计的情况而定。

        既然是动态扫描,就需要不断的扫描每列或每行,因此可以把 LED 点阵的行控制也用数组存储起来,为后面循环调用提供方便。根据数字 0 取模的数据特点是从上至下每行对应的列数据,因此扫描时也应该从上至下的顺序,如下:

//LED 点阵显示数字 0 的行数据
u8 gled_row[32]=
{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

         其它数字或字符及简单图形的显示取模方法与上述类似。此处使用了_nop_();函数,详细了解请阅览文章_nop_();的由来和作用。

        源代码:

#include "reg52.h"
#include "intrins.h"

typedef unsigned int u16;//使用关键字 typedef 对系统默认数据类型 unsigned int 重新命名
typedef unsigned char u8;
 
/*定义74HC595控制管脚*/
sbit SI=P3^4;	 //串行数据输入
sbit RCK=P3^5;	 //存储寄存器时钟输入
sbit SCK=P3^6;   //移位寄存器时钟输入

//LED点阵显示数字0的列数据
u8 gled_col[32]=
{0x00,0x00,0xE0,0x03,0x10,0x04,0x08,0x08,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,
0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x08,0x10,0x04,0xE0,0x03,0x00,0x00};
//LED点阵显示数字0的行数据
u8 gled_row[32]=
{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay_10us(u16 ten_us)//延时函数,ten_us=1 时,大约延时 10us
{
 	while(ten_us--);
}

void HC595_WRITE_DATA(u8 cs_data1,u8 cs_data2,u8 cs_data3,u8 cs_data4) //最后两个形参表示所有列的数据,前面两个形参表示所有行的数据
{
 	u8 i=0;
	for(i=0;i<8;i++)//传入第四个形参
	{
	 	SI=cs_data4>>7;	 //因为595芯片先传高位,所以将最高位移到最低位(比如 12345678——>00000001,此处12345678这样写只为方便理解),然后给个上升沿把1传入寄存器中
		
		cs_data4<<=1;	 /*这一步是将原先cs_data(比如12345678)的第二个高位(1后面的2)移到第一个高位(即变成了23455670),这一步是
		                   为了执行下一次循环的时候,将最高位移到最低位做准备,也就是SI_SER=cs_date4>>7;*/
						   	
		SCK=0;	 //此处开始产生上升沿,先设为0,后面再设置为1,上升沿就有了,数据在 SCK 的上升沿输入存储器
		_nop_();  //该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期
		//delay_10us(5);
		SCK=1;	  //此刻,最高位就输入到寄存器中了,然后下一次循环依次按照此方法传入第二个高位、第三个....
		_nop_();  
		//delay_10us(5);		
	}
	for(i=0;i<8;i++)//传入第三个形参
	{
	 	SI=cs_data3>>7;	 
		cs_data3<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	for(i=0;i<8;i++)//传入第二个形参
	{
	 	SI=cs_data2>>7;	 
		cs_data2<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	for(i=0;i<8;i++)//传入第一个形参
	{
	 	SI=cs_data1>>7;	 
		cs_data1<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	RCK=0;	 //这里需要一个上升沿,将存储器的数据,在 RCK 的上升沿的作用下,输入到锁存器中(此时输出使能控制端/G或/OE接地)
	delay_10us(1);
	RCK=1;
}

void main(void)	   //主函数
{
	u8 i=0;				  	   
	while(1)  
	{
		for(i=0;i<16;i++)	//16行,一行一轮回,16个轮回
		{
		 	HC595_WRITE_DATA(gled_row[i],gled_row[i+16],~gled_col[i*2],~gled_col[i*2+1]); //传送行列选数据
			delay_10us(10);	 //延时一段时间,等待显示稳定
			HC595_WRITE_DATA(0x00,0x00,0x00,0x00); 	//消影	
		}	
	}
}

        现象:

LED 点阵~显示汉字

        取模软件不仅可以手动描点取模,还可以直接取汉字等字符数据,这里以汉字宋体常规小四号“风”为例,教大家如何使用该软件来获取汉字数据。

        1,首先打开文字取模软件,选择“参数设置”,对字体大小进行设置, 如下所示

        2, 然后设置取模数据的取模方式等内容,具体操作如下:

        3, 然后在文字输入区内输入所要显示的汉字:风,然后按住键盘的 Ctrl+Enter 组合键完成汉字的输入。此时显示区就会显示刚才输入的汉字,通过放大格点可观察的更清楚,默认生成的是 16*16 大小的点阵数据。 具体操作如下:

        4, 点击取模方式,选择 C51 格式选项,然后在点阵生成区自动会生成汉字对应的数据(如果是使用汇编开发,那么汇编对应的汉字数据可选择 A51 格式)。如下所示:

        至此,就完成了汉字取模,然后将生成的汉字数据复制到程序内定义的数组中,如下所示:

//LED 点阵显示汉字“风”数据 
u8 gled_col[32]= 
{0x00,0x00,0xFC,0x0F,0x04,0x08,0x04,0x08,0x14,0x0A,0x24,0x0A,0x44,0x09,0x44,0x09,
0x84,0x08,0x84,0x08,0x44,0x09,0x44,0x49,0x24,0x52,0x12,0x52,0x02,0x60,0x01,0x40}; 

        源代码:

#include "reg52.h"
#include "intrins.h"

typedef unsigned int u16;//使用关键字 typedef 对系统默认数据类型 unsigned int 重新命名
typedef unsigned char u8;
 
/*定义74HC595控制管脚*/
sbit SI=P3^4;	 //串行数据输入
sbit RCK=P3^5;	 //存储寄存器时钟输入
sbit SCK=P3^6;   //移位寄存器时钟输入

//LED 点阵显示汉字“风”数据 
u8 gled_col[32]= 
{0x00,0x00,0xFC,0x0F,0x04,0x08,0x04,0x08,0x14,0x0A,0x24,0x0A,0x44,0x09,0x44,0x09,
0x84,0x08,0x84,0x08,0x44,0x09,0x44,0x49,0x24,0x52,0x12,0x52,0x02,0x60,0x01,0x40}; 
//LED点阵显示数字0的行数据
u8 gled_row[32]=
{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay_10us(u16 ten_us)//延时函数,ten_us=1 时,大约延时 10us
{
 	while(ten_us--);
}

void HC595_WRITE_DATA(u8 cs_data1,u8 cs_data2,u8 cs_data3,u8 cs_data4) //最后两个形参表示所有列的数据,前面两个形参表示所有行的数据
{
 	u8 i=0;
	for(i=0;i<8;i++)//传入第四个形参
	{
	 	SI=cs_data4>>7;	 //因为595芯片先传高位,所以将最高位移到最低位(比如 12345678——>00000001,此处12345678这样写只为方便理解),然后给个上升沿把1传入寄存器中
		
		cs_data4<<=1;	 /*这一步是将原先cs_data(比如12345678)的第二个高位(1后面的2)移到第一个高位(即变成了23455670),这一步是
		                   为了执行下一次循环的时候,将最高位移到最低位做准备,也就是SI_SER=cs_date4>>7;*/
						   	
		SCK=0;	 //此处开始产生上升沿,先设为0,后面再设置为1,上升沿就有了,数据在 SCK 的上升沿输入存储器
		_nop_();  //该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期
		//delay_10us(5);
		SCK=1;	  //此刻,最高位就输入到寄存器中了,然后下一次循环依次按照此方法传入第二个高位、第三个....
		_nop_();  
		//delay_10us(5);		
	}
	for(i=0;i<8;i++)//传入第三个形参
	{
	 	SI=cs_data3>>7;	 
		cs_data3<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	for(i=0;i<8;i++)//传入第二个形参
	{
	 	SI=cs_data2>>7;	 
		cs_data2<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	for(i=0;i<8;i++)//传入第一个形参
	{
	 	SI=cs_data1>>7;	 
		cs_data1<<=1;	 		              	
		SCK=0;
		_nop_();
		SCK=1;
		_nop_();
	}
	RCK=0;	 //这里需要一个上升沿,将存储器的数据,在 RCK 的上升沿的作用下,输入到锁存器中(此时输出使能控制端/G或/OE接地)
	delay_10us(1);
	RCK=1;
}

void main(void)	   //主函数
{
	u8 i=0;				  	   
	while(1)  
	{
		for(i=0;i<16;i++)	//16行,一行一轮回,16个轮回
		{
		 	HC595_WRITE_DATA(gled_row[i],gled_row[i+16],~gled_col[i*2],~gled_col[i*2+1]); //传送行列选数据
			delay_10us(10);	 //延时一段时间,等待显示稳定
			HC595_WRITE_DATA(0x00,0x00,0x00,0x00); 	//消影	
		}	
	}
}

        现象:

LED 点阵~显示图

        跟上面原理一样,就懒得写了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LED 点阵实验~点亮一个点、数字、汉字、图 的相关文章

  • C++如何写自定义的头文件

    C 43 43 是一种非常热门的面向对象语言 xff0c 受到很多人的欢迎 在C语言的基础上 xff0c C 43 43 进行了很多的改进 xff0c 并引入了许多新的头文件 xff0c 方便我们使用 比如要进行字符串操作就引入string
  • 虚拟机Vmware安装Ubuntu系统

    vm虚拟机下载安装 安装位置可以任意选择 xff0c 但是路径中不要出现中文字符 两个选项都取消掉 点击许可证 激活码就是许可证选择一个复制即可 Ubuntu系统下载安装 Ubuntu系统可直接前往其官网进行下载 buntu 22 04 L
  • 深入理解JVM虚拟机

    文章目录 深入理解JVM虚拟机JDK1 8新特性 xff1a JVM架构图 xff1a 类装载器知识点 xff1a 类装载器 xff1a 双亲委派机制 xff1a 沙箱安全机制 xff1a Execution Engine执行引擎负责解释命
  • Linux基础指令详解

    目录 前言 Linux基本指令 1 ls指令 1 1 ls 1 2 ls l 1 3 ls a 1 4 ls d 1 5 绝对路径和相对路径 2 pwd指令 3 cd指令 4 touch指令 5 mkdir指令 6 rmdir指令和rm指令
  • aruco识别,python实现

    需要配置anaconda xff0c 用spyder进行python语言编辑 xff0c 实现对aruco码的编写 代码比较垃圾 xff0c 不喜勿喷 配置过程如下 xff1a 视觉系统的运行需要搭建视觉环境 xff0c 包括 xff0c
  • 关于使用HTTP上传文件到hdfs文件系统

    String tenantName 61 System getenv 34 OPENPALETTE NAMESPACE 34 String dataIntegrationServiceName 61 34 dataintegration m
  • 详解 FTP、FTPS 与 SFTP 的原理

    FTP FTPS 与 SFTP 简介 FTP FTP 即 文件传输协议 xff08 英语 xff1a File Transfer Protocol 的缩写 xff09 是一个用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议 完整
  • 用函数调用,把在一个函数的内部改变另一个函数的变量(这个变量相对于第一个函数就是一个外部变量)

    include lt stdio h gt void add int p 指针是整数 xff0c 所以其类型是int整型 这里 p外部变量num的地址 xff0c 即 p 61 num p 43 43 指针变量在单独使用时记得要加括号表示一
  • keil5 C51版本安装及MDK5合并,搭建STM32开发环境(详细教程)

    keil5安装及MDK5合并 资源说明 已将文章中涉及到的所有软件安装包及注册机2032版都放置到百度网盘 xff0c 链接 xff1a 百度云盘链接 提取码 xff1a 0109 1 C51安装 首先在keil官网里下载软件安装包 xff
  • Jmeter性能测试(22)--内存溢出原因及解决方法

    jmeter是一个java开发的开源性能测试工具 xff0c 在性能测试中可支持模拟并发压测 xff0c 但有时候当模拟并发请求较大或者脚本运行时间较长时 xff0c 压力机会出现卡顿甚至报异常 内存溢出 xff0c 这里就介绍下如何解决内
  • Ubuntu16.04的安装教程

    Ubuntu16 04的安装 这里我们会介绍Ubuntu16 04的史诗级保姆教程 开始了 xff0c 车速有点快 xff0c 系好安全带 xff0c 发车了 xff01 1 打开浏览器 xff0c 找到Ubuntu的官网 2 单击 系统桌
  • 电脑触摸板无法使用,I2C HID设备异常处理。

    本人电脑 戴尔 Vostro3400 xff0c win10系统 xff0c 触摸板突然失灵 xff0c 客服让我更新BIOS驱动 xff0c 关闭电源选项的快速启动等等 好了一阵 xff0c 再一重启又失灵 经过无限次百度 xff0c 终
  • 自我简介,对软件工程课程的希望及个人目标

    我是一名桂林理工大学信息科学与工程学院软件工程本科大二年纪的学生 xff0c 热爱学习 xff0c 努力上进 xff0c 对未来充满希望 xff0c 很高兴能学习软件工程这门课程 我对这门课程的希望 xff1a 1 我希望通过学习软件工程这
  • 用HTML、CSS写一个酷炫的动态搜索框

    用HTML CSS写一个酷炫的动态搜索框 可伸展的动态搜索框 xff01 复制粘贴即可用 xff01 HTML部分 xff1a span class token doctype lt DOCTYPE html gt span span cl
  • 使用 curl/git 命令时出现 Failed to connect to XXX port 443: 拒绝连接

    文章目录 原因与过程解决办法 原因与过程 今天在linux下安装docker compose出现Failed connect to github com 443 拒绝连接 网上查了下说是DNS被污染 xff0c 改下host文件 解决办法
  • 【C++】30h速成C++从入门到精通(STL介绍、string类)

    STL简介 什么是STL STL standard template libaray 标准模板库 xff1a 是C 43 43 标准库的重要组成部分 xff0c 不仅是一个可复用的组件库 xff0c 而且是一个包罗数据结构与算法的软件框架
  • redis分布式锁

    1 Redis分布式锁最简单的实现 想要实现分布式锁 xff0c 必须要求 Redis 有 互斥 的能力 xff0c 我们可以使用 SETNX 命令 xff0c 这个命令表示SET if Not Exists xff0c 即如果 key 不
  • 网络边界安全

    防火墙 防火墙的分类 按物理特性划分 软件防火墙硬件防火墙 按性能划分 百兆级防火墙千兆级防火墙 按防火墙结构划分 单一主机防火墙路由集成防火墙分布式防火墙 按防火墙技术划分 包过滤防火墙应用代理防火墙状态检测防火墙 防火墙的功能 访问控制
  • 控制台报错--Module not found: Error: Can‘t resolve ‘core-js/fn/promise‘

    报错信息 xff1a 解决方法 xff1a 原因是vscode会自动导入 import resolve from 39 core js fn promise 39 这一行代码
  • 如何测量无人机电机和螺旋桨的效率?

    为什么要测试电机和螺旋桨 xff1f 首先要确认我们和最终用户的需求是什么 xff1f 因为它将帮助我们发现哪些内容需要优化 xff1a 是否希望增加无人机不间断航拍的续航时长 xff1f 是否希望增加无人机的净载荷 xff1f 是否需要加

随机推荐

  • Jmeter性能测试(23)--分布式测试

    关于jmeter的介绍和元件作用 xff0c 之前的博客介绍过 xff0c 很多其他同行的博客也够详细的 xff0c 这里不做介绍 xff0c 对jmeter不甚了解的可以参考之前的博客 xff1a jmeter xff1a 菜鸟入门到进阶
  • 无人机的电调及其工作原理是什么?

    电子速度控制器 ESC 是电力推进系统的重要硬件组成部分 它就像系统的大脑一样 xff0c 根据从油门控制器接收到的数据信号告诉电机以多快的转速运行 对于无人机和遥控车辆等小型场景应用 xff0c 该控制器的名称为 ESC xff0c 而对
  • 三自由度无人机飞手培训、PID调试、飞行教学、飞控算法验证、故障仿真平台

    无人机在研制过程中需要不断地进行飞行测试 xff0c 而测试的过程不是万无一失的 xff0c 飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏 xff0c 更严重地甚至会造成外界伤害 基于此我们推出了无人机的三旋转自由度 3 DOF
  • shell脚本的执行

    标题 shell脚本的执行 概述 当shell脚本运行时 xff0c 首先会查找系统环境变量ENV xff0c 环境变量指定了环境文件 xff08 加载顺序 etc profile bash profile bashrc etc bashr
  • prometheus(普罗米修斯)

    prometheus 什么是普罗米修斯 xff1f Prometheus是一个开源系统监控和警报工具包 xff0c 最初是在 SoundCloud 上构建的 自2012年成立以来 xff0c 许多公司和组织都采用了Prometheus xf
  • 装机环境配置笔记

    装机过程中需要修改系统中的环境参数以及配置 xff01 xff01 xff01 http t csdn cn Ste4n xff08 记录在这里 xff09 运行环境配置文档 xff08 参考使用非必须 xff09 Notion The a
  • SDN系统方法 | 8. 网络虚拟化

    第8章 网络虚拟化 如第2章所述 xff0c 网络虚拟化和本书介绍的其他部分有所不同 xff0c 这是SDN第一个成功的商业用例 网络虚拟化可以在服务器上实现 xff0c 通常不需要物理网络中的交换机提供任何帮助 网络虚拟化可以实现为现有网
  • 算法设计与分析

    两个例子 调度问题与投资问题 例1 xff1a 调度问题 问题 有 n 项任务 xff0c 每项任务加工时间已知 从 0时刻开始陆续安排到一台机器上加工 每个任务的完成时间是从 0 时刻到任务加工截止的时间 求 总完成时间 xff08 所有
  • 偏航角、俯仰角、横滚角的理解

    最近研究IMU陀螺仪 xff0c 经过一早上的调试 xff0c 最后发现根本看不懂xyz三个角度的度数是怎么来的 xff0c 看了一些教程 xff0c 也觉得不够直观 xff0c 去了b站找了个视频 xff0c 发现讲解的还不错 xff0c
  • ubuntu20.04版本 安装ros1与px4、mavros、QGroundControl

    基于个人安装时的操作以及所浏览的链接 xff0c 仅供参考 文章目录 前言一 pandas是什么 xff1f 二 使用步骤 1 引入库2 读入数据总结 前言 使用ubuntu下载ros px4似乎是一件十分繁琐以及困难的事情 xff0c 但
  • ros中无人机基于话题<geographic_msgs/GeoPoseStamped.h>的指点飞行控制

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 话题认识二 完整代码总结 前言 本篇文章是作者在学习ros时根据自己的认识所写的代码 xff0c 主要是基于话题 lt
  • Jmeter性能测试(24)--dubbo接口测试

    一 Dubbo简介 dubbo是一个分布式服务框架 xff0c 致力于提供高性能和透明化的RPC远程服务调用方案 xff0c 以及SOA服务治理方案 其核心部分包含如下几点 xff1a 1 远程通讯 xff1a 提供对多种基于长连接的NIO
  • 自定义mavlink及收发测试(px4固件V1.11.0,QGC源码4.0)

    一 实现收 1 先定义uORB消息 a01 GPS msg uint64 timestamp time since system start microseconds uint64 lat Latitude uint64 lon Longi
  • 自定义mavlink及收发测试2(px4固件V1.11.0,QGC源码V4.0)

    一 1 下载安装一个mavlink文件或者在原文件上修改 安装步骤 xff08 包含mavlink generator xff09 可参照文章 PX4自定义Mavlink消息 xff08 一 xff09 px4发送 Sense97的博客 C
  • Ubuntu20.04 | 更新软件源 sudo apt-get update 出现错误

    之前使用了清华的官方源 清华大学开源软件镜像站 Tsinghua Open Source Mirror 错误提示 xff1a 忽略 1 https mirrors tuna tsinghua edu cn ubuntu focal InRe
  • PCB封装库的制作

    以下几个元件制作为例 xff1a 元件SMA封装 步骤 xff1a 1 创建PCB库文件 xff1a 单击 File 菜单 xff0c 选择 New 选项中的 Library 选项 xff0c 再选择 PCB Library xff0c 进
  • PCB板自动布线

    自动布线 步骤 xff1a 1 整体删除同层的走线 xff1a 打开PCB文件 xff0c 在层的选项卡中选择顶层 Top Layer xff0c 在 Edit 菜单下选择 Select 选项 xff0c 选择 All on Layer 选
  • 独立按键实验

    按键简介 按键是一种电子开关 xff0c 使用时 xff0c 按下按钮 xff0c 则开关接通 xff0c 松开手时 开关断开 开发板上使用的按键及内部简易图如下图所示 xff1a 按键管脚两端距离长的表示默认是导通状态 xff08 1 2
  • IO 扩展(串转并)-74HC595-16*16LED点阵实验

    51 单片机的IO 口非常有限 xff0c 有时候若想要连接更多外围设备 xff0c 需要通过 IO 扩展来实现 本文介绍一种 IO 口扩展方式 串转并 xff0c 使用的芯片是 74HC595 若有4个 74HC595 芯片 xff0c
  • LED 点阵实验~点亮一个点、数字、汉字、图

    LED 点阵简介 LED 点阵是由发光二极管排列组成的显示器件 xff0c 如下所示为8 8LED 点阵 xff1a 以 16 16LED 点阵为例 xff0c 其内部结构图如下所示 xff1a 16 16 点阵共由 256 个发光二极管组