【STC15库函数上手笔记】7、PCA与PWM

目录

  • 硬知识
    • 硬件知识
      • CCP/PWM/PCA模块的结构
    • 软件知识
      • PCA初始化函数
      • PWM更新占空比函数
  • 测试程序
    • PWM模式产生PWM信号
      • main.c
      • 实验现象
    • 16位软件定时器模式模式产生PWM信号
      • main.c
      • 实验现象
    • 捕获模式测量周期长度
      • main.c
      • 实验现象

STC实验箱4
IAP15W4K58S4
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0


硬知识

硬件知识

       摘自《STC15系列单片机器件手册
       STC15系列部分单片机集成了3路可编程计数器阵列(CCP/PCA)模块(STC15W4K32S4系列单片机只有两路CCP/PCA),可用于软件定时器、外部脉冲的捕捉、高速脉冲输出以及脉宽调制(PWM)输出。
       下表总结了STC15系列单片机内部集成了CCP/PCA/PM功能的单片机型号:
在这里插入图片描述
       上表中√表示对应的系列有相应的功能。
在这里插入图片描述

CCP/PWM/PCA模块的结构

       STC15系列部分单片机有3路可编程计数器阵列CCP/PCA/PWM(通过AUXR1/P_SW1寄存器可以设置CCP/PCA/PWM从P1口切换到P2口切换到P3口)。
       PCA含有一个特殊的16位定时器,有3个16位的捕获/比较模块与之相连,如下图所示。
在这里插入图片描述
       每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速脉冲输出或可调制脉冲输出。
       16位PCA定时器/计数器是3个模块的公共时间基准,其结构如下图所示。
在这里插入图片描述

软件知识

       摘自《STC库函数使用参考

PCA初始化函数

PCA_Init
在这里插入图片描述
PCA_id:选择要初始化的PCA通道:在这里插入图片描述
PCA_InitTypeDef的定义见于文件"PCA.H".

typedef struct
{u8 PCA_IoUse;u8 PCA_Clock; u8 PCA_Mode; u8 PCA_PWM_Wide;u8 PCA_Interrupt_Mode; u8 PCA_Polity;u16 PCA_Value;
} PCA_InitTypeDef;

PCA_IoUse:选择PCA使用的IO:初始化PCA_Counter时的取值,初始化PCA0~PCA2时忽略
在这里插入图片描述
PCA_Clock:选择PCA使用的时钟:初始化PCA_Counter时的取值,初始化PCA0~PCA2时忽略在这里插入图片描述
PCA_Mode:设置PCA通道的工作模式:初始化PCA0~PCA2时的取值,初始化PCA_Counter时忽略
在这里插入图片描述
PCA_PWM_Wide:设置PCA通道工作于PWM模式时的PWM宽度:初始化PCA0~PCA2工作于PWM模式时的取值,初始化PCA_Counter时或PCA通道其它模式时忽略
在这里插入图片描述
PCA_Interrupt_Mode:中断允许或禁止:初始化PCA0~PCA2时的取值,初始化PCA_Counter时忽略在这里插入图片描述
注意:上面的参数可以做如下组合:

PCA_InitStructure.PCA_Interrupt_Mode = PCA_Fall_Active | ENABLE; //下降沿中断,允许中断。
PCA_InitStructure.PCA_Interrupt_Mode = PCA_Rise_Active | ENABLE; //上升沿中断,允许中断。
PCA_InitStructure.PCA_Interrupt_Mode = PCA_Rise_Active | PCA_Fall_Active | ENABLE; //上升沿、下降沿中断,允许中断。

如果后面使用了| DISABLE,则中断被禁止。

PCA_Polity:中断的优先级:初始化PCA_Counter时的取值,初始化PCA0~PCA2时忽略在这里插入图片描述
PCA_Value:设置PCA通道的初值。初始化PCA0~PCA2时的取值,初始化PCA_Counter时忽略

PWM更新占空比函数

UpdatePwm
在这里插入图片描述

测试程序

PWM模式产生PWM信号

PCA.c里的UpdatePwm函数默认是被注释掉的,需要解除注释:
在这里插入图片描述

main.c

