51单片机 | LCD1602 液晶显示实验

2023-05-16

文章目录

    • 一、LCD1602 介绍
      • 1.LCD1602 简介
      • 2.LCD1602 常用指令
      • 3.LCD1602 使用
    • 二、硬件设计
    • 三、软件设计
      • 1.LCD1602 驱动函数
      • 2.主函数
    • 四、实验现象

  在前面章节,我们已经学习过几种显示装置,例如静态数码管、动态数码管、 8*8LED 点阵、串口通信。使用它们可以直观显示一些字符数据,但是它们也有各种局限性,比如显示字符数据太少,硬件设计复杂、代码编写难度大等。这一章就来介绍一种非常简单且常用的显示装置– LCD1602 液晶显示器,使用它可以显示更多的字符数字。我们开发板上集成了一个 LCD1602 液晶显示器接口,将 LCD1602 液晶对应插入即可。本章要实现的功能是:系统运行时,在 LCD1602 液晶上显示字符信息。

一、LCD1602 介绍

1.LCD1602 简介

  1602 液晶也叫 1602 字符型液晶,它能显示 2 行字符信息,每行又能显示 16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个 5x7 或者 5x10 的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距行间距的作用,正因为如此,所以它不能很好的显示图片。其实物图如下所示:
在这里插入图片描述
  在上图中可以看到有 16 个管脚孔,从左至右管脚编号顺序是 1-16,其功能定义如下所示:
在这里插入图片描述
  下面对几个管脚做下说明:

  • 3 脚:VL,液晶显示偏压信号,用于调整 LCD1602 的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为 0 时可以得到最强的对比度。
  • 4 脚:RS,数据/命令选择端,当此脚为高电平时,可以对 1602 进行数据字节的传输操作,而为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对 LCD1602 的一些工作方式作设置的字节;数据字节,即使用以在 1602 上显示的字节。值得一提的是,LCD1602 的数据是 8 位的。
  • 5 脚:R/W,读写选择端。当此脚为高电平可对 LCD1602 进行读数据操作,反之进行写数据操作
  • 6 脚:E,使能信号,其实是 LCD1602 的数据控制时钟信号,利用该信号的上升沿实现对 LCD1602 的数据传输。
  • 7~14 脚:8 位并行数据口,而 51 单片机一组 IO 也是 8 位,使得对 LCD1602的数据读写大为方便。

  在 LCD1602 内部含有 80 个字节的 DDRAM,它是用来寄存显示字符的。其地址和屏幕的对应关系如下表:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  从上图可知,不是所有的地址都可以直接用来显示字符数据,只有第一行中的 00-0F,第二行中的 40-4F 才能显示,其他地址只能用于存储。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 。所以实际写入的数据应该是

01000000B(40H)+10000000B(80H)=11000000B(C0H)

1602 中我们就用前 16 个就行了。第二行也一样用前 16 个地址。

2.LCD1602 常用指令

  在使用 LCD1602 时,我们需要掌握一些常用的指令,这些指令对于 LCD1602初始化是必须的。

  1. 清屏指令0x01
    在这里插入图片描述
    功能:

    • 清除液晶显示器,即将 DDRAM 的内容全部填入"空白"的 ASCII20H;
    • 光标归位,即将光标撤回液晶显示屏的左上方;
    • 将地址计数器(AC)的值设为 0。
  2. 模式设置指令:0x06
    在这里插入图片描述
    功能:设定每次写入 1 位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。

    • I/D:0=写入新数据后光标左移; 1=写入新数据后光标右移,这里选择1
    • S:0=写入新数据后显示屏不移动; 1=写入新数据后显示屏整体右移 1 个字符,这里选择0
  3. 显示开关控制指令0x0c
    在这里插入图片描述
    功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。

    • D:0=显示功能关; 1=显示功能开,这里选择1
    • C:0=无光标 ;1=有光标,这里选择0
    • B:0=光标闪烁; 1=光标不闪烁,这里选择0
  4. 功能设定指令0x38
    在这里插入图片描述
    功能:设定数据总线位数、显示的行数及字型。

    • DL:0=数据总线为 4 位 ;1=数据总线为 8 位,这里设置为1
    • N:0=显示 1 行; 1=显示 2 行,这里设置为1
    • F:0=5×7 点阵/每字符 ;1=5×10 点阵/每字符,这里设置为0
    • X:表示任意值,这里选择0

