时钟芯片ds12c887的驱动程序

发布者:MysticalWhisper最新更新时间:2018-01-07 来源: eefocus关键字:时钟芯片  ds12c887  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

新型实时时钟芯片DS12887原理与应用
1. DS12887的功能特点
    DS12887是美国达拉斯半导体公司最新推出的时钟芯片,采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,同时它与目前 IBM AT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。采用DS12887芯片设计的时钟电路勿需任何外围电路并具有良好的微机接口。DS12887芯片具有微轼耗、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟场合中。其主要功能如下:


    (1)内含一个锂电池,断电情况运行十年以上不丢失数据。
    (2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。
    (3)

 

    GND,VCC:直流电源+5V电压。当5V电压在正常范围内时,数据可读写;当VCC低于4.25V,读写被禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计时器被切换到内部锂电池。
    MOT(模式选择):MOT管脚接到VCC时,选择MOTOROLA时序,当接到GFND时,选择INTEL时序。
    SQW(方波信号同):SQW管脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
    AD0~AD7(双向地址/数据复用线):总线接口,可与MOTOROLA微机系列和INTEL微机系列接口。
    AS(地址选通输入):用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
    DS(数据选通或读输入):DS/RD客脚有两种操作模式,取决于MOT管脚的电平,当使用MOTOROLA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总的时刻,在写周期,DS的后沿使DS12887锁存写数据。选择INTEL时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
    R/W(读/写输入):R/W管脚也有两种操作模式。选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期,DSO为高电平时,R/W高电平指示读周期,R/W低电平指示写周期;选INTEL时序,R/W信号是一低电平信号,称为WR。在此模式下,R/W管脚与通用RAM的写允许信号(WE)的含义相同。
    CS(片选输入):在访问DS12887的总线周期内,片选信号必须保持为低。
    IRQ(中断申请输入):低电平有效,可作微处理的中断输入。没有中断条件满足时,IRQ处于高阻态。IRQ线是漏极开路输入,要求外接上接电阻。
    RESET(复位输出):当该脚保持低电平时间大于200ms,保证DS12887有效复位。
3. DS12887的内部功能
3.1 地址分配图
    DS12887的地下分配图如图3所示,由114字节的用户RAM,10字节的存放实时时钟时间。日历和定闹RAM及用于控制和状态的4字节特殊寄存器组成,几乎所有的128个字节可直接读写。

 

3.2 时间、日历和定闹单元
    时间和日历信息通过读相应的内存字节来获取,时间、日历和定闹通过写相应的内存字节设置或初始化,其字节内容可以是十进制或BCD形式。时间可选择12小时制或24小时制,当选择12小时制时,小时字节搞位为逻辑“1”代表PM。时间、日历和定闹字节是双缓冲的,总是可访问的。每秒钟这10个字节走时1 秒,检查一次定闹条件,如在更新时,读时间和日历可能引起错误。三个字节的定闹字节有两种使用方法。第一种,当定闹时间写入相应时、分、秒定闹单元,在定允许闹位置高的条件下,定闹中断每天准时起动一次。第二种,在三个定闹字节中插入一个或多个不关心码。不关心码是任意从C到FF的16进制数。当小时字节的不关心码位置位时,定闹为小时发生一次由于相线小时和分钟定闹字节置不关心位时,每分钟定闹一次;当三个字节都置不关心位时,每秒中断一次。
3.3 非易失RAM
    在DS12887中,114字节通用非易失RAM不专用于任何特殊功能,它们可被处理器程序用作非易失内存,。在更新周期也可访问。
3.4 中断
    RTC实时时钟加RAM向处理器提供三个独立的、自动的中断源。定闹中断的发生率可编程,从每秒一次到每天一次,周期性中断的发生率可从500ms到 122μs选择。更新结束中断用于向程序指示一个更新周期完成。中断控制和状态位在寄存器B和C中,本文的其它部分将详细描述每个中断发生条件。
3.5 晶振控制位
    DS12887出厂时,其内部晶振被关掉,以防止锂电池在芯片装入系统前被消耗。寄存器A的BIT4~BIT6为010时打开晶振,分频链复位,BIT4~BIT6的其它组合都是使晶振关闭。
3.6 方波输出选择
    如图1原理图所示,15级分步抽着中的13个可用于15选1选择器,选择分频器抽头的目的是在SQW管脚产生一个方波信号,其频率由寄存器A的 RS0~RS3位设置。SQW频率选择与周期中断发生器共离15选1选择器,一旦频率选择好,通过用程序控制方波输出允许位SWQE来控制SQW管脚输出的开关。
3.7 周期中断选择
    周期中断可在IRQ脚产生500ms一次到每122μs一次的中断,中断频率同样由寄存A确定,它的控制位为寄存器B中的PIE位。
3.8 更新周期
    DS12887每秒执行一次更新周期还比较每一定闹字节与相应的时间字节,如果匹配枵三个字节都是不关心码,则产生一次定闹中断。

 

4. DS12887状态控制寄存器
    DS12887有4个控制寄存器,它们在任何时间都可访问,即使更新周期也不例外。
4.1 寄存器A

BIT7 
 BIT6 
 BIT5 
 BIT4 
 BIT3 
 BIT2 
 BIT1 
 BIT0 
 
UIP 
 DV2 
 DV1 
 DV0 
 RS3 
 RS2 
 RS1 
 RS0 
 

    UIP:更新周期正在进行位。当UIP为1,更新转换将很快发生,当UIP为0,更新转换至少在244μs内不会发生。
    DV0,DV1,DV2:用于开关晶振和复位分频链。这些位的010唯一组合将打开晶振并允许RTC计时。
    表1列了邮周期中断率和方波频率。
    RS3,RS2,RS1,RS0:频率选择位,从15级频率器13个抽头中选一个,或禁止分频器输入,选择好的抽头用于产生方波(SQW管脚)输出和周期中断,用户可以:
    (1)用PIE位允许中断:
    (2)用SQWE位允许SQAW输出;
    (3)二者同时允许并用相同的频率;
    (4)都不允许
4.2 寄存器B

BIT7 
 BIT6 
 BIT5 
 BIT4 
 BIOT3 
 BIT2 
 BIT2 
 BIT1 
 
SET 
 PIE 
 ALE0 
 VIE 
 SQWE 
 DM 
 24/12 
 DSE 
 

    SET:SET为0,时间更新正常进行,每秒计数走时一次,当SET位写入1,时间更新被禁止,程序可初始化时间和日历字节。
    PIE:周期中断劲旅位,PIE为1,则允许以选定的频率拉低IRQ管脚,产和不足齿数民:PIE为0,则禁止中断。
    AIE:定闹中断允许位,PIE为1,允许中断,否则禁止中断。
    SQWE:方波允许位,置1选定频率方波从SQW脚输出;为0-时,SQW脚为低。
    DM:数据模式位,DM为1青蛙为十进制数据,而0表明是BCD码的数据。
    24/12:小时格式位,1表明24小时械,而0表明12小时械。
    DSE:P夏令时允许位,当DSE置1时允许两个特殊的更新,在四月份的第一时期日、时间从1:59:59AM时改变为1:00:00AM,当DSE位为0,这种特殊修正不发生。
4.3 寄存器C

BIT7 
 BIY6 
 BIT5 
 BIT4 
 BIT3 
 BIT2 
 BIT1 
 BIT0 
 
IRQF 
 PF 
 AF 
 VF 
 0 
 0 
 0 
 0 
 

    IRQF:中断申请标志位。当下列表达式中一个或多个为真时,置1。
    PF=PIE=1;AF=AIE=1;
    UF=UIE=1;
    即:IRQF=PF·PIE+AF·AIE+UF·UIE
    只要IRQF为1,IRQ管脚输出低 ,程序读寄存器C以后或RESET管脚为低后,所有标志位清零。
   AF:定闹中断标志位,只读,AF为1表明现在时间与定闹时间匹配。
    VF:更新周期结束标志位。VF为1表明更新周期结束。
    BIAT0~BIT3:未用状态位,读出总为0,不能写入。
4.4 寄存器D

BIT7 
 BIT6 
 BIT5 
 BIT4 
 BIOT3 
 BIT2 
 BIT1 
 BIT0 
 
VRT 
 0 
 0 
 0 
 0 
 0 
 0 
 0 
 

    VRT:内部锂电池状态位,平时应总读出1,如出现0,表明内部锂电池耗 尽。
    BIT0~BIT6:未用状态位,读出总为0,不能写入。
5. 硬件接口电路
    DS12887时钟芯片和80C31单微机的接口电路如图4所示。模式选择脚MOT拉地,选择不NTEL时序,选择DS12887时钟芯片的地址总线及 AS端口和80C31单片微机的P0及ALE端直接相联;而DS、R/W读写控制线与单片机的RD、WAR控制线相连;DS12887的高位地址由 80C31半日片机的P2.7端口来片选,则DS12887的高8位地址定为7FH,而其低8侠地址则由芯片内部各单元的地址来决定(00H~3FH); DS12887的中断输出端IRQ和80C的外部INT0端相联,给单片机提供中断信号;DS12887的SQW端口可编程产生方波输出信号。

 

6. 接口软件
    下面为DS12887时钟芯片和80C31单片机的接口软件,假定采用每天24小时制的非夏令时,时间数据格式为BCD码,初始化时间为1996年1月1 日9时00分00秒,1k方波输出。时钟芯片每一秒种向单片机申请中断一次,一方面让单片机修改一次时钟显示,另一方面也给单片微机系统提供时间基准。
    (1)DS12887时钟芯片的初始化写入程序
    MOV DPTR,#7F0AH;寄存器A地址
    MOV  A,#70H:DV2~DV0=111,分频复位
    MOVX  @ DPTR,AA
    INC  DPTR:到寄存器B地址
    MOV  A,#8AH:停止更新,允许更新中断,选BCD码,24小时制
    MOVX  @DPRT,A
    MOV  QPL,#00H,秒单元地址
    CLR  A:00秒
    MOVX  @DPTR,A
    MOV DPL,#02H;分单元地址
    CLR  A:00分
    MOVX @DPTR,A
    MOV DPL,#04H;时单元地址
    MOV  A,#09H;9时
    MOVX  @DPTR,A
    MOV  DPL#07H;日单元地址
    MOV  A,@01H:1日
    MOVX @DPTR,A
  INC DPTR:到月单元地址
  MOV A,#01H;1月
    MOVX  @DPTR,A
    IC  DPTR:到年单元地址
    MOV  A,#96H;1996年
    MOVX  @DPTR,A
    INC  DPTR;到寄存器A地址
    MOV  A,#26H;DV2~DV0=010  RS3~RS0=0110
    MOVX  @DPTR,A:选周期中断率为976.5625μs,允许方波输出,频率1kHz
    INC  DPTR:到寄存器B
    MOV   A,#1AH;每秒更新一次,允许方波输出,24小时制
    MOVX  @DPTR,A:时钟开始运行
    (2)读取DS12887时钟日历数据程序
    DS12887的日历时钟通常有中断和查询两种方法读出。但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。
    ①采用查询法读取数据:
    查询寄存器A的UIP位,当UIP=0时,数据更新结束,可以读出。以下是采用查询方法,从秒至年单元的数据读出后存入80C31内部RAM的30~35H单元中,该部分程序如下:
    MOV  DPTR,#7F0AH;寄存器A地址
    MOVX  A,@DPTR
    WAIT:JB  ACC,7,WAIT:UIP=1则等待更新完毕
    MOV  DPL,@00H;秒地址
    MOV  R0,#30H;取目标首地址
    MOVX   A,@DPTR;取秒数据
    MOV  @R0,A:送入80C31的内部RAM缓冲区
    IC  DPTR:移指针
    IC  R0
    ;以下略
    ②采用中断法读取数据
    当DS12887发出中断请示,单片微机可以响应中断而读取日历数据。对于更新结束中断,中断时更新结束,数据有效,可以直接读取日历数据;对于闹钟中断和周期中断也需查询寄存器A的UIP位,当UIP=0时,数据更新结束,再读出日历时钟,具体指令这里不再列出。

#include  

/* 命令常量定义 */ 
#define CMD_START_DS12C887     0x20            /* 开启时钟芯片  
*/ 
#define CMD_START_OSCILLATOR 0x70            /* 开启振荡器, 
处于抑制状态 */ 
#define CMD_CLOSE_DS12C887     0x30            /* 关掉时钟芯片  
*/ 
/* 所有的置位使用或操作,清除使用与操作 */ 
#define MASK_SETB_SET         0x80            /* 禁止刷新 */ 
#define MASK_CLR_SET         0x7f            /* 使能刷新 */ 
#define MASK_SETB_DM         0x04            /* 使用HEX格式  
*/ 
#define MASK_CLR_DM             0xfb            /* 使 
用BCD码格式 */ 
#define MASK_SETB_2412         0x02            /* 使 
用24小时模式 */ 
#define MASK_CLR_2412         0xfd            /* 使用12小时模 
式 */ 
#define MASK_SETB_DSE         0x01            /* 使用夏令时 */ 
#define MASK_CLR_DSE         0xfe            /* 不使用夏令时  
*/ 

/* 寄存器地址通道定义 */ 
xdata char chSecondsChannel _at_ 0xdf00; 
xdata char chMinutesChannel _at_ 0xdf02; 
xdata char chHoursChannel   _at_ 0xdf04; 
xdata char chDofWChannel    _at_ 0xdf06; 
xdata char chDateChannel    _at_ 0xdf07; 
xdata char chMonthChannel   _at_ 0xdf08; 
xdata char chYearChannel    _at_ 0xdf09; 
xdata char chCenturyChannel _at_ 0xdf32; 
xdata char chRegA    _at_ 0xdf0a; 
xdata char chRegB    _at_ 0xdf0b; 
xdata char chRegC    _at_ 0xdf0c; 
xdata char chRegD    _at_ 0xdf0d; 

/* 函数声明部分 */ 
void StartDs12c887(void); 
void CloseDs12c887(void); 
void InitDs12c887(void); 
unsigned char GetSeconds(void); 
unsigned char GetMinutes(void); 
unsigned char GetHours(void); 
unsigned char GetDate(void); 
unsigned char GetMonth(void); 
unsigned char GetYear(void); 
unsigned char GetCentury(void); 
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char  
chHours); 
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear); 

