【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

发布者:SereneMelody最新更新时间:2022-07-18 来源: csdn关键字:51单片机  I2C  磁力计 手机看文章 扫描二维码
随时随地手机看文章

硬知识

摘自《HMC5883L中文规格书》、《QMC5883L Datasheet 1.0》、《QMC5883L寄存器对比及参考设置》、QMC5883L说明文档 —— yedongnan001


简介

HMC5883L

        霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。

QMC5883L

        QMC5883L源于霍尼韦尔的HMC5883L,是一款表面贴装的集成了信号处理电路的三轴磁性传感器,应用场景主要包括罗盘、导航、无人机、机器人和手持设备等一些高精度的场合。

性能对比

在这里插入图片描述

操作模式

HMC5883L

连续测量模式

        连续测量模式,在客户所选择的速率下进行连续的测量,并所测量的更新数据输出寄存器。如果有必要,数据可以从数据输出寄存器重新读取,但是,如果主机并不能确保在下次测量完成之前可以访问数据寄存器,数据寄存器上的旧的数据会被新的测量数据取代。为了保存测量之间的电流,该装置被放置在一个类似闲置模式的状态,但模式寄存器没有改变成空闲模式。即MD[n]位不变。配置寄存器A的设置在连续测量模式时会影响数据输出速率(比特DO[n]) ,测量配置(bits MS[n]),和增益(bits GN[n])。所有寄存器在连续测量模式中保留数值。 在连续测量模式下I2C总线可被网络内的其他装置启用。


单次测量模式

        这是预设的供电模式。在单测量模式,该装置进行单次测量并将测量数据更新至输出数据寄存器中。在完成测量和输出数据寄存器的更新以后,通过设置MD[n] bits,该装置被置于闲置模式,模式寄存器变更为闲置模式。配置寄存器的设置在单一测量模式时影响测量配置(bits MS[n])。。在单测量模式中所有寄存器保留数值。 在单测量模式下I2C总线可被网络内其他装置启用。


闲置模式

        在此模式下,装置可以通过I2C总线访问,但主要电源能耗是禁用的,如ADC,放大器,传感器偏置电流,但不仅限于这些。在空闲模式下所有寄存器保留数值。在闲置测量模式下I2C总线可被网络内其他装置启用。


QMC5883L

连续测量模式

        此模式下,磁性传感器连续进行测量并把测量数据置于数据输出寄存器中。测量数据的偏移和温度的影响将会自动得到补偿。


        正常情况下的读顺序:


检查DRDY引脚或轮询状态寄存器(06H)中DRDY 位的状态

读取测量数据,数据寄存器被读取的同时,DRDY和DOR被置0

数据寄存器一旦被读取,数据保护将启动。直到最后一个数据寄存器(05H)被读取,数据保护才会被解除。其流程图如下:

在这里插入图片描述

        测量时读取

        测量过程中读取的将是之前测量过并保存过的数据,并且这一次测量完成后DRDY将不会被置“1”,即这一次测量的数据丢失掉了。

在这里插入图片描述

        数据未读取

        如果第N个数据被跳过,当前的数据将会被接下来的数据覆盖掉,此种情形下,DRDY保持高电平直到数据被读取,DOR被置“1”,表示有一串数据丢失,同样,下一次读取操作后DOR将被置“0”。

在这里插入图片描述

        数据锁定直至下次测量结束

        只要任意一个数据寄存器被读取,所有测量数据将处于被锁定状态。如果下一次测量结束后,最后一个数据寄存器(05H)仍未被读取,数据寄存器将会拒绝新数据更新当前数据的操作,注意看下图,新数据将会被丢失。此类情形下,DOR将会被置“1”,直至下下次数据被读取。

在这里插入图片描述

待命模式

        QMC5883L上电后默认为待命模式。此状态下,寄存器值将会通过一个超低功耗的LDO保持,对任意寄存器的读写操作都将会唤醒I2C总线接口。内部时钟被停止,同时也不会进行磁场测量。


