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

上传人:灯火****19 文档编号:136792102 上传时间:2020-07-02 格式:DOC 页数:18 大小:636KB
返回 下载 相关 举报
ds18b20汇编设计报告(附电路图和程序).doc_第1页
第1页 / 共18页
ds18b20汇编设计报告(附电路图和程序).doc_第2页
第2页 / 共18页
ds18b20汇编设计报告(附电路图和程序).doc_第3页
第3页 / 共18页
ds18b20汇编设计报告(附电路图和程序).doc_第4页
第4页 / 共18页
ds18b20汇编设计报告(附电路图和程序).doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《ds18b20汇编设计报告(附电路图和程序).doc》由会员分享,可在线阅读,更多相关《ds18b20汇编设计报告(附电路图和程序).doc(18页珍藏版)》请在金锄头文库上搜索。

1、基于AT89C51单片机和DS18B20的数字温度计1 课题说明随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD1602实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0100最大

2、线性偏差小于0.01。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。2 实现方法采用数字温度芯片DS18B20 测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,它直接输出温度的数字信号,也可直接与计算机连接。采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并

3、可以根据需要设定上下限温度。该系统扩展性非常强。该测温系统电路简单、精确度较高、实现方便、软件设计也比较简单。系统框图如图1所示。时钟振荡电路AT89C51复位电路电源电路LED显示DS18B20温度传感器图1 DS18B20温度测温系统框图3 硬件设计3.1 单片机最小系统设计3.1.1 电源电路图2 电源电路3.1.2 振荡电路与复位电路 图3 振荡电路 图4 复位电路3.2 DS18B20与单片机的接口电路图5 DS18B20与单片机的接口电路3.3 PROTEUS仿真电路图图6 PROTEUS仿真电路图4 软件设计系统程序主要包括主程序、读取温度子程序、数据转换子程序、显示数据子程序等

4、。4.1 程序流程4.1.1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。图7 主程序流程图4.1.2 各子程序流程图1、初始化程序所有操作都必须由初始化脉冲开始,波形如图,单片机先输出一个480960us低电平到DQ引脚,再将DQ引脚置高电平,过1560us后检测DQ引脚状态,若为低电平则DS18B20工作正常,否则初始化失败,不能正常测量温度。2、 读取温度子程序 读取温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数

5、据的改写。主要包括以下三个命令:(1)写暂存器命令 【4EH】这个命令为由TH寄存器开始向DS18B20暂存器写入数据,4EH命令后的3字节数据将被保存到暂存器的地址2、3、4(TH、TL、CONFIG)三个字节。所有数据必须在复位脉冲前写完。即如果只想写一个字节的数据到地址2,可按如下流程:1、 初始化;2、 写0CCH,跳过ROM检测;3、 写4EH; 4、 写1字节数据;5、 复位,即向DQ输出480960us低电平(2)读暂存命令【BEH】这个命令由字节0读取9个暂存器内容,如果不需要读取所有暂存内容,可随时输出复位脉冲终止读取过程(3)转换温度命令【44H】这个命令启动温度转换过程。

6、转换温度时DS18B20保持空闲状态,此时如果单片机发出读命令, DS18B20将输出0直到转换完成,转换完成后将输出1。图8 读取温度子程序3、写流程图写时隙:写时隙由DQ引脚的下降沿引起。18B20有写1和写0两种写时隙。所有写时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。DS18B20在DQ下降沿后15s60s间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,如图9所示。所以,若想写入1,则单片机应先将DQ置低电平,15us后再将DQ置高电平,持续45s;若要写入0,则将DQ置低电平,持续60s。图9 写流程图4、读流程图读时隙:读时隙由DQ

7、下降沿引起,持续至少1s的低电平后释放总线(DQ置1)DS18B20的输出数据将在下降沿15s后输出,此时单片机可读取1位数据。读时隙结束时要将DQ置1。所有读时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。图10 读流程图4.4 汇编语言程序源代码DATA_BUSBITP3.3FLAGBIT00HTEMP_LEQU 30HTEMP_HEQU31HTEMP_DPEQU32HTEMP_INTEQU33HTEMP_BAIEQU34HTEMP_SHIEQU35HTEMP_GEEQU36HDIS_BAIEQU37HDIS_SHIEQU38HDIS_GEEQU39HDIS_DPEQU3AHDI

8、S_ADDEQU3BHORG 0000H AJMPSTARTORG 0050HSTART:MOVSP,#40HMAIN:LCALLREAD_TEMPLCALLPROCESSAJMPMAIN;读温度程序READ_TEMP: LCALLRESET_PULSE MOV A,#0CCHLCALL WRITEMOVA,#44HLCALL WRITELCALLDISPLAYLCALLRESET_PULSEMOVA,#0CCHLCALLWRITEMOVA,#0BEHLCALL WRITELCALLREADRET;复位脉冲程序RESET_PULSE:RESET:SETBDATA_BUSNOPNOPCLRDAT

9、A_BUSMOVR7,#255DJNZR7,$SETB DATA_BUSMOVR7,#30DJNZR7,$JNB DATA_BUS,SETB_FLAGCLRFLAGAJMPNEXTSETB_FLAG:SETB FLAGNEXT:MOV R7,#120DJNZR7,$SETB DATA_BUSJNBFLAG,RESET RET;写命令WRITE:SETBDATA_BUSMOVR6,#8CLRCWRITING:CLRDATA_BUSMOVR7,#5DJNZR7,$RRCAMOVDATA_BUS,CMOVR7,#30HDJNZR7,$SETBDATA_BUSNOPDJNZR6,WRITINGRET;

10、循环显示段位DISPLAY:MOV R4,#200DIS_LOOP:MOVA,DIS_DPMOVP2,#0FFHMOVP0,A CLRP2.7LCALLDELAY2MSMOVA,DIS_GEMOVP2,#0FFHMOVP0,ASETBP0.7 CLRP2.6LCALLDELAY2MSMOVA,DIS_SHIMOVP2,#0FFHMOVP0,ACLRP2.5 LCALLDELAY2MSMOVA,DIS_BAIMOVP2,#0FFHMOVP0,AMOVA,TEMP_BAICJNEA,#0,SKIPAJMPNEXTTSKIP:CLRP2.4 LCALLDELAY2MSNEXTT:NOPDJNZR4,DIS_LOOPRET;读命令READ:SETBDATA_BUSMOVR0,#TEMP_LMOV R6,#8MOVR5,#2CLRCREADING:CLRDATA_BUSNOPNOPSETBDATA_BUSNOPNOPNOPNOPMOVC,DATA_BUSRRCAMOVR7,#30HDJNZR7,$SETBDATA_BUSDJNZR6,READINGMOVR0,AINC R0MOVR6,#8SETBDATA_BUSDJNZR5,READINGRET;数据处理PROCESS:MOV R7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号