3.LCD1602 使用

  要使用 LCD1602,首先需要对其初始化,即通过写入一些特定的指令实现。然后选择要在 LCD1602 的哪个位置显示并将所要显示的数据发送到 LCDDDRAM。使用 LCD1602 通常都是用于写数据进去,很少使用读功能。LCD1602 操作步骤如下所示:

1)初始化
(2)写命令(RS=L),设置显示坐标
(3)写数据(RS=H)

  在此,不需要读出它的数据的状态或者数据本身。所以只需要看两个写时序:

  • 当要写入指令字,设置 LCD1602 的工作方式时:需要把 RS 置为低电平,RW置为低电平,然后将数据送到数据口 D0~D7,最后 E 引脚一个高脉冲将数据写入。
  • 当要写入数据字,在 1602 上实现显示时:需要把 RS 置为高电平,RW 置为低电平,然后将数据送到数据口 D0~D7,最后 E 引脚一个高脉冲将数据写入。

  写指令和写数据,差别仅仅在于 RS 的电平不一样而已。以下是 LCD1602 的时序图:
在这里插入图片描述
在这里插入图片描述
  从上图可以看到,以上给的时间参数全部是 ns 级别的,而 51 单片机的机器周期是 1us,指令周期是 2-4 个机器周期,所以即便在程序里不加延时程序,也可以很好的配合 LCD1602 的时序要求了。
  当要写命令字节的时候,时间由左往右,RS 变为低电平,R/W 变为低电平,注意看是 RS 的状态先变化完成。然后这时,DB0~DB7 上数据进入有效阶段,接着 E 引脚有一个整脉冲的跳变,接着要维持时间最小值为 tpw=400nsE 脉冲宽度。然后E引脚负跳变,RS电平变化,R/W 电平变化。这样便是一个完整的LCD1602写命令的时序。

二、硬件设计

  本实验使用到硬件资源如下:

  • LCD1602 液晶
      开发板上集成了一个 LCD1602 液晶接口,下面来看下开发板上 LCD1602 液晶接口电路,如下图所示:
    在这里插入图片描述
      从上图中可知,LCD1602 的 8 位数据口 DB0-DB7 与单片机的 P0.0-P0.7 管脚连接,LCD1602RSRWE 脚与单片机的 P2.6P2.5P2.7 管脚连接。RJ1是一个电位器,用来调节 LCD1602 对比度即显示亮度。
      注意:这里原理图是使用的 8 位 LCD1602 接口设计,是可以兼容 4 位 LCD1602的。对于非标准接口的 LCD1602,我们也会通过转接板将其转接为对应开发板接口的。对于 4 位 LCD1602 在传输数据的时候需要将 8 位的数据截成两段,先发送高四位,在发送低四位。其它引脚操作方法不变。

三、软件设计

  本节所要实现的功能是:在 LCD1602 液晶上显示字符信息。
  程序框架如下:

  • 编写公共文件
    打开public.c,代码如下:

    #include "public.h"
    
    /*
    函 数 名 : delay_10us
    函数功能 : 延时函数,ten_us=1 时,大约延时 10us
    输 入 : ten_us
    输 出 : 无
    */
    void delay_10us(u16 ten_us)
    {
    	while(ten_us--);
    }
    
    /*
    函 数 名 : delay_ms
    函数功能 : ms 延时函数,ms=1 时,大约延时 1ms
    输 入 : ten_us
    输 出 : 无
    */
    void delay_ms(u16 ms)
    {
    	u16 i,j;
    	for (i=ms;i>0;i--)
    	{
    		for (j=110;j>0;j--);
    	}
    }
    

    其头文件public.h

    /*
    头文件作用如下:包含头文件,定义全局变量,声明函数
    */
    #ifndef _public_H
    #define _public_H
    
    #include "reg52.h"
    
    //对系统默认数据类型进行重定义 
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    //函数声明
    void delay_10us(u16 ten_us);
    void delay_ms(u16 ms);
    
    
    #endif
    
  • 编写 LCD1602 显示函数

  • 编写主函数

1.LCD1602 驱动函数

  打开 lcd1602.c 文件,代码如下:

#include "lcd1602.h"

