【教学课件】第四章C51程序设计-2实例.ppt
《【教学课件】第四章C51程序设计-2实例.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章C51程序设计-2实例.ppt(48页珍藏版)》请在三一办公上搜索。
1、第四章 C51程序设计-2实例,开题报告第6,9,10,12还没有发给齐老师,明天下午5:00之前必须交给齐老师。,1-wire总线及应用,一根数据线。设备(主机或从机)通过一个漏极开路端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。1-wire总线端口为漏极开路,单总线要求外接一个约5k 的上拉电阻,这样单总线的闲置状态为高电平。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前,高位在后。典型的单总线命令序列第一步 初始化;第二步 ROM 命令 跟随需要交换的数据;第三步 功能命令 跟随需要交换的数据;,实例:DS1
2、8B20单线温度传感器,主要特征全数字温度转换及输出。1-wire总线数据通信。最高12位分辨率,精度可达土0.5摄氏度。12位分辨率,最大工作周期为750毫秒。检测温度范围为-55+125。内置EEPROM,限温报警功能。64位光刻ROM,内置产品序列号,方便多机挂接。多样封装形式,适应不同硬件系统。,DS18B20工作原理,三种形态的存储器资源ROM 只读存储器,用于存放DS18B20ID编码。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据。R
3、AM及EEPROM结构图:,控制器对18b20操作流程复位:给DS18B20单总线至少480uS的低电平信号。存在脉冲:复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。控制器发送ROM指令:ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。(一般只挂接单个18B20芯片时可以跳过ROM指令)控制器发送存储器操作指令:分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。执
4、行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。,几种时间隙,DS18B20复位及应答关系写时间隙,读时间隙,注意:必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。,DS18B20与单片机接法,示例程序:,void Init_DS18B20(void)/18b20初始化 DQ=1;/DQ复位_nop_();_nop_();_nop_();DQ=0;/拉低DQ delay(200);/约600usDQ=1;/拉高总线 delay(20);/75us,30:100us,uchar Read_byte(void)/读一字节 uchar
5、i=0;uchar dat=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();_nop_();_nop_();DQ=0;/从高拉到低,产生读时间隙_nop_();_nop_();/至少保持低电平1us_nop_();_nop_();_nop_();_nop_();dat=1;/右移一位DQ=1;/15us内停止将DQ拉低,15us内数据有效_nop_();_nop_();/稍作延时_nop_();_nop_();if(DQ)/若高电平 置1dat|=0 x80;delay(30);/至少保持60us,100us,确保读数据成功 DQ=1;/结束拉高 return(dat
6、);,void Write_byte(uchar dat)/写一个字节 uchar i=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();/稍作延时 _nop_();_nop_();_nop_();_nop_();DQ=0;/拉低DQ开始写 _nop_();_nop_();_nop_();_nop_();/15us内释放总线 _nop_();_nop_();_nop_();_nop_();DQ=dat,uint Get_Temperature(void)/读温度函数 uchar a=0;uchar b=0;uint t=0;Init_DS18B20();Write_by
7、te(0 xCC);/只接一个18b20芯片,skip ROM Write_byte(0 x44);/温度转换 delay(200);/延时600us 等待转换完成,一般转换时间为500us Init_DS18B20();Write_byte(0 xCC);/skip ROM Write_byte(0 xBE);/从RAM读数据 a=Read_byte();/先读低位 b=Read_byte();/再读高位 t=b8;t=t|a;/t为最后读得的数据 return(t);,双向二线制串行通信总线,时钟线SCL,数据线SDA。NXP 半导体(原Philips 半导体)于20 多年前发明。I2C总
8、线是同步串行数据传输总线。经常使用的带I2C总线通用外围器件有:SRAM、E2PROM、ADC/DAC、RTC、I/O口等。带I2C总线的外围设备模块有由LED驱动控制器构成的LED显示器,由各种LCD驱动控制器构成的段式、字符点阵、图形点阵液晶显示器等。,I2C总线及应用,I2C 总线的信号线I2C 总线只需要由两根信号线组成,一根是串行数据线SDA,另一根是串行时钟线SCL,均为为开漏结构,故总线上必须有上拉电阻Rp,通常可选510k。,I2C总线时序定义:起始条件和停止条件(START and STOP conditions)起始条件:当SCL 处于高电平期间时,SDA 从高电平向低电平
9、跳变时产生起始条件。总线在起始条件产生后便处于忙的状态。起始条件常常简记为S。停止条件:当SCL 处于高电平期间时,SDA 从低电平向高电平跳变时产生停止条件。总线在停止条件产生后处于空闲状态。停止条件简记为P。,I2C 总线上数据的有效性(Data validity)数据线SDA 的电平状态必须在时钟线SCL 处于高电平期间保持稳定不变。SDA 的电平状态只有在SCL 处于低电平期间才允许改变。但是在I2C 总线的起始和结束时例外。,从机地址(Slave Address)I2C 总线不需要地址译码器和片选信号。多个具有I2C 总线接口的器件都可以连接到同一条I2C 总线上,它们之间通过器件地
10、址来区分。主机是主控器件,它不需要器件地址,其它器件都属于从机,要有器件地址。必须保证同一条I2C 总线上所有从机的地址都是唯一。一般从机地址由7 位地址位和一位读写标志R/W 组成,7 位地址占据高7 位,读写位在最后。读写位是0,表示主机将要向从机写入数据;读写位是1,则表示主机将要从从机读取数据。从机地址由一个固定和一个可编程的部分构成。从机地址的可编程部分使最大数量的相同器件可以连接到I2C 总线上,器件可编程地址位的数量由管脚决定,如果器件3 个可编程的地址管脚,那么I2C总线上共可以连接8 个相同的器件。,I2C数据传输的方式以字节(Byte)为单位收发数据。首先传输的是数据的最高
11、位(MSB,第7 位),最后传输的是最低位(LSB,第0 位)。另外,每个字节之后还要跟一个响应位,称为应答。应答(Acknowledge)每传输一个字节,要跟一个应答状态位。接收器接收数据的情况可通过应答位来告知发送器。应答位的时钟脉冲由主机产生,而应答位的数据状态则遵循“谁接收谁产生”的原则,即总是由接收器产生应答位。主机向从机发送数据时,应答位由从机产生;主机从从机接收数据时,应答位由主机产生。I2C总线上第9个脉冲对应应答位,SDA为0 表示接收器应答(ACK),A;为1 则表示非应答(NACK),/A。,基本的数据传输格式,主机向从机发送数据的基本格式,主机从从机接收数据的基本格式,
12、注意:主机向从机发送最后一个字节的数据时,从机可能应答也可能非应答,但不管怎样主机都可以产生停止条件。如果主机在向从机发送数据(甚至包括从机地址在内)时检测到从机非应答,则应当及时停止传输。,数据传输时序图,主机向从机写数据(24LC01),主机读从机数据(24LC01),EEPROM 24LC01B,主要特征低至2.5V的单电源供电;低功耗的CMOS技术;128 bytes(1288)的存储块;标准2线串行接口总线,I2C总线;兼容100 kHz(2.5V)、400kHz(5.0V);高达8 bytes的页写入缓存;2 ms页写入时间周期;硬件写保护。,硬件电路,I2C通过IO口模拟,voi
13、d Start(void)/起始信号Sda=1;Scl=1;delay1us();Sda=0;delay1us();,void Stop(void)/停止Sda=0;Scl=1;delay1us();Sda=1;delay1us();,void Ack(void)/应答Sda=0;delay1us();Scl=1;delay1us();Scl=0;void NoAck(void)/不应答Sda=1;delay1us();Scl=1;delay1us();Scl=0;,void Send(unsigned char Data)/发送字节unsigned char xdata BitCounter
14、=8;unsigned char xdata temp;dotemp=Data;Scl=0;delay1us();if(temp,unsigned char Read(void)/读取字节unsigned char xdata temp=0;unsigned char xdata temp1=0;unsigned char xdata BitCounter=8;Sda=1;doScl=0;delay1us();Scl=1;delay1us();if(Sda)temp=temp|0 x01;elsetemp=temp,void WrToROM(unsigned int Data_Write,un
15、signed char Address)/Data_Write:要写的整数,Address:写入的起始地址unsigned char xdata Temp_Data;Start();Send(0 xa0);Ack();Send(Address);Ack();Temp_Data=(Data_Write8),unsigned int RdFromROM(unsigned char Address)/读取数据unsigned int xdata Temp_Data;Start();Send(0 xa0);Ack();Send(Address);Ack();Start();Send(0 xa1);Ac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 C51 程序设计 实例
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5664827.html