单片机原理及应用

单片机原理

  • 一、单片机概述
    • 1.1 各种单片机系列
    • 1.2嵌入式处理器
      • 1.2.1 嵌入式DSP
      • 1.2.2 嵌入式微处理器
  • 二、AT89S52
    • 2.1 硬件组成
    • 2.2 引脚功能
      • 2.2.1 电源、时钟引脚
      • 2.2.2 控制引脚
      • 2.2.3 并行I/O口引脚
    • 2.3 AT89S52单片机的CPU
      • 2.3.1 运算器
      • 2.3.2 控制器
    • 2.4 AT89S52单片机的存储器结构
      • 2.4.1 程序存储器空间 ROM
      • 2.4.2 数据存储器空间 RAM
      • 2.4.3 特殊功能寄存器 SFR
      • 2.4.4 位地址空间
    • 2.5 AT89S52单片机的并行I/O口
      • 2.5.1 P0口
      • 2.5.2 P1口
      • 2.5.3 P2口
      • 2.5.4 P3口
    • 2.6 AT89S52单片机的时钟电路与时序

一、单片机概述

单片机就是在一片半导体硅片上,集成了中央处理单元(CPU)、存储器(RAM、ROM)、并行I/O、串行I/O、中断系统、定时器/计数器、时钟电路、系统总线,用于 测控 领域的单片微型计算机

单片机又称为 嵌入式微控制器 或者 微控制器

RAM:随机存取存储器(random access memory)也称为主存
ROM:只读内存(read-only memory)

受器件的物理性能限制    单片机内部数据用 二进制 形式表示     

专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低 成本 和提高 可靠性

1.1 各种单片机系列

  • MCS-51系列
  • AT89S5x系列
AT89S52单片机的工作频率上限为24 MHZ
  • STC系列
 STC系列单片机是8051内核的单片机
  • C8051Fxxx系列
  • ADμC812单片机
  • 华邦W77系列、W78系列
  • PIC系列
  • AVR系列

1.2嵌入式处理器

复杂的数字信号处理运算及高速的测控功能

1.2.1 嵌入式DSP

1.2.2 嵌入式微处理器

二、AT89S52

2.1 硬件组成