/*
* 函 数 名 : lcd1602_write_cmd
* 函数功能 : LCD1602 写命令
* 输 入 : cmd:指令
* 输 出 : 无
*/
void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//选择命令
	LCD1602_RW=0;//选择写
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//准备命令
	delay_ms(1);
	LCD1602_E=1;//使能脚 E 先上升沿写入
	delay_ms(1);
	LCD1602_E=0;//使能脚 E 后负跳变完成写入	
}

/*
* 函 数 名 : lcd1602_write_data
* 函数功能 : LCD1602 写数据
* 输 入 : dat:数据
* 输 出 : 无
*/
void lcd1602_write_data(u8 dat)
{
	LCD1602_RS=1;//选择数据
	LCD1602_RW=0;//选择写
	LCD1602_E=0;
	LCD1602_DATAPORT=dat;//准备数据
	delay_ms(1);
	LCD1602_E=1;//使能脚 E 先上升沿写入
	delay_ms(1);
	LCD1602_E=0;//使能脚 E 后负跳变完成写入	
}

/*
* 函 数 名 : lcd1602_init
* 函数功能 : LCD1602 初始化
* 输 入 : 无
* 输 出 : 无	
*/
void lcd1602_init(void)
{
	lcd1602_write_cmd(0x38);//数据总线 8 位,显示 2 行,5*7 点阵/字符
	lcd1602_write_cmd(0x0c);//显示功能开,无光标,光标闪烁
	lcd1602_write_cmd(0x06);//写入新数据后光标右移,显示屏不移动
	lcd1602_write_cmd(0x01);//清屏	
}

/*
* 函 数 名 : lcd1602_clear
* 函数功能 : LCD1602 清屏
* 输 入 : 无
* 输 出 : 无
*/
void lcd1602_clear(void)
{
	lcd1602_write_cmd(0x01);	
}

/*
* 函 数 名 : lcd1602_show_string
* 函数功能 : LCD1602 显示字符
* 输 入 : x,y:显示坐标,x=0~15,y=0~1;
		  str:显示字符串
* 输 出 : 无
*/
void lcd1602_show_string(u8 x,u8 y,u8 *str)	  //lcd1602_show_string(0,0,"123456789")
{
	u8 i = 0;
	if (y>1 || x>15)return;	//行列参数不对则强制退出
	
	if (y<1) //第 1 行显示
	{
		while(*str!='\0')//字符串是以'\0'结尾,只要前面有内容就显示
		{
			//设置显示坐标
			if(i<16-x)//如果字符长度超过第一行显示范围,则在第二行继续显示
			{
				lcd1602_write_cmd(0x80+i+x);//第一行显示地址设置
			}
			else
			{
				lcd1602_write_cmd(0x40+0x80+i+x-16);//第二行显示地址设置,0x40为第二行的首地址,0x80是固定的,写入显示地址时要求最高位 `D7` 恒定为高电平 1
			}
			lcd1602_write_data(*str);//显示内容
			str++;//指针递增
			i++;
		}	 	
	}
	else   //第 2 行显示
	{
		while(*str!='\0')
		{
			if(i<16-x) //如果字符长度超过第二行显示范围,则在第一行继续显示
			{
				lcd1602_write_cmd(0x80+0x40+i+x);
			}
			else
			{
				lcd1602_write_cmd(0x80+i+x-16);
			}
			lcd1602_write_data(*str);//显示内容
			str++;//指针递增
			i++;
		}	
	}	 
}

  lcd1602_show_string 函数是 LCD1602 显示字符函数,该函数有 3 个入口参数,x 和 y 用来确定显示的坐标,x 范围是 0-15,y 范围是 0-1。str 参数是一个指针类型变量,用于传递显示的内容。函数内首先判断 xy 坐标是否有效,无效则强制退出,然后根据 xy 值在对应的坐标位置显示内容。

2.主函数

  打开 main.c 文件,代码如下:

/*
实验名称:LCD1602 液晶显示实验
接线说明:
实验现象:下载程序后,LCD1602 上显示字符信息
注意事项:
*/
#include "public.h"
#include "lcd1602.h"
		
/*
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*/
void main(void)
{
	lcd1602_init(); //LCD1602初始化
	lcd1602_show_string(0,0,"Hello World!");//第一行显示
	lcd1602_show_string(0,1,"0123456789");//第二行显示
	while (1)
	{
	 
	}

}

  主函数代码非常简单,首先调用外设驱动头文件,然后进入 main 函数初始化 LCD1602,并调用 LCD1602 显示函数让第一行显示"Hello World!",第二行显示"0123456789"
  这里说明下,在开发中通常会显示数值,比如温度数据,程序中我们获取的温度数据通常存储在 float 变量中,并非字符串,此时需要想办法将 float 变量中的值转换为字符串,比如 float temp=31.2,那么我们可以再定义一个数组temp_buf[]用于保存 temp 中的每一个位,操作如下:

float temp=31.2;

u8 temp_buf[5];
u16 temp_value=temp*10;

temp_buf[0]=temp_value/100+0x30;
temp_buf[1]=temp_value%100/10+0x30;
temp_buf[2]='.';
temp_buf[3]=temp_value%100%10+0x30;
temp_buf[4]='\0';

lcd1602_show_string(0,0,temp_buf);

  将浮点数转换为整型变量,然后将整型值的每一个位取出来存储在数组temp_buf 中,可以发现取出的每一位后面加了 0X30,这个值是将数字0-9 转换为 ASCII 码,因为液晶是以 ASCII 码显示的。最后一个数组元素赋值了’\0’,这是为了让 LCD1602 显示函数知道数组内结束位置。
  根据 C 语言指针的特点,此时调用 LCD1602 显示函数时,只需要将数组名传递进去即可,因为数组名即为该数组的起始地址,然后显示函数内部通过指针访问数组的每一位。

四、实验现象

  使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口),把编译后产生的.hex 文件烧入到芯片内,实现现象如下:在 LCD1602 液晶上显示字符信息。
在这里插入图片描述

  注意:LCD1602 液晶要正确插入到 LCD1602 接口 J2 位置,插反或差错都会导致显示不正常。如果出现显示看不清,可调节板子 LCD1602 接口下的 RJ1 电位器。如果 LCD1602 无法显示,可重启电源或复位。
在这里插入图片描述

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

51单片机 | LCD1602 液晶显示实验 的相关文章

  • VSLAM 相关知识点总结

    VSLAM 相关知识点 这篇文章是对VSLAM涉及的知识点进行系统性的总结和更新 xff0c 一些内容来源至VSLAM经典教材 xff0c 博客 xff0c 和开源项目 引用材料如下表 SLAM十四讲高博古月老师的技术博客崔神的github
  • Windows下CLion中文乱码最有效的解决方式

    作者开发环境 Windows 10 Clion 18 3 MinGW W64 很多人都遇到了Clion的中文乱码问题 xff0c 然后在CSDN上面寻找解决办法 比如这篇很有代表性https blog csdn net Cbk XLL ar
  • Neutron复盘及学习笔记

    前言 对于openstack neutron xff0c 曾花费很多的时间去看它的源码 xff0c 结果啥都没有看出来 openstack代码风格是 xff0c 为了实现plugin的可插拔 xff0c 运用了很多设计模式 xff0c 设计
  • 匿名飞控底层PID代码解析

    大半年就快过去了 大二上学期转瞬即逝 xff0c 离上一次博客也有一段时间了 xff0c 没错 xff0c 庆幸的是我又回来了 xff0c 其实本来第二篇博客是想着写一下两轮平衡车来着 xff0c 代码早就写好了 xff0c 但是硬件不给力
  • IAR、KEIL常见编译报错警告的解决方法(持续更新中)

    Warning Pe550 variable 变量 was set but never used 原因 xff1a 变量定义赋值了但从未使用 解决 xff1a 变量定义删了就可以 xff0c 编译器也不会真的给这个变量分配空间 Warnin
  • VS2019 未能正确加载”balabal.........Package“

    修复VS2019不能自动补全Unity脚本代码时 xff0c 更新了下面这个东西 导致一直蹦下面这些警告 嘣 嘣 嘣 嘣 嘣 网上有很多博客说重置用户数据 禁用Live Share 分析Log信息等等 xff0c 最后看到一个博文说检查更新
  • 51单片机 | 蜂鸣器实验

    文章目录 一 蜂鸣器介绍二 硬件设计三 软件设计四 实验现象 通过单片机的一个 IO 口控制 板载无源蜂鸣器 xff0c 实现蜂鸣器控制 一 蜂鸣器介绍 蜂鸣器是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用
  • Vue 中WebSocket的使用

    span class token function data span span class token punctuation span span class token punctuation span span class token
  • npm版本与node版本不对应

    npm与node版本不对应 导致无法npm i 报错提示 WARNING You are likely using a version of node tar or npm that is incompatible with this ve
  • 吴恩达阅读文献步骤

    接下来 xff0c 就集中介绍一下如何研究一篇论文 吴恩达认为 xff0c 要理解一篇论文 xff0c 一次将一篇论文从第一个字读到最后一个字 xff0c 可能并不是最佳方式 正确的打开方式是 xff0c 一篇论文至少要看三遍 第一遍 xf
  • 更新docker

    以下是做为前端开发如何更新docker xff0c 萌新操作 1 xff0c 使用工具Finalshell xff0c 连接到ssh 2 xff0c 连接到服务器 xff0c 选择ssh xff0c 并配置服务名称 主机 服务地址 xff0
  • 计算机视觉理论笔记 (11) - 运动估计 (Motion Estimation)

    运动估计 光流法 Optical Flow 限制Horn xff06 Schunck 全局方法 global method 光流法约束等式 Constrain Equation 小幅度动作问题全局方法和局部方法的比较全局方法局部方法 基于块
  • 嵌入式,面试题目网页搜集

    指针笔试题 嵌入式面试
  • Java第一天笔记02——eclipse的常用快捷键

    1 main方法 main 43 Alt 43 2 System out println syso 43 Alt 43 3 批量修改 Alt 43 Shift 43 R 4 for for 43 Alt 43 5 代码格式化 Ctrl 43
  • FREERTOS源码解析——heap4.c

    目录 内存管理heap4无法解决的内存碎片 xff1a HEAP4简析分配内存在哪 xff0c 大小多少如何管理 重要源码解析 内存管理 freertos目前提供了以下5种内存管理 xff0c 特点如下 heap1 xff1a 最简单的内存
  • vscode + clangd 开发 c\c++

    目录标题 背景LSPClangdquick fixIWYUclang tidy 环境配置插件配置语言服务器下载自定义配置生成compile command jsonmakefile生成compile command json 强烈推荐cla
  • echarts世界地图(含中国省份地图),中国省份下钻到县,点击按钮返回上一级

    效果图 中国地图高亮显示 并且地图中国地图在可视范围的中心 中国地图下钻 省份下钻 小站 www flot top 在线预览地址 https guangshizhao github io world map 需要源码的同学可以自行去本人的仓
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

    文章目录 一 LED点阵介绍二 硬件设计三 软件设计1 LED点阵 xff08 点亮一个点 xff09 2 LED点阵 xff08 显示数字 xff09 3 LED点阵 xff08 显示图像 xff09 四 实验现象1 LED 点阵 xff
  • 教你通过bigemap和geojson获取echarts精确到乡镇、街道的地图json数据

    2022 10 09更新 xff01 xff01 xff01 bigemap导出kml文件的功能不开放了 后续有什么好的办法获取乡镇 街道数据再做记录 大家有什么好的方法也可以留言 写在前面 本文重点介绍关于怎么获取地图数据的部分 我们可以
  • openlayers动态添加自定义div图层 具有筛选功能 和浮窗

    openlayers动态加自定义div图层 并且具有筛选功能 和浮窗效果 代码拿过去就可以用 联系方式 45664741 64 qq com 个人博客 flot top 效果图 span class token doctype span c

随机推荐

  • openlayers 地图 画线

    span class token doctype span class token punctuation lt span span class token doctype tag DOCTYPE span span class token
  • element-ui 日期选择器 限制结束时间不能大于开始时间

    demo地址 span class token tag span class token tag span class token punctuation lt span el date picker span span class tok
  • [echarts] echarts markLine使用

    span class token doctype span class token punctuation lt span span class token doctype tag DOCTYPE span span class token
  • 一个可以直接运行的WEB录音机,在WEB上实现录音并播放,也可以用来测试麦克风(增加了音频下载功能)

    span class token doctype span class token punctuation lt span span class token doctype tag DOCTYPE span span class token
  • FreeRTOS — 源码下载与移植

    1 FreeRTOS的学习 1 1 FreeRTOS的源码下载 学习一个操作系统前 xff0c 首先要下载对应的源码 xff0c 用于研究和学习 FreeRTOS的源码下载链接如下 xff1a FreeRTOS Real Time Kern
  • freeRTOS学习 — 任务的创建与管理

    1 freeRTOS的任务 xff08 1 xff09 任务的状态 freeRTOS中 xff0c 任务在运行时 xff0c 可能出现以下几种状态 xff1a 1 xff09 运行态 任务当前正在运行中 xff0c 占有cpu的使用权 2
  • freeRTOS学习 — 消息队列

    1 freeRTOS 的消息队列 freeRTOS中提供了任务之间互相通信的另外的一种手段 消息队列 它的作用主要有 xff1a 1 xff09 为了在任务与任务之间 任务与中断之间的通信而准备的 xff0c 可以在任务与任务之间 xff0
  • ucos-ii 的任务调度原理和实现

    ucosii 任务调度和原理 1 ucos ii 任务创建与任务调度 1 1 任务的创建 当你调用 OSTaskCreate 进行任务的创建的时候 xff0c 会初始化任务的堆栈 保存cpu的寄存器 创建任务的控制块 xff08 OS TC
  • 51单片机 | DS18B20 温度传感器实验

    文章目录 一 DS18B20介绍二 硬件设计三 软件设计1 数码管显示函数2 DS18B20 初始化函数及温度读取函数4 主函数 四 实验现象 这一节我们来学习精度较高的外部 DS18B20 数字温度传感器 xff0c 由于此传感器是 单总
  • 上位机命名规范驼峰命名法和下划线命名法

    1 xff09 驼峰命名法 小驼峰命名法 xff1a 除第一个单词之外 xff0c 其他单词首字母大写 xff0c 例如 xff1a myFirstName myLastName 常用于变量名 xff0c 函数名 大驼峰命名法 又称为帕斯卡
  • matlab 调用GPU运算

    1 利用gpuArray 函数将数据从CPU传入GPU中 a 61 zeros 2 3 a 61 gpuArray a 或 a 61 gpuArray single a 数据默认都是双精度 xff0c 降成单精度会提高计算速度 2 用cla
  • 1.数字芯片后端设计小概述

    大家好 xff0c 第一篇文章想来简单介绍一下数字芯片后端的基本流程 对于没有接触过后端设计的新人可能会有用 后端设计总体来说 xff0c 是将前端写好的RTL代码通过综合 xff08 synthesize xff09 转换成物理网表 xf
  • Neutron学习笔记2-- Neutron的网络实现模型

    Neutron学习笔记2 Neutron的网络实现模型 Neutron的三类节点 计算节点网络节点控制节点 Neutron将在这三类节点中进行部署 xff0c Neutron在各个计算节点 xff0c 网络节点中运行各种各样的Agent x
  • Neutron学习笔记1--基本概念

    Neutron学习笔记 基本概念 1 涉及的Linux网络技术 bridge xff1a 网桥 xff0c Linux中用于表示一个能连接不同网络设备的虚拟设备 xff0c Linux中传统实现的网桥类似于一个hub设备 xff0c 而ov
  • 解决EXCEL打开.csv文件时的乱码问题

    问题描述 xff1a 在爬取数据的时候需要生成 csv文件用于存储数据 xff0c 但是生成的文件打开的时候是都是乱码 xff08 包括在网上下载的用于数据分析联系的 csv文件很多时候也会乱码 xff09 xff0c 具体情况如下 xff
  • 关于C语言中字符串以‘\0‘结尾的原因

    0 一般放在字符串的结束处 xff0c 用来表示字符串的结束 xff0c 其是ascii值为0的字符的转义 如果一个字符串中没有 0 这个结束字符 xff0c 那么这些函数将不能确定字符串的结束位置在哪儿 xff0c 从而引起一些不必要的错
  • ESP8266_NONOS_SDK开发环境搭建及验证

    ESP8266 NONOS SDK开发环境搭建及验证 视频教程 xff1a 芯片资料芯片 xff1a ESP8266EX模组 xff1a ESP 12F开发板 xff1a NodeMCU 启动模式安装AiThinkerIDE编译报错问题No
  • 华为开发者大会2019观后感

  • 运行Mapreduce,运行一半卡着不动了

    64 root 64 master mr inverted test bash run sh rmr DEPRECATED Please use rm r instead 19 01 17 23 22 23 INFO fs TrashPol
  • 51单片机 | LCD1602 液晶显示实验

    文章目录 一 LCD1602 介绍1 LCD1602 简介2 LCD1602 常用指令3 LCD1602 使用 二 硬件设计三 软件设计1 LCD1602 驱动函数2 主函数 四 实验现象 在前面章节 xff0c 我们已经学习过几种显示装置