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

目录

  • 硬知识
    • 概述
    • 特性
    • 功能描述
      • 报警功能模式
      • 定时器模式
      • CLKOUT输出
      • 复位低电压检测器和时钟监视器
      • 低电压检测器和时钟监视器
    • 寄存器结构
      • 寄存器概述
      • BCD编码格式寄存器概述
      • Control/Status 1 寄存器(内存地址00H)
      • Control/Status 2 寄存器(内存地址01H)
      • Seconds,Minutes,Hours寄存器
      • Days,Weekdays,Months/Century,Years寄存器
      • Alarm寄存器
      • LKOUT频率寄存器
      • 计数控制寄存器
    • EXT_CLK测试模式
    • 上电复位(POR)override模式
    • 串行接口
      • PCF8563 I2C协议
  • 驱动程序
    • PCF8563.c
    • PCF8563.h
  • 测试程序
    • main.c
    • 实验现象

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


硬知识

       摘自《PCF8563实时时钟日历芯片选型指南》。

概述

       PCF8563是低功耗的CMOS实时时钟日历芯片。它提供一个可编程时钟输出一个中断输出和掉电检测器所有的地址和数据,通过12C总线接口串行传递最大总线速度为400Kbits/s,每次读写数据后内嵌的字地址寄存器会自动产生增量。

特性

低工作电流典型值:0.25 A(VDD=3.0V TambT_{amb}Tamb=25)
世纪标志;
大工作电压范围:1.0V–5.5V;
低休眠电流典型值为:0.25 A(VDD=3.0V,TambT_{amb}Tamb=25)
400KHz 的I2C接口:(VDD=1.8~5.5V)
可编程时钟输出频率为:32.768KHz,1024Hz、32Hz,1Hz;
报警和定时器;
内部集成的振荡器、电容、片内电源复位功能掉电检测器;
I2C 从地址:读0A3H; 写0A2H;
开漏中断引脚。
在这里插入图片描述

功能描述

       PCF8563内有16个8位的地址递增寄存器,一个32.768 kHz片上集成电容振荡器,一个实时时钟源(RTC)的分频器,可编程的时钟输出,一个定时器,报警器,一个低压检测器和400KHz的I2C接口。
       所有16个寄存器被设计成可寻址的8位并行寄存器,虽然不是所有的位都有效。前两个寄存器(内存地址00H和01H),用于控制与或状态寄存器。内存地址02H至08H是时钟功能的计数器,用于(秒、分、时、日、月、年计数器),内存地址09H至0CH包含定义报警的条件的报警寄存器。内存地址0DH控制CLKOUT的输出频率.0EH和0FH分别是定时控制器和定时器。
       秒、分钟、小时、天、月、年、以及每分钟报警、小时报警、日报警寄存器都以BCD格式编码。平日和星期报警寄存器不以BCD格式编码。
       当一个RTC寄存器被读取,所有的寄存器的内容被冻结。因此可以避免在读指令跳转期间,读取时钟/日历时发生错误。

报警功能模式

       通过清除一个或多个报警寄存器最高有效位(位AE-报警启用),相应的报警条件将被激活。这种方式可以产生从每分钟至每周一次的报警。报警条件设置报警标志,AF(控制/状态寄存器2的第3位),AF可用于产生一个中断(INT),AF只能通过软件清零。

定时器模式

       8位减数计时器(地址0FH)由定时控制寄存器(地址0EH,参见表25)控制。定时控制寄存器可以选择定时器的时钟源频率(4096,64,1,或1/60Hz)和启用/禁用计时器。从软件加载的8位二进制值的倒计时,在每个倒计时结束时,定时器设置的定时器标志TF(见表7)。定时器标志位TF只能由软件清零。根据定时器标志位TF可以产生一个中断(INT)。每个倒计时阶段都可能会产生中断脉冲信号,作为一个永久的积极信号,如TF条件下。TI/TP(见表7)用于控制这种模式的选择。当读取定时器,当前的倒计时数值作为返回值。

CLKOUT输出

       CLKOUT引脚有可编程方波。由CLKOUT频率寄存器(地址0DH;见表23)控制操作。时钟频率32.768KHz(默认),1024,32和1Hz的频率可以作为系统时钟,单片机的时钟,输入到电荷泵,或校准振荡器。CLKOUT开漏输出,上电时启用。如果禁用它变为高阻抗。

