第四章c51程序设计-2实例

第四章c51程序设计-2实例

ID:1166681

大小:1.19 MB

页数:48页

时间:2017-11-08

第四章c51程序设计-2实例_第1页
第四章c51程序设计-2实例_第2页
第四章c51程序设计-2实例_第3页
第四章c51程序设计-2实例_第4页
第四章c51程序设计-2实例_第5页
资源描述:

《第四章c51程序设计-2实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章C51程序设计-2实例开题报告第6,9,10,12还没有发给齐老师,明天下午5:00之前必须交给齐老师。1-wire总线及应用一根数据线。设备(主机或从机)通过一个漏极开路端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。1-wire总线端口为漏极开路,单总线要求外接一个约5k的上拉电阻,这样单总线的闲置状态为高电平。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前,高位在后。典型的单总线命令序列第一步初始化;第二步

2、ROM命令跟随需要交换的数据;第三步功能命令跟随需要交换的数据;实例:DS18B20单线温度传感器主要特征全数字温度转换及输出。1-wire总线数据通信。最高12位分辨率,精度可达土0.5摄氏度。12位分辨率,最大工作周期为750毫秒。检测温度范围为-55℃~+125℃。内置EEPROM,限温报警功能。64位光刻ROM,内置产品序列号,方便多机挂接。多样封装形式,适应不同硬件系统。DS18B20工作原理三种形态的存储器资源ROM只读存储器,用于存放DS18B20ID编码。RAM数据暂存器,用于内

3、部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据。RAM及EEPROM结构图:控制器对18b20操作流程复位:给DS18B20单总线至少480uS的低电平信号。存在脉冲:复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。控制器发送ROM指令:ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是

4、读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。(一般只挂接单个18B20芯片时可以跳过ROM指令)控制器发送存储器操作指令:分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。几种时间隙DS18B20复位及应答关系写时间隙读时间隙注意:必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。DS18

5、B20与单片机接法示例程序:voidInit_DS18B20(void)//18b20初始化{DQ=1;//DQ复位_nop_();_nop_();_nop_();DQ=0;//拉低DQdelay(200);//约600usDQ=1;//拉高总线delay(20);//75us,30:100us}ucharRead_byte(void)//读一字节{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();_nop_();_nop_();

6、DQ=0;//从高拉到低,产生读时间隙_nop_();_nop_();//至少保持低电平1us_nop_();_nop_();_nop_();_nop_();dat>>=1;//右移一位DQ=1;//15us内停止将DQ拉低,15us内数据有效_nop_();_nop_();//稍作延时_nop_();_nop_();if(DQ)//若高电平置1dat

7、=0x80;delay(30);//至少保持60us,100us,确保读数据成功}DQ=1;//结束拉高return(dat);}voidWri

8、te_byte(uchardat)//写一个字节{uchari=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//稍作延时_nop_();_nop_();_nop_();_nop_();DQ=0;//拉低DQ开始写_nop_();_nop_();_nop_();_nop_();//15us内释放总线_nop_();_nop_();_nop_();_nop_();DQ=dat&0x01;//从lsb开始delay(20);//75us至少需保持60us写时间隙da

9、t>>=1;//右移一位}DQ=1;//结束拉高delay(4);}uintGet_Temperature(void)//读温度函数{uchara=0;ucharb=0;uintt=0;Init_DS18B20();Write_byte(0xCC);//只接一个18b20芯片,skipROMWrite_byte(0x44);//温度转换delay(200);//延时600us等待转换完成,一般转换时间为500usInit_DS18B20();Write_byte(0xCC);//skipROMW

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。