基于AT89C52单片机的温度检测报警设计

news2024/11/11 14:51:37

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87708680?spm=1001.2014.3001.5503
在这里插入图片描述
源码获取
主要内容:
本系统的设计主要是了解了单片机微型计算机,根据现实生活的需要以及已掌握的理论知识,制定出单片微型计算机实时控制的温度报警系统设计方案,把温度传感器这个单独的器件,配以一些其他电路,让它实现探测温度、显示温度、并且超高温、低温报警,并进行调试验证方案的可行性,最终完成设计。
基本要求:
1、温度检测及报警系统电路设计图;
2、温度检测及报警系统设计源程序;
2、keil运行源程序;
3、protus中仿真;
4、运行结果分析。
主要参考资料:
[1]曹巧媛. 单片机原理及应用[M].北京:电子工业出版社,2002:1-351
[2]周坚.单片机C语言轻松入门[M]. 北京:北京航空航天大学出版社,2006.
[3]曹天汉.单片机原理与接口技术[M]. 北京:电子工业出版社,2006.
[4]张秀国.单片机C语言程序设计教程与实训[M]. 北京:北京大学出版社,2008.
[5]赵文博,刘文涛.单片机语言C51程序设计[M]. 北京:人民邮电出版社,2005.
完 成 期 限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:

摘 要
在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。
本文采用美国DALLAS半导体公司推出的一种改进型温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本文介绍一种基于STC89C51单片机的温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围-55℃-~+125℃,使用液晶模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,STC89C51单片机功能和应用。该电路设计合理、功能实用、结构简单。

关键词:STC89C52RC单片机;温度传感器DS18B20;lcd液晶显示器

目录
摘 要 I
1概述 1
1.1选题的背景和意义 1
1.2设计任务与要求 1
1.3设计目的 1
2总体设计方案 2
2.1 方案阐述 2
2.2 基本思路 2
2.3系统设计原理 2
2.4系统组成 2
3硬件设计 3
3.1硬件原理框图 3
3.2硬件结构及原理 3
4软件设计 7
4.1设计方案 7
4.2软件编写工具 7
4.3 总体设计 7
4.4主程序流程 8
4.5程序分析 9
5系统调试 14
5.1仿真软件 14
5.2调试结果 15
5.3结论 15
6心得体会 16
参考文献 17

1概述
1.1选题的背景和意义
随着社会的发展特别是工业的发展,人民生活的改善,安全问题变得更加重要。目前,在许多情况下都需要对环境的温度进行限定,其中包括人的生活工作环境、仪器设备的工作环境以及动植物的生长环境等。如果环境温度超过或者低于限制值,必定对所处环境的人或设备造成影响,甚至给个人和社会造成巨大的损失。因此,在某些特定环境内使用温度报警器来对温度进行实时监控并做到超温报警,而使用单片微型计算机实时控制温度报警系统则是其中的一种重要方式。本方案的设计主要是了解了单片机微型计算机实时控制的温度测量报警系统的历史与现状,根据现实生活的需要以及已掌握的理论知识,制定出单片微型计算机实时控制的温度报警系统硬件、软件的设计方案,把温度传感器这个单独的器件,配以一些其他电路,让它实现探测温度、显示温度、并且超高温、低温报警,并进行调试验证方案的可行性,最终完成设计。
1.2设计任务与要求
(1)温度检测:通过传感器和系统连接,能实时准确检测到现场温度。
(2)温度显示:把现场实时检测到的温度值显示出来。
(3)报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出报警提示。
1.3设计目的
(1)通过对温度报警电路的设计、安装和调试,掌握温度报警电路的工作原理和运算放大器在实际电子电路中的应用。
(2)学会运用keil软件编写程序,提高分析程序的能力。
(3)进一步熟悉STC89C52RC单片机外部引脚的线路连接方法。
(5)学会使用Proteus仿真软件对设计的电路进行仿真。
(6)学会使用DXP制作电路图。
2总体设计方案
2.1 方案阐述
通过分析可以知道,所要设计温度检测与报警装置的温度测量范围为-55~125℃,在lcd上并能设置上下限报警温度,超过或低于限制温度发出报警提示。该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。
2.2 基本思路
利用单片机的P2.5、P2.6、P2.7作为LCD1602的控制位,P0口作为数据位控制LCD1602,用LCD1602显示被测量温度的数值、上下限报警温度;P3.4、P3.5 、P3.6、P3.7口控制手动控制按键,用来调节上下限报警温度;P2.0口作为18b20的接入端;P2.口作为蜂鸣器的接入端。
2.3系统设计原理
利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到LCD中显示。
2.4系统组成
本课题以是STC89C52RC单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器STC89C52RC、单片机复位、报警按键设置、时钟振荡、LCD显示、温度传感器组成。
3硬件设计
3.1硬件原理框图
温度检测与报警系统设计由主控制器STC89C52RC、单片机复位、报警温度按键设置、时钟振荡、LCD1602显示、温度传感器及蜂鸣器组成。
原理框图如图3-1所示:

在这里插入图片描述

图3-1原理框图

3.2硬件结构及原理
3.2.1 STC89C52RC单片机工作电路
本设计的核心是单片机电路,考虑到需要一个中断输入,存储容量、外部接口对单片机端口的需要以及兼顾到节约成本的原则,选用了常用的STC89C52RC单片机。STC89C52RC是低功耗、高性能、经济的8位CMOS微处理器,工作频率为0—40MHz,内置8K字节可编程只读闪存,512位的内部RAM,16位可编程I/O总线。它采用Atmel公司的非易储器制造技术,与MCS-51的指令设置和芯片引脚可兼容。STC89C52RC可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STC89C52RC工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。如图3-2-1所示
在这里插入图片描述

图3-2-1 STC89C52RC工作电路
在这里插入图片描述

3.2.2 STC89C52RC复位电路
在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无图3 STC89C52RC工作电路论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。
而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态, 并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。如图3-2-1所示:

图3-2-2 复位电路
3.2.3 STC89C52RC时钟电路
时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。内部时钟方式电路图如图3-2-3所示:
在这里插入图片描述

图3-2-3 时钟电路
3.2.4 STC89C52RC显示电路
1602字符型LCD模块的应用非常广泛,而各种液晶厂家均有提供几乎都是同样规格的1602模块或兼容模块,尽管各厂家的对其各自的产品命名不尽相同;1602字符型LCD模块最初采用的LCD控制器采用的是HD44780,在各厂家生产的1602模块当中,基本上也都采用了与之兼容的控制IC,所以从特性上基本上是一样的;当然,很多厂商提供了不同的字符颜色、背光色之类的显示模块。
在这里插入图片描述

图3-2-4 液晶显示电路

3.2.5 DS18B20
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。如图3-2-5所示:

图3-2-5 DS18B20电路
在这里插入图片描述

3.2.6蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。如图3-2-6所示:
在这里插入图片描述

              图3-2-6 蜂鸣器电路图

4软件设计
4.1设计方案
本设计智能温度报警系统由温度采集、信号处理、温度监测、输出控制四部分组成。它通过预先设在单片机中的高低温度值来对非常温度值进行报警,也可以通过安检的控制对温度进行高低的设定最低可以由0℃开始进行温度的设定,从DSI8B20 采集到的温度经信号调理电路处理后直接送入单片机进行刷新。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示温度值、输出相应的控制信号,并根据当前状态输出正常、报警等信号,同时将各种数据通过数码管进行显示监控。
4.2软件编写工具
编写工具选用美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统Keil C51,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
4.3 总体设计
该温度检测的设计采用C51语言编程。系统程序由主程序、温度设定子程序、温度采集子程序、温度刷新子程序、液晶显示程序和按键子程序等部分组成(程序流程图如图4-3所示)。

在这里插入图片描述

图4-3系统设计流程图
4.4主程序流程
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4-4所示:

![在这里插入图片描述](https://img-blog.csdnimg.cn/e8ac95ced3d64233b63ea583a732219a.png)

图4-4主程序流程
4.5程序分析
4.5.1 读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
程序如下:

void ReadTemperature(void)
{
   unsigned char L=0;
   unsigned char H=0;
   Init_DS18B20();
   WriteOneChar(0xCC);//跳过读序号列号的操作
   WriteOneChar(0x44);//启动温度转换
   delay_18B20(100);
   Init_DS18B20();
   WriteOneChar(0xCC);//跳过读序号列号的操作
   WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器前两个就是 温度                
   L=ReadOneChar();
   H=ReadOneChar();
   if(H>0xf8)      	//高位前五位为1时温度是负
   {
		L=~L+1;
		H=~H;    
		f=0;      					//读取温度为负时fg=0
		sdata = L/16+H*16;      	//整数部分
	    xiaoshu1 = (L&0x0f)*10/16; 		//小数第一位
    	xiaoshu2 = (L&0x0f)*100/16%10;	//小数第二位
	}
//传感器返回值除16得实际温度值
//为了得到2位小数位,先乘100,再除16,考虑整型数据长度,
	else
   	{
	    f=1;
        sdata = L/16+H*16;           	//整数部分
    	xiaoshu1 = (L&0x0f)*10/16; 		//小数第一位
    	xiaoshu2 = (L&0x0f)*100/16%10;	//小数第二位
	}
}
4.5.2 显示数据刷新子程序
显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示。
程序如下:
void display(unsigned int date)	 //显示温度,
{
      if(date/100==0) //100度内
      {
         write_com(0x84);
         write_data(shuzu[date/10]);//十位
         write_com(0x85);
         write_data(shuzu[date%10]);//个位
         write_com(0x86);
         write_data(shuzu[13]);//小数点
         write_com(0x87);
         write_data(shuzu[xiaoshu1]);//小数点后一位
         write_com(0x88);
         write_data(shuzu[xiaoshu2]); //小数点后二位
         write_com(0x89);
         write_data(shuzu[12]);
      }
      else if(date/100==1)	  //100度上
      {
         write_com(0x84);
         write_data(shuzu[date/100]);//百位
         write_com(0x85);
         write_data(shuzu[(date-100)/10]);//十位
         write_com(0x86);
         write_data(shuzu[date%10]);//个位
         write_com(0x87);
         write_data(shuzu[13]);//点
         write_com(0x88);
         write_data(shuzu[xiaoshu1]);//小数点后一位
         write_com(0x89);
         write_data(shuzu[xiaoshu2]);//小数点后二位
      }
}
4.5.3按键扫描子程序
第一步:平时没有按键被触发时,不会执行程序。
第二步:一旦有按键被按下,执行去抖动延时,再判定。
第三步:如果按键按下的时间超过了去抖动延时,则触发按键,马上把按键值锁定,防止按住按键不松手后一直触发。
第四步:等按键松开后,自锁不执行,为下一次自锁做准备。
第五步:以上整个过程,就是识别按键IO口下降沿触发的过程。
程序如下:
void key()		//按键加减标尺

{ 
   if(keym==0)//判定
   {
     delay_50us(100);//延时
     if(keym==0)
     {
       y++;//转换加减的数值
       if(y==2)m=1;
       else if(y==3)m=5;//数值5
	   else if(y==4)m=10; //数值10
       else if(y>=5)y=1; //数值1
	   while(keym==0);//自锁
     }
   }
   if(keyh==0)//上下限转换按键
   {
     delay_50us(100);
     if(keyh==0)
     {
       o++;
   	   if(o>=3)o=0;//1为上限选中,2为下限选中,0为隐藏
  	   while(keyh==0);
     }
   }
/调节上限温度	  
   if(keyu==0&o==1)//上限加按键
   {
     delay_50us(100);
     if(keyu==0&o==1)
     {
        u=u+m; while(keyu==0);
     }
   }
   if(keyl==0&o==1) //上限减按键

   {
      delay_50us(100);
      if(keyl==0&o==1)
      {
        u=u-m; while(keyl==0);
      }
   }
 调节下限温度
   if(keyu==0&o==2)//下限加按键
   {
      delay_50us(100);
      if(keyu==0&o==2)
      {
         l=l+m;while(keyu==0);
      }
   }
   if(keyl==0&o==2)//下限减按键
   {
      delay_50us(100);
      if(keyl==0&o==2)
      {
        l=l-m;while(keyl==0);
      }
   } 
}

5系统调试
5.1仿真软件
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,仿真的结果与测试结果较为接近。Proteus软件是英国L阿宝center electronics公司出版的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。该软件功能强大。先在proteus上按照电路图连接好电路图,打开程序HEX文件进行仿真。仿真结果如下,lcd能正常显示温度和上下限温度,按键可以准确调节上下限温度,仿真结果与理论接近。
在这里插入图片描述

图5-1仿真图
5.2调试结果
开启电源,打开开关,LCD1206显示欢迎并开始测温。当温度超过上限温度或低于下限温度时报警提示正常,以下是实时温度的一些测量值,因1602的显示屏大小不能设置到小数部分的报警温度,只能设定到整数部分的报警温度。

表5.2 温度测试结果
温度测量
温度计温度 10.3℃ 23.6℃ 31.2℃ 42.1℃ 54.3℃ 62.1℃ 73.8℃
测量值 10.2℃ 23.3℃ 31.0℃ 41.8℃ 54.8℃ 61.5℃ 74.1℃
相对误差 0.9% 0.8% 0.6% 0.7% 0.9% 0.9% 0.4%
上限报警温度测量
上限设定报警温度 50℃ 55℃ 60℃ 65℃ 70℃ 75℃ 80℃
报警温度 >=50.0℃ >=55.0℃ >=60.0℃ >=65.0℃ >=70.0℃ >=75.0℃ >=80.0℃
下限报警温度测量
下限设定报警温度 10 15 20 25 30 35 40
报警温度 <=10.0℃ <=15.0℃ <=20.0℃ <=25.0℃ <=30.0℃ <=35.0℃ <=40.0℃
5.3结论
该智能温度报警系统结构简单,具有一定的实际应用价值。该智能温度报警系统只是DS18B20在温度控制领域的一个简单实例,此外,还能广泛地应用于各种工业生产领域,如建筑,仓储等行业,特别是在蔬菜大棚的应用上,本次设计虽然完成了,但是次设计也还是有些许不足的地方,与实际温度计测量到的温度还是有差距,因为能力的问题,该智能温度报警系统精确度最高可达到相差0.1℃,最大误差为1.5℃;能够设定的上限温度范围为0℃到120℃,下限温度为-50℃到99℃。

6心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生运用所学知识解决实际问题的能力。课程设计这类实践训练是我们迈向社会,从事职业工作前一个必不少的过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
单片机作为一种最简单的软件,与我们的日常生活息息相关,了解一些单片机程序的简单录入是非常必要的。如:LED显示器、键盘和显示器的应用和原理。
在本次课程设计的制作中,使我深深地体会到了单片机在现实生活中的小小应用,既增强了我的好奇心,又巩固了我的理论知识。更让我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,单片机就有可能让他成为现实。这里我学习完protues 软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在这次课程设计中不仅只对单片机编程有了新的认识,还对整个单片机的开发平台都有了一厅的了解,这是一笔不错的收获。

参考文献
[1]曹巧媛. 单片机原理及应用[M].北京:电子工业出版社,2002:1-351
[2]周坚.单片机C语言轻松入门[M]. 北京:北京航空航天大学出版社,2006.
[3]曹天汉.单片机原理与接口技术[M]. 北京:电子工业出版社,2006.
[4]张秀国.单片机C语言程序设计教程与实训[M]. 北京:北京大学出版社,2008.
[5]赵文博,刘文涛.单片机语言C51程序设计[M]. 北京:人民邮电出版社,2005.
[6]沈文,詹卫前. 单片机C语言开发入门指导[M].北京:清华大学出版社,2003:17-131
[7]耿德根,宋建国. AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,05:358-410

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux应用程序开发:静态库与动态库的制作及使用

目录 一、库的简介二、静态库与动态库的简介三、静态库制作与调用案例四、动态库制作与调用案例 一、库的简介 库是一种可执行的二进制文件&#xff0c;是编译好的代码。使用库可以提高开发效率。而Linux库的种类可分为动态库和静态库。 二、静态库与动态库的简介 1、静态库&a…

第十七届中国CFO大会圆满举办 用友蝉联中国CFO首选智能财务厂商!

4月21日&#xff0c;由财政部指导、《新理财》杂志社主办、用友等单位协办的「数字财务 智能引领」第十七届中国CFO大会在北京圆满举办&#xff01;业内专家、权威学者以及众多来自央国企等知名大型企业的财务领路人荟聚一堂&#xff0c;共襄中国CFO领域的顶尖盛会&#xff0c;…

数字化转型中的石头和沙子问题

作者介绍 朱金衡&#xff0c;西门子Mendix 高级技术咨询顾问及架构师&#xff0c;Mendix Certified 中级培训讲师以及TOGAF Certified 企业架构师。作为专家服务架构师提供咨询服务&#xff0c;如方案设计、开发辅导、故障排除、应用程序审查等&#xff0c;同时创造了许多专门…

【算法】从x的n次方看递归时间复杂度计算

从x的n次方看递归时间复杂度计算 1.循环 这个问题&#xff0c;最简单的办法是用循环 int pow1(int x,int n) {int result 1;for(int i0;i<n;i){result*x;}return result; }如上算法的时间复杂度为O(N)&#xff0c;但还是不够理想。这时尝试使用递归算法 2.递归1 int po…

交换机的电口和光口到底是个啥东东,做网络的这个常识得懂!

在计算机网络中&#xff0c;交换机是一个非常重要的设备&#xff0c;它可以将来自不同设备的数据包进行转发和交换。交换机通常具有多个接口&#xff0c;其中包括光口和电口。在本文中&#xff0c;我们将详细讨论交换机的光口和电口的概念以及它们的不同之处。 电口 电口是交换…

应届生的天坑,悔不该进那外包啊.....

关于计算机专业应届生毕业之后会遇到的就业问题&#xff0c;网上已经有许多的套路&#xff0c;实际上许多人在选择专业的时候并没有考虑到之后的就业方向&#xff0c;甚至于自己所学的专业面向的工作岗位都不是特别清楚。计算机专业毕业大概率是要做程序员的&#xff0c;而目前…

RichTextBox控件详解

RichTextBox和TextBox的区别 从外观来看 multiline设置为true or false区别 textbox RichTextBox 先看截图 属性 AcceptsTab AutoWordSelection BulletIndent DetectUrls Dock EnableAutoDragDrop HideSelection Lines ScrollBars WordWrap SelectionIndent and SelectionC…

FE_TA不知道的CSS 换行系列【1】white-space

在W3C官方描述中&#xff0c;white-space主要有以下两个作用&#xff1a; 是否进行空格合并&#xff0c;以及控制空格合并的方式&#xff1b;是否在soft wrap opportunities&#xff08;文本中可进行换行的断点位置&#xff09;处进行文本换行。 从字面意思来看white-space即…

从github下载项目并进行环境配置

文章目录 1 设置虚拟环境2 git clone 链接地址3 环境配置 1 设置虚拟环境 利用pycharm打开项目&#xff1a;File->Open配置对应的虚拟环境&#xff1a;File->Setting->Project->Python解释器&#xff0c;然后选择对应的虚拟环境如果没有提前设置虚拟环境&#xf…

私人工具集6——使用C# 创建一个简单的restful风格的WebAPI

创建一个简单的WebApi 工具&#xff1a;VS2022 创建新项目 打开VS2022,创建新项目&#xff0c;可以搜索API作为关键字。 为项目取个名字 创建的应用程序&#xff0c;选择WebAPI&#xff0c;注意&#xff0c;右侧的信息默认即可&#xff0c;不要随意选择。 点击创建&#xff…

高可用消息服务消息一致、可靠性、链路稳定性核心关注点

面临的问题 初期业务主要的场景是直播间的群聊消息以及一小部分的单聊消息。由于是教育场景&#xff0c;所以业务在划分聊天室的时候是以班级为单位进行划分的&#xff0c;假设每个聊天室的人数为500人。 问题一&#xff1a;用户的维护 直播场景的群聊与微信等常见的群聊在用…

可视化大屏模板|不玩虚的,套用立得报表

写在前面&#xff1a;这是报表&#xff0c;是可视化大屏报表&#xff0c;是可以直接套用来分析我们自己数据源的可视化大屏报表模板。不是单纯的图片&#xff01; 在一些社交平台上经常看到有人误将可视化大屏图片当做报表求分享。可以理解大家都想要将报表做得好看&#xff0…

信息收集(三)端口和目录信息收集

信息收集&#xff08;一&#xff09;域名信息收集 信息收集&#xff08;二&#xff09;IP信息收集 端口是什么 "端口"是英文port的意译&#xff0c;可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口&#xff0c;其中虚拟端口指计算机内部或交换机…

Matlab绘图中的一些技能

目录 1、matlab坐标轴设置多种字体(复合字体) 2、matlab图片中title生成的标题转移至图像下端 3、指定对应格式和期望dpi的图像进行保存、以及不留白保存 4、设置字体字号&#xff08;x、y轴&#xff0c;标题。全局字体等&#xff09; 5、设置刻度值信息&#xff0c;只有左…

ConcurrentHashMap是如何保证线程安全的

ConcurrentHashMap是如何保证线程安全的 定义和问题解决JDK 1.7实现原理JDK 1.8性能优化总结 定义和问题解决 ConcurrentHashMap相当于HashMap的多线程版本。 它的功能本质上和HashMap没有什么区别&#xff0c;因为HashMap在并发操作的时候会出现各种问题&#xff0c;比如&am…

Android混淆和反混淆

本篇来介绍下Android的混淆和反混淆&#xff0c;说起混淆&#xff0c;大家都会很自然地想到ProGuard&#xff0c;此外还有R8。事实上&#xff0c;AGP3.3之后&#xff0c;官方默认使用R8做代码优化、混淆和压缩。ProGuard和R8常常用于混淆最终的Android项目&#xff0c;增加项目…

Vue-router【VUE】

6. vue-router 6.1 相关理解 6.1.1 vue-router 的理解 路由就是一组key-value的对应关系。多个路由&#xff0c;需要经过路由器的管理vue是一个插件库&#xff0c;专门用来实现SPA应用。 6.1.2 对SPA应用的理解 单页 Web 应用&#xff08;single page web application, SP…

C++基础阶段入门 (1)

1.C统一初始化: 初始化列表解决方案&#xff1a; //C语言的初始化方案 int main() {int a 10;int* ip nullptr;int ar[] { 12,23,34,45,56,67 }; } C 初始化&#xff1a;使用{ } int main(){//char ch a;char ch{ a };//int a 10;int a{ 10 };int b int(10);int x{ 10…

企业软文怎么写吸引人?教你几招

企业每年都要投放大量的商业软文到热门的内容平台上&#xff0c;也许现在你阅读的某篇文章&#xff0c;就是一篇企业软文。 真正厉害的软文在于你根本看不出来这是一条广告&#xff0c;从而让你心甘情愿的为某个产品掏腰包。企业软文到底怎么写才吸引人&#xff0c;接下来伯乐…

sfavsrv导致主机负载高

下午接客户电话&#xff0c;监控告警了&#xff0c;主机负载高&#xff0c;登录后top查看&#xff0c;确实比较的高 再次查看负载高的cpu发现是sfavsrv 吓了一跳&#xff0c;还以为中毒了&#xff0c;发给客户检查是否自行部署了第3方软件&#xff0c;确实第3方的&#xff0c;关…