proteus+51单片机+AD/DA学习5

news2024/11/18 1:39:06

目录

1.DA转换原理

1.1基本概念

1.1.1DA的简介

1.1.2DA0832芯片

1.1.3PCF8591芯片

1.2代码

1.2.1DAC8053的代码

1.2.2PCF8951的代码

1.3仿真

1.3.1DAC0832的仿真

1.3.2PFC8951的仿真

2.AD转换原理

2.1AD的基本概念

2.1.1AD的简介

2.1.2ADC0809的介绍

2.1.3XPT2046芯片介绍

​编辑​编辑2.2AD代码

2.2.1PFC8591代码

2.3仿真实验

1.DA转换原理

1.1基本概念

1.1.1DA的简介

  • DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号
  • D/A转换一般由电阻解码网络、模拟电子开关、基准电压、运算放大器等组成。按电阻解码网络的组成形式,将DA转换器分成有权电阻解码网络D/A转换器、T型电阻解码网络D/A转换器、倒T型电阻解码网络D/A转换器和开关树型电阻解码网络D/A转换器等。 
  • DAC的分类

(1)从数码数上看,有8位、10位、12位、16位、24位等。

(2)在输出形式上,有:电压输出型和电流输出型

(3)按输入是否含有锁存器分为:内部无锁存器和内部有锁存器形式

(4)按数字量的输入形式分为:并行总线D/A转换器和串行总线D/A转换器

