单片机数据通信之单总线数据传输分析

发布者:咖啡小熊最新更新时间:2015-04-02 来源: eechina关键字:单片机  数据通信  单总线  数据传输 手机看文章 扫描二维码
随时随地手机看文章
纯单片机干不了大事,必须得配上各种外设,那么了解单片机与传感器之间的数据通信就显得必不可少了。常见的单片机数据通信方式有SPI,IIC,RS232,单总线等等。每种通信方式都有相应的时序图,分析时序图并完成代码的编写是单片机学习者的必修课。本文以DS18B20为例分析一下单总线数据传输。
DS18B20是单总线数据传输,因此对于时序的要求就非常的高,学会分析其时序图是非常有必要的。




1.初始化时序图分析:




首先是由总线控制器拉低总线,维持480us。在480us后释放总线,由上拉电阻讲总线拉高。等待5-60us后,DS18B20开始响应,会将数据总线拉低60-240us.之后便释放总线,由上拉电阻拉高总线。转换为代码如下:
u8 dsbInit() //初始化,返回0表示DS18B20无反应,反之有响应
{
dsbDQStat(0); //控制器拉低总线
delay500us(); //拉低总线一段时间
dsbDQStat(1); //释放总线
delay60us(); //等待DS18B20响应
if(dsb_DQ) //如果没有相应直接返回0
{
return 0;
}
delay240us(); //有响应则等待响应结束
return 1; //返回初始化状态
}
2.读时序图分析:




首先由控制器将总线拉低>1us的时间,此时控制器释放总线,如果此时控制器采样为低电平,那么读到的值便是0,如果为高电平,则读到的值为1。注意图中标有一个15us,其意思便是控制器采样在15us内完成。15us后是由上拉电阻将总线拉高维持45us。整个读周期为15+45=60us。这个周期的时间也是得控制的。转换为代码如下:
u8 dsbReadByte() //读出一个字节的数据,从低位开始读取
{
u8 i,tmp = 0;
for(i = 0;i >= 1; //低位开始读
dsbDQStat(1); //释放总线
if(dsb_DQ) tmp |= 0x80;
delay15us();
delay45us(); //控制周期时间
}
return tmp;
}
3.写时序图分析:




首先由控制器拉低总线15us,之后,如果要写入0,则继续拉低总线并为此45us.如果要写入1则释放总线由上拉电阻拉高总线,也为此45us。写时序相对比较简单,转换为代码如下:
void dsbWriteByte(u8 dat)//写一个字节的数据,从低位开始
{
u8 i;
for(i = 0;i >= 1;
delay45us();
dsbDQStat(1); //45us后释放总线
}
}
DS18B20的三个时序图就分析完了,DS18B20只是单总线数据通信中的一个例子,大家了解了DS18B20时序图的分析,那么就可以试试分析DHT11的时序图完成其初始化函数,以及读数据函数。
关键字:单片机  数据通信  单总线  数据传输 引用地址:单片机数据通信之单总线数据传输分析

上一篇:单片机功耗的计算办法
下一篇:例说单片机数据通信之模拟IIC通信

推荐阅读最新更新时间:2024-03-16 13:56