#include "./Drivers/config.h"
#include "./Drivers/delay.h"#include "./Drivers/GPIO.h"
#include "./Drivers/PCA.h"void GPIO_config(void)
{GPIO_InitTypeDef GPIO_InitStructure;					//结构定义GPIO_InitStructure.Mode = GPIO_OUT_PP;					//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_InitStructure.Pin  = GPIO_Pin_5 | GPIO_Pin_6;		//指定要初始化的IO, 或操作GPIO_Inilize(GPIO_P2, &GPIO_InitStructure);				//P2.5、P2.6初始化为推挽输出
}void PCA_config(void)
{PCA_InitTypeDef PCA_InitStructure;PCA_InitStructure.PCA_Mode     = PCA_Mode_PWM;		//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit;		//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = DISABLE;		//PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = (u16)((1 << 8) * (1 - 0.5));//对于软件定时, 为匹配比较值PCA_Init(PCA0,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_PWM;		//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = PCA_PWM_7bit;		//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = DISABLE;		//PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = (u16)((1 << 7) * (1 - 0.5));//对于软件定时, 为匹配比较值PCA_Init(PCA1,&PCA_InitStructure);PCA_InitStructure.PCA_Clock    = PCA_Clock_1T;		//PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECIPCA_InitStructure.PCA_IoUse    = PCA_P24_P25_P26_P27;//PCA_P12_P11_P10_P37, PCA_P34_P35_P36_P37, PCA_P24_P25_P26_P27PCA_InitStructure.PCA_Interrupt_Mode = DISABLE;		//ENABLE, DISABLEPCA_InitStructure.PCA_Polity   = PolityHigh;		//优先级设置	PolityHigh,PolityLowPCA_Init(PCA_Counter,&PCA_InitStructure);
}void main(void)
{GPIO_config();PCA_config();UpdatePwm(PCA0, (1 << 8) * (1 - 0.75));UpdatePwm(PCA1, (1 << 7) * (1 - 0.25));while(1){}
}

实验现象

PWM频率 = PCA时钟频率 / 2PWM位数2^{PWM位数}2PWM
在这里插入图片描述
30MHz/1/28=117187.5Hz30MHz / 1 / 2^8 = 117187.5 Hz30MHz/1/28=117187.5Hz
在这里插入图片描述
30MHz/1/27=234375Hz30MHz / 1 / 2^7 = 234375 Hz30MHz/1/27=234375Hz
在这里插入图片描述

16位软件定时器模式模式产生PWM信号

PWM频率 = PCA时钟频率 / PWMx_DUTY

修改PCA.h中的PWMx_DUTY
在这里插入图片描述
修改PCA_Handler内的对应引脚
在这里插入图片描述