复位低电压检测器和时钟监视器

       PCF8563的包括内部复位电路,振荡器停止时,复位电路激活。在复位状态下,I2C总线初始化,所有寄存器和地址指针被清零,VL,TD1,TD0,TESTC和AE被设置为逻辑1.

低电压检测器和时钟监视器

       PCF8563芯片的低电压探测器。当VDD低于Vlow,VL位(秒寄存器第7位)设置表明可靠的时钟/日历信息将不再保证.VL标志只能由软件清零。
       位VL用于检测在电池供电情况下,VDD慢慢降低到Vlow的情况。在VDD低于Vlow之前应该把VDD从新拉高。这种情况下,时间可能被损坏。

寄存器结构

寄存器概述

表4
在这里插入图片描述
位标记"-": 无效;
"0"标记的,应始终与写入逻辑0.

BCD编码格式寄存器概述

表5
在这里插入图片描述
位标记"-": 无效;
[1]不是BCD编码格式。

Control/Status 1 寄存器(内存地址00H)

表6
在这里插入图片描述

Control/Status 2 寄存器(内存地址01H)

表7
在这里插入图片描述
在这里插入图片描述

Seconds,Minutes,Hours寄存器

在这里插入图片描述

Days,Weekdays,Months/Century,Years寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Alarm寄存器

       当一个或多个报警寄存器加载一个有效的分、时、日或平日信息,其相应的AE(Alarm Enable)位为逻辑0,然后将这些信息将与当前的分、时、日和平日进行比较。当所有启用的比较第一个匹配的,位AF(Alarm Flag)置位。
       AF保持置位,直到通过软件清除。一旦AF被清0,它只会被重新设置时间增量,以符合再次报警条件。若报警寄存器AE置1,则该报警寄存器被忽略。
在这里插入图片描述

LKOUT频率寄存器

在这里插入图片描述

计数控制寄存器

       8位二进制减计数器有效与否是由计数控制寄存器的TE位控制,计数器的时钟源也是由计数控制寄存器选择.计数器中断的产生与控制有状态控制寄存器2控制。为了准确读出计数器的值,I2C总线的SCL时钟至少应为计数器时钟的2倍。
在这里插入图片描述

EXT_CLK测试模式

       测试模式允许进行在线测试,在测试环境下可以设置测试的条件并控制芯片的RTC.
       通过设置控制状态寄存器1(Control/Status 1)的位TEST1进入测试环境,CLKOUT管脚转换为输入管脚。测试模式下,CLKOUT管脚的输入信号取代了芯片内部的64Hz的信号,CLKOUT管脚信号每64个上升沿产生1S增量。
       CLKOUT管脚提供的信号的最小脉冲带宽为300ns,最小周期为1000ns。内部64Hz时钟,或者外部信号源被内部预分频器分为1Hz,使用STOP预分频器可设置成已知状态,当位STOP置位,预分频器复位为0。在预分频器再次工作前,STOP位必须先清0.从STOP状态,第一个1S的占用CLKOUT信号32个上升沿,之后每1S的增量占用64个上升沿。
       备注:进入EXT_CLK测试模式内部64 Hz的时钟不同步,进入测试模式时,可以假设没有预分频器的状态。

  1. 进入EXT_CLK测试模式,设置Control/Status 1寄存器的7位TEST1=1;
  2. 设置Control/Status 1寄存器的5位STOP=1;
  3. 清除Control/Status 1寄存器的5位STOP=0;
  4. 设置时间寄存器(Seconds,Minutes,Hours,Days,Weekdays,Months/Century,Years)期望值;
  5. 向CLOCKOUT提供32个时钟脉冲;
  6. 读取时间寄存器,看第一次变化;
  7. 向CLOCKOUT提供64个时钟脉冲;
  8. 读取时间寄存器,看Second寄存器变化;
  9. 重复第7,8步骤,看额外的变量;

上电复位(POR)override模式

       POR的持续时间和晶体振荡器的启动时间直接相关。由于长期启动这些类型的电路所需要的时间,一个禁用POR和加强硬板设备测试机制已建成。这种模式的设置要求,I2C总线引脚,SDA和SCL,如图5所示,在一个特定的顺序切换。所有的时间值是最低要求。
       一旦已进入override模式,芯片立即停止复位和正常运行,开始进入EXT_CLK测试模式,即通过I2C总线访问。位TESTC写逻辑0,停止override模式。只有位TESTC被设置为逻辑1,才能再次进入override模式。正常运行期间位TESTC设置逻辑0无效,只是为了防止进入POR override模式。
