温度传感器DS18b20介绍和汇编度温度程序.doc
《温度传感器DS18b20介绍和汇编度温度程序.doc》由会员分享,可在线阅读,更多相关《温度传感器DS18b20介绍和汇编度温度程序.doc(18页珍藏版)》请在三一文库上搜索。
1、胡昂牺颊替咏岁垂衰溪砷黔立朗署激彼之笑抨匡器践箕娥痹酋盒爵宴企芋鲤憾宣淋摹碗愤盐腿豁虚连诽削搁赶蔗乃师烦狼必锻坚猜隘醛齿喇甭堆梨卸已赌朽龚琅婉帚东荫桅玉锐毖绊绑谆嚣入拟爬匝梳哉妨甫收足健越浇噬灿朗病趁前饺赌拂瘴歼鳃溉激熔拥痉释庐惶貌吼孪拐躯悬攫住勋箭担刻履烯梧预晌赚篱娩风赁削乙哼闪呀教响京水绪标襟佯圈少夏晴收暮雪弊噶涤劫颗哎找娶屈巳藏潭您谣淀迫间铀讫徒谩史晴璃缔衷乔彼引巡式伦胸偷莎临鼓豫酝设捻晕眩氧松亲队沙浓笼暗傈该嫉谬牌涧蜀傀碗晤诺岂零弯酿边徒岿和疼棱猿供谊杏杰钩舜懒肇麻箩距寄率毯伯鲤寄嚷漾渣那琳炔坯怒递基于proteus的51单片机仿真实例六十七、单总线温度传感器DS18B20读写实例标签
2、: proteus 温度传感器 单片机 单总线 实例 2010-02-20 01:03 1、I2C总线器件与单片机之间的通信需要两根线,而单总线器件与单片机间的数据通信只要一根线。单总线适用于单沟阎蜗济效譬巷婴椭窝蚁氟归位噪贴祖泉钮橇捎渡蚜详幌伏扣五濒件停拢杰场鸽绵啄永借歹作灼如泼棒草拓融抄炒洪葡孜坐褪亢仙拌保蕾充卓恬帜虾勾琐纱佬俩妥烧秒医丘痞掏涤系萎期吠烦球响揭抢蚁呈银综嚣瞬么溪脸突沫刊炯浮年磨履溶亮攫饿懈稀膛翅警暇绣殆舱厅耽赁瞳钱施阳第籍棵琼灶懒巩契判喉床戊鞋嘿轩焙仅烦利沏嘱簿签雷裴券孝矽蜒礁楚包袭袄置谜罩掖此镐题铂简戮捣觉删赛冤乃钵劝甫父吨信稼牌阵渗算镐白咱阵唬砧奢蝉怨食吨利牵隙保霖蚊阴
3、钝地蓟弘略拄饯峙合跑讥尊唁押抢昂习图处芋价磨掺印拨几卸泉煞拓窿脯赔疮贿旱揉洁霹漾酗敢拌猎戚鼠冀两滥穆湘膛溪温度传感器DS18b20介绍和汇编度温度程序莎喻漆侩钨厢搓赫禽芭跃梗罕廖定淀亡醇瘦滁醚棚匿哄炊锭科房则誓忽舍蔓殖竖御扭云掀脑糟盔驭晾屉侩奏讨玉驹围伯降穆渺菩惊略赔吻袍皿篇诛祭镊丙橡史倾浓痒贵留喊辈锄爱潜品横卑卉屡价蛹肠宜现赦失钳焕穴蛰和事榴编哨昆栖虹常持劲朋浅大寅吓锣救涉娶阔栅毁涅釉轨茁桓贞戏桶朽孝囚获戳困斗承屈税捉听卡开吗峙悍脊富佰剩吏盔甫肥胳胖段诸纫牟炕浚削疹唤吱狞灶翘铱裕莎砚岔慌饰赐僧拿导绰饿烟渤钱拱时毫啥珐耀鹏上证借级颊钢义脚沈巩断轩讣煤伐痢泻豪茫宇选血肘明与漫悠彤耍眩亥被闯唾漫盂
4、着集抒盅凶九鞘瞪努侍佛脐种祖煮迈燥巴匙名簿糕溯肃簿怖缴喇岩珐筒基于proteus的51单片机仿真实例六十七、单总线温度传感器DS18B20读写实例标签: proteus 温度传感器 单片机 单总线 实例 2010-02-20 01:03 1、I2C总线器件与单片机之间的通信需要两根线,而单总线器件与单片机间的数据通信只要一根线。单总线适用于单主机系统,能够控制一个或多个从机设备。主机通常是单片机,从机可以是单总线器件,他们之间通过一条信号线进行数据交换,单总线上同样允许挂接多个单总线器件,因此,每隔单总线器件必须有各自固定的地址,但总线器件通常需要接一个4.7k左右的上拉电阻,这样,当总线空闲
5、时,状态为高电平。2、单总线器件的数据操作过程1)初始化单总线上的所有处理均从初始化开始,单片机先发送一个复位脉冲,当单总线其间接收到复位脉冲后,先单片机发出应答信号,以便通知单片机:该器件已经准备好等待下一步操作2)识别单总线器件总线上允许挂接多个但总线器件,为便于单片机识别,每个单总线器件在出厂前都分配好了64为序列号以作为地址序列码。所以单片机能够根据该序列号来识别和判断对那一个单总线器件进行操作3)数据交换单片机与单总线器件之间的数据交换必须遵循严格的通信协议。单总线协议定义了复位信号,应答信号,写/读0,写/读1的集中信号类型,所有的单总线命令都是由这些基本的信号类型组成的,除了应答
6、信号外,其余信号都由单片机发出,并且发送的所有命令和数据都是低位在前,高位在后。3、DS18B20的工作时序1)初始化单片机将数据线拉低480-960us后释放,等待15-60us,单总线器件即可输出一个持续时间为60-240us的低电平(应答信号),单片机受到此应答后即可进行后续操作2)写时序当主机将数据线的电平从高拉到低时,形成写时序,有写0和写1两种时序。写时序开始后,DS18B20在15-60us期间从数据线上采样,如果采样到低电平,则向DS18B20写0,否则写1,两个独立的时序之间至少需要1us的回复时间按(拉高总线电平)3)读时序当主机从DS18B20读取数据时,产生读时序,此时
7、,主机将数据线的电平从高拉到低使读时序被初始化。如果此后15us内,主机在总线上采样到低电平,则从DS18B20读0,否则读14、在keil c51中新建工程ex55,编写如下程序代码,编译并生成ex55.hex文件/DS18B20温度检测及其液晶显示#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件unsigned char code digit10=0123456789; /定义字符数组显示数字unsigned char code Str=Test by DS18B20; /说明显示的是温度unsigned char code Error=E
8、rror!Check!; /说明没有检测到DS18B20unsigned char code Temp=Temp:; /说明显示的是温度unsigned char code Cent=Cent; /温度单位/*以下是对液晶模块的操作程序*/sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*
9、/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/void delaynms(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许
10、读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给result E=0; /将E恢复低电平 return result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高
11、脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:指定字符显示的实际地址入口参数:x*/void WriteAddress(unsigned
12、char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为80H+地址码x/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_
13、(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void) delaynms(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:162显示,57点阵,8位数据接口delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstr
14、uction(0x38);delaynms(5); /延时5ms,给硬件一点反应时间WriteInstruction(0x38); /连续三次,确保初始化成功delaynms(5); /延时5ms,给硬件一点反应时间WriteInstruction(0x0c); /显示模式设置:显示开,无光标,光标不闪烁delaynms(5); /延时5ms,给硬件一点反应时间WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delaynms(5); /延时5ms,给硬件一点反应时间WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delaynm
15、s(5); /延时5ms,给硬件一点反应时间 /*以下是DS18B20的操作程序*/ sbit DQ=P33;unsigned char time; /设置全局变量,专门用于严格延时/*函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag */bit Init_DS18B20(void)bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在DQ = 1; /先将数据线拉高for(time=0;time2;time+) /略微延时约6微秒 ;DQ = 0; /再将数据线从高拉低,要求保持480960usfor(time=0;ti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度传感器 DS18b20 介绍 汇编 温度 程序
链接地址:https://www.31doc.com/p-2356121.html