(5)按转换时间分为:超高速DAC(转换时间<100ns)、较高速DAC(100ns~1us)、高速(1μs~10μs
中速DAC(10μS~100μs)、低速DAC(>100us)等。

  • DAC的性能指标

(1)分辨率:指AD/DA数字量的精细程度,通常用位数表示。例如,对于5V电源系统来说,8位的AD可将5V等分为256份,即数字量变化最小一个单位时,模拟量变化5V/256=0.01953125V,所以,8位AD的电压分辨率为0.01953125V,AD/DA的位数越高,分辨率就越高

(2)转换速度:表示AD/DA的最大采样/建立频率,通常用转换频率或者转换时间来表示,对于采样/输出高速信号,应注意AD/DA的转换速度

(3)建立时间:建立时间是描述D/A转换器转换速度的参数,表明转换时间长短。其值为从输入数字量到输出达到终值误差正负(1/2)LSB(最低有效位)时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成I-V转换的时间,因此建立时间要长一些。快速D/A转换器的建立时间可控制在1s以下。

(4)转换精度:理想情况下,转换精度与分辨率基本一致,位数越多精度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在误差。严格地讲,转换精度与分辨率并不完全一致。两个相同位数的不同的DAC,只要位数相同,分辨率则相同,但转换精度会有所不同。

1.1.2DA0832芯片

  • DAC0832芯片内部的框图

(1)DAC0832的内部结构如图所示,内部有两级数据缓冲器(8位输入寄存器和8位DAC寄存器)和一个8位D/A转换器以及门控电路。内部无参考电源需外接;输出电流型,要获得电压输出需外加转换电路。各引脚含义如下:

  • T型电阻网络DA转换器(8位DA转换器)

 (1)当数字量D7~D0为1时,开关将会移向1,为0时将会开关在0

 (2)由右边的电阻2R//2R的并联后的阻值为R,再加上串联的电阻R,形成2R的电阻。再依次与输入数据的高位 电阻并联得到总阻值为R了。因此总的电流为I=\frac{V_{REF}}{R}

 (3)进行分流操作时,两个并联电阻的流经的电流是相等的,串联的电流是两个并联电流之和。依次形成从D7~D0的电流位权。即D7的电流是D6电流的两倍,最后合成总的输出电流。形成一个8位的二进制数

(4)最终的每一位电流的大小的计算公式为\frac{V_{REF}}{256*R},总的电流除以2的8次方

(5)当Ref=R时,输出电压V_{o}=-\frac{D7-D0}{256}×V_{REF},即输出电压为Io1与反馈电阻的乘积

  • DAC的芯片引脚

\bar{WR1}写信号1
\bar{WR2}写信号2
\bar{CS}片选信号
\bar{XFER}数据传送控制信号输入线,低电平有效。
DI0~DI7(DI0为最低位)8位数字量输入端
R_{FB}I-V转换时的外部反馈信号输入端,内部己有反馈电阻Rfb,根据需要也可外接反馈电阻。
I_{out1}模拟电流输出线1,它是数字量输入为“1”的模拟电流输出端。输入数字量全为“1”时,I_{out1}最大,
I_{out2}模拟电流输出线2,它是数字量输入为“0”的模拟电流输出端,I_{out2}+I_{out1}=常数
V_{REF}基准电压输入线。电压范围为-10V~+10V。
V_{CC}工作电源输入端,可接+5V~+15V电源。

AGND

DGND

模拟地。最好与基准电压共地

数字地。

 (1)当LE=1,CS*=0,WR1*=0时,即M1=1,第一级8位输入寄存器被选中。待转换的数字信号被锁存到第一级8位输入寄存器中。

(2)当XFER*=0,WR2*=0时,第一级8位输入寄存器中待转换数字进入第二级8位DAC寄存器中。

1.1.3PCF8591芯片

  •  PCF8591是具有I2C总线接口的8位A/D及D/A 转换器。PCF8591有4个模拟输入、1个模拟输出和1个I²C总线接口。PCF8591有3个地址引脚A0, A1和A2,用于硬件地址设定,这允许在一条I2C总线上接入8个PCF8591器件。
  • 链接:PCF8591+I2C DA转换 实现PWM方波、三角波以及实现呼吸灯_哔哩哔哩_bilibiliPCF8591+I2C DA转换 实现PWM方波、三角波以及实现呼吸灯是51单片机入门教程+Proteus嵌入式开发入门实战视频教程2024新版的第21集视频,该合集共计23集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1uN411M7PB/?p=21&spm_id_from=333.880.my_history.page.click
  • DAC的芯片概述

AIN0~ AIN3
模拟信号输入管脚。
A0~ A2
硬件地址设定管脚
VDD
接电源(2.5V6V)正极
VSS
接电源(2.5V6V)负极,即GND
VREF
基准电源端
AOUT
D/A 转换输出端
SDA
I2C 总线的数据线
SCL
I2C 总线的时钟线。
OSC
外部时钟输入端,内部时钟输出端。
EXT内部、外部时钟选择线,使用内部时钟时EXT 接地。内部、外部时钟选择线,使用内部时钟时EXT 接地。
AGND模拟信号地
  • PFC8951的设备地址

​​​​​​

  • PFC8951的D/A转换

1.2代码

1.2.1DAC8053的代码

//方波的生成代码
//单片机采用定时器定时中断,时间常数决定方波高、低电平持续时间
void DAC_test_PWM()
{
    P2=0;          //PWM波的低电平的时间即0V
    Delay_ms(50);  //高电平持续时间
    P2=255;        //输出PWM的最大值即参考电压的5V
    Delay_ms(10);  //低电平持续时间
}


//单片机把初始数据0送DAC0832后,数据不断增1,增至0xff后,再增1则溢出清“0”,
//模拟输出又为0,然后再重复上述过程,如此循环,则输出锯齿波。
//生成锯齿波
void DAC_Test_sawetooth_wave()
{
    unsigned int i;
    for(i=0;i<256;i++)
    {
        P2=i;
    }
}

//生成三角波
//单片机把初始数字量0送DAC0832后,不断增1,增至0xff后,然后从0xff
//再把送给DAC0832的数字量不断减1,减至0后,再重复上述过程。
void DAC_Test_triangular_wave()
{
    int i;
    for(i=0;i<255;i++)
    {
        P2=i;
    }
    for(i=255;i>0;i--)
    {
        P2=i;
    
    }
}


//正弦表
unsigned char code sin[]={0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD
,0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7
,0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4
,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE
,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6
,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB
,0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3
,0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92,0x8F,0x8B,0x88,0x85,0x82
,0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51
,0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,0x36,0x33,0x31,0x2E,0x2C,0x29,0x27
,0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A
,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08
,0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23
,0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B
,0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C};
//生成正弦波
void DAC_Test_sine_wave()
{
    unsigned int i;
    for(i=0;i<256;i++)
    {
        P2=sin[i];
    }
}

1.2.2PCF8951的代码

void PCF8951_DAC(unsigned char Data)
{
    I2C_Start();         //iic开始
    I2C_sendByte(0x90);  //iic写信号
    I2C_ReceiveAck();    //等待一应答
    I2C_sendByte(0x40);  //发送控制位
    I2C_ReceiveAck();    //等待应答
    I2C_sendByte(Data);  //发送数据电压值
    I2C_ReceiveAck();    //等待应答
    I2C_end();           //iiC停止
}



void PWM()
{
    PCF8951_DAC(255);
    Delay1us(10000);
    PCF8951_DAC(0);
    Delay1us(10000);
}

1.3仿真

1.3.1DAC0832的仿真

1.3.2PFC8951的仿真

2.AD转换原理

2.1AD的基本概念

2.1.1AD的简介

  • AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号。AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率

  • ​​​​​AD转换器的主要性能指标

​​​​​​​(1)分辨率:ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/2^{12}。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/2^{12}=2.4mV。

(2)量化误差:ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。

(3)偏移误差:偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。

(4)满刻度误差:满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差

(5)线性度:线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。

(6)绝对精度:在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差

(7)转换速率:ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

  • 逐次逼近式ADC的转换原理

(1) 数字量由“逐次逼近寄存器SAR(shift arithmetic right)”产生。SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn>Vi,清除最高位,若Vn<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束。

(2)VN为参考电压的一半

2.1.2ADC0809的介绍

  • 引脚的定义

​​​​​​​(1)DAC输出的电压和通道选择开关的的输出电压进行比较最终输出一个电压到SAR中,SAR通过大小来控制DAC的要输出的电压大小,最终输出到8位三态锁存缓冲器

 

  • 电压比较器

(1)输出数字量:(D7~D0)=\frac{Vin}{Vref}×256。结果为整数

  • ADC0809的工作时序

​​​​​​​​​​​​​​

2.1.3XPT2046芯片介绍

  • XPT2046的功能说明

​​​​​​​(1)XPT2046是一款4线制电阻式触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型 A/D转换器。 XPT2046支持从1.5V到5.25V的低电压I/O接口。XPT2046能通过执行两次A/D转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带2.5V参考电压,可以作为辅助输入、温度测量和电池监测之用,电池监测的电压范围可以从0V到6V。XPT2046片内集成有一个温度传感器。 在 2.7V的典型工作状态下,关闭参考电压,功耗可小于 0.75mW。XPT2046 采用微小的封装形式:TSSOP-16,QFN-16 和 VFBGA-48。工作温度范围为-40℃~+85℃。与ADS7846、TSC2046、AK4182A完全兼容

  • XPT2046的主要特性

​​​​​​​(1)工作电压范围为 1.5V5.25V

(2) 支持 1.5V5.25V 的数字 I/O

(3)内建 2.5V 参考电压源

(4) 电源电压测量(0V~6V

(5) 内建结温测量功能

(6) 触摸压力测量

(7) 采用 3 线制 SPI 通信接口

(8) 具有自动省电功能

  • 芯片引脚

​​​​​​​​​​​​​​(1)TSSOP-16 封装

  • 单端输入和差分输入

​​​​​​​(1)单端输入:单端输入只有一个输入引脚ADCIN,使用公共地GND作为电路的返回端,ADC的采样值=ADCIN电压-GND的电压(OV).这种输入方式优点就是简单,缺点是如果Vin受到干扰,由于GND电位始终是0V,所以最终ADC的采样值也会随着干扰而变化,

(2) 差分输入:差分输入比单端输入多了一根线,最终的ADC采样值=(ADCIN+电压)(ADCIN-电压),由于通常这两根差分线会布在一起,所以他们受到的干扰是差不多的,输入共模干扰,在输入ADC时会被减掉,从而降低了干扰,缺点就足投线复杂一些。而目需要VIN+和VIN一两路反相的输入信号。

 

  •  XPT2048的工作时序​​​​​​​

 

2.2AD代码

2.2.1PFC8591代码

//ADC采集模拟量的函数

unsigned int PCF8951_ADC(void)
{
    unsigned int Data;
    I2C_Start();
    I2C_sendByte(0x90);  //寻找PFC8951的地址
    I2C_ReceiveAck();    //等待应答
    I2C_sendByte(0x00);  //使用通道0来采集电压
    I2C_ReceiveAck();
    
    I2C_Start();
    I2C_sendByte(0x91);  //发送地址+读
    I2C_ReceiveAck();    
    Data=I2C_ReceiveByte();//接收数据ADC
    I2C_SendACK(1);
    I2C_end();
    return Data;
}

//主函数测量函数
int main()
{
    unsigned int voltage;   //设置数字量
    unsigned int vol;       //
    LCD_Init();
    while(1)
    {
       voltage=PCF8951_ADC();  //测量的模拟量进入单片机后转换的数字量
       vol=voltage*5/0.255;    //检测的电压放大1000倍
       LCD_WriteNum(1,1,vol/1000%10,1);//整数位
       LCD_WriteString(1,2,".");     //.点位
       LCD_WriteNum(1,3,vol/100%10,1); //检测的电压的小数位的第一位
       LCD_WriteNum(1,4,vol/10%10,1);  //检测的电压的小数位的第二位
       LCD_WriteNum(2,1,voltage,4);    //检测电压的数字量
    }
    
}

2.3仿真实验

(1)POT-HG

 (2)电压表(DC Voltmeter)

 

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

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

相关文章

双指针算法专题(1)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 目录 双指针算法的介绍 283. 移动零 1089. 复写零 202. 快乐数 11.盛最多水的容器 双指针算法的介绍 在正式做题之前&a…

C++ 获取文件夹下的全部文件及指定文件(代码)

文章目录 1.&#xff08;C17&#xff09;获得指定目录下的所有文件&#xff08;不搜索子文件夹&#xff09;2.&#xff08;C11&#xff09;获得指定目录下的所有文件&#xff08;不搜索子文件夹&#xff09;3.&#xff08;C11&#xff09;获取目录下指定格式的所有文件&#xf…

工厂安灯系统在优化生产流程上的优势

工厂安灯系统通过可视化的方式&#xff0c;帮助工厂管理者和操作工人及时了解生产状态&#xff0c;快速响应问题&#xff0c;从而优化生产流程。 一、安灯系统实时监控与反馈 安灯系统的核心功能是实时监控生产线的状态。通过在生产现场设置灯光、显示屏等设备&#xff0c;工人…

OpenGL(四) 纹理贴图

几何模型&材质&纹理 渲染一个物体需要&#xff1a; 几何模型&#xff1a;决定了物体的形状材质&#xff1a;绝对了当灯光照到上面时的作用效果纹理&#xff1a;决定了物体的外观 纹理对象 纹理有2D的&#xff0c;有3D的。2D图像就是一张图片&#xff0c;3D图像是在…

记得忘记密码情况下如何退出苹果Apple ID

在日常使用苹果手机时&#xff0c;我们可能会遇到需要退出Apple ID的情况&#xff0c;比如更换手机、不再使用某些服务或出于安全考虑等。下面&#xff0c;我们就来详细介绍一下苹果手机如何退出Apple ID。 情况一&#xff1a;记得Apple ID密码 若是记得Apple ID密码&#xff…

3. 轴指令(omron 机器自动化控制器)——>MC_HomeWithParameterMC_Move

机器自动化控制器——第三章 轴指令 3 MC_HomeWithParameter变量▶输入变量▶输出变量 功能说明▶原点复位动作与原点复位参数的关系▶重启运动指令▶多重启动运动指令▶错误代码 MC_Move变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶重启运动指令▶多重启动运…

pytorch入门(1)——pytorch加载数据初认识

环境配置及其安装&#xff1a; 2023最新pytorch安装&#xff08;超详细版&#xff09;-CSDN博客 pytorch加载数据初认识 Dataset&#xff1a;创建可被Pytorch使用的数据集 提供一种方式获取数据及其label Dataloader&#xff1a;向模型传递数据 为网络提供不同的数据形式 …

算法_队列+宽度优先搜索---持续更新

文章目录 前言N叉树的层序遍历题目要求题目解析代码如下 二叉树最大宽度题目要求题目解析代码如下 在每个树中找最大值题目要求题目解析代码如下 二叉树的锯齿形层序遍历题目要求题目解析代码如下 前言 本文将会向你介绍有关队列宽度优先搜索的题目&#xff1a;N叉树的层序遍历…

【每日一题】LeetCode 2398.预算内的最多机器人数目(滑动窗口、数组、二分查找、前缀和、堆(优先队列))

【每日一题】LeetCode 2398.预算内的最多机器人数目&#xff08;滑动窗口、数组、二分查找、前缀和、堆&#xff08;优先队列&#xff09;&#xff09; 题目描述 给定两个整数数组 chargeTimes 和 runningCosts&#xff0c;分别代表 n 个机器人的充电时间和运行成本。再给定一…

喂料机和失重秤的区别?

喂料机和失重秤的区别&#xff1f;在硬件结构上的具体差异&#xff1a; 1. 喂料机的硬件结构 喂料机的结构比较简单&#xff0c;主要功能是传送物料&#xff0c;不涉及精确的称重系统。其硬件结构通常包括以下部分&#xff1a; 料斗&#xff1a;用于存储物料&#xff0c;物料…

cesium.js 入门到精通(7)

我们说一下相机的概念&#xff1a; 生活中的相机是一个用来拍照的设备&#xff0c;而这里的相机应该理解成一个人机交互的媒介。地图的缩放、平移、旋转&#xff0c;以及相关的鼠标操作都是由相机作为媒介来实现的。相机的位置和姿态参数决定了我们能看到的地图的样子。 可以…

centos7.9安装clamav教程

本章教程主要记录在centos7.9安装clamav过程。 ClamAV(Clam AntiVirus)是一个开源的防病毒软件工具,主要用于检测和消除恶意软件。它最初由 Tomasz Kojm 于 2001 年开发,并由 Cisco Systems 维护和支持。ClamAV 广泛应用于邮件网关、文件服务器和其他需要防病毒保护的环境中…

Linux软件包循环依赖解决 彻底删除i386架构 更新软件源

0.问题 之前为了wine和intel核显驱动加了32位的库&#xff0c;现在每次apt upgrade更新都被循环依赖弄得不堪其扰&#xff0c;apt --fix-broken install解决缺失都循环报错&#xff0c;寸步难行&#xff0c;忍无可忍、 而且一看全是i386的依赖&#xff0c;这32位我不用也罢&…

apache文件共享和访问控制

实现apache文件共享 文件共享路径 <Directory "/var/www/html"> #默认发布路径&#xff0c;功能限制 Options Indexes FollowSymLinks #indexes支持文件共享功能 AllowOverride None Require all granted </Directory> 进入到该路径下 cd…

【Java Bean Validation API】Spring3 集成 Bean 参数校验框架

Spring3 集成 Bean 参数校验框架 Java Bean Validation API 1. 依赖 Spring 版本&#xff1a;3.0.5 Java 版本&#xff1a;jdk21 检验框架依赖&#xff08;也可能不需要&#xff0c;在前面 spring 的启动依赖里就有&#xff09;&#xff1a; <!-- 自定义验证注解 -->…

【原创】java+springboot+mysql高校社团网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

spring内置的

程序里注入了spring内置的线程池&#xff0c;但没有看到线程池相关参数配置&#xff08;corePoolSize maxPoolSize 队列大小&#xff09;&#xff0c;网上查说默认是1个线程&#xff0c;结果和生产实际看到的不一致。 从生产可以看到有8个线程在跑&#xff0c;task-1 task-8&am…

buildroot移植qt报错Info: creating stash file (补充qt添加字库)

移植qt库&#xff0c;编译文件报错Info: creating stash file /home/rbing/QT/uart/.qmake.stash Project ERROR: Unknown module(s) in QT: serialport rbingouc:~/QT/uart$ /home/rbing/linux/tool/buildroot-2022.02.9/output/host/usr/bin/qmake Info: creating stash fil…

PCI Express 体系结构导读摘录(六)

系列文章目录 PCI Express 体系结构导读摘录&#xff08;一&#xff09; PCI Express 体系结构导读摘录&#xff08;二&#xff09; PCI Express 体系结构导读摘录&#xff08;三&#xff09; PCI Express 体系结构导读摘录&#xff08;四&#xff09; PCI Express 体系结构导读…

HarmonyOS开发实战( Beta5.0)画笔调色板案例实践

鸿蒙HarmonyOS开发往期必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 介绍 本示例实现了一个网格渐变的画笔调色板&#xff0c;能够根…