ds18b20汇编设计报告(附电路图和程序)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-10-基于AT89C51单片机和DS18B20的数字温度计1课题说明随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD1602实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。2实现方法采用数字温度芯片DS18B20测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,它直接输出温度的数字信号,也可直接与计算机连接。采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限温度。该系统扩展性非常强。该测温系统电路简单、精确度较高、实现方便、软件设计也比较简单。系统框图如图1所示。图1DS18B20温度测温系统框图时钟振荡电路AT89C51复位电路电源电路LED显示DS18B20温度传感器-11-3硬件设计3.1单片机最小系统设计3.1.1电源电路Vin1GND2+5V3LM7805C20.1uF+C1470uF+C3470uFR1KLEDVCCGNDVCCC20.1uF+12V+5V图2电源电路3.1.2振荡电路与复位电路晶振12MHzC130pFC230pFAT89C51XTAL1XTAL2C122uFR21KR1200VCCRESETVccRSTVssAT89C51图3振荡电路图4复位电路3.2DS18B20与单片机的接口电路123DS18B20R14.7KVCCP3.4AT89C51图5DS18B20与单片机的接口电路-12-3.3PROTEUS仿真电路图图6PROTEUS仿真电路图4软件设计系统程序主要包括主程序、读取温度子程序、数据转换子程序、显示数据子程序等。4.1程序流程4.1.1主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。-13-主程序读温度程序数据处理程序图7主程序流程图4.1.2各子程序流程图1、初始化程序所有操作都必须由初始化脉冲开始,波形如图,单片机先输出一个480~960us低电平到DQ引脚,再将DQ引脚置高电平,过15~60us后检测DQ引脚状态,若为低电平则DS18B20工作正常,否则初始化失败,不能正常测量温度。-14-初始化DQ=0延时480~960uSDQ=1DQ=0?返回FLAG=0延时240uSFLAG=1NY延时2uSDQ=1DQ=1FLAG=1YN2、读取温度子程序读取温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。主要包括以下三个命令:(1)写暂存器命令【4EH】这个命令为由TH寄存器开始向DS18B20暂存器写入数据,4EH命令后的3字节数据将被保存到暂存器的地址2、3、4(TH、TL、CONFIG)三个字节。所有数据必须在复位脉冲前写完。即如果只想写一个字节的数据到地址2,可按如下流程:1、初始化;2、写0CCH,跳过ROM检测;3、写4EH;4、写1字节数据;5、复位,即向DQ输出480~960us低电平(2)读暂存命令【BEH】这个命令由字节0读取9个暂存器内容,如果不需要读取所有暂存内容,可随时输出复-15-位脉冲终止读取过程(3)转换温度命令【44H】这个命令启动温度转换过程。转换温度时DS18B20保持空闲状态,此时如果单片机发出读命令,DS18B20将输出0直到转换完成,转换完成后将输出1。初始化读取温度数据写0CCH,跳过ROM检测写0BEH,度暂存读操作返回初始化写0CCH,跳过ROM检测写44H,转换命令显示图8读取温度子程序3、写流程图写时隙:写时隙由DQ引脚的下降沿引起。18B20有写1和写0两种写时隙。所有写时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。DS18B20在DQ下降沿后15μs~60μs间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,如图9所示。所以,若想写入1,则单片机应先将DQ置低电平,15us后再将DQ置高电平,持续45μs;若要写入0,则将DQ置低电平,持续60μs。-16-开始DQ=1DQ=0延时15uSA带C右移一位DQ=C延时60uS返回循环8次?NY图9写流程图4、读流程图读时隙:读时隙由DQ下降沿引起,持续至少1μs的低电平后释放总线(DQ置1)DS18B20的输出数据将在下降沿15μs后输出,此时单片机可读取1位数据。读时隙结束时要将DQ置1。所有读时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。-17-开始DQ=1,A清零DQ=0,延时2uSDQ=1,延时4uSA带C右移一位延时60uS返回循环8次?NYC=DQDQ=1图10读流程图4.4汇编语言程序源代码DATA_BUSBITP3.3FLAGBIT00HTEMP_LEQU30HTEMP_HEQU31HTEMP_DPEQU32HTEMP_INTEQU33HTEMP_BAIEQU34HTEMP_SHIEQU35HTEMP_GEEQU36HDIS_BAIEQU37HDIS_SHIEQU38HDIS_GEEQU39HDIS_DPEQU3AHDIS_ADDEQU3BH18ORG0000HAJMPSTARTORG0050HSTART:MOVSP,#40HMAIN:LCALLREAD_TEMPLCALLPROCESSAJMPMAIN;读温度程序READ_TEMP:LCALLRESET_PULSEMOVA,#0CCHLCALLWRITEMOVA,#44HLCALLWRITELCALLDISPLAYLCALLRESET_PULSEMOVA,#0CCHLCALLWRITEMOVA,#0BEHLCALLWRITELCALLREADRET;复位脉冲程序RESET_PULSE:RESET:SETBDATA_BUSNOPNOPCLRDATA_BUSMOVR7,#255DJNZR7,$SETBDATA_BUSMOVR7,#30DJNZR7,$JNBDATA_BUS,SETB_FLAGCLRFLAGAJMPNEXTSETB_FLAG:SETBFLAGNEXT:MOVR7,#120DJNZR7,$SETBDATA_BUSJNBFLAG,RESETRET;写命令WRITE:SETBDATA_BUS19MOVR6,#8CLRCWRITING:CLRDATA_BUSMOVR7,#5DJNZR7,$RRCAMOVDATA_BUS,CMOVR7,#30HDJNZR7,$SETBDATA_BUSNOPDJNZR6,WRITINGRET;循环显示段位DISPLAY:MOVR4,#200DIS_LOOP:MOVA,DIS_DPMOVP2,#0FFHMOVP0,ACLRP2.7LCALLDELAY2MSMOVA,DIS_GEMOVP2,#0FFHMOVP0,ASETBP0.7CLRP2.6LCALLDELAY2MSMOVA,DIS_SHIMOVP2,#0FFHMOVP0,ACLRP2.5LCALLDELAY2MSMOVA,DIS_BAIMOVP2,#0FFHMOVP0,AMOVA,TEMP_BAICJNEA,#0,SKIPAJMPNEXTTSKIP:CLRP2.4LCALLDELAY2MSNEXTT:NOPDJNZR4,DIS_LOOP20RET;读命令READ:SETBDATA_BUSMOVR0,#TEMP_LMOVR6,#8MOVR5,#2CLRCREADING:CLRDATA_BUSNOPNOPSETBDATA_BUSNOPNOPNOPNOPMOVC,DATA_BUSRRCAMOVR7,#30HDJNZR7,$SETBDATA_BUSDJNZR6,READINGMOV@R0,AINCR0MOVR6,#8SETBDATA_BUSDJNZR5,READINGRET;数据处理PROCESS:MOVR7,TEMP_LMOVA,#0FHANLA,R7MOVTEMP_DP,AMOVR7,TEMP_LMOVA,#0F0HANLA,R7SWAPAMOVTEMP_L,AMOVR7,TEMP_HMOVA,#0FHANLA,R7SWAPAORLA,TEMP_LMOVB,#64HDIVABMOVTEMP_BAI,AMOVA,#0AHXCHA,BDIVABMOVTEMP_SHI,AMOVTEMP_GE,B21MOVA,TEMP_DPMOVDPTR,#TABLE_DPMOVCA,@A+DPTRMOVDPTR,#TABLE_INTERMOVCA,@A+DPTRMOVDIS_DP,AMOVA,TEMP_GEMOVDPTR,#TABLE_INTERMOVCA,@A+DPTRMOVDIS_GE,AMOVA,TEMP_SHIMOVDPTR,#TABLE_INTERMOVCA,@A+DPTRMOVDIS_SHI,AMOVA,TEMP_BAIMOVDPTR,#TABLE_INTERMOVCA,@A+DPTRMOVDIS_BAI,ARETDELAY2MS:MOVR6,#3LOOP3:MOVR5,#250DJNZR5,$DJNZR6,LOOP3RETTABLE_DP:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09HTABLE_INTER:DB03FH,006H,05BH,04FH,066HDB06DH,07DH,07H,07FH,06FHEND5DS18B20简单介绍DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器22DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。5.1DS18B20的性能特点如下:●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃●零待机功耗●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功