使用单片机STM8S 驱动 CT1642
/*定义LED 数码管的位数,本驱动只实现3位和4位的操作,所以LED_BIT_COUNT的值只能是3或4*/ #define LED_BIT_COUNT 4 /****************************************************************************************************** ***************** * 按键值定义 *********************************************************
[单片机]
解读ARM7内核微控制器以太网接口电路
芯片可以实现最高60MHz的工作频率,有着较强的功能,能够满足嵌入式系统μC/OS—II及人性化的人机界面的要求。本设计中 LPC2148所有的接口都有使用。 以太网接口部分采用了具有SPI接口的集成MAC 和10 BASE-T PHY的ENC28J60。大大地减小了主控制器I/O口的开销。ENC28J60 符合IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。 它还提供了一个内部DMA 模块,以实现快速数据吞吐和硬件支持的IP校验和计算。 与主控制器的通信通过两个中断引脚和SPI 实现,数据传输速率高达10 Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。 LED模块采用
[单片机]
解读ARM7内核<font color='red'>微控制器</font>以太网接口电路
基于单片机的数控开关电源系统设计
本文介绍了一种基于单片机控制的数控开关电源,以89C51单片机作为控制核心,对开关变换电路进行脉宽调制,构成一个智能闭环控制系统。单片机控制的开关电源具备更加完善的功能,更人性化、智能化,便于实时监控。其功能主要包括对开关电源输出电压进行检测,并显示实时电压值;通过按键进行编程预置期望输出的电压;通过A/D转换器采样输出电压,根据PID算法计算控制量修改占空比,以得到期望的输出电压,并通过PID算法控制输出电压稳定在设定的电压值上;拥有可靠的过流保护功能以及辅助电源可同时作为电源输入和给单片机提供工作电压,并可以通过键盘不断改变PID参数,可以进行实时调整。 假设基准电压为5v,由于电网波动导致输入电压减小,那么输出电压也将会
[单片机]
基于<font color='red'>单片机</font>的数控开关电源系统设计
单片机协处理器在电力系统中的应用
摘要:单片机协处理器能分担主处理器的部分工作,使电力测控系统在运行速度、功能需求等性能上有明显的改善。 关键词:单片机协处理器 硬件略图 软件 前言 在电力测量及保护系统中,通常是由单片机构成数个乃至数十个前端处理器。它们通过串行通信与微机构成的中央处理器相连接,形成一个完整的系统,以实现对电力系统的遥测、遥信、遥调、遥控等功能。 前端处理器的核心就是单片机,从目前的情况来看,以Intel公司的16位单片机80C196系列(KB、KC等)应用最广。单片机要处理的问题很多。如I/O量、A/D模数转换、键盘、通信、显示等,处理一圈所花费的时间常称之为前端处理器的运行周期。在整个系统中,前端处理器的数量较多,中央处理器对其进行巡
[单片机]
AT89C系列单片机加解密原理
单片机解密简单就是擦除单片机片内的加密锁定位。由于AT89C系列单片机擦除操作时序设计上的不合理。使在擦除片内程序之前首先擦除加密锁定位成为可能。AT89C系列单片机擦除操作的时序为:擦除开始---- 擦除操作硬件初始化(10微秒)---- 擦除加密锁定位(50----200微秒)--- 擦除片内程序存储器内的数据(10毫秒)----- 擦除结束。如果用程序监控擦除过程,一旦加密锁定位被擦除就终止擦除操作,停止进一步擦除片内程序存储器,加过密的单片机就变成没加密的单片机了。片内程序可通过总线被读出。对于AT89C系列单片机有两种不可破解的加密方法。 一、永久性地破坏单片机的加密位的加密方法。简称OTP加密模式。 二、永久性地破坏单片
[单片机]
基于微控制器的OLED光电性能综合测试系统
  1 引言   有机发光二极管(organic light emitting diode,OLED)是一种新型的平板显示器件和二维光源。通过测试OLED器件的电流-电压特性、发光亮度-电压特性、温度-电流特性、发光效率-电压特性、色坐标以及电致发光光谱等,可判断器件发光性能和电学性能的好坏,并计算出其外部量子效率和能量转换效率。目前较普遍的是采用直流电压表、电流表来测定OLED器件的电流、电压特性。利用微弱光光度计测定样品的发光亮度,利用温度采集仪测量样品的温度。   然后将数据输入到计算机进行后续分析处理,获得样品的光电性能。这种测量方法,电压、电流、亮度、温度等物理量无法实现同时测量,且误差大,效率低;数据采集量及采集
[电源管理]
基于<font color='red'>微控制器</font>的OLED光电性能综合测试系统
单片机以太网控制芯片W7100A数据手册(二)
昨天给大家介绍了W7100A结构以及存储器的部分,今天继续介绍有关中断、I/O端口及定时器的部分。 3. 中断 中断引脚的功能在下表中介绍,所有引脚都是单向的。没有三态信号。 表3.1 外部中断引脚描述 W7100A内核由两级中断优先级控制,通过设置或清除对应的IP(0xB8)和EIP(0xF8)寄存器的中断优先级位,每一个外部中断可以设置为高优先级或低优先级。外部中断引脚可以是下降沿触发或低电平触发。中断请求在系统时钟的上升沿采样。 表3.2 W7100A中断总结 通过改变IE(0xA8)和EIE(0xE8)对应位的值,每个中断向量都可以独立打开或关闭。IE寄存器包括一个中断总开关EA位,可以禁止(设置为
[单片机]
<font color='red'>单片机</font>以太网控制芯片W7100A数据手册(二)
清翔51单片机5个中断所涉及的寄存器
定时器对片内时钟脉冲计数,计数器对外部脉冲计数。 51单片机有两个16位定时器/计数器:定时器0P3.4 定时器1 P3.5 3.0 RXD串行口输入 3.1 TXD 3.2 外部中断0 3.3 外部中断1 3.4 T0 3.5 T1 3.6 WR外部写控制 3.7 RD外部读控制 我们通过单片机的晶振频率得知其时钟周期,再尤其乘以12得到机器周期。每一个机器周期在寄存器内+1,直到加满溢出产生中断 100MHZ 周期=1/频率 t=1/100M=10^-8(s)=10ns 1.在定时模式,每经过一个机器周期,计数器的值就加一,寄存器装满的时候溢出 单次最高定时时间为65535*1.085us 2.在计数模式P
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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