AT89S52单片机片内硬件结构
AT89S52单片机片内硬件结构

  • CPU(8位)
    包括了 运算器控制器 ,还有 面向控制 的 位处理 和 位控功能
  • 数据存储器RAM(256B)片外可加64KB数据存储器
    程序存储器ROM(8KB Flash)片外最多可扩至64KB程序存储器
  • 串行口(1个全双工通用异步收发
    并行口(4个8位)

中断系统(6个中断源,有优先级)
定时器/计数器(3个16位)
看门狗定时器WDT(1个):当单片机 由于干扰而使程序陷入死循环或者跑飞状态 时,可引起单片机复位,程序恢复正常运行
特殊功能寄存器SFR(32个):用于CPU对 片内 各个 外设部件进行管理、控制和监视。这些特殊功能寄存器映射在片内RAM区的80H~FFH的地址区间内

在这里插入图片描述

2.2 引脚功能

在这里插入图片描述

  • 电源及时钟引脚 Vcc、Vss、XTAL1、XTAL2
  • 控制引脚 PSEN、ALE/PROGEA / Vpp、RST
  • I/O口引脚 P0、P1、P2、P3,4个8位并行I/O口
    在这里插入图片描述

2.2.1 电源、时钟引脚

电源引脚

  • Vcc:接 +5V 电源
  • Vss:接地

时钟引脚

  • XTAL1:
  • XTAL2:

2.2.2 控制引脚

控制引脚提供控制信号,有的引脚还具有复用功能。

  • 1.RST (RESET,9脚)
    复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可使单片机复位。在单片机正常工作时,此引脚应为≤0.5V的低电平。
    当看门狗定时器溢出时,在引脚内部,看门狗定时器向该引脚输出长达96个时钟振荡周期的高电平,从而使单片机复位。

  • 2.EA/Vpp ( Enable Address/Voltage Pulse of Programing,31脚)

    • EA(Extermal Access Enable)为该引脚的第一功能外部程序存储器访问允许控制端

      • EA=1时
        在AT89S52单片机 片内 的PC值 不超出1FFFH (即不超出片内8KB程序存储器的最大地址)时,AT89S52单片机 读 片内 程序存储器(8KB)中的程序代码
        PC值 超出1FFFH (即超出片内8KB Flash存储器的最大地址)时,将自动转向读取 片外 60KB (2000H~FFFFH)程序存储器空间中的程序代码。

      • EA=0时
        单片机只读取片外程序存储器中的内容,读取的地址范围为0000H~FFFFH,此时 片内的8KB Flash程序存储器不起作用

    • Vpp为该引脚的第二功能在对片内Flash进行编程时,该引脚接入编程电压

  • 3.ALE/PROG (Address Latch Enable/PROGramming,30脚)

    • ALE 为引脚的第一功能,为 地址锁存控制信号端

    • PROG为该引脚的第二功能在对 片内 Flash程序存储器编程时,此引脚作为 编程脉冲输入端

  • 4.PSEN(Program Strobe ENable,29脚)
    访问 片外 程序存储器的读选通信号,低电平有效。

    • 当访问片外程序存储器读取指令码时,每个机器周期引脚产生两次有效信号,即 输出两个PSEN有效脉冲
    • 在执行读取片内程序存储器指令码时,该引脚不产生此脉冲

2.2.3 并行I/O口引脚

  1. P0口:P0.7~P0.0引脚 为漏极开路的8位 并行双向I/O口作为 输出口 时,每个引脚可驱动8个LS型TTL负载
    当AT89S52扩展外部存储器及I/0接口芯片时,PO口为分时复用的低8位地址/数据总线。在向PO口写入1后就成为高阻态的输入口。
    当PO口作为通用I/0口使用时,需外加上拉电阻,这时为准双向口。
  2. P1口:P1.7~P1.0引脚 准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载
    在对片内Flash编程和校验时定义为低8位地址线。P1口某些引脚的第二功能如下:
  • P1.0/T2:T2脚为定时器/计数器T2的外部计数信号输入端T2。
  • P1.1/T2EX:T2EX为定时器/计数器T2的捕捉/重新装载触发及方向控制T2EX。
  • P1.5/MOSI:MOSI用于对片内Flash存储器的串行编程和校验。
  • P1.6/MISO:MISO用于对片内Flash存储器的串行编程和校验。
  • P1.7/SCK:SCK用于对片内Flash存储器的串行编程和校验的移位脉冲输入引脚
  1. P2口:P2.7~P2.0引脚 准双向I/O口,引脚内部接有上拉电阻,可驱动4个LS型TTL负载
    当AT89S52单片机访问外部存储器及I/O口时,P2口作为高8位地址总线使用,输出高8 位地址。
    当P2口不作为高8位地址总线时,可作为通用的I/O口使用。

  2. P3口:P3.7~P3.0引脚 准双向I/0口,引脚内部接有上拉电阻
    P3口的第一功能作为通用的I/O口使用,可驱动4个LS型TTL负载。
    P3口还具有第二功能
    在这里插入图片描述

2.3 AT89S52单片机的CPU

AT89S52单片机的CPU是由运算器和控制器构成。

2.3.1 运算器

运算器主要用来对操作数进行算术逻辑位操作运算。
主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW及两个暂存器等。

  1. 算术逻辑运算单元 ALU
    ALU的功能强,不仅可对8位变量进行逻辑与、或、异或以及循环、求补和清0等操作,还可以进行加、减、乘、除等基本算术运算。ALU还具有位操作功能,可对位(bit)变量进行位处理,如置1、清0、求补、测试转移及逻辑与、或等操作。
  2. 累加器A(Acc)
    累加器A是CPU中使用最频繁的一个8位寄存器,是AT89S52单片机的特殊功能寄存器之一,位于片内的特殊功能寄存器区
    (1) 是ALU单元的输入数据源之一,同时又是ALU运算结果的存放单元。
    (2) CPU中的数据传送大多通过累加器A,故累加器A又相当于数据的中转站。为解决累加器结构所带来的“瓶颈堵塞”问题,AT89S52单片机增加了一部分可以不经过累加器A的数据传送指令。
  3. 程序状态字寄存器 PSW
    AT89S52单片机的程序状态字寄存器PSW(Program Status Word)位于片内的特殊功能寄存器区,字节地址为DOH。PSW的各个位包含程序运行状态的不同信息,其中4位保存当前指令执行后的状态,以供程序查询和判断。

在这里插入图片描述

(1)Cy(PSW.7) 进位标志位
也可写为C。在执行算术运算和逻辑运算指令时,若最高位有进位或借位,则Cy=1;否则,Cy=0。在位处理器中,它又是位累加器。
(2)Ac(PSW.6) 辅助进位标志位
Ac标志位用于在BCD码运算时进行十进位调整。即在运算时,当D3位向D4位产生进位或借位时,Ac=1;否则,Ac=0。
(3)FO(PSW.5) 用户使用的标志位
,可用指令来使它置1或清0,也可用指令来测试该标志位,根据测试结果控制程序的流向。编程时用户应充分利用该标志位。
(4)RSI、RSO(PSW.4、PSW.3) 4组工作寄存器区选择控制位1和位0这两位用来选择片内RAM区中的4组工作寄存器区中的某一组作为当前工作寄存区,RS1、RSO与所选择的4组工作寄存器区的对应关系如表2-2所示。
(5)OV(PsW.2) 溢出标志位
当执行算术指令时,OV用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。 (6)PSW.1位 保留位,未用。
(7)P(PSW.O) 奇偶标志位
该标志位表示指令执行后,累加器A中1的个数是奇数还是偶数。

  • P=1,表示累加器A中1的个数为奇数。
  • P=0,表示累加器A中1的个数为偶数。

在这里插入图片描述
RS1、RSO与4组工作寄存器区的对应关系

2.3.2 控制器

控制器的主要任务是 识别指令,并根据指令的性质控制单片机片内各部件,从而保证单片机各部分能自动协调地工作。

程序计数器PC 是控制器中最基本的寄存器,是程序存储器的地址指针。PC是一个 独立的16位计数器 ,用户不能直接使用指令对PC进行访问(读/写)。当单片机复位时,PC的内容变为0000H,即CPU从程序存储器0000H单元读取指令,开始执行程序。

PC的基本工作过程是:CPU读取指令时,PC内容作为欲读取指令的地址发送给程序存储器,然后CPU读取程序存储器该地址单元内的指令字节,同时PC自动加1
这也是为什么PC被称为程序计数器的原因。由于PC实质上是作为程序寄存器的地址指针,所以也称其为 程序指针

  • PC内容的变化轨迹决定了程序的流程。
  • 程序计数器的计数宽度决定了访问程序存储器的地址范围。

2.4 AT89S52单片机的存储器结构

AT89S52单片机存储器结构为 哈佛结构 ,即片外程序存储器空间和数据存储器空间是 各自独立 的。

AT89S52单片机的存储器结构包括了:

  • 程序存储器空间
  • 数据存储器空间
  • 特殊功能寄存器
  • 位地址空间

2.4.1 程序存储器空间 ROM

作用:存放程序和表格之类的固定常数

AT89S52单片机的 片内 程序存储器为8KB的Flash存储器,地址范围为0000H~1FFFH,51:4KB
AT89S52单片机有 16位地址总线 ,可外扩的程序存储器空间最大为64KB,地址范围为0000H~FFFFH。

整个程序存储器空间可分为 片内 和 片外 两部分,CPU究竟是访问片内的还是片外的程序存储器,可 由EA引脚上所接的电平 来确定。

  • 当EA=1
    • 且PC值没有超出片内8KB Flash存储器的最大地址1FFFH时,CPU只读取 片内 的Flash程序存储器中的程序代码
    • 当PC值>1FFFH,CPU会自动转向读取 片外 程序存储器空间2000H~FFFFH内的程序代码。
  • 当EA=0
    单片机的CPU 只读取片外 程序存储器地址范围为0000H~FFFFH中的程序代码,此时CPU不理会片内0000H~1FFFH的Flash存储器中的程序代码。

程序存储器的某些单元被固定用于各中断源的中断服务程序的入口地址。
64KB程序存储器空间中有6个固定单元分别对应于各中断源的中断服务子程序的中断入口(中断向量)

在这里插入图片描述
AT89S52单片机复位后,程序计数器PC的内容为0000H,从程序存储器地址0000H处开始执行程序

2.4.2 数据存储器空间 RAM

片内 数据存储器

AT89S52单片机的片内数据存储器(RAM)共有256个单元,字节地址为00H~FFH。

在这里插入图片描述

  • 片内RAM字节地址为00H — 1FH的32个单元是4组通用工作寄存器区,每组工作寄存器区包含8B的工作寄存器,编号为R0 — R7。用户可以通过指令改变特殊功能寄存器PSW中的RS1、RSO这两位来切换选择当前的工作寄存器区
  • 片内RAM地址为20H — 2FH的16个单元的128位(8位×16)可进行位寻址,也可以字节寻址
  • 地址为30H~FFH的单元为用户RAM区,只能进行字节寻址,用作存放数据以及作为堆栈区使用。

片外 数据存储器

当AT89S52片内256B的RAM不够用时,需要外扩数据存储器,片外最多可扩展64KB的RAM,C51:128B

注意

虽然片内RAM与片外扩展的RAM的低256B的地址是相同的,但这是 两个不同的数据存储区

2.4.3 特殊功能寄存器 SFR

AT89S52单片机中的特殊功能寄存器的单元地址 映射在片内RAM区的80H~FFH区域 中,共计32个,离散地分布在该区域中

在这里插入图片描述

  1. 堆栈指针 SP
    AT89S52 单片机的堆栈只能设在 片内 的 RAM 区,属于 向上生长型 的(即每向堆栈压入 1 字节数据时 ,SP的内容自动增 1 ),且遵循 “先进后出”的原则。 单片机复位后 ,SP 中的内容为07H

堆栈主要是为 子程序调用中断操作 而设立的 ,有两个功能 :保护断点和现场保护

  • 保护断点
    • 因为无论是子程序调用操作还是中断服务子程序调用操作 ,主程序都 会被“打断”,但最 终都要返回到主程序断点地址处继续执行程序,因此,应预先把主程序的断点地址在堆栈中保护起来 ,为程序的正确返回做准备 。
  • 现场保护
    • 在单片机执行子程 序或中断服务子程序时,很可能要用到单片机中的一些寄存器单元,这就会破坏主程序运行时这些寄存器单元的原有 内容。所以在执行子程序或中断服务程序之前,要把单片机中有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护 ” 。

堆栈的操作有两种: 一种是数据压入(PUSH)堆栈,另一种是数据从堆栈中弹出(POP)。当执行 1 字节数据压入堆栈的指令时,SP先自动加 1,再把 1 字 节数据压入堆栈;当执行 1 字节数据弹出堆栈指令时,先将堆栈栈顶内容弹出,然后SP再自动减 1

  1. 寄存器 B
    AT89S52 单片机在进行 乘法和除法 操作时要使用寄存器 B。

    • 在不执行乘 、除法操作的情况下,可把寄存器 B 当做一个普通寄存器来使用。
    • 乘法运算时 ,两个乘数分别在A、B 中,执行乘法指令后,乘积存放在 BA 寄存器对中。 B 中放乘积的高 8 位 ,A 中放乘积 的低 8 位 。
    • 除法运算时,被除数取自 A,除数取自B,商存放在 A 中,余数存放于B 中
  2. AUXR 寄存器
    AUXR 是 辅助寄存器
    在这里插入图片描述

    • DISALE: ALE 的禁止/允许位

      • 0:ALE有效,允许ALE引脚发出ALE脉冲;
      • 1:ALE脉冲仅在CPU访问外部存储器时有效,在不访问外部存储器时,ALE引脚不输出脉冲信号,这可减少ALE脉冲对外部电路的干扰。
    • DISRTO:禁止/允许看门狗定时器WDT溢出时的复位输出

      • 0:WDT溢出时,允许向RST引脚输出一个高电平脉冲,使单片机复位
      • 1:禁止WDT溢出时的复位输出
    • WDIDLE:WDT在空闲模式下的禁止/允许控制位

      • 0:允许WDT在空闲模式下计数
      • 1:禁止WDT在空闲模式下计数
  3. 数据指针 DPTR0 和 DPTR1
    DPTR0和DPTR1为 双数据指针寄存器

  4. AUXR1 寄存器
    AUXR1是辅助寄存器
    在这里插入图片描述

    • DPS是数据指针寄存器DPTR0或DPTR1的选择位
      • 0:选择数据指针寄存器DPTR0
      • 1:选择数据指针寄存器DPTR1
  5. 看门狗定时器 WDT
    看门狗定时器WDT包含1个14位计数器和看门狗复位寄存器(WDTRST)。

当CPU由于干扰,程序陷入“死循环”或“跑飞”状态时,看门狗定时器WDT提供了一种使程序恢复正常运行的有效手段。

2.4.4 位地址空间

AT89S52单片机的位地址空间共有两部分,分别位于 片内RAM 和 SFR区域 中,共有219个可寻址位,位地址范围为00H~FFH。其中位地址为00H~7FH的这128个位,位于片内RAM 字节地址20H~2FH单元中

在这里插入图片描述

2.5 AT89S52单片机的并行I/O口

2.5.1 P0口

在这里插入图片描述

2.5.2 P1口

在这里插入图片描述

2.5.3 P2口

在这里插入图片描述

2.5.4 P3口

在这里插入图片描述

2.6 AT89S52单片机的时钟电路与时序

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录训练营第42期 Day60打卡 - 图论Part10 - Bellman_ford算法系列运用

目录 一、Bellman_ford算法的应用 二、题目与题解 题目一:卡码网 94. 城市间货物运输 I 题目链接 题解:队列优化Bellman-Ford算法(SPFA) 题目二:卡码网 95. 城市间货物运输 II 题目链接 题解: 队列优…

MySQL_表_进阶(1/2)

我们的进阶篇中,还是借四张表,来学习接下来最后关于表的需求,以此完成对表的基本学习。 照例给出四张表: 学院表:(testdb.dept) 课程表:(testdb.course) 选课表:(testdb.sc) 学生表…

python调用c++动态链接库,环境是VS2022和vscode2023

目录 前言:配置环境:基础夯实(对于ctypes的介绍):1. 加载共享库2. 定义函数原型3. 调用函数4. 处理数据结构5. 处理指针6. 错误处理7. 使用 ctypes.util总结 效果展示:操作步骤(保姆级教学)一在VS中创建dll…

YOLOv8——测量高速公路上汽车的速度

引言 在人工神经网络和计算机视觉领域,目标识别和跟踪是非常重要的技术,它们可以应用于无数的项目中,其中许多可能不是很明显,比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下: 视频采集&#x…

(done) 声音信号处理基础知识(4) (Understanding Audio Signals for ML)

来源:https://www.youtube.com/watch?vdaB9naGBVv4 模拟信号特点如下 时域连续(x轴) 振幅连续(y轴) 如下是模拟信号的一个例子: 数字信号特点如下: 一个离散值序列 数据点的值域是一系列有限的值 ADC:模拟信号到数字信号的…

python全栈学习记录(十八)re、os和sys、subprocess

re、os和sys、subprocess 文章目录 re、os和sys、subprocess一、re1.正则字符2.正则表达式的使用3.group的使用4.贪婪匹配与惰性匹配5.其他注意事项 二、os和sys1.os2.sys 三、subprocess四、打印进度条 一、re python中的re模块用来使用正则表达式,正则就是用一系…

【Python机器学习】NLP信息提取——提取人物/事物关系

目录 词性标注 实体名称标准化 实体关系标准化和提取 单词模式 文本分割 断句 断句的方式 使用正则表达式进行断句 词性标注 词性(POS)标注可以使用语言模型来完成,这个语言模型包含词及其所有可能词性组成的字典。然后,该…

http增删改查四种请求方式操纵数据库

注意:在manage.py项目入口文件中的路由配置里,返回响应的 return语句后面的代码不会执行,所以路由配置中每个模块代码要想都执行,不能出现return 激活虚拟环境:venv(我的虚拟环境名称)\Scripts\activate …

java项目发布后到Tomcat时,总是带一层路径解决方案

java项目发布后到Tomcat时,总是带一层路径 参考文章:java 线上项目访问项目 会多一层项目根路径 根据参考文章写的这篇文章,部分文章细节有完善和改动 在Java Web应用中,当你把应用发布到Tomcat时,如果应用的web.xml配置文件中的&…

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要:本次升级支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控;透明同事karmadactl 新增了多项运维能力,提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布!新增应用跨集群滚动升…

柔性数组 初学版

1.定义 结构中的最后⼀个元素允许是未知⼤⼩的数组,这就叫做『柔性数组』成员 有些编译器会报错⽆法编译可以改成: typedef struct st_type { int i; int a[]; // 柔性数组成员 }type_a; 2.柔性数组的特点: • 结构中的柔性数组成员前…

ReadWriteLock读写锁

读写锁基本概念 ReadWriteLock是Java并发包中的一个接口,它定义了两种锁:读锁(Read Lock)和写锁(Write Lock),真正的实现类是ReentrantReadWriteLock。读锁允许多个线程同时读取共享资源&#…

JAVA开源项目 体育馆管理系统 计算机毕业设计

本文项目编号 T 048 ,文末自助获取源码 \color{red}{T048,文末自助获取源码} T048,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

记一次Mac 匪夷所思终端常用网络命令恢复记录

一天莫名奇妙发现ping dig 等基础命令都无法正常使用。还好能浏览器能正常访问&#xff0c;&#xff0c;&#xff0c;&#xff0c; 赶紧拿baidu试试^-^ ; <<>> DiG 9.10.6 <<>> baidu.com ;; global options: cmd ;; connection timed out; no serve…

美业门店怎么提升业绩?连锁美业门店管理系统收银系统拓客系统源码

美业门店想要提升业绩&#xff0c;需要考虑多方面的因素&#xff0c;并采取综合性的方法。以下是一些可以考虑的因素和建议&#xff1a; 产品与服务优化&#xff1a; 提供高质量的美容产品和服务&#xff0c;确保顾客满意度。不断更新产品线&#xff0c;引入新的时尚趋势&#…

pycharm 使用 translation 插件通过openai进行翻译

pycharm 使用 translation 插件通过openai进行翻译 1. 安装插件2. 配置插件3. 翻译 1. 安装插件 2. 配置插件 3. 翻译 调用 openai 时使用的提示词如下&#xff1a; <|im_start|>system\nYou are a translation engine that can only translate text and cannot interpr…

【大模型实战篇】一种关于大模型高质量数据的处理方法-无标注数据类别快速识别及重复数据检测(加权向量-卷积神经网络-聚类算法结合)

1. 背景介绍 大模型的能力很大程度上依赖于高质量的数据&#xff0c;在之前的一篇文章《高质量数据过滤及一种BoostedBaggingFilter处理方法的介绍》中&#xff0c;我们介绍了大模型的数据处理链路&#xff0c;本文继续关注在高质量数据的模块。 本文所要介绍的处理方法&…

第18届全国热管会议举办,积鼎科技分享「环路热管相变传热仿真」前沿实践

第18届全国热管会议于9月20日至22日在海滨城市日照举行&#xff0c;该会议由中国工程热物理学会热管专业组主办&#xff0c;山东大学和日照市科学技术协会联合承办&#xff0c;汇聚了全国热管技术领域的专家学者及企业代表。在该会议上&#xff0c;积鼎科技在热管仿真方面的成果…

移动剧院:流动艺术空间的声学革命—轻空间

在当今多元化的文化环境中&#xff0c;移动剧院作为一种新兴的演出形式&#xff0c;正在迅速崛起。它不仅提供了灵活多变的演出场地&#xff0c;更以其卓越的声学性能&#xff0c;为观众带来了沉浸式的视听体验。移动剧院的声学优势&#xff0c;使其成为各种艺术活动的理想选择…

TomCat乱码问题

TomCat控制台乱码问题 乱码问题解决&#xff1a; 响应乱码问题 向客户端响应数据&#xff1a; package Servlet;import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servl…