/*************************************************************  
函数功能:该函数用来启动时钟芯片工作 
应用范围:仅在时钟芯片首次使用时用到一次 
入口参数: 
出口参数: 
*************************************************************/    
void StartDs12c887(void) 

    chRegA = CMD_START_DS12C887; 


/*************************************************************  
函数功能:该函数用来关闭时钟芯片 
应用范围:一般用不到 
入口参数: 
出口参数: 
*************************************************************/    
void CloseDs12c887(void) 

    chRegA = CMD_CLOSE_DS12C887; 


void InitDs12c887() 

    StartDs12c887(); 
    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chRegB = chRegB & MASK_CLR_DM | MASK_SETB_2412 \ 
                    & MASK_CLR_DSE; 
                             
                /* 使用BCD码格式、24小时模式、不使用 
夏令时 */ 
    chCenturyChannel = 0x21;                /* 设 
置为21世纪 */ 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取秒字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetSeconds(void) 

    return(chSecondsChannel); 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取分字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetMinutes(void) 

    return(chMinutesChannel); 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取小时字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetHours(void) 

    return(chHoursChannel); 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取日字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetDate(void) 

    return(chDateChannel); 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取月字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetMonth(void) 

    return(chMonthChannel); 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取年字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetYear(void) 

    return(chYearChannel); 