主要差异

        HMC5883L和QMC5883L的寄存器地址配置不能说一模一样,只能说毫不相关,甚至数据寄存器的顺序及高位低位的先后都不一样,程序如果不加以区分是绝对不能通用的。

        如下表所示,

        HMC5883的七位地址为0x1e(0x3c >> 1 = 0x1e)

        QMC5883的七位地址为0x0d(0x18 >> 1 = 0x0d)(默认,SI接GND) 或 0x0c(0x1a >> 1 = 0x0c)(SI接VDD)

在这里插入图片描述

外观差异

        引自《用前必读.txt》

        进口HMC5883 —— IC丝印 L883

        国产QMC5883 —— IC丝印 D5883

        实际如下图所示,我买到的是QMC5883L

在这里插入图片描述

寄存器

寄存器列表

HMC5883L

在这里插入图片描述

QMC5883L

在这里插入图片描述

配置寄存器

HMC5883L

配置寄存器 A

        配置寄存器是用来配置该装置设置的数据输出速率和测量配置。 CRA0 通过 CRA7 表明位的位置,用 CAR 指示在配置寄存器中的位。 CRA7 指示数据流的第一位。括号中的数目显示是该位的默认值。

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

        下表的数据显示在连续测量模式下的所有可选的输出速率。所有这三个通道应在某一特定数据速率下测量。其他输出速率可以通过控制单测量模式下的 DRDY 中断引脚来获得,最大速率为 160Hz。

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

