时钟芯片DSB中文资料
dsb18b20
对于市面上的大多数51单片机开发板来说。
ds1302和ds18b20应该是比较常见的两种外围芯片。
ds1302是具有SPI总线接口的时钟芯片。
ds18b20则是具有单总线接口的数字温度传感器。
下面让我们分别来认识并学会应用这两种芯片。
首先依旧是看DS1302的datasheet中的相关介绍。
上面是它的一些基本的应用介绍。
下面是它的引脚的描述。
下面是DS1302的时钟寄存器。
我们要读取的时间数据就是从下面这些数据寄存器中读取出来的。
当我们要想调整时间时,可以把时间数据写入到相应的寄存器中就可以了。
这是DS1302内部的31个RAM寄存器。
在某些应用场合我们可以应用到。
如我们想要做一个带定时功能的闹钟。
则可以把闹钟的时间写入到31个RAM寄存器中的任意几个。
当单片机掉电时,只要我们的DS1302的备用电池还能工作,那么保存在其中的闹钟数据就不会丢失~~由于对于这些器件的操作基本上按照数据手册上面提供的时序图和相关命令字来进行操作就可以了。
因此在我们应用这些器件的时候一定要对照着手册上面的要求来进行操作。
如果觉得还不够放心的话。
可以到网上下载一些参考程序。
对着手册看别人的程序,看别人的思路是怎么样的。
DS1302和单片机的连接很简单。
只需一根复位线,一根时钟线,一根数据线即可。
同时它本身还需要接一个32.768KHz的晶振来提供时钟源。
对于晶振的两端可以分别接一个6PF左右的电容以提高晶振的精确度。
同时可以在第8脚接上一个3.6V的可充电的电池。
当系统正常工作时可以对电池进行涓流充电。
当系统掉电时,DS1302由这个电池提供的能量继续工作。
下面让我们来驱动它。
sbit io_DS1302_RST = P2^0 ;sbit io_DS1302_IO = P2^1 ;sbit io_DS1302_SCLK = P2^2 ;//-------------------------------------常数宏---------------------------------//#define DS1302_SECOND_WRITE 0x80 //写时钟芯片的寄存器位置#define DS1302_MINUTE_WRITE 0x82#define DS1302_HOUR_WRITE 0x84#define DS1302_WEEK_WRITE 0x8A#define DS1302_DAY_WRITE 0x86#define DS1302_MONTH_WRITE 0x88#define DS1302_YEAR_WRITE 0x8C#define DS1302_SECOND_READ 0x81 //读时钟芯片的寄存器位置#define DS1302_MINUTE_READ 0x83#define DS1302_HOUR_READ 0x85#define DS1302_WEEK_READ 0x8B#define DS1302_DAY_READ 0x87#define DS1302_MONTH_READ 0x89#define DS1302_YEAR_READ 0x8D//-----------------------------------操作宏----------------------------------//#define DS1302_SCLK_HIGH io_DS1302_SCLK = 1 ;#define DS1302_SCLK_LOW io_DS1302_SCLK = 0 ;#define DS1302_IO_HIGH io_DS1302_IO = 1 ;#define DS1302_IO_LOW io_DS1302_IO = 0 ;#define DS1302_IO_READ io_DS1302_IO#define DS1302_RST_HIGH io_DS1302_RST = 1 ;#define DS1302_RST_LOW io_DS1302_RST = 0 ;/******************************************************* 保存时间数据的结构体*******************************************************/struct{uint8 Second ;uint8 Minute ;uint8 Hour ;uint8 Day ;uint8 Week ;uint8 Month ;uint8 Year ;}CurrentTime ;/****************************************************************************** * Function: static void v_DS1302Write_f( uint8 Content ) ** Description:向DS1302写一个字节的内容** Parameter:uint8 Content : 要写的字节** *******************************************************************************/static void v_DS1302Write_f( uint8 Content ){uint8 i ;for( i = 8 ; i > 0 ; i-- ){if( Content & 0x01 ){DS1302_IO_HIGH}else{DS1302_IO_LOW}Content >>= 1 ;DS1302_SCLK_HIGHDS1302_SCLK_LOW}}/******************************************************************************* Function: static uint8 v_DS1302Read_f( void ) ** Description: 从DS1302当前设定的地址读取一个字节的内容** Parameter: ** Return: 返回读出来的值(uint8) *******************************************************************************/ static uint8 v_DS1302Read_f( void ){uint8 i, ReadValue ;DS1302_IO_HIGHfor( i = 8 ; i > 0 ; i-- ){ReadValue >>= 1 ;if( DS1302_IO_READ ){ReadValue |= 0x80 ;}else{ReadValue &= 0x7f ;}DS1302_SCLK_HIGHDS1302_SCLK_LOW}return ReadValue ;}/****************************************************************************** * Function: void v_DS1302WriteByte_f( uint8 Address, uint8 Content ) ** Description: 从DS1302指定的地址写入一个字节的内容** Parameter: Address: 要写入数据的地址** Content: 写入数据的具体值** Return: *******************************************************************************/ void v_DS1302WriteByte_f( uint8 Address, uint8 Content ){DS1302_RST_LOWDS1302_SCLK_LOWDS1302_RST_HIGHv_DS1302Write_f( Address ) ;v_DS1302Write_f( Content ) ;DS1302_RST_LOWDS1302_SCLK_HIGH}/****************************************************************************** * Function: uint8 v_DS1302ReadByte_f( uint8 Address ) ** Description:从DS1302指定的地址读出一个字节的内容** Parameter:Address: 要读出数据的地址** ** Return: 指定地址读出的值(uint8) *******************************************************************************/ uint8 v_DS1302ReadByte_f( uint8 Address ){uint8 ReadValue ;DS1302_RST_LOWDS1302_SCLK_LOWDS1302_RST_HIGHv_DS1302Write_f( Address ) ;ReadValue = v_DS1302Read_f() ;DS1302_RST_LOWDS1302_SCLK_HIGHreturn ReadValue ;}/****************************************************************************** * Function: void v_ClockInit_f( void ) ** Description:初始化写入DS1302时钟寄存器的值(主程序中只需调用一次即可) ** Parameter: ** ** Return: *******************************************************************************/ void v_ClockInit_f( void ){if( v_DS1302ReadByte_f( 0xc1) != 0xf0 ){v_DS1302WriteByte_f( 0x8e, 0x00 ) ; //允许写操作v_DS1302WriteByte_f( DS1302_YEAR_WRITE, 0x08 ) ; //年v_DS1302WriteByte_f( DS1302_WEEK_WRITE, 0x04 ) ; //星期v_DS1302WriteByte_f( DS1302_MONTH_WRITE, 0x12 ) ; //月v_DS1302WriteByte_f( DS1302_DAY_WRITE, 0x11 ) ; //日v_DS1302WriteByte_f( DS1302_HOUR_WRITE, 0x13 ) ; //小时v_DS1302WriteByte_f( DS1302_MINUTE_WRITE, 0x06 ) ; //分钟v_DS1302WriteByte_f( DS1302_SECOND_WRITE, 0x40 ) ; //秒v_DS1302WriteByte_f( 0x90, 0xa5 ) ; //充电v_DS1302WriteByte_f( 0xc0, 0xf0 ) ; //判断是否初始化一次标识写入v_DS1302WriteByte_f( 0x8e, 0x80 ) ; //禁止写操作}}/****************************************************************************** * Function: void v_ClockUpdata_f( void ) ** Description:读取时间数据,并保存在结构体CurrentTime中** Parameter: ** ** Return: *******************************************************************************/ void v_ClockUpdata_f( void ){CurrentTime.Second = v_DS1302ReadByte_f( DS1302_SECOND_READ ) ;CurrentTime.Minute = v_DS1302ReadByte_f( DS1302_MINUTE_READ ) ;CurrentTime.Hour = v_DS1302ReadByte_f( DS1302_HOUR_READ ) ;CurrentTime.Day = v_DS1302ReadByte_f( DS1302_DAY_READ ) ;CurrentTime.Month = v_DS1302ReadByte_f( DS1302_MONTH_READ ) ;CurrentTime.Week = v_DS1302ReadByte_f( DS1302_WEEK_READ ) ;CurrentTime.Year = v_DS1302ReadByte_f( DS1302_YEAR_READ ) ;}有了上面的这些函数我们就可以对DS1302进行操作了。
DS 时钟芯片
DS1302DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
下面是标准的接线电路图:引脚功能:DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch)是存放秒、分,小时、日、月、年、周数据的,存放的数据格式为BCD码形式它的内部时间寄存器如下:将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。
这几个寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。
当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行。
2、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。
3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。
下面来说说如果对DS1302进行读写:上面的电路图可以看出,除了电源和接地,DS1302只有三根线和单片机连接,SCLK、I/O和RST(有的也写成CE),先看时序图:DS1302的数据读写是通过I/O串行进行的。
DS12887时钟芯片_中文资料_
DS12887时钟芯片(中文资料一)特点·可作为IBM AT 计算机的时钟和日历·与MC14681B 和DS1287的管脚兼容·在没有外部电源的情况下可工作10年·自带晶体振荡器及电池·可计算到2100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿·用二进制码或BCD 码代表日历和闹钟信息·有12和24小时两种制式,12小时制时有AM 和PM提示·可选用夏令时模式·可以应用于MOTOROLA 和INTEL 两种总线·数据/地址总线复用·内建128字节RAM14字节时钟控制寄存器114字节通用RAM·可编程方波输出·总线兼容中断(/IRQ )·三种可编程中断时间性中断可产生每秒一次直到每天一次中断周期性中断122ms 到500ms时钟更新结束中断管脚名称AD0-AD7-地址/数据复用总线 NC -空脚MOT -总线类型选择(MOTOROLA/INTEL ) CS -片选 AS -ALER/W -在INTEL 总线下作为/WR DS -在INTEL 总线下作为/RD RESET -复位信号 IRQ -中断请求输出 SQW -方波输出 VCC -+5电源 GND -电源地上电/掉电当VCC 高于4.25V200ms 后,芯片可以被外部程序操作;当VCC 低于4.25V 时,芯片处于写保护状态(所有的输入均无效),同时所有输出呈高阻状态;当VCC 低于3V 时,芯片将自动把供电方式切换为由内部电池供电。
管脚功能MOT (总线模式选择)当此脚接到VCC 时,选用的是MOTOROLA 总线时序;当它接到地或不接时,选用的是INTEL 总线时序。
SQW(方波输出)-当VCC低于4.25V时没有作用。
周期性中断率和方波中断频率表寄存器A中的控制位RS3 RS2 RS1 RS0 P1周期中断周期SQW输出频率0 0 0 0 无无0 0 0 1 3.90625ms 256Hz0 0 1 0 7.8125ms 128Hz0 0 1 1 122.070μs 8.192kHz0 1 0 0 244.141μs 4.096 kHz0 1 0 1 488.281μs 2.048 kHz0 1 1 0 976.5625μs 1.024 kHz0 1 1 1 1.953125ms 512 Hz1 0 0 0 3.90625 ms 256 Hz1 0 0 1 7.8125 ms 128 Hz1 0 1 0 15.625 ms 64 Hz1 0 1 1 31.25 ms 32 Hz1 1 0 0 62.5 ms 16 Hz1 1 0 1 125 ms 8 Hz1 1 1 0 250 ms 4 Hz1 1 1 1 500 ms2 HzAD0-AD7(双向数据/地址复用总线)AS(地址锁存)ALEDS(Data Strobe or Read Input) RD当系统选择的是INTEL总线模式时,DS被称作RD。
80c51单片机交通灯课程设计报告1.pdf
80C51单片机交通灯课程设计报告目录第一章引言 (3)第二章单片机概述 (4)第三章芯片介绍 (6)3.1AT89S51单片机介绍 (6)3.1.1简介 (6)3.1.2主要管脚介绍 (6)3.274LS164介绍 (8)3.3共阳数码管介绍 (8)3.3.1分类简介 (8)图3.3LED数码管引脚定义 (9)3.3.2驱动方式 (9)3.3.3主要参数 (10)3.3.4应用范围 (10)第四章系统硬件设计 (11)4.1硬件设计要求 (11)4.2硬件设计所用元器件 (11)4.3硬件设计图 (11)4.4设计流程图 (12)第五章系统软件设计 (13)5.1流程图 (13)5.2程序设计 (14)第六章结论 (16)参考文献 (18)第一章引言在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。
dmb dsb指令
dmb dsb指令
DMB和DSB指令都是数据内存屏障指令,主要用于多核处理器系统中,主要用于解决数据并发访问的问题。
DMB指令主要用于确保在DMB之前的所有显式数据内存传输指令都已经在内存中读取或写入完成,同时确保任何后续的数据内存传输指令都将在DMB执行之后开始执行,以避免数据传输出现混乱。
DSB指令主要用于确保在DSB之前的所有显式数据内存传输指令都已经在内存中读取或写入完成,同时确保任何后续的指令都将在DSB执行之后开始执行。
与DMB相比,DSB 指令更适用于多线程编程中,能够解决数据并发访问的问题。
以上信息仅供参考,如需了解更多信息,建议查阅计算机体系结构方面的专业书籍或咨询相关技术人员。
DS1023中文翻译
1.DS1023 延时芯片8bit 可编程定时元件特性:⏹ 步长类型:0.25ns ,0.5ns ,1ns ,2ns ,5ns ⏹ 片上参考延时⏹ 可配置的脉冲宽度、延时线、调制器或自激振荡器 ⏹ 可以延时1个整周期甚至更长 ⏹ 保证单调性⏹ 并行或者串行可编程 ⏹ 单5V 供电⏹ 16引脚的DIP(双列直插式封装)或者SOIC(小外形集成电路)封装引脚分布图:引脚描述:IN -输入 OUT/OUT -------------输出P0/Q -并行输入P0(并行模式) REF/PWM -参考或者PWM 输出 -串行数据输出(串行模式)P1/CLK -并行输入P1(并行模式) P ----/S -并行/串行可编程选择 -串行输入时钟(串行模式)P2/D -并行输入P2(并行模式) MS -输出模式选择 -串行数据输入(串行模式)P3-P7 -剩余的并行输入口 LE -输入锁存使能GND -地 V CC -提供电压描述:DS1023是一个8bit 可编程延时线,在功能方面类似于DS1020/DS1021.额外增加的特性用于扩大应用范围:内部的延时线结构经过优化修改,已经可以使得信号被延时至1个整周期甚至更长的时间。
和一个片上参考延时(用来抵消芯片固有延时或称为“0档位”延时)相结合,时钟相位可以有0-360°的变化范围。
片上选通允许设备提供一个脉宽调制输出,由输入值触发,输入持续时间由编程值设定。
如果外部输出端和输入端连接,那么芯片的二选一输出信号可以反转,此时可将其看作一个自激振荡器。
可编程:芯片的可编程性和DS1020/DS1021一样。
串行的时钟和数据3个引脚,是和并行的输入引脚复用的。
P----/S 引脚的功能是“模式选择”,和DS1020/DS1021一样。
低电平使能并行模式:只有在LE是高电平时,编程值才会改变;LE是低电平时,数据锁存,并行输入值改变不会影响可编程值。
这对于多路复用是有用的。
时钟芯片DS1302中文资料
时钟芯片DS1302中文资料DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式.DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:1 RES 复位,2 I/O 数据线,3 SCLK串行时钟.时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信.DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW.DS1302 是由DS1202 改进而来,增加了以下的特性.双电源管脚用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器.它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域.下面将主要的性能指标作一综合:实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力;31 8 位暂存数据存储RAM;串行I/O 口方式使得管脚数量最少;宽范围工作电压2.0 5.5V;工作电流2.0V 时,小于300nA;读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式;8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配;简单3 线接口;与TTL 兼容Vcc=5V;可选工业级温度范围-40 +85;与DS1202 兼容;在DS1202 基础上增加的特性;对Vcc1 有可选的涓流充电能力;双电源管用于主电源和备份电源供应;备份电源管脚可由电池或大容量电容输入;附加的7 字节暂存存储器;1 DS1302 的基本组成和工作原理DS1302 的引脚功能排列及描述如下图所示管脚描述X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚DS1302 串行时钟芯片8 脚DIPDS1302S 串行时钟芯片8 脚SOIC 200milDS1302Z 串行时钟芯片8 脚SOIC 150mil2. DS1302 内部寄存器CH: 时钟停止位存器2 的第7 位12/24 小时标志CH=0 振荡器工作允许bit7=1,12 小时模式CH=1 振荡器停止bit7=0,24 小时模式WP: 写保护位寄存器2 的第5 位:AM/PM 定义WP=0 寄存器数据能够写入AP=1 下午模式WP=1 寄存器数据不能写入AP=0 上午模式TCS: 涓流充电选择DS: 二极管选择位TCS=1010 使能涓流充电DS=01 选择一个二极管TCS=其它禁止涓流充电DS=10 选择两个二极管DS=00 或11, 即使TCS=1010, 充电功能也被禁止RS位电阻典型位00 没有没有01 R1 2KΩ10 R2 4KΩ11 R3 8KΩ时钟:DS1302 与微控制器的接口软件及功能应用举例下面首先给出基本的接口软件然后举例说明各种功能的应用1 写保护寄存器操作当写保护寄存器的最高位为0 时允许数据写入寄存器写保护寄存器可以通过命令字节8E,8F 来规定禁止写入/读出写保护位不能在多字节传送模式下写入Write_Enable:MOV Command,#8Eh ;命令字节为8EMOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#00h 数据内容为0 写入允许ACALL Send_Byte 用写入数据子程序RET 返回调用本子程序处当写保护寄存器的最高位为1 时禁止数据写入寄存器Write_Disable:MOV Command,#8Eh ;命令字节为8EMOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#80h 数据内容为80h 禁止写入ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处以上程序调用了基本数据发送(Send_Byte)模块及一些内存单元定义, 其源程序清单在附录中给出下面的程序亦使用了这个模块2 时钟停止位操作当把秒寄存器的第7 位时钟停止位设置为0 时起动时钟开始Osc_Enable:MOV Command,#80h ; 命令字节为80MOV ByteCnt,#1 ; 单字节传送模式MOV 0,#XmtDat 数据地址覆给R0MOV XmtDat,#00h 数据内容为0 振荡器工作允许ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处当把秒寄存器的第7 位时钟停止位设置为1 时时钟振荡器停止HT1380 进入低功耗方式Osc_Disable:MOV Command,#80h ;命令字节为80MOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#80h 数据内容为80h 振荡器停止ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处3. 多字节传送方式当命令字节为BE 或BF 时DS1302 工作在多字节传送模式8 个时钟/日历寄存器从寄存器0 地址开始连续读写从0 位开始的数据当命令字节为FE 或FF 时DS1302 工作在多字节RAM 传送模式31 个RAM 寄存器从0 地址开始连续读写从0 位开始的数据例如写入00 年6 月21 日星期三13 时59 分59 秒程序设置如下Write_Multiplebyte:MOV Command,#0BEh ;命令字节为BEhMOV ByteCnt,#8 ;多字节写入模式此模块为8 个MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#59h 秒单元内容为59hMOV XmtDat+1,#59h 分单元内容为59hMOV XmtDat+2,#13h 时单元内容为13hMOV XmtDat+3,#21h 日期单元内容为21hMOV XmtDat+4,#06h 月单元内容为06hMOV XmtDat+5,#03h 星期单元内容为03hMOV XmtDat+6,#0 年单元内容为00hMOV XmtDat+7,#0 写保护单元内容为00hACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处读出寄存器0-7 的内容程序设置如下Read_Multiplebyte:MOV Command,#0BFh 命令字节为BFhMOV ByteCnt,#8 ; 多字节读出模式此模块为8 个MOV R1,#RcvDat 数据地址覆给R1ACALL Receive_Byte 调用读出数据子程序RET 返回调用本子程序处以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义, 其源程序清单在附录中给出下面的程序亦使用了这个模块4. 单字节传送方式例如写入8 时12 小时模式程序设置如下Write_Singlebyte:MOV Command,#84h ; 命令字节为84hMOV ByteCnt,#1 ; 单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#88h 数据内容为88hACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处上面所列出的程序模块Write_Enable Write_Disable Osc_Enable Osc_Disable 与单字节写入模块Write_Singlebyte 的程序架构完全相同仅只是几个入口参数不同本文是为了强调功能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,用户在使用中可灵活简略.下面模块举例说明如何单字节读出小时单元的内容.Read_Singlebyte:MOV Command,#85h ; 命令字节为85hMOV ByteCnt,#1 ; 单字节传送模式MOV R1,#RcvDat 数据地址覆给R1ACALL Receive_Byte 调用读出数据子程序RET 返回调用本子程序处DS1302 应用电路原理图P87LPC764 单片机选取内部振荡及内部复位电路附录数据发送与接收模块源程序清单; CPU 工作频率最大不超过20MHz;; P87LPC762/4 主控器发送接受数据程序; 说明本程序是利用Philips 公司的P87LPC764 单片机任何具有51 内核或其它合适的单片机都可在此作为主控器的普通I/O 口(如P1.2/P1.3/P1.4)实现总线的功能对总线上的器件本程序采用DS1302进行读写操作命令字节在Command 传送字节数在ByteCnt 中所发送的数据在XmtDat 中所接收的数据在RcvDat 中;;P87LPC762/4 主控器总线发送接受数据程序头文件;内存数据定义BitCnt data 30h ; 数据位计数器ByteCnt data 31h ; 数据字节计数器Command data 32h ; 命令字节地址RcvDat DATA 40H ; 接收数据缓冲区XmtDat DATA 50H ; 发送数据缓冲区;端口位定义IO_DA TA bit P1.3 ; 数据传送总线SCLK bit P1.4 ; 时钟控制总线RST bit P1.2 ; 复位总线;;发送数据程序;名称:Send_Byte;描述:发送ByteCnt 个字节给被控器DS1302;命令字节地址在Command 中;所发送数据的字节数在ByteCnt 中发送的数据在XmtDat 缓冲区中;Send_Byte:CLR RST ;复位引脚为低电平所有数据传送终止NOPCLR SCLK 清时钟总线NOPSETB RST ;复位引脚为高电平逻辑控制有效NOPMOV A,Command 准备发送命令字节MOV BitCnt,#08h 传送位数为8S_Byte0:RRC A 将最低位传送给进位位CMOV IO_DATA,C 位传送至数据总线NOPSETB SCLK 时钟上升沿发送数据有效NOPCLR SCLK 清时钟总线DJNZ BitCnt,S_Byte0 位传送未完毕则继续NOPS_Byte1: 准备发送数据MOV A,@R0 传送数据过程与传送命令相同MOV BitCnt,#08hS_Byte2:RRC AMOV IO_DATA,CNOPSETB SCLKNOPCLR SCLKDJNZ BitCnt,S_Byte2INC R0 发送数据的内存地址加1DJNZ ByteCnt,S_Byte1 字节传送未完毕则继续NOPCLR RST 逻辑操作完毕清RSTRET;接收数据程序;;名称:Receive_Byte;描述:从被控器DS1302 接收ByteCnt 个字节数据;命令字节地址在Command 中;所接收数据的字节数在ByteCnt 中接收的数据在RcvDat 缓冲区中Receive_Byte:CLR RST ;复位引脚为低电平所有数据传送终止NOPCLR SCLK 清时钟总线NOPSETB RST ;复位引脚为高电平逻辑控制有效MOV A,Command 准备发送命令字节MOV BitCnt,#08h 传送位数为8R_Byte0:RRC A 将最低位传送给进位位CMOV IO_DATA,C 位传送至数据总线NOPSETB SCLK 时钟上升沿发送数据有效NOPCLR SCLK 清时钟总线DJNZ BitCnt,R_Byte0 位传送未完毕则继续NOPR_Byte1: 准备接收数据CLR A 清类加器CLR C 清进位位CMOV BitCnt,#08h 接收位数为8R_Byte2:NOPMOV C,IO_DATA 数据总线上的数据传送给CRRC A 从最低位接收数据SETB SCLK 时钟总线置高NOPCLR SCLK 时钟下降沿接收数据有效DJNZ BitCnt,R_Byte2 位接收未完毕则继续MOV @R1,A 接收到的完整数据字节放入接收内存缓冲区INC R1 接收数据的内存地址加1DJNZ ByteCnt,R_Byte1 字节接收未完毕则继续NOPCLR RST 逻辑操作完毕清RSTRETEND直流参数表:主要电参数表交流参数表电容配置表:。
74HC138中文资料
74HC138中文资料引脚布局概述138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。
138译码器可接受3位二进制加权地址输入(A0,A1和A3),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
74HC138特有3个使能输入端:两个低有效(E1和E2)有效(E3)。
除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。
利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组个1-32(5线到32线)译码器。
任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入持绑定在各自合适的高有效或低有效状态。
138与74HC238逻辑功能一致,只不过74HC138为反相输出。
74HC138参数74HC138基本参数电压 2.0~6.0V驱动电流+/-5.2mA传输延迟12ns@5V74HC138其他特性逻辑电平CMOS功耗考量低功耗或电池74HC138封装与引脚SO16,SSOP16,DIP16,TSSO特性多路分配功能复合使能输入,轻松实现扩展兼容JEDEC标准no.7A存储器芯片译码选择的理想选择低有效互斥输出SD保护o HBM EIA/JESD22-A114-C超过2000V o MM EIA/JESD22-A115-A超过200V 温度范围o-40~+85℃o-40~+125℃引脚布局概述74HC165是一款高速CMOS器件,74HC165遵循JEDEC标准no.7A。
74HC165引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC165参数74HC165基本参数电压 2.0~6.0V74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互斥的串行输出(Q7和Q7),当并行读取(PL)输入为低时,7口输入的并行数据将被异步地读取进寄存器内。
时钟芯片:DS1302
;8位数码管显示;P0 为段码口、P2 为位码口;时钟芯片:DS1302;************** DS1302 端口位定义**************IO_DATA BIT P1.1 ; 数据传送总线SCLK BIT P1.0 ; 时钟控制总线RST BIT P1.2 ; 复位总线K1 EQU P1.4 ;独立键K2 EQU P1.5K3 EQU P1.6K4 EQU P1.7BEEP EQU P3.3 ;蜂鸣器RELAY EQU P3.5 ;继电器T_CONU EQU 22H ;中断计数TIME_L EQU 23H ;定时初值TIME_H EQU 24HTIME_DATA EQU 50H ;显示时间单元首地址DATE_DATA EQU 60H ;显示日期单元首地址DS_DATA EQU58H ;显示定时时间单元首地址;------------------------------------------------ORG 0000HAJMP MAINORG 000BHAJMP INT_T0ORG 0080H;------------------------------------------------MAIN:MOVTMOD,#01H ;T0,方式1MOVTIME_L,#00H ;50MS定时值MOV TIME_H,#4CHMOVT_CONU,#00H ;中断次数MOVIE,#82H ;EA=1,ET0=1MOV A,#00HMOVR0,#40H ;从40H单元开始MOVR1,#40H ;清64个单元M_CLEAR: MOV @R0,AINC R0DJNZ R1,M_CLEARMOV7FH,#0AH ;送熄灭符SETB BEEPLCALLTIME_DELAY ;调显示延时LCALLPROSET ;DS1302初始化MAIN1:LCALLGET_TIME ;从DS1302读数据程序LCALLCHULI ;实时时间数据处理MOVR0,#TIME_DATA ;显示时、分、秒LCALL DISPMOV R0,#TIME_DATALCALLTIME_DISPLAYLCALLSET_KEY ;键功能程序LCALLCOMP ;实时时间与定时时间比较JB K1,MAIN1CALL BEEP_BL MAIN2:LCALLCHULI ;日期数据处理MOV R0,#DATE_DATALCALLDISP ;显示年、月、日MOV R0,#DATE_DATALCALLTIME_DISPLAYJB K1,MAIN2CALL BEEP_BL MAIN3:LCALLDS_CHULI ;定时时间数据处理MOV R0,#DS_DATALCALLDS_SP ;显示定时时间MOV R0,#DS_DATALCALL DS_DISPLAYJB K1,MAIN3CALL BEEP_BLAJMP MAIN1;-------------------------------------------- ;中断服务子程序;300MS对闪动标记取反一次;-------------------------------------------- INT_T0:PUSH ACCPUSH PSWMOV TL0,TIME_LMOV TH0,TIME_HINC T_CONUMOV A,T_CONUCJNEA,#06H,INT_ENDMOV T_CONU,#00HCPL 0AHINT_END:POP PSWPOP ACCRETI;-------------------------------------------- ;DS1302 初始化子程序; (R0)=数据(R1)=地址;-------------------------------------------- PROSET:CLRRST ;DS1302复位CLR SCLKNOPNOPSETB RST;MOVR1,#80H ;写秒寄存器;MOVR0,#00H ;启动振荡器;LCALL WRITE;MOVR1,#82H ;写分寄存器;MOV R0,#58H;LCALL WRITE;MOVR1,#84H ;写时寄存器;MOV R0,#80H;LCALL WRITEMOVR1,#90H ;写充电寄存器MOV R0,#0ABHLCALL WRITERET;=========================== ====================;读时间、日期数据子程序;存放单元40H - 46H;=========================== ====================GET_TIME:MOVR1,#81H ;读秒LCALL READMOV 40H,R0MOVR1,#83H ;读分LCALL READMOV 41H,R0MOVR1,#85H ;读时MOV 42H,R0MOVR1,#87H ;读出日期LCALL READMOV 43H,R0MOVR1,#89H ;读出月份LCALL READMOV 44H,R0MOVR1,#8BH ;读出星期LCALL READMOV 46H,R0MOVR1,#8DH ;读出年MOV 45H,R0RET;=========================== =====================;写DS1302 子程序;=========================== ===================== WRITE:CLR SCLKNOPNOPSETB RSTNOPMOV A,R1MOV R2,#08HWRI_01:RRCA ;传输地址到DS1302NOPNOPCLR SCLKNOPNOPMOV IO_DATA,CNOPNOPSETB SCLKNOPNOPDJNZ R2,WRI_01CLR SCLKNOPNOPMOV A,R0MOV R2,#08HWRI_02:RRC A ;传输数据到DS1302NOPCLR SCLKNOPNOPMOV IO_DATA,CNOPNOPSETB SCLKNOPNOPDJNZ R2,WRI_02CLR SCLKNOPNOPCLR RSTNOPNOPRET;=========================== ======================;读DS1302 子程序;================================================= READ:CLR SCLKNOPNOPSETB RSTNOPNOPMOV A,R1MOV R2,#08HREAD_01:RRC ANOP ;先传输地址到DS1302MOV IO_DATA,CNOPNOPSETB SCLKNOPNOPCLR SCLKNOPNOPDJNZ R2,READ_01NOPNOPSETB IO_DATACLR ACLR CMOV R2,#08HREAD_02:CLR SCLKNOPNOPMOV C,IO_DATANOPNOPRRCA ;再从DS1302接收数据NOPNOPSETB SCLKNOPNOPDJNZ R2,READ_02MOV R0,ACLR RSTRET;=========================== ===================;实时时间、日期数据处理子程序;=========================== =================== CHULI:MOVA,40H ;处理秒数据ANL A,#0FHMOV 50H,AMOV 70H,AMOV A,40HANL A,#11110000BSWAP AMOV 51H,AMOV 71H,A;---------------------------------------------MOVA,41H ;处理分数据ANL A,#0FHMOV 52H,AMOV 72H,AMOV A,41HANL A,#11110000BSWAP AMOV 53H,AMOV 73H,A;---------------------------------------------MOVA,42H ;处理时数据ANL A,#0FHMOV 54H,AMOV 74H,AMOV A,42HANL A,#11110000BSWAP AMOV 55H,AMOV 75H,A;----------------------------------------------MOVA,43H ;处理日数据ANL A,#0FHMOV 60H,AMOV 76H,AMOV A,43HANL A,#11110000BSWAP AMOV 61H,AMOV 77H,A;---------------------------------------------MOVA,44H ;处理月数据ANL A,#0FHMOV 62H,AMOV 78H,AMOV A,44HANL A,#11110000BSWAP AMOV 63H,AMOV 79H,A;---------------------------------------------MOVA,45H ;处理年数据ANL A,#0FHMOV 64H,AMOV 7AH,AMOV A,45HANL A,#11110000BSWAP AMOV 65H,AMOV 7BH,A;----------------------------------------------MOVA,46H ;处理周数据MOV 66H,AMOV 7CH,ARET;=========================== ==================;实时时间、日期查表取数子程序;=========================== ==================DISP: ;MOV R0,#TIME_DATAMOV R3,#06HDISP1: MOV A,@R0MOV DPTR,#TAB_NUMOVC A,@A+DPTRMOV @R0,AINC R0DJNZ R3,DISP1RET;=========================== =========================;时间、日期显示子程序;=========================== ========================= TIME_DISPLAY:;MOVR0,#TIME_DATA ;取得显示单元首地址MOVR1,#07FH ;从第一个数码管开始MOVR2,#08H ;共8个数码管DISLP: MOV P0,@R0 ;获得当前单元数据MOV A,R1MOVP2,A ;数码显示JBACC.5,DISLP1 ;第三位数码管显示-MOV P0,#0f7HJMP DISLP3DISLP1: JB ACC.2,DISLP2 ;第六位数码管显示-MOV P0,#0f7HJMP DISLP3DISLP2: INC R0DISLP3: MOV A,R1 ;为下一个数准备RRA ;下一个单元MOVR1,A ;保存LCALLDELAY ;为了保证数码管亮度,延时DJNZR2,DISLP ;重复显示,直到全部数据刷新过RET ;返回DELAY:MOV R4,#0AHL15: MOV R5,#64HL16: DJNZ R5,L16DJNZ R4,L15RET;******************************* ***********************SET_KEY:SETB K1 ;增加键SETB K2 ;减少键SETB K3 ;选择键SETB K4 ;定时设定功能键NOPJB K4,KEY01LCALL BEEP_BLJMPDS_KEY ;进入定时值设定子程序KEY01: JB K2,KEY02LCALL BEEP_BLJMPSET_TIME ;进入时间设定子程序KEY02: JB K3,KEY03LCALL BEEP_BLCPL 20H.0 ;止闹标记取反KEY03: RET;-----------------------------------------------------DS_KEY:CALL DS_DELAYJNB K4,$LCALL DSSETCALL DS_DELAYRET;=========================== ===================;实时时间设定子程序;K1为加键、K2为减键、K3为选择键;=========================== ===================SET_TIME:MOVR1,#8EH ;写保护寄存器MOVR0,#00H ;允许写入LCALL WRITEMOVR1,#80H ;写秒寄存器MOVR0,#80H ;停止振荡器工作LCALL WRITESETB TR0K001: CALL TIME_DELAY ;校时JNBK3,K001 ;K3为位移键K010:CALL CHULIJNB 0AH,KH01MOV54H,7FH ;送入熄灭符MOV 55H,7FHJMP KH02KH01: MOV 54H,74H ;送实时值MOV55H,75H ;送实时值KH02: MOV R0,#TIME_DATACALL DISPMOV R0,#TIME_DATACALL TIME_DISPLAYJNB K1,K011AJNB K2,K011BJNB K3,K002JMP K010K011A:MOV A,42HADD A,#01HDA AMOV 42H,AXRL A,#24HJNZ K012AMOV 42H,#00HK012A: MOV R1,#84H ;写时寄存器MOV R0,42HLCALL WRITECALL TIME_DELAYJMP K010K011B:MOV A,42HXRL A,#00HJZ K012BSETB C ;求补运算CLR AADDCA,#99H ;加99SUBB A,#01H ;减去减数ADD A,42H ;加被减数DA A ;十进制调整MOV42H,A ;XRL A,#00HJNZ K012CK012B: MOV 42H,#23HK012C: MOV R1,#84H ;写时寄存器MOV R0,42HLCALL WRITECALL TIME_DELAYJMP K010;-------------------------------------------------K002: CALL TIME_DELAY ;校分JNBK3,K002 ;K3为位移键K020: CALL CHULIJNB 0AH,KM01MOV52H,7FH ;送入熄灭符MOV 53H,7FHJMP KM02KM01: MOV 52H,72H ;送实时值MOV53H,73H ;送实时值KM02: MOV R0,#TIME_DATACALL DISPMOV R0,#TIME_DATACALL TIME_DISPLAYJNB K1,K021AJNB K2,K021BJNB K3,K003JMP K020K021A:MOV A,41HADD A,#01HDA AMOV 41H,AXRL A,#60HJNZ K022AMOV 41H,#00HK022A: MOV R1,#82H ;写分寄存器MOV R0,41HLCALL WRITECALL TIME_DELAYJMP K020;---------------------------------------------------K021B:MOV A,41HXRL A,#00HJZ K022BSETB C ;求补运算CLR AADDCA,#99H ;加99SUBB A,#01H ;减去减数ADD A,41H ;加被减数DA A ;十进制调整MOV41H,A ;XRL A,#00HJNZ K022CK022B: MOV 41H,#59HK022C: MOV R1,#82H ;写分寄存器MOV R0,41HLCALL WRITECALL TIME_DELAYJMP K020;---------------------------------------------------K003: CALL DATE_DELAY ;校日JNBK3,K003 ;K3为位移键K030: CALL CHULIJNB 0AH,KR01MOV60H,7FH ;送入熄灭符MOV 61H,7FHJMP KR02KR01: MOV 60H,76H ;送实时值MOV61H,77H ;送实时值KR02: MOV R0,#DATE_DATACALL DISPMOV R0,#DATE_DATACALL TIME_DISPLAYJNB K1,K031AJNB K2,K031BJNB K3,K004JMP K030K031A:MOV A,43HADD A,#01HDA AMOV 43H,AXRL A,#32HJNZ K032AMOV 43H,#00HK032A: MOV R1,#86H ;写日寄存器MOV R0,43HLCALL WRITECALL DATE_DELAYJMP K030K031B:MOV A,43HXRL A,#00HJZ K032BSETBC ;求补运算CLR AADDCA,#99H ;加99SUBBA,#01H ;减去减数ADDA,43H ;加被减数DAA ;十进制调整MOV 43H,AXRL A,#00HJNZ K032CK032B: MOV 43H,#31HK032C: MOV R1,#86H ;写日寄存器MOV R0,43HLCALL WRITECALL DATE_DELAYJMP K030;------------------------------------------------K004: CALL DATE_DELAY ;校月JNBK3,K004 ;K3为位移键K040: CALL CHULIJNB 0AH,KC01MOV62H,7FH ;送入熄灭符MOV 63H,7FHJMP KC02KC01: MOV 62H,78H ;送实时值MOV63H,79H ;送实时值KC02: MOV R0,#DATE_DATACALL DISPMOV R0,#DATE_DATACALL TIME_DISPLAYJNB K1,K041AJNB K2,K041BJNB K3,K005JMP K040K041A:MOV A,44HADD A,#01HDA AMOV 44H,AXRL A,#13HJNZ K042AMOV 44H,#00HK042A: MOV R1,#88H ;写月寄存器MOV R0,44HLCALL WRITECALL DATE_DELAYJMP K040K041B:MOV A,44HXRL A,#00HJZ K042BSETB C ;求补运算CLR AADDCA,#99H ;加99SUBB A,#01H ;减去减数ADD A,44H ;加被减数DA A ;十进制调整MOV44H,A ;XRL A,#00HJNZ K042CK042B: MOV 44H,#12HK042C: MOV R1,#88H ;写月寄存器MOV R0,44HLCALL WRITECALL DATE_DELAYJMP K040;----------------------------------------------- K005: CALL DATE_DELAY ;校年JNBK3,K005 ;K3为位移键K050: CALL CHULIJNB 0AH,KY01MOV64H,7FH ;送入熄灭符MOV 65H,7FHJMP KY02KY01: MOV 64H,7AH ;送实时值MOV65H,7BH ;送实时值KY02: MOV R0,#DATE_DATACALL DISPMOV R0,#DATE_DATACALL TIME_DISPLAYJNB K1,K051AJNB K2,K051BJNB K3,K008JMP K050K051A:MOV A,45HADD A,#01HDA AMOV 45H,AXRL A,#9AHJNZ K052AMOV 45H,#00HK052A: MOV R1,#8CH ;写年寄存器MOV R0,45HLCALL WRITECALL DATE_DELAYJMP K050K051B:MOV A,45HXRL A,#00HJZ K052BSETB C ;求补运算CLR AADDCA,#99H ;加99SUBB A,#01H ;减去减数ADD A,45H ;加被减数DA A ;十进制调整MOV45H,A ;XRL A,#00HJNZ K052CK052B: MOV 45H,#99HK052C: MOV R1,#8CH ;写年寄存器MOV R0,45HLCALL WRITECALL DATE_DELAYJMP K050;-------------------------------------------------K008: JNB K3,K008MOVR1,#80H ;写秒寄存器MOVR0,#00H ;启动振荡器工作LCALL WRITEMOVR1,#8EH ;写保护寄存器MOVR0,#80H ;禁止写入LCALL WRITECALL DATE_DELAYCLR 0AHCLR TR0CALL BEEP_BLRET;=========================== ========================;定时时间设定子程序;K1为加键、K2为减键、K3为选择键;=================================================== DSSET:SETB TR0DS01: LCALL DS_DELAY ;定时分设定JNB K4,$DS010: CALL DS_CHULIJNB 0AH,DS01_1MOV58H,7FH ;送入熄灭符MOV 59H,7FHJMP DS01_2DS01_1: MOV 58H,70H ;送实时值MOV59H,71H ;送实时值DS01_2: MOV R0,#58HLCALL DS_SPMOV R0,#58HLCALL DS_DISPLAYJNB K1,DS01A ;加键JNB K2,DS01B ;减键JNB K3,DS02JMP DS010DS01A: ;加MOV A,48HADD A,#01HDA AMOV 48H,AXRL A,#60HJNZ DS011MOV 48H,#00HDS011: LCALL DS_DELAYJMP DS010DS01B: MOV A,48H ;判48H是否为0XRL A,#00HJZ DS012SETBC ;减CLR A ;求补运算ADDCA,#99H ;加99SUBB A,#01H ;减去减数ADD A,48H ;加被减数DA A ;十进制调整MOV48H,A ;XRL A,#00HJNZ DS013DS012: MOV 48H,#59HDS013: CALL DS_DELAYJMP DS010;---------------------------------------------- DS02: LCALL DS_DELAY ;定时时设定JNB K3,$DS020:CALL DS_CHULIJNB 0AH,DS02_1MOV5AH,7FH ;送入熄灭符MOV 5BH,7FHJMP DS02_2DS02_1: MOV 5AH,72H ;送实时值MOV5BH,73H ;送实时值DS02_2: MOV R0,#58HLCALL DS_SPMOV R0,#58HLCALL DS_DISPLAYJNB K1,DS02AJNB K2,DS02BJNB K3,DS03JMP DS020DS02A: MOV A,49H ;加ADD A,#01HDA AMOV 49H,AXRL A,#24HJNZ DS021MOV 49H,#00HDS021: LCALL DS_DELAYJMP DS020。
(dsbs) 案例
(dsbs)案例
以下是DSB(设备特定总线)案例:
一、什么是DSB?
设备特定总线(Device Specific Bus,简称DSB)是一种专用的、定制的总线,用于连接和管理特定类型的设备。
这些设备通常具有高速、高带宽和低延迟的通信需求,例如图形处理器、网络接口卡、硬盘驱动器等。
DSB提供了比通用总线更快、更可靠的数据传输能力,同时减少了系统的复杂性和成本。
二、DSB的优点:
1.高带宽:DSB能够提供高带宽的数据传输,以满足高速设备的需求。
2.低延迟:由于DSB直接与设备相连,减少了中间环节,因此可以实现更低的数据传输延迟。
3.可靠性:由于DSB是专为特定设备设计的,因此具有更高的可靠性,减少了数据传输错误的可能性。
4.高效性:DSB可以更有效地管理设备的资源,减少了系统资源的浪费。
三、DSB的应用场景:
1.图形处理:DSB可以用于连接图形处理器和主处理器,实现高速、低延迟的图形数据传输。
2.网络通信:DSB可以用于连接网络接口卡和主处理器,
实现高速、低延迟的网络数据传输。
3.存储系统:DSB可以用于连接硬盘驱动器和主处理器,实现高速、低延迟的存储数据传输。
4.专用系统:某些专用系统可能需要使用DSB来连接和管理特定的设备,例如游戏机、高性能计算机等。
四、DSB的未来发展:
随着技术的不断发展,DSB将不断改进和演化,以满足更高性能、更低延迟、更低成本的需求。
未来的DSB可能会采用更先进的协议和技术,例如PCIe5.0、CXL等,以提供更高的带宽和更低的延迟。
同时,DSB也可能会更加智能化和自动化,例如集成设备管理功能、自适应优化等。
dsb和isb指令
DSB和ISB指令是嵌入式系统开发中的同步指令,用于确保多个处理器核心或外设的顺序一致性,避免数据和指令的乱序执行。
DSB指令(Data Synchronization Barrier)确保在指令执行前,所有先前的缓存、跳转预测和TLB维护操作都已完成。
ST操作需要在存储完成后执行,而UNST操作则仅在存储完成后执行,并确保位于该指令后的所有指令的上下文更改操作,例如更改ASID或已完成的TLB维护操作,以及跳转预测维护操作等,都能被检测到。
ISB指令(Instruction Synchronization Barrier)可刷新处理器中的管道,确保在ISB指令完成后,才从高速缓存或内存中提取位于该指令后的其他所有指令。
这可以确保提取时间晚于ISB指令的指令能够检测到ISB指令执行前就已经执行的上下文更改操作的效果,例如更改ASID或已完成的TLB维护操作等。
此外,ISB指令还可确保程序中位于其后的所有跳转指令总会被写入跳转预测逻辑,其写入上下文可确保ISB指令后的指令均可检测到这些跳转指令,这是指令流能够正确执行的前提条件。
DSB和ISB指令在嵌入式系统开发中是非常关键的指令,它们帮助确保系统中的数据和指令执行的顺序性和一致性,从而保证系统的正确性和稳定性。
DSB的原理与应用
DALLAS18B20DQar-J ■:匚 B i.Nl ■ i fl二l NC ZZl MC 二 NCS-Piii ^L SGP CDSI&B20U)3 DS18B20的原理与应用单片机系统除了可以对电信号进行测量外,还可以通过外接传感器对温度信号进行测 量。
传统的温度检测大多以热敏电阻为传感器,但热敏电阻可靠性差、 测量的温度不够准确,且必须经专门的接口电路转成数字信号后才能被单片机处理。
DS18B20是一种集成数字温度传感器,采用单总线与单片机连接即可实现温度的测量。
本节内容在先介绍 DS18B20的工作原理、时序和指令后,然后设计完成一个数字温度计。
温度计功能要求采用数码管显示温度,小数点后2位有效数字,实际温度高于某个值时用蜂鸣器报警。
3.1 DS18B20工作原理DS18B20是美国DALLAS 半导体公司推出的第一片支持 一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度 转化成串行数字信号供单片机处理,可实现温度的精度测量与控制。
DS18B20性能特点见表3-1-1所示。
表3-1-1 DS18B20性能指标 性能 参数备注电源 电压范围在3.0~ 5.5V ,在寄生电源方式下可由数据线供电测温范围 -55 °C - +125 在-10 °C 〜+85 C 时精度为 ±).5 °C分辨率 9〜12 位,分别有 0.5C, 0.25C, 0.125C 和 0.0625C 编程控制转换速度 在9位时,小于 93.75ms ; 12位分辨率时,小于750ms总线连接点理论248,实际视延时、距离和干扰限制,最多几十个、封装外形根据应用领域不同, DS18B20有常见有TO-92、SOP8等封装外形,见图 3-1-1所示, 表3-1-2给出了 TO-92封装的引脚功能,其中DQ 引脚是该传感器的数据输入 /输出端(I/O ), 该引脚为漏极开路输出,常态下呈高电平。
DS1302中文资料
DS1302中文资料DS1302是一款低功耗的串行实时时钟芯片,广泛用于各种电子设备中,例如电子表、温度计、计时器等。
该芯片具有高准确度、稳定性和低功耗的特点,功能强大,使用简便。
以下是DS1302芯片的详细中文资料及使用说明。
1.特性:-时钟/日历功能:提供秒、分、时、日期、月份和年份的精确计时和日期记录功能。
-31个可编程的时间/日期寄存器:用于存储时钟和日期信息。
-控制根据电源情况自动选择电池或外部电源。
-8字节RAM用于存储额外的用户信息。
-提供电池低电压检测功能。
-通过3线串行接口与微控制器通讯。
-工作电流小于1.5μA。
2.引脚功能:-VCC:电源正极,3.3V至5V的电源供应。
-GND:地。
-RST:复位引脚,用于启动或复位芯片。
-CLK:时钟引脚,与外部晶振连接。
-DAT:数据引脚,与外部时钟连接。
-VBAT:备用电池引脚,用于提供备用电源。
3.时钟和日历操作:-初始化时钟芯片:首先将RST引脚置为高电平,然后将时钟和日期信息写入相应寄存器。
-读取时钟和日期信息:向相应寄存器发送读取指令,然后从DAT引脚读取数据。
-设置闹钟:将闹钟时间和日期写入相应寄存器,设置闹钟标志位。
-清除闹钟标志位:将闹钟标志位清零,重置闹钟状态。
-自动切换电源:设置使能位,将芯片自动切换为外部电源或电池供电。
4.通信协议:-DS1302使用3线串行接口与微控制器通讯,包括时钟(CLK)、数据(DAT)和复位(RST)引脚。
-通信数据以字节为单位,高位在前,低位在后。
-时钟和数据引脚都是双向引脚,需要使用上拉电阻来保证电平的稳定。
-通信基于时钟的脉冲信号,每个时钟周期有四个时钟脉冲。
5.典型应用:-电子表:DS1302提供精确的时钟和日期计时功能,可用于制作各种类型的电子表。
-温度计:结合温度传感器,可以通过DS1302记录和显示温度信息。
-计时器:通过设置定时器和闹钟功能,可以实现计时和提醒功能。
6.注意事项:-正确连接电源和地引脚,确保电源电压在允许范围内。
74HC164 数据手册说明书
74HC1648位串入并出移位寄存器产品说明书说明书发行履历:版本发行时间新制/修订内容2010-01-A 2010-01 更换新模板2012-01-B1 2012-01 增加说明书编号及发行履历1、概 述思扬74HC164是高速CMOS电路,管脚与低功耗肖特基TTL(LSTTL)系列兼容。
74HC164是8位的串入并出、边沿触发的移位寄存器,串入数据由DSA、DSB输入,在每个时钟CP的上升沿数据向右移一位,数据由DSA和DSB相与而成,且在上升沿到来之前已满足了建立时间。
低电平有效的复位信号将直接把寄存器清零而输出为低。
其主要特点如下:●较宽的工作电压:2~6V●相与的串行输入,直接的清零信号●输出能驱动10个LSTTL负载●封装型式:DIP14 / SOP142、功能框图及引脚说明2.3、引脚说明及结构原理图2.4、功能说明h :时钟上升沿前建立起来的高电平电压 L :低电平l :时钟上升沿前建立起来的低电平电压q :对应于时钟上升沿时,前面一个寄存器的状态 ↑:时钟上升沿3、电特性3.1、 极限参数 除非另有规定,T amb =25℃参 数 名 称 符 号条 件最小值最大值单 位电源电压 V CC -0.5 +7 V 输入钳位电流 I IK V I <-0.5V 或V I >V CC +0.5V ±20 mA 输出钳位电流 I OK V O <-0.5V 或V O >V CC +0.5V ±20 mA 输出电流 I O V O = -0.5V ~V CC +0.5V±25 mA VCC 或GND 电流I CC ,I GND±50mA贮存温度 T STG -65 +150 ℃ DIP 封装 245 焊接温度T L10秒SOP 封装250℃3.2、推荐使用条件参数 符号条件最小典型最大单位电源电压 V CC 2.0 5.0 6.0 V 输入电压 V I 0 - V CC V 输出电压 V O 0 - V CC VV CC = 2.0V - - 1000 nsV CC = 4.5V - 6.0 500 ns 输入上升、下降时间tr,tfV CC = 6.0V - - 400 ns工作温度T amb -40 - +85 ℃3.3、电气特性除非另有规定,T amb =25℃规 范 值 参 数 名 称 符 号测 试 条 件最小典型最大单 位直流参数V CC = 2.0V 1.5 - - VV CC = 4.5V 3.15 - - V 高电平输入电压V IHV CC = 6.0V 4.2 - - V V CC = 2.0V - - 0.5 VV CC = 4.5V - - 1.35 V 低电平输入电压V ILV CC = 6.0V -- 1.8 V V I =V IH 或V ILI O =-20μA ;V CC =2.0V1.92.0 - V I O =-20μA ;V CC =4.5V 4.4 4.5 - V I O =-20μA ;V CC =6.0V 5.9 6.0 - V I O =-4mA ;V CC =4.5V3.984.32 - V 高电平输出电压V OHI O =-5.2mA ;V CC =6.0V5.48 5.81 - V V I =V IH 或V ILI O =20μA ;V CC =2.0V- 0 0.1 V I O =20μA ;V CC =4.5V - 0 0.1 V I O =20μA ;V CC =6.0V - 0 0.1 V I O =4mA ;V CC =4.5V - 0.19 0.26 V 低电平输出电压V OLI O =5.2mA ;V CC =6.0V- 0.21 0.26 V 静态电流 I CCV CC =6.0V ;I O =0A ;V I ==V C C或GND-3.9 8μA 输入电容 Ci - 3.5 - pFV M=50%; V I=GND~VCC图1.时钟(CP)到输出端(Qn)的传输延时、时钟脉宽、输出传输时间和最大时钟频率V M=50%; V I=GND~VCC图2.主复位(MR)脉宽,主复位到输出端(Qn)的传输延时、主复位结束到时钟(CP)的响应时间V M=50%; V I=GND~VCC图3. Dn输入前的数据建立时间和保持时间图4.测试开关时间的负载电路注:RT:终端电阻须与信号发生器的输出阻抗匹配CL:负载电容须包括夹具有探针电容4、封装尺寸与外形图4. 1、DIP14外形图与封装尺寸4. 2、SOP14外形图与封装尺寸无锡思扬微电子科技有限公司74HC164数据手册地址:无锡市长江路21-1号创源大厦601室 第11页5、声明及注意事项:5.1、产品中有毒有害物质或元素的名称及含量有毒有害物质或元素部件名称铅(Pb)汞(Hg)镉(Cd)六阶铬(Cr(Ⅵ))多溴联苯(PBBs)多溴联苯醚(PBDEs)引线框○○○○○○塑封树脂○○○○○○芯片○○○○○○内引线○○○○○○装片胶○○○○○○说明○:表示该有毒有害物质或元素的含量在SJ/T11363-2006标准的检出限以下。
DS—DSBLCD显示时间温度可调时
DS—DSBLCD显示时间温度可调时部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改实时时钟芯片DS1302应用,DS18B20应用实例——可调时钟,LCD1602显示:<时间+温度)说明:需要按程序中定义的接口。
按自己接口,只要在程序中修改接口定义即可。
1、DS1302引脚排列:如下图引脚说明:1)Vcc1:后备电源,VCC2:主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
2)X1、X2:振荡源,外接32.768kHz晶振。
b5E2RGbCAP3)RST:复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
p1EanqFDPw4)I/O为串行数据输入输出端(双向)。
2、DS1302的控制字节DS1302 的控制字如下图所示。
控制字节的最高有效位(位7>必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据。
位5至位1指示操作单元的地址。
最低有效位(位0>如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
DXDiTa9E3d3、数据输入输出(I/O>在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作流程:
1,复位:首先对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。
2,存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。
此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。
Copy Scratchpad(将RAM数据复制到EEPROM中)[48H]
此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。
4,控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。
可选择寄生工作方式。
检测温度范围为–55°C~+125°C(–67°F~+257°F)
内置EEPROM,限温报警功能。
64位光刻ROM,内置产品序列号,方便多机挂接。
多样封装形式,适应不同硬件系统。
引脚:
·GND电压地·DQ单数据总线·VDD电源电压·NC空引脚
严格遵循18B20的读写时序来操作。若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。
这个指令后面紧跟着由控制器发出了64位序列号,当总线上有多只DS18B20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。这条指令适应单芯片和多芯片挂接。
Skip ROM(跳跃ROM指令)[CCH]
这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。
工作原理:
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常
温度传感器的种类众多,DALLAS(达拉斯)公司生产的DS18B20温度传感器,体积超小,硬件开销超低,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。
主要特征:
全数字温度转换及输出。
先进的单总线数据通信。
最高12位分辨率,精度可达土0.5摄氏度。
12位分辨率时的最大工作周期为750毫秒。
Search ROM(搜索芯片)[F0H]
在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。
Alarm Search(报警芯片搜索)[ECH]
在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。
DS18B20芯片ROM指令表
(方括号中的为16进制的命令字)
Read ROM(读ROM)[33H]
这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。
Match ROM(指定匹配芯片)[55H]
用于温度报警值储存)的镜像。在个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。
DS18B20芯片存储器操作指令表
Write Scratchpad(向RAM中写数据)[4EH]
这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。
Read Scratchpad(从RAM中读数据)[BEH]