/*************************************************************  
函数功能:该函数用来从时钟芯片读取世纪字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetCentury(void) 

    return(chCenturyChannel); 
}     

/*************************************************************  
函数功能:该函数用来设置时钟芯片的时间 
应用范围: 
入口参数:chSeconds、chMinutes、chHours是设定时间的压缩BCD码 
出口参数: 
*************************************************************/    
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char  
chHours) 

    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chSecondsChannel = chSeconds; 
    chMinutesChannel = chMinutes; 
    chHoursChannel = chHours; 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 


/*************************************************************  
函数功能:该函数用来设置时钟芯片的日期 
应用范围: 
入口参数:chDate、chMonth、chYear是设定日期的压缩BCD码 
出口参数: 
*************************************************************/    
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear) 

    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chDateChannel = chDate; 
    chMonthChannel = chMonth; 
    chYearChannel = chYear; 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 


关键字:时钟芯片  ds12c887  驱动程序 引用地址:时钟芯片ds12c887的驱动程序

上一篇:AT93C46汇编读写示例程序
下一篇:PCF8563时钟+AT24C02+LCD12864显示时钟程序

推荐阅读最新更新时间:2024-03-16 15:51

51单片机的ds18b20驱动程序
//////////////////////////////////////////////////////头文件/////////////////////////////////////////////////////// /******************************************************************************* * 标题: 18b20温度芯片驱动程序 * * 文件: 18b20.h 18b20.c * * 日期: 2010-3
[单片机]
PIC16Fxxx的LCD驱动程序(适用于HD44780兼容的驱动器)
P IC 16Fxxx的 LCD 驱动程序(适用于HD44780兼容的驱动器) ;************************************************ ;* LCD.ASM * ;************************************************ ;* Contains subroutines to control an external * ;* lcd panel in 4-bit mode. These routines * ;* were designed specifically for the panel on * ;* t
[单片机]
CC1100的功能特性与在TinyOS环境下的CC1100驱动程序介绍
1 概述 无线传感器网络(Wireless Sensor Network, WSN)是当前信息技术领域的热点研究方向之一,它综合了传感器技术、遥测技术、嵌入式计算技术、分布式信息处理技术和无线通信技术,是一种通过无线通信方式形成的多跳自组织网络系统。无线传感器网络由大量体积小、功耗低、具有无线通信、传感和数据处理功能的传感器节点组成。节点是无线传感器网络的基本单元,它一般由传感器模块(传感器、A/D转换器)、处理器模块(微处理器、存储器)、无线通信模块(无线收发器)和能量供应模块(电池)组成。 本文研发的无线传感器网络节点选用Chipcon公司低功耗低成本单片收发芯片CC1100作为无线通信模块,将其通过SPI串行总线技术与M
[单片机]
CC1100的功能特性与在TinyOS环境下的CC1100<font color='red'>驱动程序</font>介绍
PCI总线数据输出板驱动程序的开发
       PCI(Perip heral Component Interconnect )是一种先进的高性能32/64位局部总线,支持线性突发传输,数据最大传输率可达132MB/s。        同时,PCI总线存取延误小,采用总线主控和同步操作,不受处理器限制,具有自动配置功能,非常适合于高速外设。所以,它正迅速取代原先的ISA总线成为微型计算机系统的主流总线。         随着工业控制pci设备的增多,需要开发大量专用WDM驱动程序。鉴于直接用ddk开发驱动程序难度大,周期长,本文介绍了用DriverStudio套件开发WDM驱动程序的方法以及基于9052总线控制器的D/A数据输出板卡的硬件结构。  
