PWM控制直流电机(单片机实验)

2023-05-16

PWM控制直流电机(单片机实验)

有问题欢迎私信哦

一.题目
设计电路,使用定时器实现PWM对直流电机的转速控制,并且实现按键切换转动方向。并进行软件仿真,做出实物。
二.基本要求
1.设置按键控制直流电机的开关
2.设置按键控制直流电机的加速、减速。
3.设置按键控制直流电机的正反转。
4.设置显示模块可以直观的了解到直流电机的工作状态。
5.使用PROTUES软件进行电路设计并仿真。
6.按照仿真设计实物。

目录

  1. 项目分析 6
    1.1 设计思路 6
    1.2 系统框架构建 6
  2. 硬件设计 7
    2.1 硬件模块组成 7
    2.2 单片机控制模块 7
    2.2.1 单片机控制模块简介 7
    2.2.2 AT89C52简介 7
    2.2.3 AT89C52主要功能列举 7
    2.2.4 AT89C52引脚功能介绍 7
    2.3 电机驱动模块 8
    2.3.1 L298电机驱动简介 8
    2.3.2 L298N原理图 8
    2.3.3 L298N的逻辑功能 9
    2.4 数码管显示模块 9
    2.4.1 LED数码管简介 9
    2.4.2 LED七段数码管的结构 9
    2.5 键盘控制模块 10
    2.5.1 键盘控制模块介绍 10
    2.5.2 独立按键介绍 10
    2.5.3 独立按键与单片机的链接 10
  3. 软件设计 11
    3.1 代码设计 11
    3.2 仿真实现 14
  4. 系统调试总结分析 14

1. 项目分析

1.1 设计思路
PWM控制直流电机的主要功能要求有:能够实现对直流电机的加速、减速、正反转和暂停,能够直观的了解到直流电机的工作状态,且可以很方便的实现对直流电机的智能控制。

为此我们设计了以下几个部分来构成我们的直流电机PWM控制系统:
主体电路:即直流电机PWM控制模块。这部分电路主要由AT89C52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,能够很方便的实现电机的智能控制。其间是通过AT89C52单片机产生脉宽可调的脉冲信号并输入到L298N驱动芯片来控制直流电机工作的。
该直流电机PWM控制系统由以下电路模块组成:
设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速以及电机的正反转和暂停控制。
设计控制部分:主要由AT89C52单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298N直流电机驱动模块组成。
设计显示部分:LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。
1.2 系统框架构建
方案说明:直流电机PWM调速系统以AT89C52单片机为控制核心,由命令输入模块、LED显示模块及电机驱动模块组成。采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转和急停控制;同时单片机不停的将PWM脉宽调制占空比送到LED数码管完成实时显示。如图1-2-1为预设框架图。
在这里插入图片描述
2. 硬件设计

2.1 硬件模块组成
(1) 单片机控制模块
(2) 电机驱动模块
(3) 数码管显示模块
(4) 键盘控制模块

2.2 单片机控制模块

2.2.1 单片机控制模块简介
在该模块,经过我们讨论比较之后我们选择了AT89C52构成我们的单片机控制模块。

2.2.2 AT89C52简介
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

2.2.3 AT89C52主要功能列举
(1) 拥有灵巧的8位CPU和在系统可编程Flash
(2) 晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)
(3) 内部程序存储器(ROM)为 8KB
(4) 内部数据存储器(RAM)为 256字节
(5) 32 个可编程I/O 口线
(6) 8 个中断向量源
(7) 三个 16 位定时器/计数器
(8) 三级加密程序存储器
(9) 全双工UART串行通道

2.2.4 AT89C52引脚功能介绍

VCC:AT89S52电源正端输入,接+5V。
VSS:电源地端。
XTAL1:单芯片系统时钟的反相放大器输入端。
XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:AT89C52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89C52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。AT89C52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89C52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89C52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89C52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:RXD,串行通信输入。
P3.1:TXD,串行通信输出。
P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。
P3.4:T0,计时计数器0输入。
P3.5:T1,计时计数器1输入。
P3.6:WR:外部数据存储器的写入信号。
P3.7:RD,外部数据存储器的读取信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。

2.3 电机驱动模块

2.3.1 L298电机驱动简介
L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。

2.3.2 L298N原理图
L298原理图如图2-3-1所示
在这里插入图片描述
图2-3-1 L298原理图

2.3.3 L298N的逻辑功能
当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相同时,电机快速停止。当使能端为低电平时,电动机停止转动。
在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式在线性放大驱动方式。
半导体功率器件工作在线性区优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控制。如表2-3-1所示。