在这里插入图片描述

串行接口

       PCF8563的串行接口是I2C总线。

PCF8563 I2C协议

寻址:在12C总线上传输的任何数据之前,首先处理设备应该响应。寻址总是进行传输启动程序后的第一个字节。
       PCF8563是一个从接收器或从发送器。因此时钟信号SCL只是一个输入信号,但数据信号SDA是双向线。
PCF8563的从地址
在这里插入图片描述
时钟/日历的读/写周期:在图11,12和13所示为不同的PCF8563的I2C总线配置读写周期。
WORD地址是一个4位的值,定义下一步要访问寄存器。WORD地址的高4位未使用。
在这里插入图片描述
在这里插入图片描述

驱动程序

       来源:51单片机入门经验分享8-关于IIC通信详解及PCF8563芯片显示时间 —— dabing89
       stdint.h见【51单片机快速入门指南】1:基础知识和工程创建
       软件I2C程序见【51单片机快速入门指南】4: 软件 I2C

PCF8563.c

/*******************************************************************************
* 文件名:PCF8563.c
* 描  述:工程c模块文件
* 功 能:底层模块文件
* 作者:MADE BY DA HE TAO
* 版本号:1.0.4(2015.03.02)
*******************************************************************************/
#include "PCF8563.h"
#include "./Soft_I2C/Soft_I2C.h"/*******************************************************************************
* 文件名:变量定义
* 描  述:
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.05.23)
*******************************************************************************/
uint8_t buffer[7];//数据存储缓存
sTime CurTime;/*******************************************************************************
* 文件名:static uint8_t RTC_BinToBcd2(uint8_t BINValue)
* 描  述: 将BIN转换为BCD
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
static uint8_t RTC_BinToBcd2(uint8_t BINValue)
{uint8_t bcdhigh = 0;while (BINValue >= 10){bcdhigh++;BINValue -= 10;}return ((uint8_t)(bcdhigh << 4) | BINValue);
}/*******************************************************************************
* 文件名:static uint8_t RTC_Bcd2ToBin(uint8_t BCDValue)
* 描  述: 将BCD转换为BIN
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
static uint8_t RTC_Bcd2ToBin(uint8_t BCDValue)
{uint8_t tmp = 0;tmp = ((uint8_t)(BCDValue & (uint8_t)0xF0) >> (uint8_t)0x04) * 10;return (tmp + (BCDValue & (uint8_t)0x0F));
}/*******************************************************************************
* 文件名:void PCF8563_Write_Byte(uint8_t REG_ADD, uint8_t dat)
* 描  述: PCF8563某寄存器写入一个字节数据
* 功  能:REG_ADD:要操作寄存器地址          dat:    要写入的数据
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
void PCF8563_Write_Byte(uint8_t REG_ADD, uint8_t dat)
{i2c_mem_write(PCF8563_ADDR, REG_ADD, &dat, 1);
}/*******************************************************************************
* 文件名:uint8_t PCF8563_Read_Byte(uint8_t REG_ADD)
* 描  述: PCF8563某寄存器读取一个字节数据
* 功  能:REG_ADD:要操作寄存器地址          读取得到的寄存器的值
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
uint8_t PCF8563_Read_Byte(uint8_t REG_ADD)
{uint8_t ReData;i2c_mem_read(PCF8563_ADDR, REG_ADD, &ReData, 1);return ReData;
}/*******************************************************************************
* 文件名:void PCF8563_Write_nByte(uint8_t REG_ADD, uint8_t num, uint8_t *pBuff)
* 描  述: PCF8563写入多组数据
* 功  能:REG_ADD:要操作寄存器起始地址          num:    写入数据数量           *WBuff: 写入数据缓存
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
void PCF8563_Write_nByte(uint8_t REG_ADD, uint8_t num, uint8_t *pBuff)
{i2c_mem_write(PCF8563_ADDR, REG_ADD, pBuff, num);
}
/*******************************************************************************
* 文件名:void PCF8563_Read_nByte(uint8_t REG_ADD, uint8_t num, uint8_t *pBuff)
* 描  述: PCF8563读取多组数据
* 功  能:REG_ADD:要操作寄存器起始地址          num:    写入数据数量           *WBuff: 读取数据缓存
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
void PCF8563_Read_nByte(uint8_t REG_ADD, uint8_t num, uint8_t *pBuff)
{i2c_mem_read(PCF8563_ADDR, REG_ADD, pBuff, num);
}/*******************************************************************************
* 文件名:void SetRealTime(sTime* time)
* 描  述: PCF8563设置时间信息
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
void SetRealTime(sTime* time)
{////拷贝数据time->mon &= ~PCF_Century_SetBitC;buffer[0] = time->sec;buffer[1] = time->min;buffer[2] = time->hour;buffer[3] = time->day;buffer[4] = time->week;buffer[5] = time->mon;buffer[6] = time->year;//写入数据到寄存器//PCF8563_Write_nByte(PCF8563_Address_Seconds, 7, buffer);
}/*******************************************************************************
* 文件名:void GetRealTime(sTime* time)
* 描  述: PCF8563读取时间信息
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.03.03)
*******************************************************************************/
void GetRealTime(sTime* time)
{PCF8563_Read_nByte(PCF8563_Address_Seconds, 7, buffer);        //读取寄存器数值buffer[0] &= PCF8563_Shield_Seconds;         //屏蔽无效位buffer[1] &= PCF8563_Shield_Minutes;buffer[2] &= PCF8563_Shield_Hours;buffer[3] &= PCF8563_Shield_Days;buffer[4] &= PCF8563_Shield_WeekDays;buffer[5] &= PCF8563_Shield_Months_Century;buffer[6] &= PCF8563_Shield_Years;time->year  = buffer[6];time->mon   = buffer[5];time->week = buffer[4];time->day   = buffer[3];time->hour  = buffer[2];time->min = buffer[1];time->sec = buffer[0];}/*******************************************************************************
* 文件名: void PCF8563Init(void)
* 描  述:  PCF8563初始化时间
* 功  能:
* 作  者:大核桃
* 版本号:1.0.1(2017.05.23)
*******************************************************************************/
void PCF8563Init(void)
{sTime InitTime = {0x22, 0x01, 0x10, 0x12,0x00,0x00,0x01}; //22年1月10日12时00分00秒星期一SetRealTime(&InitTime);PCF8563_Write_Byte(PCF8563_Address_Control_Status_1, 0x00);  PCF8563_Write_Byte(PCF8563_Address_Control_Status_2, 0x00);  
}

PCF8563.h

/*******************************************************************************
* 文件名:PCF8563.h
* 描  述:工程模块头文件
* 作者:MADE BY DA HE TAO
* 版本号:1.0.1(2014.11.29)
*******************************************************************************/
#ifndef _PCF8563_H
#define _PCF8563_H#include <stdint.h>/*********************************************/
//数据类型定义部分
//定义结构体变量等
/********************************************/typedef struct {uint16_t year;uint8_t mon;uint8_t day;uint8_t hour;uint8_t min;uint8_t sec;uint8_t week;
}sTime;/*********************************************/
//预编译部分
/********************************************//*
此处定义全局变量及函数
*/
extern sTime CurTime;/*********************************************/
//子函数引用声明部分
/********************************************/#define PCF8563_Check_Data                       (uint8_t)0x55  //检测用,可用其他数值#define PCF8563_ADDR 							 (uint8_t)0x51 	//7位地址
#define PCF8563_Write                            (uint8_t)0xa2  //写命令
#define PCF8563_Read                             (uint8_t)0xa3  //读命令,或者用(PCF8563_Write + 1)//
//电源复位功能
//
#define PCF8563_PowerResetEnable                 (uint8_t)0x08
#define PCF8563_PowerResetDisable                (uint8_t)0x09//
//世纪位操作定义
//
#define PCF_Century_SetBitC                      (uint8_t)0x80#define PCF_Century_19xx                         (uint8_t)0x03
#define PCF_Century_20xx                         (uint8_t)0x04//
//数据格式
//
#define PCF_Format_BIN                           (uint8_t)0x01
#define PCF_Format_BCD                           (uint8_t)0x02//
//设置PCF8563模式用
//
#define PCF_Mode_Normal                          (uint8_t)0x05/******************************************************************************参数寄存器地址宏定义
******************************************************************************/#define PCF8563_Address_Control_Status_1         (uint8_t)0x00  //控制/状态寄存器1
#define PCF8563_Address_Control_Status_2         (uint8_t)0x01  //控制/状态寄存器2/******************************************************************************参数屏蔽宏定义
******************************************************************************/#define PCF8563_Shield_Control_Status_1          (uint8_t)0xa8
#define PCF8563_Shield_Control_Status_2          (uint8_t)0x1f#define PCF8563_Shield_Seconds                   (uint8_t)0x7f
#define PCF8563_Shield_Minutes                   (uint8_t)0x7f
#define PCF8563_Shield_Hours                     (uint8_t)0x3f#define PCF8563_Shield_Days                      (uint8_t)0x3f
#define PCF8563_Shield_WeekDays                  (uint8_t)0x07
#define PCF8563_Shield_Months_Century            (uint8_t)0x1f
#define PCF8563_Shield_Years                     (uint8_t)0xff/******************************************************************************参数宏定义
******************************************************************************/
#define PCF8563_Address_Years                    (uint8_t)0x08  //年
#define PCF8563_Address_Months                   (uint8_t)0x07  //月
#define PCF8563_Address_Days                     (uint8_t)0x05  //日
#define PCF8563_Address_WeekDays                 (uint8_t)0x06  //星期
#define PCF8563_Address_Hours                    (uint8_t)0x04  //小时
#define PCF8563_Address_Minutes                  (uint8_t)0x03  //分钟
#define PCF8563_Address_Seconds                  (uint8_t)0x02  //秒
//控制/状态寄存器1 --> 0x00
//
#define PCF_Control_Status_NormalMode            (uint8_t)(~(1<<7))  //普通模式
#define PCF_Control_Status_EXT_CLKMode           (uint8_t)(1<<7)     //EXT_CLK测试模式
#define PCF_Control_ChipRuns                     (uint8_t)(~(1<<5))  //芯片运行
#define PCF_Control_ChipStop                     (uint8_t)(1<<5)     //芯片停止运行,所有芯片分频器异步置逻辑0
#define PCF_Control_TestcClose                   (uint8_t)(~(1<<3))  //电源复位功能失效(普通模式时置逻辑0)
#define PCF_Control_TestcOpen                    (uint8_t)(1<<3)     //电源复位功能有效
//秒寄存器 --> 0x02
//
#define PCF_Accuracy_ClockNo                     (uint8_t)(1<<7)     //不保证准确的时钟/日历数据
#define PCF_Accuracy_ClockYes                    (uint8_t)(~(1<<7))  //保证准确的时钟/日历数据/******************************************************************************外部功能函数                      
******************************************************************************/void	PCF8563_Write_Byte                 (uint8_t REG_ADD, uint8_t dat);  //PCF8563某寄存器写入一个字节数据
uint8_t	PCF8563_Read_Byte                  (uint8_t REG_ADD);  //PCF8563某寄存器读取一个字节数据
void	PCF8563_Write_nByte                (uint8_t REG_ADD, uint8_t num, uint8_t *pBuff);  //PCF8563写入多组数据
void	PCF8563_Read_nByte                 (uint8_t REG_ADD, uint8_t num, uint8_t *pBuff);  //PCF8563读取多组数据void SetRealTime(sTime *time);  //PCF8563写入时间信息
void GetRealTime(sTime *time); //PCF8563读取时间信息
void PCF8563Init(void);#endif/******************* (C) COPYRIGHT 2016 青蓝电子科技 *****END OF FILE****/

测试程序

在这里插入图片描述

main.c

#include "./Drivers/config.h"
#include "./Drivers/delay.h"#include "./Drivers/GPIO.h"
#include "./Drivers/soft_uart.h"
#include <stdio.h>char putchar(char Char)
{TxSend(Char);return Char;
}#include "PCF8563.h"void GPIO_config(void)
{GPIO_InitTypeDef GPIO_InitStructure;					//结构定义GPIO_InitStructure.Mode = GPIO_PullUp;					//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_InitStructure.Pin  = GPIO_Pin_0 | GPIO_Pin_1;		//指定要初始化的IO, 或操作GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);					
}void main(void)
{GPIO_config();PCF8563Init();while(1){GetRealTime(&CurTime);//读取时间printf("%x %x %x %x %x %x %x\r\n", (int)CurTime.year, (int)CurTime.mon, (int)CurTime.day, (int)CurTime.hour, (int)CurTime.min, (int)CurTime.sec, (int)CurTime.week);delay_ms(500);}
}

实验现象

       打开串口调试助手,可见能成功读取时钟值。
在这里插入图片描述

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

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

相关文章

(转) Spring读书笔记-----Spring的Bean之配置依赖

前一篇博客介绍了Spring中的Bean的基本概念和作用域&#xff08;Spring读书笔记-----Spring的Bean之Bean的基本概念 &#xff09;,现在介绍Spring Bean的基本配置。 从开始我们知道Java应用中各组件的相互调用的实质可以归纳为依赖关系。根据注入方式的不同&#xff0c;Bean的依…

Luogu P1031 均分纸牌(贪心)

P1031 均分纸牌 题目描述 有 N 堆纸牌&#xff0c;编号分别为 1&#xff0c;2&#xff0c;…, N。每堆上有若干张&#xff0c;但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌&#xff0c;然后移动。 移牌规则为&#xff1a;在编号为 1 堆上取的纸牌&#xff0c;只能移到…

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

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

Head First summary

学习面向对象好几年了&#xff0c;但一直没有深刻的理解面向对象&#xff0c;直到最近开始做自动化测试平台开发过程中&#xff0c;才发现面向对象的魅力。因而决定好好把设计模式学习下。首先先了解下设计模式相关的定义以及主意事项&#xff1a; 1.  什么是设计模式&#x…

【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 硬知识 摘自《温湿…

获取编辑器两种方法

编辑器&#xff0c;是地图数据进行编辑的主要工具&#xff0c;这个Editor其实当一个新的地图开始时就创建了。事实上&#xff0c;其他ArcMap扩展对象也是在创建地图时产生的。 为了获得这个Editor&#xff0c;可以使用FindExtensionByCLSID 或者FindExtensionByName接口。 priv…

Redis持久化的简单介绍

Redis的强大功能很大程度上是由于其将所有数据都存储在内存中&#xff0c;为了使Redis在重启后仍能保证数据不丢失&#xff0c;需要将数据从内存中以某种形式持久化到硬盘中。 Redis支持两种方式的持久化&#xff0c;一种是RDB方式&#xff0c;一种是AOF方式。其中&#xff0c;…

图片响应式

img-responsive 编辑 本词条缺少概述图&#xff0c;补充相关内容使词条更完整&#xff0c;还能快速升级&#xff0c;赶紧来编辑吧&#xff01; img-responsive是图片响应式的意思&#xff0c;在Bootstrap框架中&#xff0c;有一个.img-responsive的CSS样式。应用这个样式以后…

【电路补习笔记】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…

Xcode模拟器和真机生成的日志查看(ios必知必会)

在进行实际代码开发的过程中&#xff0c;我们会生成一些plist文件&#xff0c;但是如何在调试过程中查看这些plist文件是否被成功生成以及生成的内容是否正确&#xff1f; 如果查看模拟器生成的日志和真机生成的日志到底如何查看&#xff1f; DEMO 首先生成一个plist文件 NSArr…

【Net】测试网络、查看IP

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

WordPress 不同分类目录调用不同模板的方法

https://www.jb51.net/cms/275887.html wordpress不同分类调用不同模板文件 用wordpress做站特别是企业站的时候&#xff0c;多个分类的内容不同需要显示的页面也不一样&#xff0c;比如有些分类显示的是产品缩略图&#xff0c;有些显示的是公司新闻公告等&#xff0c;此时需要…

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

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

【转】测试工程师日常工作需要关注的问题

在互联网公司追求价值最大化、成本最低化的今日&#xff0c;很多互联网公司开始提倡高的开发测试比率&#xff0c;工程师都有必要提升自己的贡献、产能&#xff0c;我们也需要将一些问题融入到工作中&#xff0c;在做中寻找答案。 跳出自己的小圈子&#xff0c;甚至跳出测试角色…

SQL 必知必会·笔记14更新和删除数据

1. 更新数据 基本的UPDATE语句&#xff0c;由三部分组成&#xff1a; 要更新的表列名和它们的新值确定要更新那些行的过滤条件更新单列示例&#xff1a; 1 UPDATE Customers 2 SET cust_email kimthetoystore.com 3 WHERE cust_id 1000000005; 更新多列的示例&#xff1a; 1 …

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;唐老师讲电赛之唐老师讲电子器…

八排序算法

概述 排序有内部排序和外部排序。内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据非常大&#xff0c;一次不能容纳所有的排序记录。在排序过程中须要訪问外存。 我们这里说说八大排序就是内部排序。 当n较大。则应採用时间复杂度为O(nlog2n)的排序方法…

wordpress CAS

https://wordpress.org/plugins/authorizer/#description 安装 Authorizer 插件&#xff0c;待测试。