[嵌入式]
一种新型编码芯片及其驱动程序的设计方案
    摘 要: 介绍了C-Cube公司的处理器型芯片DVxper-II的内部结构、功能及其特点,提出了将DVxpert-II集成于一块PCI插卡上的设计方案,并论述了编码器虚拟驱动程序的实现方法。     关键词: DVxpert-II芯片 PCI总线 VxD     目前,电视节目的拍摄、制作、传输到播出正在实现数字化。MPEG视频音频编码标准的出现,解决了电视信号数字化后信息量过大而信道带宽有限的问题,加上数字视频硬件方面的产品不断进步,促进了各种数字视频产品的推出,这一切都预示着电视广播全面步入数字化的时代。数字电视产品的开发不仅能给观众带来高品质画面和音响效果的享受,而且MPEG-II视频音频压缩的ATM
[应用]
基于μC/OS-II的CAN总线驱动程序设计
  引言   应用实时多任务操作系统(RTOS)作为嵌入式设计的基础和开发平台将成为嵌入式应用设计的主流。μC/OS-II是一种源码公开、可移植性、可固化、可裁剪、占先式的实时多任务操作系统,目前已经得到广泛的应用。   在为电力系统接地选线装置开发的数据采集监测系统的设计中,笔者设计了集散式的数据采集结构,灵活的组态适应了目前国内多数中低压输配电网的数据采集需求。在此硬件平台上,笔者将实时操作系统μC/OS-II移植到TMS320LF2407A型号的DSP上,实现了多任务的并行执行,系统的可靠性和实时性得到大幅提升;设计了CAN总线驱动程序,使得下位采集处理模块与上位的主控制器具备了可靠快速的通信功能和协调功能。  