2.4 数码管显示模块
2.4.1 LED数码管简介
LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。除半导体激光器外,当电流激励时能发射光学辐射的半导体二极管。严格地讲,术语LED应该仅应用于发射可见光的二极管;发射近红外辐射的二极管叫红外发光二极管(IRED,Infrared Emitting Diode);发射峰值波长在可见光短波限附近,由部份紫外辐射的二极管称为紫外发光二极管;但是习惯上把上述三种半导体二极管统称为发光二极管。
2.4.2 LED七段数码管的结构
LED七段数码管,如图2-4-2所示,是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用的段数一般为7段,有的另加一个小数点 。LED数码管根据LED的接法不同,分为共阴和共阳两类 。
共阴极结构,是8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管,则对应的阳极端接高电平。共阳极结构,是8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源。要使哪根发光二极管,则对应的阴极端接地。
在这里插入图片描述
图2-4-2 LED数码管结构图
其中7段发光二极管构成7笔的字形“8”,1根发光二极管构成小数点。从a-g引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的7(或8)位二极管编制称为字段码。不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码。

2.5 键盘控制模块

2.5.1 键盘控制模块介绍
键盘控制模块主要是用于操作设备运行的一种指令和数据输入装置。
键盘按照接口原理可分为编码键盘与非编码键盘两类。这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别;非编码键盘主要是由软件来实现键盘的定义与识别。键盘按照其结构可分为独立式键盘与矩阵式键盘两类。独立式键盘主要用于按键较少的场合,矩阵式键盘主要用于按键较多的场合,也称行列式键盘。综合需求比较我们选择了独立式键盘用于我们的键盘控制模块。

2.5.2 独立按键介绍
独立按键主要是指轻触式按键开关,也称之为轻触开关。独立按键是一种电子开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。
独立键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态(引脚图如图2-5-1所示)。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。
在这里插入图片描述
图2-5-1 独立按键引脚图
2.5.3 独立按键与单片机的链接
如图2-5-2所示为单片机和独立按键链接的示意图
在这里插入图片描述
图2-5-2 独立键盘与单片机的链接
3. 软件设计

3.1 代码设计

#include<reg52.h> 
#define uchar unsigned char	
#define uint unsigned int 
#define value P0
#define wei P2
uchar sdkey;
uchar zfkey;
uchar zkgkey;	
sbit motor_A_1=P3^5;
sbit motor_A_2=P3^6;
sbit zkg=P3^7;
sbit k1=P1^0;  	// k1加速按键
sbit k2=P1^1;   // K2减速按键
sbit k3=P1^2;   // K3方向取反
sbit k4=P1^3;   // k4电机开关
uchar T=0;	     
uchar W=0;	   
uchar k=0;	    
uint i=0;      
uint l=0;
uchar code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x00};
uchar code smgwei[]={0x01,0x02,0x04,0x08};
void time0Init(void)
{
	TH0=0xff;
	TL0=0xf6;			
	TMOD=0x01;	
	EA=1;						
	ET0=1;
	TR0=1;
}
void Delay(uint m)
{
	while(m--);	
}
void displaysmg(uint a,uint b)
{
	wei=~smgwei[a];
	value=smgduan[b];
	Delay(100);
}
void display()
{
	if(W>0)
	{
  displaysmg(0,W/20);		
	}
 if(zkg==1)
	{
		displaysmg(3,1);	
	}	
	else 
	{
		wei=0xff;
	}
	if(zfkey==1)
				{
						displaysmg(2,1);	
				}
				else
				{
				 displaysmg(2,6);			
				}

}
void timer0() interrupt 1
{		  		   
	TH0=0xff;
	TL0=0xf6;
	T++;	 				
	if(T==100)      
	T=0; 
	if(k==0)
	 {
		 
		if(T>W)
			motor_A_1 =0;
		else
			motor_A_1 =1;
     }
	else
	 {
		if(T>W)
			motor_A_2 =0;
		else
			motor_A_2 =1;
	 }
}	 
void key(void)           
{
	if(k1==0)								 //加速
	{	
		Delay(100);						
		{
			while(k1==0);
			if(W==100)
			W=0;				
			else
				W+=20;	
		}
	}
	else if(k2==0)					    //减速
	{	
		Delay(100);					    
		{				 
			while(k2==0);			   	
			if(W==0)				    
				W=100;				
			else
				W-=20;
		}
	}
	else if(k3==0)					    //转向
	{
		Delay(100);									
		{	
			if(k3==0)
			{		   
			while(!k3);
			k=!k;	
			zfkey=~zfkey;
			}
		} 
	}
	else if(k4==0)						//总开关
	{	
		Delay(100);			            	
		{	
		  if(k4==0)
			{	
				zkg=~zkg;
				zkgkey=~zkgkey;
			}
			while(!k4);
			W=0;													
		}
	}
}
void main(void)
{
	zkg=0;
   zfkey=1;
	   time0Init();			              		 
	while(1)	 
	   {
	      if(k==0)
	      motor_A_2=0;
	      else
	      motor_A_1=0;	 		
key();						
	   display();
	}
}