配置寄存器 B

        配置寄存器 B 设置装置的增益。 CRB0 通过 CRB7 识别位的位置,用 CRB 指示在配置寄存器里的位。CRB7 表示数据流中的第一位。括号中的数目显示的是位的默认值。

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

        下表描述增益设置。使用以下“增益”一栏将counts转换成Guass。在总共磁场强度引起所有数据输出存储器中一个溢位(饱和)时选择较低的增益值(高GN#值)。

在这里插入图片描述

模式寄存器

        该寄存器是一个8位可读可写的寄存器。该寄存器是用来设定装置的操作模式。 MR0通过MR7识别位的位置,MR表明模式寄存器里的位。MR7指示数据流中的第一位。括号中的数字显示的是位的默认值。

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

QMC5883L

控制寄存器1

        控制寄存器1位于地址09H,它设置操作模式(MODE)。输出数据更新速率(ODR),磁场测量范围或传感器的灵敏度(RNG)和过采样率(OSR)。

        两个MODE寄存器可以传输设备中的操作模式,两种模式是待机模式和连续测量模式。POR (Power-on-Reset)后默认模式为standby。模式之间的切换没有任何限制。

        输出数据速率由ODR寄存器控制。数据更新频率可选择10Hz、50Hz、100Hz和200Hz四种频率。对于大多数的封装应用,我们推荐10hz的低功耗。对于游戏,可以使用高更新率,如100Hz或200Hz。

        磁传感器的磁场范围可以通过寄存器RNG来选择。全量程范围由应用环境决定。对于磁清晰的环境,可以使用低场范围,如+/- 2高斯。磁场范围与磁传感器的灵敏度密切相关。最低的视场范围有最高的灵敏度,因此,更高的分辨率。

        过采样率(OSR)寄存器用于控制内部数字滤波器的带宽。OSR值越大,滤波器带宽越小,带内噪声越小,功耗越高。它可以用来达到噪音和功率之间的良好平衡。有四种过采样率可选,64,128,256或512。

在这里插入图片描述

控制寄存器2

        控制寄存器2位于地址0AH。它控制中断引脚启用(INT_ENB),点滚过功能启用(POL_PNT)和软复位(SOFT_RST)。

        中断启用由控制寄存器2中的INT_ENB控制。一旦中断被启用,当新的数据在数据输出寄存器中,它将置位。

        INT_ENB:“0”:允许中断PIN,“1”:禁止中断PIN

指针滚转函数由ROL_PNT寄存器控制。开启点滚转功能后,如果I2C读取从00H ~ 06H的任意地址开始,则I2C数据指针自动在00H~06H之间滚动。

        ROL_PNT: 0:正常,1:开启指针滚转功能

        软复位可以通过将寄存器SOFT_RST更改为set来实现。软复位可以在任何时间、任何模式下调用。例如,如果软复位发生在连续模式读取中间,由于模式寄存器默认被重置为“00”,QMC5883L立即切换到待机模式。

        SOFT_RST:“0”:正常。“1”:软复位,恢复所有寄存器的默认值。

在这里插入图片描述

SET/RESET Period Register

        SET/RESET周期由FBR[7:0]控制。建议将寄存器0BH写成0x01。

在这里插入图片描述

数据输出寄存器

HMC5883L

数据输出 X 寄存器 A 和B

        数据输出 X 寄存器是两个 8 位寄存器,数据输出寄存器 A 和 B。这些寄存器储存从通道 X 所测量结果。数据输出 X 寄存器 A 储存一个来自测量结果中的 MSB(高位数据),数据输出 X 寄存器 B 储存一个来自测量结果中的 LSB(低位数据)。存储在这两个寄存器的值是一个 16 位值以二进制的补码形式存在,其范围是 0xF800到 0x07FF。DXRA0 至 DXRA7、DXRB0 至 DXRB7 标识出位置, DXRA 和 DXRB 标识出在数据输出寄存器 X 中的位。DXRA7 和 DXRB7 标识出数据流的第一位,括号中的数目显示该位的默认值。

        在事件的ADC上溢或下溢阅读给定的通道,或者如果有一个数学溢出的过程,这种数据寄存器将包含-4096的值。在下一次有效测量完成进行之后,该寄存器上的值将被清除。


数据输出 Y 寄存器 A 和B

        数据输出 Y 寄存器是两个 8 位寄存器,数据输出寄存器 A 和 B,这些寄存器储存从通道 Y 所测量的结果。数据输出 Y 寄存器 A 储存一个来自测量结果中的 MSB(高位数据),数据输出 Y 寄存器 B 包含一个来自测量结果中的 LSB(低位数据)。存储在这两个寄存器的值是一个 16 位值以二进制的补码形式存在,其范围是0xF800 到 0x07FF。DYRA0 至 DYRA7、DYRB0 至 DYRB7 标识位置, DYRA 和 DYRB 标识在数据输出寄存器 Y 中的位。DYRA7 和 DYRB7 标识数据流的第一位。括号中的数目显示该位的默认值。

        在事件的ADC上溢或下溢阅读给定的通道,或者如果有一个数学溢出的过程,这种数据寄存器将包含值为-4096。在下一次有效测量进行之后,该寄存器上的值将被清除。

在这里插入图片描述

数据输出 Z 寄存器 A 和 B

        数据输出 Z 寄存器是两个 8 位寄存器,数据输出寄存器 A 和 B,这些寄存器储存从通道 Z 所测量的结果。数据输出 Z 寄存器 A 储存一个来自测量结果中的 MSB(高位数据),数据输出 Z 寄存器 B 包含一个来自测量结果中的 LSB(低位数据)。存储在这两个寄存器的值是一个 16 位值以二进制的补码形式存在,其范围是0xF800 到 0x07FF。DZRA0 至 DZRA7、DZRB0 至 DZRB7 标识位置,DZRA 和 DZRB,标识在数据输出寄存器 Z 中的位。DZRA7 和 DZRB7 标识数据流的第一位。括号中的数目显示该位的默认值。

        在事件的ADC上溢或下溢阅读给定的通道,或者如果有一个数学溢出的过程,这种数据寄存器将包含价值-4096。在下一次有效测量进行之后,该寄存器上的值将被清除。

在这里插入图片描述

数据输出寄存器操作

        当一个或一个以上的输出寄存器在被读取时,如果所有六种数据输出寄存器未被读取完,那么新的数据不能被更新到相应的数据输出寄存器。这一要求也影响 DRDY 和 RDY ,在新的数据未被更新到所有输出寄存器之前是不能被清除的。

在这里插入图片描述

QMC5883L

        寄存器00H ~ 05H存储连续测量中各轴磁传感器的测量数据。

        在连续测量模式下,输出数据根据控制寄存器1中的数据更新速率ODR设置定期刷新。无论通过I2C读取状态如何,数据都保持不变,直到新数据替换它们。每条轴的数据宽度为16位2的补码,即01H/03H/05H的MSB表示每条轴的符号。每个通道的输出数据范围为-32768到32767。

在这里插入图片描述

温度数据寄存器

        寄存器07H-08H存储温度传感器输出数据。16位温度传感器输出是2的补码。

        温度传感器的增益是工厂校准的,但其偏移量没有被补偿,只有相对温度值是准确的。温度系数约为100 LSB/℃

在这里插入图片描述

状态寄存器

HMC5883L

        状态寄存器是一个8位只读寄存器。该寄存器是表明装置的状态, SR0到SR7表明位的位置,SR表明在状态寄存器的位, SR7指数据流的第一位。

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

QMC5883L

        有两个状态寄存器位于地址06H和0CH。

        寄存器06H有三个位表示状态标志,其余为工厂使用保留。状态寄存器是只读位。

        数据就绪寄存器(Data Ready Register, DRDY),当所有三轴数据就绪时设置,并在连续测量模式下加载到输出数据寄存器。通过I2C推荐通过读取任何数据寄存器(00H~05H)将其重置为“0”

        DRDY: 0:无新数据,1:有新数据

        如果三轴磁传感器通道有数据超出范围,则设置溢出标志(OVL)为“1”。每个轴的输出数据在-32768和32767处饱和,如果任何一个轴超过这个范围,OVL标志设置为“1”。如果下一次测量回到(-32768,32767)的范围,该标志将被重置为“0”,否则,它将保持为“1”。

        OVL: 0:正常,1:数据溢出

        如果在连续测量模式下读取时跳过输出数据寄存器的所有通道,则数据跳过位设置为“1”。通过I2C读取任何数据寄存器(00H~05H),复位为“0”

        DOR: 0:正常,1:跳过数据读取

在这里插入图片描述

识别寄存器

HMC5883L

识别寄存器 A

        识别寄存器 A 是用来识别装置。IRA0 通过 IRA7 表明位的位置,而 IRA 表明在识别寄存器 A 中的位。IRA7 指数据流的第一位。括号中的数目显示的默认值是位

        该装置的识别值存储在本寄存器中。这是一个只读寄存器。

        寄存器值: ASCII 值 H

在这里插入图片描述

识别寄存器 B

        识别寄存器 B 是用来识别装置。IRB0 到 IRB7 表明位的位置,而 IRB 表明在识别寄存器 B 中的位。IRB7 指数据流的第一位。

        寄存器值:ASCII 值 4

在这里插入图片描述

识别寄存器 C

        鉴定寄存器 C 是用来识别装置,IRC0 到 IRC7 表明位的位置,而 IRC 表明在识别寄存器 C 中的位,IRC7 指数据流的第一位。

        寄存器值: ASCII 值 3

在这里插入图片描述

QMC5883L

        这个寄存器是芯片识别寄存器。它返回0xff。

在这里插入图片描述

示例程序

       stdint.h见【51单片机快速入门指南】1:基础知识和工程创建

       软件I2C程序见【51单片机快速入门指南】4: 软件 I2C

       串口部分见【51单片机快速入门指南】3.3:USART 串口通信


XMC5883L.c

/**

******************************************************************************

* @file XMC5883L.c

* @author Royic

* @date 2021-11-27

* @brief XMC5883L传感器驱动

******************************************************************************

*/

#include "XMC5883L.h"

#include "./Software_I2C/Software_I2C.h"


static int i2cWrite(uint8_t reg_, uint8_t Data)

{

return i2c_mem_write(MAG_ADDRESS, reg_, &Data, 1);

}


static int i2cRead(uint8_t reg_, uint8_t len, uint8_t* buf)

{

return i2c_mem_read(MAG_ADDRESS, reg_, buf, len);

}


/**

* @brief xmc5883初始化,包含传感器校准

* @note

*/

void xmc5883lInit(void)

{

#ifdef HMC5883L

i2cWrite(ConfigRegA, Sample_MAX << 5 | DataOutputRate_Max << 2 | NormalOperation);

i2cWrite(ConfigRegB, Full_Scale_1_9G << 5);

i2cWrite(ModeRegister, ContinuousConversion);

#endif

#ifdef QMC5883L

i2cWrite(ConfigReg1, Sample_MAX << 6 | Full_Scale_2G << 4 | DataOutputRate_Max << 2 | ContinuousConversion);

i2cWrite(ConfigReg2, Enable_Interrupt_PIN << 7 | ROL_PNT_Normal << 6 | SOFT_RST_Normal);

i2cWrite(Period_FBR, 0x01);

#endif

}


/**

* @brief 读取磁场传感器数据。

* @note

* @param magData:存储磁场传感器原始数据的指针

*/

#ifdef QMC5883L

int16_t QMC5883L_Temp = 0;

#endif

void xmc5883lRead(int16_t *mag_x, int16_t *mag_y, int16_t *mag_z)

{

#ifdef HMC5883L

uint8_t buf[6];

i2cRead(MAG_DATA_REGISTER, 6, buf);

*mag_x = buf[0] << 8 | buf[1];

*mag_z = buf[2] << 8 | buf[3];

*mag_y = buf[4] << 8 | buf[5];

#endif

#ifdef QMC5883L

uint8_t buf[9];

i2cRead(MAG_DATA_REGISTER, 9, buf);

*mag_x = buf[0] | buf[1] << 8;

*mag_y = buf[2] | buf[3] << 8;

*mag_z = buf[4] | buf[5] << 8;

QMC5883L_Temp = buf[7] | buf[8] << 8;

#endif

}


XMC5883L.h

#ifndef XMC5883L_H_

#define XMC5883L_H_


#include "XMC5883L.h"

#include "stdint.h"


#define QMC5883L

//#define HMC5883L


#define _FAIL 1

#define _SUCCESS 0


#ifdef QMC5883L

#ifdef HMC5883L

#error //同时define了QMC5883L、HMC5883L

#endif

#endif


#ifdef HMC5883L

#define MAG_ADDRESS 0x1E


#define MAG_DATA_REGISTER 0x03

#define MAG_X_DATA_REGISTER 0x03

#define MAG_Y_DATA_REGISTER 0x07

#define MAG_Z_DATA_REGISTER 0x05


#define ConfigRegA 0x00


// ConfigRegA valid Data output rates for 5883L

#define DataOutputRate_0_75HZ 0x00

#define DataOutputRate_1_5HZ 0x01

#define DataOutputRate_3HZ 0x02

#define DataOutputRate_7_5HZ 0x03

[1] [2]
关键字:51单片机  I2C  磁力计 引用地址:【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

上一篇:【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合
下一篇:【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、

推荐阅读最新更新时间:2024-11-12 17:40

51单片机的几种精确延时
51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 在实际应用中,
[单片机]
利用51单片机制作廉价盒仔机器人
一、盒仔机器人   BOXZ,昵称盒仔,是一款开源的互动娱乐平台!百度一下,有很多盒仔的制作教程,基本都是用arduino制作完成的。假期没事,带着宝宝们用51制作了一个廉价的BOXZ。先上张图: 从图上不难看出,为了宝宝们易于接受,我把盒仔的手机摇控改成了用线控的方法,做了一个简易的摇控器。 二、材料准备 名称 型号及参数 数量 备注 5V稳压模块 LM7805 1 充电电池 12V 1 电容 22pf 2 按钮 4 自锁按钮 1 51单片机 stc12c2052ad 1 晶振 11.0592Mhz 1 电机驱动 L298N模块 1 降压模块 可调,
[单片机]
利用<font color='red'>51单片机</font>制作廉价盒仔机器人
【单片机学习】51单片机【定时/计数器】,详细介绍
一、先知先会 1、CPU时序的有关知识 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 机器周期:1个机器周期=6个状态周期=12个振荡周期。 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。 1.1、周期换算 2、在学习定时器之前需要明白的 (1)51单片机有两组定时器/计数器; 因为既可以定时,也可以计数,所以称为定时/计数器。 (2)定时/计数器和单片机的CPU是相互独立的。 定时/计数器工作过程是自动完成的,不需要CPU的参与。 (3)51单片机中的定时/计数器是根据机器内部的时钟或者
[单片机]
【单片机学习】<font color='red'>51单片机</font>【定时/计数器】,详细介绍
51单片机外围模块——DS1302时钟模块
一.DS1302的主要性能指标 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI 3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0V时,小于300nA 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式。 采用8脚DIP封装或SOIC封装。 与TTL兼容,Vcc=5V。 可选工业级温度范围:-40C~+85C。 具有涓流充电能力。 采用主电源和备份电源双电源供应。 备份电源可由电池或大容量电容实现。 DS1302采用SPI总线与外结通信
[单片机]
<font color='red'>51单片机</font>外围模块——DS1302时钟模块
51单片机驱动ADC0809片内RAM存转换结果汇编程序
;入口:通道1的模拟量, ;出口:片内RAM开辟一个数据区,用于存放A/D转换结果, IN0 IN7的结果 ;分别存于30H 37H 8个单元中 AD0809: MOV R1,#01H ACALL AD0809_1 RET AD0809_1:MOV DPTR,# ;通道地址 MOV A,R1 ;送通道号 MOVX @DPTR,A;启动转换 WAIT: NOP JNB R1.7,WAIT ;P1.7为EOC信号 为1完成,0,转换中。 MOVX A,@DPTR ;转换完成 XCH A,R1 ADD A,#30H XCH A,R1 MOV @R1,A RET
[单片机]
stm32之i2C硬件驱动ht16c22
使用硬件i2c,驱动ht16c22,程序不稳定是肯定的,还是贴出来吧,项目中最好不要用。 文件i2c.h内容: #ifndef _STM32F103_I2C_H_ #define _STM32F103_I2C_H_ #include stm32f10x.h #define SlaveAddress 0x7e //0x7e //#define ModeSet 0b10001100 //80Hz,turn on sys and LCD bias,1/3 bias #define ModeSet 0x8C //80Hz,turn on sys and LCD bias,1/3 bias //#define VlcdAdjus
[单片机]
80C51单片机-LED流水灯效果
本文将介绍一个基于8051单片机的跑马灯实验,通过编写代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯效果。 实验准备 8051单片机 8个LED灯 8PIN排线 JP11(P2)和J12(LED灯)连接 将JP11(P2)和J12(LED灯)使用8PIN排线连接起来。 代码解析 #include reg52.h // 包含8051单片机的寄存器定义头文件 void delay(unsigned int i); // 声明延时函数 char LED; // 定义一个字符变量LED,用于存储LED灯的状态 void main() { unsigned char i; // 定义一个
[单片机]
如何使用和检测89C2051单片机
AT89C2051是爱特梅尔(ATMEL公司AT89系列的与AT89C51相比,有良好的延续性,仅减少了存储容量和I/O端口,其余配置与性能不减,是性能价格比最好的8位单片机。   1)特性   a)指令与MCS-51 100%兼容   b)内带2k可编程闪速存储器(Flash Memory)   c)电可擦写次数:1000次   d)数据保留时间:10年   e)工作电压范围Vcc:2.7-6V   f)编程电压:5V   g)16位定时器/计数器2个   h)中断源5个   i)可编程串行通道VART   j)工作频率:0-24MHZ   k)输出口可直接驱动LED 。   l)片内含模拟比较
[单片机]
如何使用和检测89C20<font color='red'>51单片机</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved