单片机实时温度采集并通过串口通信上传电脑显示

2023-11-13

首先说下我所用到的主要器件器件:STC89C52,AT24C08,DS18B20,MAX232

实验源代码:

 

//接上18B20温度传感器(另购)后数码管显示出当前温度
#include <reg52.h>
#include <intrins.h>
#include <AT24C08.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P1^0;           //define interface
uint temp;             // variable of temperature
uchar flag,dat1;            // sign of the result positive or negative
uchar code table[]={
0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};
/*uchar code table1[]={
0x40,0x79,0x24,0x30,
0x19,0x12,0x02,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};*/
sbit wela1 = P1^4;
sbit wela2 = P1^5;
sbit wela3 = P1^6;
/*unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};
 */
/*********************************************
                 串口通信部分
*********************************************/
void RS232_Init()
{      
	TMOD=0x20;//设置定时器1为工作方式2
	TH1=0xfd;
	TL1=0xfd;
	TR1=1;
	REN=1;
	SM0=0;
	SM1=1;
	EA=1;
	ES=1;
}
/*-----------------------发送数据函数----------------------------*/
void USART_Transmit(unsigned char buf)
{    
       SBUF=buf;                  //发送数据
       while(TI==0);                //等待发送结束
       TI=0;                           //清除发送结束标志
}
/*********************************************
					AT24C08读写部分
********************************************/
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Delay1ms(uint x)
 函数功能: 延时1ms
 入口参数: x
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Delay1ms(uint x)
{
 uint i;
 while(x--)
 for(i=0;i<165;i++);
}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Start()
 函数功能: 起始函数
 入口参数: 无
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Start()
{AT24C08_SDA_1();AT24C08_SCL_1();NOP();AT24C08_SDA_0();NOP();AT24C08_SCL_0();}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Stop()
 函数功能: 停止函数
 入口参数: 无
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Stop()
{AT24C08_SDA_0();AT24C08_SCL_1();NOP();AT24C08_SDA_1();NOP();AT24C08_SCL_0();}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Ack()
 函数功能: 应答函数
 入口参数: 无
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Ack()
{AT24C08_SDA_0();NOP();AT24C08_SCL_1();NOP();AT24C08_SCL_0();}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_NO_Ack()
 函数功能: 无应答函数
 入口参数: 无
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_NO_Ack()
{AT24C08_SDA_1();AT24C08_SCL_1();NOP();AT24C08_SCL_0();}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Writ_Byte(uchar dat)
 函数功能: 写函数
 入口参数: dat
 返回参数:t
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
uchar AT24C08_Writ_Byte(uchar dat)
{
 uchar i;
 uchar t;
 AT24C08_SDA_1();AT24C08_SCL_0();
 for(i=0;i<8;i++)
 {
  if(dat&0x80)AT24C08_SDA_1();
  else AT24C08_SDA_0();
  AT24C08_SCL_1();NOP();
  AT24C08_SCL_0();
  dat<<=1; 
 }
 NOP();
 AT24C08_SDA_1();NOP();
 AT24C08_SCL_1();NOP();
 t=(AT24C08_CONT & (1<<AT24C08_SDA));
 AT24C08_SCL_0();
 return t;
}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Read_Byte()
 函数功能: 读函数
 入口参数: 无
 返回参数:dat
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
uchar AT24C08_Read_Byte()
{
   uchar i,dat;
   AT24C08_SDA_1();AT24C08_SCL_1();
   for(i=0;i<8;i++)
   {
     dat<<=1;
     AT24C08_SCL_1();
  if((AT24C08_CONT & (1<<AT24C08_SDA)))dat|= 0x01;
  AT24C08_SCL_0();
   }
   AT24C08_Ack();
   return dat;
}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Write_One_Dat(uchar add,uchar dat)
 函数功能: 写一字节函数
 入口参数: add,dat
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
int AT24C08_Write_One_Dat(uchar add,uchar dat)
{
 EA=0;
 AT24C08_Start();
 if(AT24C08_Writ_Byte(sla))return 0;
 if(AT24C08_Writ_Byte(add))return 0;
 if(AT24C08_Writ_Byte(dat))return 0;
 AT24C08_Stop();
 AT24C08_Delay1ms(10);
 EA=1;
 return 1;
} 
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Write_Mul_Dat(uchar add,uchar dat)
 函数功能: 写多字节函数
 入口参数: add,dat
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Write_Mul_Dat(uchar add,uchar *s,uchar n)
{
 uchar i;
 EA=0;
 for(i=0;i<n;i++)
 {while(!AT24C08_Write_One_Dat(add+i,s[i]));
 }
  EA=1;
}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Read_One_Dat(uchar add)
 函数功能: 读一字节函数
 入口参数: add,dat
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
int AT24C08_Read_One_Dat(uchar add)
{ 
 EA=0;
 AT24C08_Start();
 if(AT24C08_Writ_Byte(sla))return 0;
 if(AT24C08_Writ_Byte(add))return 0;
 AT24C08_Start();
 if(AT24C08_Writ_Byte(sla|0x01))return 0;
 dat1=AT24C08_Read_Byte();AT24C08_NO_Ack();
 AT24C08_Stop();
 EA=1;
 return 1; 
} 
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Read_Mul_Dat(uchar add)
 函数功能: 读多字节函数
 入口参数: add,s,n
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Read_Mul_Dat(uchar add,uchar *s,uchar n)
{
 uchar i;
 EA=0;
 for(i=0;i<n;i++)
 {
  while(!AT24C08_Read_One_Dat(add+i));
  s[i]=dat1;
 }
 EA=1;
}
/**************************************************************
 隶属模块:AT24C08存储模块
 函数名称:AT24C08_Clear()
 函数功能: 清空
 入口参数: 无
 返回参数:无
 修改时间: 2011-7-10
 修改者:  彭瑞
***************************************************************/
void AT24C08_Clear()
{
 uchar i;
 EA=0;
 for(i=0;i<256;i++)
 {
  AT24C08_Write_One_Dat(i,0xff);
 }
 EA=1;
}
/*********************************************
                    温度采集部分
*********************************************/
void delay(uint count)      //delay
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}
void dsreset(void)       //send reset and initialization command
{
  uint i;
  DS=0;
  i=103;
  while(i>0)i--;
  DS=1;
  i=4;
  while(i>0)i--;
}

bit tmpreadbit(void)       //read a bit
{
   uint i;
   bit dat;
   DS=0;i++;          //i++ for delay
   DS=1;i++;i++;
   dat=DS;
   i=8;while(i>0)i--;
   return (dat);
}

uchar tmpread(void)   //read a byte date
{
  uchar i,j,dat;
  dat=0;
  for(i=1;i<=8;i++)
  {
    j=tmpreadbit();
    dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里
  }
  return(dat);
}

void tmpwritebyte(uchar dat)   //write a byte to ds18b20
{
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++)
  {
    testb=dat&0x01;
    dat=dat>>1;
    if(testb)     //write 1
    {
      DS=0;
      i++;i++;
      DS=1;
      i=8;while(i>0)i--;
    }
    else
    {
      DS=0;       //write 0
      i=8;while(i>0)i--;
      DS=1;
      i++;i++;
    }

  }
}

void tmpchange(void)  //DS18B20 begin change
{
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);  // address all drivers on bus
  tmpwritebyte(0x44);  //  initiates a single temperature conversion
}

uint tmp()               //get the temperature
{
  float tt;
  uchar a,b;
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);//访问总线上的器件
  tmpwritebyte(0xbe);//从器件上读取值
  a=tmpread();
  b=tmpread();
  temp=b;
  temp<<=8;             //two byte  compose a int variable
  temp=temp|a;
  tt=temp*0.0625;
  temp=tt*10+0.5;//四舍五入
  return temp;
}

void readrom()          //read the serial
{
  uchar sn1,sn2;
  dsreset();
  delay(1);
  tmpwritebyte(0x33);
  sn1=tmpread();
  sn2=tmpread();
}


void delay10ms()            //delay
  {
    uchar a,b;
    for(a=10;a>0;a--)
      for(b=60;b>0;b--);
   }

void display(uint temp)			//显示程序
{
   uchar A1,A2,A2t,A3;
   A1=temp/100;
   A2t=temp%100;
   A2=A2t/10;
   A3=A2t%10;

   wela3=1;
   P2=table[A1];		//显示百位
   delay(1);
   wela3=0;

   wela2=1;
   P2=table[A2]-0x80;		//显示十位
   delay(1);
   wela2=0;

   wela1=1;
   P2=table[A3];		//显示个位
   delay(1);
   wela1=0;
}


void main()
{
	uint i;
	uchar a,dat;
	RS232_Init();	
	tmpchange();
	// delay(200);
	//for(a=10;a>0;a--)
	//{   		
		//display(tmp());
	//}	
	for(i=0;i<1024;i++){
		tmpchange();
		dat=400-tmp();
		AT24C08_Write_One_Dat(i,dat);
		for(a=20;a>0;a--)
			display(400-dat);
	}
	do{
		display(888);
		if(flag==1)
		{
			ES=0;
			flag=0;
			for(i=0;i<1024;i++){
				AT24C08_Read_One_Dat(i);
				USART_Transmit(dat1);
			}
			ES=1;
		}
	}while(1);
}
/*---------------------发送字符串函数--------------------------*/
void USART_Transmit_str() interrupt 4
{
	uchar a;
	RI=0;
//	P1=SBUF;
	a=SBUF;
	flag=1;
}


AT24C08.h源代码:

 

 

#ifndef _short_type_H_
#define _short_type_H_
#define uchar unsigned char
#define uint  unsigned int
#endif

#define sla 0xa0
#define NOP()  _nop_();_nop_();_nop_();_nop_();_nop_()

#define AT24C08_CONT P1

#define AT24C08_SDA 2
#define AT24C08_SCL 1


#define AT24C08_SDA_1() AT24C08_CONT |= (1<<AT24C08_SDA)
#define AT24C08_SDA_0() AT24C08_CONT &=~(1<<AT24C08_SDA)
#define AT24C08_SCL_1() AT24C08_CONT |= (1<<AT24C08_SCL)
#define AT24C08_SCL_0() AT24C08_CONT &=~(1<<AT24C08_SCL)

/*unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};
*/
void AT24C08_Start();//开始
void AT24C08_Stop();//结束
void AT24C08_Ack();//应答
void AT24C08_NO_Ack();//无应答

uchar AT24C08_Writ_Byte(uchar dat);//写数据
uchar AT24C08_Read_Byte();//读数据

int AT24C08_Write_One_Dat(uchar add,uchar dat);//写一字节数据
void AT24C08_Write_Mul_Dat(uchar add,uchar *s,uchar n);//写多字节数据
int AT24C08_Read_One_Dat(uchar add);//读一字节数据
void AT24C08_Read_Mul_Dat(uchar add,uchar *s,uchar n);//读多字节数据

void AT24C08_Clear();//清存储空间数据
void AT24C08_Delay1ms(uint x);//延时1ms
/****************串口通信*********************/
void RS232_Init();
void USART_Transmit(unsigned char buf);
void delay(uint count);
void display(uint temp);//数码管先显示
#endif

由于最近时间比较忙,这里过多的话就不说了。

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

