纯单片机干不了大事,必须得配上各种外设,那么了解单片机与传感器之间的数据通信就显得必不可少了。常见的单片机数据通信方式有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 < 8;i++)
{
dsbDQStat(0); //控制器拉低总线
tmp >>= 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 < 8;i++)
{
dsbDQStat(0); //控制器拉低总线
delay15us(); //维持15us
if(dat & 0x01) dsbDQStat(1);
else dsbDQStat(0);
dat >>= 1;
delay45us();
dsbDQStat(1); //45us后释放总线
}
}
DS18B20的三个时序图就分析完了,DS18B20只是单总线数据通信中的一个例子,大家了解了DS18B20时序图的分析,那么就可以试试分析DHT11的时序图完成其初始化函数,以及读数据函数。
关键字:单片机 DS18B20 控制器 数据通信
引用地址:
例说单片机数据通信之单总线数据传输
推荐阅读最新更新时间:2024-03-16 13:42
编写单片机程序为对串行口初始化并读出接收缓冲器的数据
题目:设fosc=11.0592MHz,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1200bps;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。 答案: Baud= 12 smod=1 时,x=208=D0H smod=0 时,x=232=E8H main: mov scon,#01010000b mov tmod,#00100000b mov th1,#0d0h mov tl1,#0d0h clr ea mov pcon,#80h setb tr1 loop: jnb ri,
[单片机]
利用C51单片机模拟SPI进行双机通信
1.1SPI协议简述 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。由Motorola首创。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线。 优缺点: 1.协议简单,相对数据速率高。 2.占用的Pin口较多 3.没有指定的流控制,没有应答机制确认是否接收到数据。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI,SDO,S
[单片机]
调整单片机时钟精度的解决方案
单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。 于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是不尽人意,只好每过一段时间手动调整一次。那么,是否可使时钟走时更精确些呢?现探讨如下: 一、误差原因分析 1.单片机电子时钟的计时脉冲基准,是由外部晶振的频率经过12分频后提供的,采用内部的定时,计数器来实现计时功能。所以,外接晶振频率的精确度直接影响电子钟计时的准确性。 2.单片机电子时钟利用内部定时,计数器溢出产生中断(12MHz晶振一般为50ms)再乘以相应的倍率,来实现秒、分、时的转换。大家都知道,从定时,计数器产生中断请求
[电源管理]
高性能低功耗三相BLDC电机控制系统的设计
BLDC通常使用三个相位(绕组),每个相位具有120度的导通间隔(参见图7)。
图7:六步换向
由于为双向电流,每个相位按照每个导通间隔有两个步骤。这是一种镀锡六步换向。例如,换向相序可为AB-AC-BC-BA-CA-CB。每个导电阶段标记一个步骤,任何时候只能由两个绕组导通电流,第三个绕组悬空。未励磁绕组可用作反馈控制,构成无传感器控制算法特征的基础。
为了保持在转子之前的定子内部的磁场,并产生最佳扭矩,必须在精确的转子位置完成从一个扇形区到另一个的过渡。通过每 60 度转向的开关电路获得最大扭矩。所有开关控制算法均包含在MCU中。微控制器可通过MOSFET驱动器控制开关电路。 MOSFET驱动器 包含适
[嵌入式]
变频空调单片机测控系统的抗干扰设计
摘要: 本文介绍了单片机测控系统抗干扰设计的重要性,分析了单片机测控系统干扰的主要来源,并给出了在抗干扰设计中所遵循的原则和采取的措施。
关键词: 单片机 抗干扰
1 引言
随着科学技术的发展,单片机在各种家电产品中得到了越来越广泛的应用,它的稳定性工作是衡量其质量好坏的重要指标。因此,有效地抑制单片机系统内部和外部的电磁噪声干扰,使单片机系统在实际运行环境中长期可靠地工作,是一个亟待解决的电磁兼容问题。
在我们设计的变频空调电控系统中,由于其所处环境比较恶劣,特别是在冬季与夏季强功率运行时,由压缩机、风机高速运转所引起的机械振动,电器设备(如斩波器、电动机等)所产生的干扰,室内外环
[传感技术]
PIC单片机+LCD12864显示汉字程序
#include pic.h #define RS RD2 #define CS2 RD1 #define CS1 RD0 #define E RD4 #define RW RD3 #define BUSY RC7 const unsigned char tab2 ={ /*-- 文字: 福 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x08,0x08,0x89,0xCE,0x28,0x18,0x02,0x7A,0x4A,0x4A,0x4A,0x4A,0x4A,0x7A,0x02,0x00, 0x02,0x01,0x00,0xFF,0x01,0x02,0xF
[单片机]
MSP430液晶SED1335控制器程序
//------------------------------------------------------------ // MSP 430子程序(液晶控制器子程序) //声明:转载请保留以上信息,用于商业用途,请联系作者 //------------------------------------------------------------ // Control SED1335 // Function show //------------------------------------------------------------ #define WC_ADD XBYTE #define WD_ADD XB
[单片机]
Microchip推出集成微型FPGA的PIC16 微控制器,售价不到 50 美分
编译自EEJOURNAL Microchip 现在提供一款基于闪存的微控制器,集成可编程逻辑块,其售价不到50美分。 Microchip PIC16F13145 系列的九个新产品,与其他型号16F系列采用相同的 8 位 RISC 微处理器架构,但它们还集成了一个新的可编程逻辑块,称为可配置逻辑块 (CLB)。 PIC16F13145 微控制器系列中的器件采用 8、14 和 20 引脚封装,具有 3.5 至 14 KB 闪存和 256 至 1024 字节 RAM。 Microchip PIC1613145 微控制器系列的九个成员具有相同的内部架构,但具有不同数量的 RAM 和闪存,并提供不同的封装,具体取决于您应用的 I/O
[单片机]