//========================================================================
// 函数: void	PCA_Handler (void) interrupt PCA_VECTOR
// 描述: PCA中断处理程序.
// 参数: None
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void	PCA_Handler (void) interrupt PCA_VECTOR
{if(CCF0)		//PCA模块0中断{CCF0 = 0;		//清PCA模块0中断标志if(P25)	CCAP0_tmp += PCA_Timer0;	//输出为高电平,则给影射寄存器装载高电平时间长度else	CCAP0_tmp += PWM0_low;	//输出为低电平,则给影射寄存器装载低电平时间长度CCAP0L = (u8)CCAP0_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP0H = (u8)(CCAP0_tmp >> 8);	//后写CCAP0H}if(CCF1)	//PCA模块1中断{CCF1 = 0;		//清PCA模块1中断标志if(P26)	CCAP1_tmp += PCA_Timer1;	//输出为高电平,则给影射寄存器装载高电平时间长度else	CCAP1_tmp += PWM1_low;	//输出为低电平,则给影射寄存器装载低电平时间长度CCAP1L = (u8)CCAP1_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP1H = (u8)(CCAP1_tmp >> 8);	//后写CCAP0H}if(CCF2)	//PCA模块2中断{CCF2 = 0;		//清PCA模块1中断标志if(P27)	CCAP2_tmp += PCA_Timer2;	//输出为高电平,则给影射寄存器装载高电平时间长度else	CCAP2_tmp += PWM2_low;	//输出为低电平,则给影射寄存器装载低电平时间长度CCAP2L = (u8)CCAP2_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP2H = (u8)(CCAP2_tmp >> 8);	//后写CCAP0H}if(CF)	//PCA溢出中断{CF = 0;			//清PCA溢出中断标志}}

main.c

#include "./Drivers/config.h"
#include "./Drivers/delay.h"#include "./Drivers/GPIO.h"
#include "./Drivers/PCA.h"void GPIO_config(void)
{GPIO_InitTypeDef GPIO_InitStructure;					//结构定义GPIO_InitStructure.Mode = GPIO_OUT_PP;					//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_InitStructure.Pin  = GPIO_Pin_5 | GPIO_Pin_6;		//指定要初始化的IO, 或操作GPIO_Inilize(GPIO_P2, &GPIO_InitStructure);				//P2.5、P2.6初始化为推挽输出
}void PCA_config(void)
{PCA_InitTypeDef PCA_InitStructure;PCA_InitStructure.PCA_Mode     = PCA_Mode_HighPulseOutput;	//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = 0;							//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = ENABLE;				//PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 65535;						//对于软件定时, 为匹配比较值PCA_Init(PCA0,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_HighPulseOutput;	//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = 0;							//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = ENABLE;				//PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 65535;						//对于软件定时, 为匹配比较值PCA_Init(PCA1,&PCA_InitStructure);PCA_InitStructure.PCA_Clock    = PCA_Clock_12T;				//PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECIPCA_InitStructure.PCA_IoUse    = PCA_P24_P25_P26_P27;		//PCA_P12_P11_P10_P37, PCA_P34_P35_P36_P37, PCA_P24_P25_P26_P27PCA_InitStructure.PCA_Interrupt_Mode = DISABLE;				//ENABLE, DISABLEPCA_InitStructure.PCA_Polity   = PolityHigh;				//优先级设置	PolityHigh,PolityLowPCA_Init(PCA_Counter, &PCA_InitStructure);
}void main(void)
{GPIO_config();PCA_config();PWMn_Update(PCA0, (u16)(PWM0_DUTY * 0.75));PWMn_Update(PCA1, (u16)(PWM1_DUTY * 0.25));EA = 1;while(1){}
}

实验现象

30MHz/12/50000=50Hz30MHz / 12 / 50000 = 50 Hz30MHz/12/50000=50Hz
在这里插入图片描述
在这里插入图片描述

捕获模式测量周期长度

修改PCA.c内的PCA_Handler
在这里插入图片描述

//========================================================================
// 函数: void	PCA_Handler (void) interrupt PCA_VECTOR
// 描述: PCA中断处理程序.
// 参数: None
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void	PCA_Handler (void) interrupt PCA_VECTOR
{if(CCF0)		//PCA模块0中断{CCF0 = 0;		//清PCA模块0中断标志if(P25)	CCAP0_tmp += PCA_Timer0;	//输出为高电平,则给影射寄存器装载高电平时间长度else	CCAP0_tmp += PWM0_low;	//输出为低电平,则给影射寄存器装载低电平时间长度CCAP0L = (u8)CCAP0_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP0H = (u8)(CCAP0_tmp >> 8);	//后写CCAP0H}if(CCF1)	//PCA模块1中断{CCF1 = 0;		//清PCA模块1中断标志if(PCA1_mode >= PCA_Mode_SoftTimer)		//PCA_Mode_SoftTimer and PCA_Mode_HighPulseOutput{CCAP1_tmp += PCA_Timer1;CCAP1L = (u8)CCAP1_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP1H = (u8)(CCAP1_tmp >> 8);	//后写CCAP0H}else if(PCA1_mode == PCA_Mode_Capture){CCAP1_tmp = CCAP1H;	//读CCAP1HCCAP1_tmp = (CCAP1_tmp << 8) + CCAP1L;B_Capture1 = 1;}}if(CCF2)	//PCA模块2中断{CCF2 = 0;		//清PCA模块1中断标志if(P27)	CCAP2_tmp += PCA_Timer2;	//输出为高电平,则给影射寄存器装载高电平时间长度else	CCAP2_tmp += PWM2_low;	//输出为低电平,则给影射寄存器装载低电平时间长度CCAP2L = (u8)CCAP2_tmp;			//将影射寄存器写入捕获寄存器,先写CCAP0LCCAP2H = (u8)(CCAP2_tmp >> 8);	//后写CCAP0H}if(CF)	//PCA溢出中断{CF = 0;			//清PCA溢出中断标志}}

main.c

#include "./Drivers/config.h"
#include "./Drivers/delay.h"#include "./Drivers/GPIO.h"
#include "./Drivers/PCA.h"#include "./Drivers/soft_UART.h"
#include <stdio.h>char putchar(char Char)
{TxSend(Char);return Char;
}void GPIO_config(void)
{GPIO_InitTypeDef GPIO_InitStructure;					//结构定义GPIO_InitStructure.Mode = GPIO_OUT_PP;					//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_InitStructure.Pin  = GPIO_Pin_5;					//指定要初始化的IO, 或操作GPIO_Inilize(GPIO_P2, &GPIO_InitStructure);				//P2.5初始化为推挽输出
}void PCA_config(void)
{PCA_InitTypeDef PCA_InitStructure;PCA_InitStructure.PCA_Mode     = PCA_Mode_HighPulseOutput;	//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = 0;							//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = ENABLE;				//PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 65535;						//对于软件定时, 为匹配比较值PCA_Init(PCA0,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_Capture;	//PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = 0;					//PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = PCA_Fall_Active | ENABLE;	//(PCA_Rise_Active, PCA_Fall_Active) or (ENABLE, DISABLE)PCA_InitStructure.PCA_Value    = 0;					//对于捕捉, 这个值没意义PCA_Init(PCA1,&PCA_InitStructure);PCA_InitStructure.PCA_Clock    = PCA_Clock_12T;				//PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECIPCA_InitStructure.PCA_IoUse    = PCA_P24_P25_P26_P27;		//PCA_P12_P11_P10_P37, PCA_P34_P35_P36_P37, PCA_P24_P25_P26_P27PCA_InitStructure.PCA_Interrupt_Mode = DISABLE;				//ENABLE, DISABLEPCA_InitStructure.PCA_Polity   = PolityHigh;				//优先级设置	PolityHigh,PolityLowPCA_Init(PCA_Counter, &PCA_InitStructure);
}u16	Cap_time;	//上一次捕捉时间void main(void)
{u16 j;Cap_time = 0;GPIO_config();PCA_config();PWMn_Update(PCA0, (u16)(PWM0_DUTY * 0.75));EA = 1;while(1){if(B_Capture1){B_Capture1 = 0;j = CCAP1_tmp - Cap_time;	//计算时间差Cap_time = CCAP1_tmp;printf("%d us\r\n", (int)(j * 12. / 30));}delay_ms(1);}
}

实验现象

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门

Vue.js——60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库&#xff0c;它是以数据驱动和组件化的思想构建的。相比于Angular.js&#xff0c;Vue.js提供了更加简洁、更易于理解的API&#xff0c;使得我们能够快速地上手并使用Vue.js。 本文摘自&#xff1a;http://www…

指针以及内存分配

原文&#xff1a;http://blog.csdn.net/bizhu12/article/details/6532235 1. 指针很灵活,这使得指针很难管理,在定义指针时,将在栈中开辟一块内存存放指针的地址(栈内的内存由系统分配和释放),指针的地址内存只是存放指针的地址,不存放指针指向的数据,值得注意的是,定义指针时指…

mysql如何修改开启允许远程连接

关于mysql远程连接的问题&#xff0c;大家在公司工作中&#xff0c;经常会遇到mysql数据库存储于某个人的电脑上&#xff0c;大家要想连接mysql服务&#xff0c;装有mysql服务的电脑就必须开启远程连接 第一步&#xff0c;用dos连接上你的数据库&#xff0c;&#xff08;我这里…

Solidworks如何自动打开和关闭特征识别FeatureWorks

如果直接对已有的零件识别特征&#xff0c;可能会报错 删除多余的特征&#xff0c;先只保留一个输入&#xff08;注意没有必要连草图也删掉&#xff0c;草图不会影响识别特征&#xff0c;你识别完了之后草图再接着该拉伸拉伸&#xff0c;该切除切除&#xff09;&#xff0c;然后…

SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制

目录OLED SPI 端口定义七针OLED引脚定义六针OLED引脚定义驱动程序oled.coled.holedfont.h使用main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 DMA控制见【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、…

上传图片在页面上显示

看了别人写的 自己照着写了一下 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()"…

【STC15库函数上手笔记】9、硬件SPI

目录硬件知识库函数spi.cspi.h测试main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬件知识 摘自《STC15系列单片机器件手册》 STC15系列单片机还提供另一种高速串行通信接口——SPI接口。SPI是一种全双工…

中介者模式分析、结构图及基本代码

&#xfeff;&#xfeff;定义&#xff1a;用一个中介对象来封装一系列的对象交互。中介者使各对象不须要显式地相互引用。从而使其耦合松散&#xff0c;并且能够独立地改变它们之间的交互。适用地方&#xff1a;中介者模式一般应用于一组对象以定义良好可是复杂的方式进行通信…

WordPress 数据库结构及表字段作用解析

对于WordPress的开发可以说子凡已经是如痴如醉了&#xff0c;通过 WordPress 本身的开放性接口可以做到很多的事情&#xff0c;但是有些时候我们可能更喜欢直接查询数据库来实现某些 WordPress 没有提供的函数来实现目的&#xff0c;所以这时候我们就需要对WordPress 数据库的结…

硬件负载均衡设备介绍

最常用是F5 与citrix netscaler 负载均衡分全局负载均衡和本地负载均衡。 地负载均衡是指对本地的服务器群做负载均衡&#xff0c;全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。 循环DNS 就是每次解析域名时指向IP loop list 里的下一个…

【STC15库函数上手笔记】10、EEPROM

目录硬件知识基本介绍软件知识EEPROM多字节读函数EEPROM多字节写函数EEPROM扇区擦除函数函数测试main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬件知识 基本介绍 摘自《STC15系列单片机器件手册》 STC…

【51单片机快速入门指南】4.6:I2C 与 PCF8563实时时钟日历芯片

目录硬知识概述特性功能描述报警功能模式定时器模式CLKOUT输出复位低电压检测器和时钟监视器低电压检测器和时钟监视器寄存器结构寄存器概述BCD编码格式寄存器概述Control/Status 1 寄存器&#xff08;内存地址00H&#xff09;Control/Status 2 寄存器&#xff08;内存地址01H&…

利用MySQL语句批量替换指定wordpress文章中的图片路径

天花了很多时间将SAE服务器中的图片下载到本地&#xff0c;然后删掉&#xff0c;但是有一个问题就是&#xff0c;所有文章中的图片路径还是以前的&#xff0c;没有根据域名来。导致下午某些时间段图片都是无法显示的&#xff0c;后来想到用MySQL直接批量替换&#xff0c;执行才…

【51单片机快速入门指南】6.4:DHT11、DHT22单总线温湿度传感器

目录硬知识DHT11DHT22通信协议读取步骤数据解读DHT11DHT22示例程序DHT11_22.cDHT11_22.h测试程序main.c实验现象DHT11DHT22STC89C52 Windows 10 20H2 Proteus 8 Frofessional v8.9 SP2 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《温湿…

【电路补习笔记】1、电阻的参数与选型

目录参数精度温度系数功率贴片电阻色环电阻传感器电阻老师的主页&#xff1a;唐老师讲电赛 视频地址&#xff1a;唐老师讲电赛之唐老师讲电子器件&#xff08;1&#xff09;电阻参数与选型 电阻按封装分为直插、贴片与印刷电阻&#xff08;有些电阻直接印刷在PCB上&#xff09;…

redis本地安装

redis在本地的安装及使用1、首先下载redis安装包&#xff0c;下载地址如下 http://pecl.php.net/package/redis/2.2.7/windows输入phpinfo()查看php版本进行相应的下载&#xff0c;注意版本2、下载完成后将php_redis.dll放到ext下&#xff0c;在php.ini中添加extensionphp_re…

【Net】测试网络、查看IP

http://www.speedtest.cn/ 转载于:https://www.cnblogs.com/flydkPocketMagic/p/7380400.html

【电路补习笔记】2、电容的参数与选型

目录分类无极性电容有极性电容电解电容钽电容参数精度温度系数材质耐压温度范围ESRESL电容并联高频特性焊盘&#xff08;PAD&#xff09;和旁路电容的放置老师的主页&#xff1a;唐老师讲电赛 视频地址&#xff1a;唐老师讲电赛之唐老师讲电子器件&#xff08;1&#xff09;电容…

1005:I Think I Need a Houseboat-poj

1005:I Think I Need a Houseboat 总时间限制: 1000ms内存限制: 65536kB描述Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned that the state of Louisiana is actually shrinkin…

【电路补习笔记】3、电感的参数与选型

目录分类电感的模型参数精度直流电阻&#xff08;DCR&#xff09;通流能力&#xff08;Irms&#xff09;自谐振频率&#xff08;SRF&#xff09;饱和电流&#xff08;Isat&#xff09;标号老师的主页&#xff1a;唐老师讲电赛 视频地址&#xff1a;唐老师讲电赛之唐老师讲电子器…