DS18B20温度传感器流程图讲课稿
- 格式:doc
- 大小:706.50 KB
- 文档页数:7
第讲如何使用DS18B20温度传感器教学方法:讲授法授课时数:2学时教学目的:1、掌握DS18B20的硬件结构2、掌握DS18B20的操作时序3、初步DS18B20的使用编程方法教学重点:DS18B20的使用编程方法教学难点:DS18B20的使用编程方法教学环节:组织教学:检查学生人数,强调作业要求。
新授课:DS18B20的使用编程方法教学目的:1、……..2、……. 教学重点作业一、DS18B20的硬件结构1、……2、……3、……..二、DS18B20的操作时序1、…….2、…….3、……... 三、DS18B20的使用编程方法1、…….2、…….参考资料:DALLAS 达拉斯公司的相应产品资料;《数字温度传感器DS1820(DS18B20)的应用》Skyle整理----skyle@-----有不对之处请来信指正一、DS18B20的硬件结构每只D51820都可以设置成两种供电方式即数据总线供电方式和外部供电方式采取数据总线供电方式可以节省一根导线但完成温度测量的时间较长采取外部供电方式则多用一根导线但测量速度较快DSl820中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号1号存贮器存放温度值的符号如果温度为负()则1号存贮器8位全为1否则全为00号存贮器用于存放温度值的补码LSB(最低位)的1表示0.5将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-550-125)温度计算1、Ds1820用9位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度S=1正温度S=0如00AAH为+85,0032H为25FF92H为552、Ds18b20用12位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度S=1正温度S=0如0550H为+850191H为25.0625,FC90H为-55二、DS18B20的操作时序DSl820工作过程及时序DSl820工作过程中的协议如下初始化、ROM操作命令、存储器操作命令、处理数据1、初始化单总线上的所有处理均从初始化开始2、ROM操作品令总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如指令代码Read ROM(读ROM) [33H]Match ROM(匹配ROM) [55H]Skip ROM(跳过ROM] [CCH]Search ROM(搜索ROM) [F0H]Alarm search(告警搜索) [ECH]3、存储器操作命令指令代码Write Scratchpad(写暂存存储器) [4EH]Read Scratchpad(读暂存存储器) [BEH]Copy Scratchpad(复制暂存存储器) [48H]Convert Temperature(温度变换) [44H]Recall EPROM(重新调出) [B8H]Read Power supply(读电源) [B4H]4、时序主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位(1)、初始化时序见图2.25-2主机总线to时刻发送一复位脉冲(最短为480us的低电平信号)接着在tl 时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS1820在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示以下子程序在MCS51仿真机上通过其晶振为12M.初始化子程序RESETPUSH B ;保存B寄存器PUSH A 保存A寄存器MOV A,#4 ;设置循环次数CLR P1.0 ;发出复位脉冲MOV B,#250 ;计数250次DJNZ B,$ ;保持低电平500usSETB Pl.0 ;释放总线MOV B,#6 ;设置时间常数CLR C ;清存在信号标志WAITL: JB Pl.0,WH ;若总线释放跳出循环DJNZ B,W AITL ;总线低等待DJNZ ACC,W AITL;释放总线等待一段时间SJMP SHORTWH: MOV B,#111WH1: ORL C,P1.0DJNZ B,WH1 ;存在时间等待SHORT: POP APOP BRET(2)写时间隙当主机总线t o时刻从高拉至低电平时就产生写时间隙见图2253图2254从to时刻开始15us 之内应将所需写的位送到总线上DSl820在t后15-60us间对总线采样若低电平写入的位是0见图2253若高电平写入的位是1见图2254连续写2位间的间隙应大于1us写位子程序(待写位的内容在C中)WRBIT:PUSH B ;保存BMOV B,#28 ;设置时间常数CLR P1.0 ;写开始NOP ;1usNOP ;1usNOP ;1usNOP ;1usN0P ;1usMOVPl.0,C ;C内容到总线WDLT: DJNZ B,WDLT;等待56UsPOP BSETB Pl.0 ;释放总线RET ;返回写字节子程序(待写内容在A中):WRBYTB:PUSH B :保存BMOV B#8H ;设置写位个数WLOP: RRC A ;把写的位放到CACALL WRBIT ;调写1位子程序DJNZ BWLOP ;8位全写完?POP BRET(3)读时间隙见图2255主机总线to时刻从高拉至低电平时总线只须保持低电平l 7ts之后在t1时刻将总线拉高产生读时间隙读时间隙在t1时刻后t 2时刻前有效t z距to为15捍s也就是说t z时刻前主机必须完成读位并在t o后的60尸s一120 fzs内释放总线读位子程序(读得的位到C中)RDBIT:PUSH B ;保存BPUSH A ;保存AMOV B,#23 ;设置时间常数CLR P1.0 ;读开始图2255的t0时刻NOP ;1usNOP ;1usNOP ;1usNOP ;1usSETB Pl.0 ;释放总线MOV A,P1 ;P1口读到AMOV C,EOH ;P1.0内容CNOP ;1usNOP ;1usNOP ;1usNOP ;1usRDDLT: DJNZ B,RDDLT ;等待46usSETB P1.0POP APOP BRET读字节子程序(读到内容放到A中)RDBYTE:PUSH B ;保存BRLOP MOV B,#8H ;设置读位数ACALL RDBIT ;调读1位子程序RRC A ;把读到位在C中并依次送给ADJNZ B,RLOP ;8位读完?POP B ;恢复BRET三、DS18B20的使用编程方法温度转换和读取;|----------------------------------------------------------------------------------------------| ;| 获取单个ds1820转化的温度值的应用程序,P1.6接ds1820 |;|----------------------------------------------------------------------------------------------| ORG 0000HAJMP MAINORG 0020HMAIN:MOV SP,#60HLCALL GET_TEMPSJMP $GET_TEMP:CLR PSW.4SETB PSW.3 ;设置工作寄存器当前所在的区域CLR EA ;使用ds1820一定要禁止任何中断产生LCALL INT ;调用初使化子程序MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A, #44HLCALL WRITE ;送入温度转换命令LCALL INT ;温度转换完全,再次初使化ds1820MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A,#0BEHLCALL WRITE ;送入读温度暂存器命令LCALL READMOV R7,A ;读出温度值低字节存入R7LCALL READMOV R6,A ;读出谩度值高字节存入R6SETB EARETINT: ;初始化ds1820子程序CLR EAL0:CLR P1.6 ;ds1820总线为低复位电平MOV R2,#200L1:CLR P1.6DJNZ R2,L1 ;总线复位电平保持400usSETB P1.6 ;释放ds1820总线MOV R2,#30L4:DJNZ R2,L4 ;释放ds1820总线保持60usCLR C ;清存在信号ORL C,P1.6JC L0 ;存在吗?不存在则重新来MOV R6,#80L5:ORL C,P1.6JC L3DJNZ R6,L5SJMP L0L3:MOV R2,#240L2:DJNZ R2,L2RETWRITE: ;向ds1820写操作命令子程序CLR EAMOV R3,#8 ;写入ds1820的bit数,一个字节8个bit WR1:SETB P1.6MOV R4,#8RRC A ;把一个字节data(A)分成8个bit环移给CCLR P1.6 ;开始写入ds1820总线要处于复位(低)状态WR2:DJNZ R4,WR2 ;ds1820总线复位保持16usMOV P1.6,C ;写入一个bitMOV R4,#20WR3:DJNZ R4,WR3 ;等待40usDJNZ R3,WR1 ;写入下一个bitSETB P1.6 ;重新释放ds1820总线RETREAD:CLR EAMOV R6,#8 ;连续读8个bitRE1:CLR P1.6 ;读前总线保持为低MOV R4,#4NOPSETB P1.6 ;开始读总线释放RE2:DJNZ R4,RE2 ;持续8usMOV C,P1.6 ;从ds1820总线读得一个bitRRC A ;把读得的位值环移给AMOV R5,#30RE3:DJNZ R5,RE3 ;持续60usDJNZ R6,RE1 ;读下一个bitSETB P1.6 ;重新释放ds1820总线RETEND。
水温控制系统摘要:该水温控制系统采用单片机进行温度实时采集与控制。
温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内,固有测温分辨率为0.5 ℃。
水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制.系统具备较高的测量精度和控制精度,能完成升温和降温控制。
关键字:AT89C51 DS18B20 水温控制Abstract: This water temperature control system uses the Single Chip Microcomputer to carry on temperature real-time gathering and controling。
DS18B20,digitized temperature sensor, provides the temperature signal by "a main line”. In -10~+85℃the scope,DS18B20’s inherent measuring accuracy is 0.5 ℃. The water temperature real-time control system uses the electricity nichrome wire carring on temperature increiseament and operates the electric fan to realize the temperature decrease control。
The system has the higher measuring accuracy and the control precision,it also can complete the elevation of temperature and the temperature decrease control. Key Words:AT89C51 DS18B20 Water temperature control目录1.系统方案选择和论证 (2)1。