[嵌入式]
ARM9 2440硬件SPI驱动程序-NRF24L01
从开始接触,到驱动编写调试完成,前前后后花费10多天,网上浏览了一下,目前还没有找到硬件SPI控制NRF24L01的驱动程序,绝大多数都是软件SPI,但是软件SPI不好,不稳定,既然都写驱动程序了,肯定要用硬件SPI啦,这样才能学到东西。学习的过程中,通过看韦东山的SPI视频,和参考他写的两个驱动程序。然后花费了四五天,终于将驱动写好了。 这个驱动可以通过ioctl切换接收和发送模式,通过read,write选择接收数据还是发送数据,废话少说,上代码 #include linux/init.h #include linux/fs.h #include linux/slab.h #include linux/module.h #
[单片机]
74HC595使用SPI总线连接51单片机的驱动程序
函数名称: HC595SendData //8位串行输入/输出,并行输出 功能描述: 向SPI总线发送数据 这里只说明并行输入的一般情况 管脚描述:请参考相关的芯片资料 void HC595SendData(unsigned int SendVal) { unsigned char i; for(i=0;i 8;i++) { if((SendVal i)&0x80) MOSIO=1; // set dataline high //若输入最高位为1,则令串行输入为1,反之输入0 else MOSIO=0; S_CLK=0; //上升沿输入每一位 NOP(); //datasheet给
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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