单片机实时温度采集并通过串口通信上传电脑显示 的相关文章

  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • BufferBlock 连续

    我想使用以下方式实现消费者 生产者模式BufferBlock
  • 使用 GCHandle 将大型结构数组从 C# unity 脚本传递到 C++ dll 在 C++ 函数执行后崩溃

    我想从 C unity 脚本将结构数组传递给 c 本机插件 我做了如下操作 我可以访问数据 但我的应用程序在执行 c 函数后崩溃 我不知道为什么 C side StructLayout LayoutKind Sequential publi
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 如何部署包含第三方 DLL 文件的 C# 应用程序?

    首先 我对部署了解不多 我希望我的问题有意义 我需要将 C 应用程序安装 部署到多个桌面 它需要一个第三方 DLL 文件 一个 C 库 lpsolve55 dll 对于那些感兴趣的人 它是一个免费的 MIP LP 求解器 请参阅 lpsol
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • 应用新设置时如何防止 GraphicsDevice 被丢弃?

    我的游戏窗口允许手动调整大小 这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小 游戏还利用了RenderTarget2D rt2d 在主 Draw 方法中设置主渲染目标 GraphicsDevice SetRenderTarge
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 禁用实体框架的默认值生成(Code First)

    我数据库中有一个列不能为空 我想将其设置为默认值在数据库中 问题是实体框架似乎自己创建了一个默认值 例如 int gt 0 并且完全忽略了数据库中的默认值约束 有没有办法禁用实体框架的默认值 我发现您可以使用以下属性来装饰您的字段 Data
  • 如何在 ASP.NET Core 项目中使用 MStest 测试 Ok() 结果

    我正在使用 MStest 来测试我的控制器 我想测试这个动作 HttpGet Name GetGroups public async Task
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • ue4中导入substance designer sbsar格式材质

    文章末尾更新离线导入方式 ue4 16 3 首先在商城下插件 下载后 打开任意工程勾上 如果你在Launcher里面看会有下面情况 看起来没有4 16版本 实际上是可以的 不要用上图方式添加 直接在plugin里面加就可以了 然后就可以把s
  • 基于 Knative 低成本部署在线应用,灵活自动伸缩

    作者 冬岛 阿里巴巴高级技术专家 导读 Serverless 如今已是万众期待未来可期的状态 但一个系统到底具备怎样的能力才能更好地支撑 Serverless 应用 随着 Kubernetes 和云原生概念的崛起 Serverless 在
  • [原]红帽 Red Hat Linux相关产品iso镜像下载

    不为什么 就为了方便搜索 特把红帽EL 5 EL6 EL7 的各版本整理一下 共享出来 RedHat Enterprise Server 7 3 for x86 64 rhel server 7 3 x86 64 dvd iso SHA 2
  • git 远程删除不需要的文件

    git clone git 192 168 2 246 dev ncrm git 23 find name target 24 find name target xargs rm rf 25 find name target 26 git
  • Java集合的lastlastIndexOfSubList()方法具有什么功能呢?

    转自 Java集合的lastlastIndexOfSubList 方法具有什么功能呢 下文笔者将讲述lastlastIndexOfSubList 方法的功能简介说明 如下所示 lastlastIndexOfSubList 方法的功能 返回一
  • 【python基础知识】16.文件读写基础及操作

    文章目录 前言 读取文件 第1步 开 第2步 读 第3步 关 写入文件 第1步 开 第2步 写 第3步 关 练习时间来咯 小技巧 小练习 前言 文件读写 是Python代码调用电脑文件的主要功能 能被用于读取和写入文本记录 音频片段 Exc
  • 臻识车牌识别摄像头对接

    一 臻识车牌识别摄像头 1 非常有用的官方代码 内部有TCP HTTP等协议 2 官方常见问题 3 官方下载专区 二 http对接例子 1 自己使用java mock 模拟后台服务 你会用到的配置文件 java jar moco runne
  • 目标检测和跟踪小结

    一 目标检测 目标检测即为从序列图像中将变化区域从背景图像中提取出来 运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测 1 静态背景 背景差分法 帧间差分法 光流法 2 动态背景 需要进行图像的全局
  • 物联网LoRa系列-30:LoRaWAN A类/C类终端的载波信道资源与时间资源上下行调度算法

    前言 本文将从频率 时间这两个资源的角度 来剖析LoRaWAN A类 C类终端的信道选择算法与代码实现示例 不同的地区的频段 有不同的规范要求 算法有所差异 本文将以中国区的470M频段为例进行拆解 其他区域的频段以此类推 不同的终端类型
  • axmol引擎支持构建WASM了,非常简单

    随着 axmol 2 0 0 正式发布 axmol引擎带了了实验性的wasm构建支持 提供简单易用的命令即可构建wasm应用在浏览器上跑 具体步骤 下载最新引擎仓库 git clone https github com axmolengin
  • 我的DirectShow著作

    DirectShow开发指南 清华大学出版社出版 2003年12月 本书以DirectX SDK 9 0版为蓝本 涉及的内容几乎涵盖了在Windows平台上使用DirectShow进行C 编码的方方面面 全书共分4个部分 第1部分详细介绍了
  • thinkphp6 本地开发环境window如何安装

    先下载phpstudy 再看下面的教程 tp6框架入门 如何安装tp6以及创建实例应用 Mr LiJiaLe的博客 CSDN博客
  • 树的广度优先遍历和深度优先遍历(递归非递归、Java实现)

    在编程生活中 我们总会遇见树性结构 这几天刚好需要对树形结构操作 就记录下自己的操作方式以及过程 现在假设有一颗这样树 是不是二叉树都没关系 原理都是一样的 1 广度优先遍历 英文缩写为BFS即Breadth FirstSearch 其过程
  • “Required request body is missing”异常,要注意看看是不是下面这个问题

    今天在对接接口的时候报了这个异常 Required request body is missing 蛮坑的 不是什么很难的问题 真的很小的错误 一定要注意 这个异常是在代码中使用了 RequestBody注解的原因 如果前端调用接口传回参数
  • 三角函数基本运算,Clark变换,Park变换,三相系统动态方程

    目录 三角函数基本运算 Clark变换与Park变换 a b c abc abc
  • npm、yarn、cnpm、pnpm 使用操作都在这了

    大家好 我是若川 最近组织了源码共读活动 感兴趣的可以加我微信 ruochuan12 有时候想查个命令 或者换个镜像找了几篇文章才找到 最近闲着没事干 干脆整理一篇文档 以后就不用在网上瞎搜有的还写不全 Usage 全局安装 安装node自
  • excluded by a filter_【互宠】【强强】日后再说by画尘埃

    将公众号设为 星标 不错过每一次更新 图片源自网络 侵删 日后再说 by画尘埃 小狼狗帅攻 x 肤白貌美武力值高sl受 余睿 x 宴锦书 强受 互宠 有车 he 文案 如果硬要写属性的话 大概就是 难以形容只知道他很帅攻 x 肤白貌美腰细腿
  • 【Tomcat】在SpringBoot项目中,Tomcat是如何处理HTTP请求的

    目录 首先了解一下标准的Tomcat处理HTTP请求的流程 SpringBoot项目中Tomcat处理流程 首先了解一下标准的Tomcat处理HTTP请求的流程 监听端口 Tomcat 在启动时监听指定的端口 等待客户端发送请求 接收请求
  • 参考文献的交叉引用

    文章目录 插入参考文献 寻找参考文献 参考文献顺序更新 我们在写论文的时候需要引用参考文献 一般我们使用的是交叉引用 下面我详细的讲述一下如果在参考文献处加入交叉引用 插入参考文献 寻找参考文献 参考文献顺序更新 像上图 我们发现参考文献的
  • 单片机实时温度采集并通过串口通信上传电脑显示

    首先说下我所用到的主要器件器件 STC89C52 AT24C08 DS18B20 MAX232 实验源代码 接上18B20温度传感器 另购 后数码管显示出当前温度 include