3.2 仿真实现

图3-2-1 电机顺时针-关闭状态仿真图
图3-2-2 电机顺时针-开启状态仿真图
图3-2-3 电机逆时针-关闭状态仿真图
图3-2-3 电机顺时针-5档状态仿真图
图3-2-4 电机逆时针-2档状态仿真图
在这里插入图片描述
图3-2-5 电机顺时针-2档状态仿真图

图3-2-6 电机逆时针-2档状态实物图

4. 系统调试总结分析

4.1 仿真调试
通过仿真我们能够直观的看到实验现象。其中数码管左边第一位为档位显示,右边第二位为顺时针/逆时针状态显示,右边第一位为电机开启/关闭状态显示。K1按键为加速按键,K2按键为减速按键,k3按键为电机转向选择按键,K4为电机的开关按键。
1、加速按键K1
按下加速按键K1的时候,数码管的档位显示会更改并显示当前档位,每次按下K1会将档位从当前显示数字加1。档位共分为6档,0~5,从1档到5档使得电机不断加速,5档时电机处于最高速度。0档时数码管并不显示任何,此时电机停止转动并且当目前为5档时,如果再次按下K1,电机速度会置0(数码管档位不显示),如再次按下K1,又会重新加1。同时电机会根据数码管显示的档位相应的转速转动。
2、减速按键k2
按下减速按键K2的时候,数码管的档位显示会更改并显示当前档位,每次按下k2的时候与加速相反,减速按键每次会让数码管显示数字减1,从5档到0档,数码管随着每次K2的按下都会随之减1,当数码管从5减到0,显示的数字不断减小,标示着电机转速不断下降。当前档位为0时,数码管不显示任何并且电机停止转动,如果当前档位为0,按下K2时,数码管会显示5,即为最高档位,同时电机也会位于最高速度。之后每次按下K2,又会重新减1。同时电机会根据数码管显示的档位相应的转速转动。
3、方向按键K3
方向按键K3按下的时候,数码管的右边第二位会显示1或者不显示,其中1表示电机转向为顺时针方向,数码管不显示表示电机逆时针转动。电机的转向不受电机开关K4的影响。电机转向可通过数码管显示1或者不显示直观的看到。
4、电机开关按键K4
电机默认状态为关机状态,此时数码管不显示。在这个状态下,可以人为的去选择电机的转向。同时也可以去调节电机的转速。但是当K4按下,数码管显示1,此时电机为开启状态,此时处于安全考虑档位会自动置0,即电机开启后,如不手动去调节档位,电机也不会工作。电机转向的选择并不受电机是否开启的影响。

4.2 实物测试
通过自己动手,我们完成了实验所需仪器的组装。整个装置由最小系统、数码管,4个独立按键以及L298N和直流电机组成。根据各个元器件的原理图以及仿真图,组装完成好实物之后。由直流电源提供12V的直流电给L298N模块供电,再通过L298N的模块给整个系统提供5V的供电用以完成实验。最后我们得到的实验结果和预期一致,可以通过按键用来控制电机的转速调节和电机的转向控制并通过数码管显示相关的信息。

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

PWM控制直流电机(单片机实验) 的相关文章

随机推荐

  • Docker 停止容器

    使用docker stop停止一个容器 docker stop可以用来终止一个正在运行的容器 它的命令格式如下 xff1a docker stop OPTIONS Container Container 其中 xff1a docker st
  • 进入docker容器

    进入docker容器的三种方法 1 使用ssh登陆进容器 xff1b 2 使用nsenter nsinit等第三方工具 xff1b 3 使用docker本身提供的工具 Docker目前主要提供了docker exec和docker atta
  • docker删除容器

    删除容器使用 docker rm 命令 xff1a 1 删除容器 1 首先需要停止所有的容器 docker stop docker ps a q 2 删除所有的容器 只删除单个时把后面的变量改为container id即可 docker r
  • docker 基于Commit定制镜像

    在Docker中提供了一个命令docker commit xff0c 该命令会把对容器的修改提交成一个镜像 换句话说 xff0c 就是在原有镜像的基础上 xff0c 再叠加上容器的存储层 xff08 该存储层仅仅保存了容器所做的修改 xff
  • Ubuntu 实现shell文件的开机运行(从原理到实现)

    目录 0 Linux的开机启动顺序 1 完善 rc local service 脚本 3 创建 rc local 脚本 4 总结 设置 shell 脚本开机启动的方法有挺多 xff0c 比如 xff1a 添加到 init d 中的方法 xf
  • docker 保存镜像、加载镜像

    将镜像保存到tar包 docker save用来将一个或者多个镜像保存为一个tar文件 xff0c 默认标准输出流的方式输出 xff0c 它的具体语法如下 xff1a docker save OPTIONS IMAGE IMAGE 其中 x
  • docker 导入导出容器

    将 容器的文件系统 保存到tar包 docker export是将 容器的文件系统 导出为一个tar包 注意是操作的对象是容器 xff01 它的具体语法如下 xff1a docker export OPTIONS CONTAINER 其中
  • docker 删除镜像

    删除镜像 如果要删除本地的镜像 xff0c 可以使用 docker rmi xff08 注意rm为删除容器 xff0c 而rmi为删除镜像 xff0c 其中i代表image xff09 命令 xff0c 它的具体语法如下 xff1a doc
  • docker 构建私有Registry、私人仓库

    1 使用docker tag给busybox加上一个标签localhost 5000 busybox latest xff1b docker tag busybox localhost span class token operator s
  • mall在linux环境下的部署(基于docker容器)

    mall在docker容器下部署涉及到MySQL Redis Nginx RabbitMQ MongoDB Elasticsearch Logstash Kibana xff0c 以及Spring Boot应用部署 本人事先已经拉取过镜像了
  • docker拉取镜像速度很慢的解决方法

    将docker修改为国内镜像源 在 etc docker daemon json文件中添加下面参数 xff0c 文件不存在的话创建即可 此处使用的是中国科技大学的docker镜像源 span class token punctuation
  • 解决您的qq.exe已在防护中,链接无法打开的问题

    适用于联想电脑 出现以上情况是由于默认了联想自带的浏览器打开QQ的链接 xff0c 如果不是直接点击的话可以复制到浏览器打开 xff0c 以下内容是方便直接QQ打开链接 问题如图 xff1a 解决方法 打开联想浏览器 设置 智能实验室 管理
  • ubunut16.04 kinetic版本gazebo7升级为gazebo9(完美解决!!!)

    问题 xff1a 我们加载gazebo7发现启动rourun节点有关摄像头的画面加载不出来 xff0c 往往是黑屏或者卡顿中断gazebo 原因 xff1a Gazebo版本太低造成的 因此 xff0c 需要对此升级 Kinetic中的默认
  • 【Java】Java对象的上转型对象与下转型

    Java对象的上转型对象与下转型 1 解释说明2 代码示例2 1 示例一2 2 示例二 3 强制对象类型转换 将一个类型强制转换成另一个类型的过程被称为类型转换 本节所说的对象类型转换 xff0c 是指存在继承关系的对象 xff0c 不是任
  • 虚拟机/云服务器安装docker

    本文基于腾讯云服务器CentOS7 6版本 一 操作步骤 提示 xff1a 执行whoami命令可以查看当前账户 xff0c 如果不是管理员 xff0c 所有命令需要加上sudo 如果需要切换账户 xff0c 可以使用命令 su root
  • Linux SocketCAN 编程(C++,启用多线程接收)

    目录 1 使用指令设置can参数 2 使用 socket 函数创建一个 socketcan 套接字 3 使用 ioctl 函数 将套接字与 can 设备绑定 4 使用 setsockopt 函数设置过滤规则 xff08 接收滤波器 xff0
  • CentOS 7 配置 VNC 服务(单用户单界面)

    CentOS 7 配置 VNC 服务 xff1a 前提图形界面已安装 安装图形仅供参与不同版命令有些区别 yum check update yum groupinstall 34 X Window System 34 yum install
  • CentOS禁止root登录ssh

    为什么要禁止root登录ssh xff0c 为了安全 添加一个用户 为了禁止root登录时候登录的账号密码 useradd admin passwd admin 然后输入两次密码 xff0c 提示的信息可忽略 修改文件sshd config
  • C++复习题(面向对象程序设计)

    C 43 43 复习题 xff08 面向对象程序设计 xff09 一 选择题 C 43 43 语言属于 C A xff09 自然语言 B xff09 机器语言 C xff09 面向对象语言 D xff09 汇编语言下面选项中不属于面向对象程
  • PWM控制直流电机(单片机实验)

    PWM控制直流电机 xff08 单片机实验 xff09 有问题欢迎私信哦 一 题目 设计电路 xff0c 使用定时器实现PWM对直流电机的转速控制 xff0c 并且实现按键切换转动方向 并进行软件仿真 xff0c 做出实物 二 基本要求 1