当前位置: 首页 > news >正文

51单片机简易电阻电感电容RLC测量仪仿真设计

51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真+程序+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0040

51单片机简易电阻电感电容RLC测量仪仿真

  • 51单片机最小系统的相关知识
    • 复位电路:
    • 晶振电路:
    • P0口的上拉电阻:
    • 31脚EA/Vpp接电源:
  • 演示视频:
  • 1.本设计主要功能
  • 2.仿真
  • 3. 程序
  • 4.百度云网盘资源

51单片机最小系统的相关知识

单片机最小系统,或者称为 最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图。

img

复位电路:

一、复位电路的用途:单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。单片机复位电路如下图:

二、复位电路的工作原理在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。

开机的时候为什么会复位:在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在单片机启动的0.1S内,电容两端的电压时在03.5V增加。这个时候10K电阻两端的电压为从51.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

按键按下的时候为什么会复位:在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

晶振电路:

晶振电路:晶振是晶体振荡器的简称 在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络 电工学上这个网络有两个谐振点 以频率的高低分其中较低的频率是串联谐振 较高的频率是并联谐振 由于晶体自身的特性致使这两个频率的距离相当的接近 在这个极窄的频率范围内 晶振等效为一个电感 所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路 这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路 由于晶振等效为电感的频率范围很窄 所以即使其他元件的参数变化很大 这个振荡器的频率也不会有很大的变化

晶振有一个重要的参数 那就是负载电容值 选择与负载电容值相等的并联电容 就可以得到晶振标称的谐振频率

一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振 再有两个电容分别接到晶振的两端 每个电容的另一端再接到地 这两个电容串联的容量值就应该等于负载电容 请注意一般IC的引脚都有等效输入电容 这个不能忽略

一般的晶振的负载电容为15pF或12.5pF 如果再考虑元件引脚的等效输入电容 则两个22pF的电容构成晶振的振荡电路就是比较好的选择

如上图:晶振是给单片机提供工作信号脉冲的 这个脉冲就是单片机的工作速度 比如 12M晶振 单片机工作速度就是每秒12M 当然 单片机的工作频率是有范围的 不能太大 一般24M就不上去了 不然不稳定

晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波) 这个波对电路的影响不大 但会降低电路的时钟振荡器的稳定性 为了电路的稳定性起见 ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响 所以晶振所配的电容在10pf-50pf之间都可以的 没有什么计算公式

P0口的上拉电阻:

P0口作为I/O口输出的时候时 输出低电平为0 输出高电平为高组态(并非5V,相当于

悬空状态)。也就是说P0 口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。 由于P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。

1.一般51单片机的P0口在作为地址/数据复用时不接上拉电阻。

2.作为一般的I/O口时用时,由于内部没有上拉电阻,故要接上上拉电阻!!

3.当p0口用来驱动PNP管子的时候,就不需要上拉电阻,因为此时的低电平有效; 4.当P0口用来驱动NPN管子的时候,就需要上拉电阻的,因为此时只有当P0为1时候,才能够使后级端导通。

31脚EA/Vpp接电源:

STC89C51/52或其他51系列兼容单片机特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行,当接低电平时,复位后直接从外部ROM的0000H开始执行,这一点是初学者容易忽略的。

演示视频:

基于51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真+程序+讲解视频)

1.本设计主要功能

运用所学知识,制作一个51单片机电阻电感电容测量仪

1、测量范围:电阻 100Ω-100KΩ;

电容 1000pF-1uF;

电感 1mH-1000mH。

2、测量精度:5%。

3、制作1602液晶显示器,显示测量数值,通过开关选择测量类型。

以下为本设计资料展示图:

2.仿真

开始仿真

开始仿真后可以通过滑动变阻器改变测了电阻值,改动后长按测量按键显示。

测量电阻10000Ω测量值10156Ω

测量电感100mH测量值86mH

测量电容5016pF测量值5000pF
电阻测量

电容电感测量

3. 程序

img

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
sbit R=P1^0;
sbit C=P1^1;
sbit L=P1^2;
sbit A1=P1^3;
sbit A0=P1^4;

#define LCD_data P0
uchar code table1[10]={“R= R”};
uchar code table2[10]={“C= pF”};
uchar code table3[10]={“L= mH”};

uchar code f_table[88]={13,14,15,16,17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100};
uchar code f_correct[88]={9,10, 11, 12, 12, 12, 13, 14, 15, 16, 17, 18, 18, 18, 19, 20, 21, 21, 22, 23, 24, 25, 25, 26, 26, 27, 28, 29, 29, 30, 30, 31, 32, 33, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 41, 42, 42, 43, 44, 45, 45, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54, 54, 55, 55, 56, 57, 57, 58, 59, 60, 60, 62, 62, 63, 64, 64, 65, 66, 66, 67, 67, 68, 69, 70, 71, 71,};

uchar a6,a5,a4,a3,a2,a1;
uchar flag;
unsigned long cnt,cnt1;
uchar f_cnt;

/********************************/

void delay_us(); //18us
void delay_ms(uint);
void lcd_init();
void lcd_write_com(uchar com);
void lcd_write_dat(uchar dat);
void lcd_init();
void lcd_display(uchar add,uchar dat);
/***********************************/

void delay_us()
{
uchar x;
for(x=0;x<5;x++);
}

void delay_ms(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<123;y++);
}
void lcd_write_com(uchar com)
{
E=0;
RS=0;
RW=0;
delay_us();
LCD_data=com;
E=1; //高脉冲写入数据
delay_us();
E=0;
}
void lcd_write_dat(uchar dat)
{
E=0;
RS=1;
RW=0;
delay_us();
LCD_data=dat;
E=1; //高脉冲写入数据
delay_us();
E=0;
}
void lcd_init() //lcd初始化
{
delay_ms(15);
lcd_write_com(0x38);
delay_ms(10);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
delay_ms(2);

}
void timer_init(void) //定时器初始化
{
TMOD=0X51;
PT0=1; /中断优先/
TH0=0x3c;
TL0=0xb0;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
void lcd_display(uchar add,uchar dat) //lcd显示(地址,数据)
{
lcd_write_com(add);
lcd_write_dat(dat);
delay_us();

}
void real_display(void) //LCD显示
{
if(!R)
{
// while(!R);
A1=A0=0;
lcd_display(0x80,table1[0]);
lcd_display(0x80+1,table1[1]);
lcd_display(0x80+8,table1[8]);
lcd_display(0x80+9,table1[9]);
}
else if(!C)
{
A0=0;A1=1;
lcd_display(0x80,table2[0]);
lcd_display(0x80+1,table2[1]);
lcd_display(0x80+8,table2[8]);
lcd_display(0x80+9,table2[9]);
}
else if(!L)
{
A0=1;A1=0;
lcd_display(0x80,table3[0]);
lcd_display(0x80+1,table3[1]);
lcd_display(0x80+8,table3[8]);
lcd_display(0x80+9,table3[9]);
}
if(a6)
lcd_display(0x80+2,0x30+a6);
else
lcd_display(0x80+2,’ ');

		if(a6||a5)lcd_display(0x80+3,0x30+a5);elselcd_display(0x80+3,' ');if(a6||a5||a4)lcd_display(0x80+4,0x30+a4);	elselcd_display(0x80+4,' ');if(a6||a5||a4||a3)lcd_display(0x80+5,0x30+a3);	elselcd_display(0x80+5,' ');if(a6||a5||a4||a3||a2)lcd_display(0x80+6,0x30+a2);elselcd_display(0x80+6,' ');lcd_display(0x80+7,0x30+a1);

}

void correct(void) //误差修正函数
{
uchar i,k;
unsigned long wucha;
if(cnt<100000) //100KHz以内的修正
{
if(cnt>980&&cnt<2100) cnt-=1;
if(cnt>=2100&&cnt<3900) cnt-=2;
if(cnt>=3900&&cnt<4800) cnt-=3;
if(cnt>=4800&&cnt<5700) cnt-=4;
if(cnt>=5700&&cnt<8000) cnt-=5;
if(cnt>=8000&&cnt<9100) cnt-=6;
if(cnt>=9100&&cnt<10900) cnt-=7;
if(cnt>=10900&&cnt<11900) cnt-=8;
if(cnt>=11900&&cnt<13000) cnt-=9;
if(cnt>=13000&&cnt<=100000)
{
k=cnt/1000;
for(i=0;i<88;i++)
{
if(k==f_table[i])
{
cnt-=f_correct[i];
}
}
}

}
if(cnt>100000)	 
{wucha=(cnt/1000)*73065/100000;cnt-=wucha;
}

}

void main()
{

timer_init();
lcd_init();
while(1)
{		if(flag==1){real_display();flag=0;}}

}
void timer0() interrupt 1
{
uchar timer0;

TH0=0x3c;	  //50ms
TL0=0xb0;
timer0++;
if(timer0==20)	 //一秒测试一次
{TR1=0;	  //关闭的计数器EA=0;cnt=TL1+TH1*256+f_cnt*65536; correct();//cnt1=(1e+9)/(2*0.693 *cnt)-20000/2;if(!R)						   //测量电阻{

// while(!R);
cnt1=1000000/(0.20.693cnt)-165;
}
else if(!C) //测量电容
{
cnt1=1000000000/(0.6933510cnt);
}
else if(!L)
{
cnt1=(1e+9)/(4
3.143.14cntcnt0.05); //测量电感
}
timer0=0;

	a6=cnt1%10000000/100000;a5=cnt1%100000/10000;a4=cnt1%10000/1000;a3=cnt1%1000/100;a2=cnt1%100/10;a1=cnt1%10;  flag=1;TH1=0;TL1=0;TH0=0x3c;TL0=0xb0;cnt=0;f_cnt=0;EA=1;TR1=1;	   //打开计数器}

}

void int1() interrupt 3
{
f_cnt++;
}

4.百度云网盘资源

下载方式见文章开头视频或下方

img

百度云分享链接

相关文章:

51单片机简易电阻电感电容RLC测量仪仿真设计

51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真程序讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0040 51单片机简易电阻电感电容RLC测量仪仿真51单片机最小系统的相关知识复位…...

[软件工程导论(第六版)]第6章 详细设计(课后习题详解)

文章目录1 假设只有SEQUENCE和DO-WHILE两种控制结构&#xff0c;怎样利用它们完成 IF THEN ELSE操作&#xff1f;2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构&#xff0c;怎样利用它们完成DO WHILE操作&#xff1f;3 画出下列伪码程序的程序流程图和盒图&#xff1a;4…...

【2.19】算法题2:贪心算法、动态规划、分治

题目&#xff1a;给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组 是数组中的一个连续部分。方法一&#xff1a;贪心算法原理&#xff1a;若当前指针所指元素之前的和小…...

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …...

VNCTF 2023复现

文章目录象棋王子电子木鱼BabyGo象棋王子 签到题&#xff0c;直接在源码中找就ok。 找到一处编码&#xff0c;在控制台输出。 flag为&#xff1a;flag{w3lc0m3_t0_VNCTF_2023~~~} 电子木鱼 需要先理清代码逻辑。 存在三个路由。 一&#xff1a;/路由用来查看当前的功德数量…...

python基础知识有哪些需要背(记住是基础知识)我是初学者

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;一个有趣的事情&#xff0c;一个有趣的事情&#xff0c;今天让我们一起来看看吧&#xff01; 1、python基础知识有哪些需要背&#xff08;记住是基础知识&#xff09;我是初学者 或看好Python的广阔前景&#xff0c;或…...

Linux下TCP连接断开后不释放的解决办法

问题&#xff1a;在开发测试时发现断开与服务器端口后再次连接时拒绝连接。 分析&#xff1a;服务器上查看端口占用情况&#xff0c;假设端口为8888。 netstat -anp |grep 8888 发现端口8888端口显示被占用&#xff08;ip为本机ip确定是上次连接&#xff09;且状态为ESTABLI…...

1.关于嵌入式开发软件工程师的理解

学习嵌入式软件开发&#xff0c;首先要学会使用工具&#xff0c; 包括各种语言&#xff0c;C语言、FPGA、C等各种工具软件&#xff0c;各种芯片开发的IDE环境各种操作系统&#xff0c;Vxworks、Linux、Freertos等计算机基础&#xff0c;基本的框架结构&#xff0c;网络通信等编…...

1760字,让你拿捏 [‘列表‘]

如约而至&#xff0c;紧接着第一篇文章&#xff0c;小编将会陆续把自己精心做的全套Python笔记依次发放给大家&#xff0c;便于大家学习Python、期末备考、巩固基础等(这几期是公众号小插曲&#xff0c;后期发放编程技术的话主要还是会围绕Java来展开&#xff0c;感谢小伙伴们的…...

A562基于android的养老APP

需求信息&#xff1a; 1&#xff1a;家庭信息管理,包括家庭成员基本情况、性别、年龄、关系、工作单位、联系方式&#xff08;手机号码、微信等&#xff09;&#xff1b; 2&#xff1a;个人健康数据管理,包括姓名、性别、年龄、关系、原工作单位、联系方式&#xff08;手机号码…...

java面试题-并发基础

1.多线程的出现是要解决什么问题的? 本质什么?提高程序性能&#xff1a;单线程程序只能按照固定的顺序依次执行每个任务&#xff0c;无法同时处理多个任务。多线程技术可以在同一时间内执行多个任务&#xff0c;从而提高程序的运行效率和响应速度。提高程序的并发性&#xff…...

用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影

要实现3D空间中的点坐标转换为屏幕二维点坐标&#xff0c;需要进行透视变换和投影变换。以下是一些基本的思路和示例代码&#xff0c;可以用于实现主视图、侧视图、俯视图、正等轴投影。 1. 主视图投影 主视图投影是指以一个点作为视点&#xff0c;从一个方向观察物体&#x…...

.sh脚本文件的执行方式

方法1&#xff1a; ./xxx.sh方法2&#xff1a; source xxx.sh方法3&#xff1a; bash xxx.sh方法4: sh xxx.sh初识shell&#xff0c;学习并记录...

Android 基础知识4-2.5View与VIewGroup的概念、关系与区别

1.概念&#xff1a; Android里的图形界面都是由View和ViewGroup以及他们的子类构成的&#xff1a; View&#xff1a;所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup&#xff1a; View类的子类&#xff0c;可以拥有子控件,可以看作是容器 Android UI中的控件都是…...

【ESP 保姆级教程】玩转巴法云篇① ——初识巴法云

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-19 ❤️❤️ 本篇更新记录 2023-02-19 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

Python学习-----模块3.0(正则表达式-->re模块)

目录 前言&#xff1a; 导入模块 1.re.match() 函数 &#xff08;1&#xff09;匹配单个字符 &#xff08;2&#xff09;匹配多个字符 (3) 匹配开头和结尾 2.re.search() 函数 3.re.findall() 函数 4.re.finditer() 函数 5.re.split() 函数 6.re.sub() 函数 7.re.sub…...

JSP中http与内置对象学习笔记

本博文讲述jsp客户端与服务器端的http、jsp内置对象与控制流和数据流实现 1.HTTP请求响应机制 HTTP协议是TCP/IP协议中的一个应用层协议&#xff0c;用于定义客户端与服务器之间交换数据的过程 1.1 HTTP请求 HTTP请求由请求行、消息报头、空行和请求数据4部分组成。 请求行…...

Windows Server 2016远程桌面配置全过程

镜像下载 系统镜像网址 本次下载的是 Windows Server 2016 (Updated Feb 2018) (x64) - DVD (Chinese-Simplified) 远程桌面配置 Step 1 在开始菜单搜索服务&#xff0c;打开服务器管理器&#xff0c;点击右上角的管理按钮 Step 2 添加角色控制&#xff0c;点击下一步 S…...

SPI通讯简介

一、基本概念 SPI是串行外设接口(Serial Peripheral Interface)的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;主要应用在EEPROM,FLASH,实时时钟&#xff0c;AD转换器&#xff0c;多MCU间通讯等等&#xff0c;SPI端口可以在多主器件…...

Python 迭代器

迭代器协议 对象必须提供一个 next() 方法&#xff0c;执行该方法要么迭代下一项&#xff0c;要么就引起一个 StopIteration异常以终止迭代&#xff08;只能往后不能往前&#xff09;—— 迭代器协议 协议是一种约定&#xff0c;可迭代对象实现了迭代器协议&#xff08;for、…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...