文档详情

DS18B20温度传感器汇编C程序.doc

发布:2017-10-14约9.26千字共9页下载文档
文本预览下载声明
DS18B20温度传感器(汇编C程序) 发表于 2007-7-22 21:14:31 ??? 这个程序是最近写的,对DS18B20进行读写操作只要控制好时序就应该没问题的。这个程序在我自己的板子上运行过能正常测温,温度显示到小数点两位。 这是汇编程序: ;这是关于单个DS18B20的测温程序,数据脚为P1.4,晶振是11.059MHZ ;温度传感器18B20采用器件默认的12位转化,最大转化时间要750毫秒 ;内存分配声明 TEMPER_L? EQU?? 31H???????????? ;用于保存读出温度的低字节 TEMPER_H? EQU?? 30H???????????? ;用于保存读出温度的高字节 T_DF????? EQU?? 33H???????????? ;FORMAT后的小数部分(decimal fraction),半字节的温度小数(存在低四位) T_INTEGER EQU?? 32H???????????? ;FORMAT后的整数部分(integer),将两字节的温度整合成1字节 FLAG??? BIT???? 20H???????????? ;标志位 DAT???? BIT???? P1.4??????????? ;DS18B20数据线 ;------------------------------主函数开始----------------------------- ??????? ORG???? 0000H ??????? AJMP??? MAIN ??????? ORG???? 0030H MAIN: ??????? CLR???? EA????????????? ;使用DS18B20一定要禁止中断 ??????? MOV???? SP,#60H ??????? MOV???? T_DF,#00H?????? ;赋初始温度为30度 ??????? MOV???? T_INTEGER,#30H START:? LCALL?? GET_TEMPER????? ;调用读温度子程序 ??????? LCALL?? T_FORMAT??????? ;将读出的2字节温度格式化,并转换为压缩BCD码 ??????? LCALL?? DISPLAY???????? ;显示温度 ??????? AJMP??? START ;-----------------------DS18B20的温度转换子程序----------------------- GET_TEMPER: ??????? LCALL?? Set_18B20 ??????? MOV???? A,#0CCH???????? ;跳过ROM匹配 ??????? LCALL?? WRITE_1820 ??????? MOV???? A,#44H????????? ;发出温度转换命令 ??????? LCALL?? WRITE_1820 ??????? LCALL?? DISPLAY???????? ;用显示温度(持续1s左右)来等待AD转换结束,12位的话要转换750ms ??????? LCALL?? Set_18B20?????? ;准备读温度前先初始化 ??????? MOV???? A,#0CCH???????? ;跳过ROM匹配 ??????? LCALL?? WRITE_1820 ??????? MOV???? A,#0BEH???????? ;发出读温度命令 ??????? LCALL?? WRITE_1820 ??????? LCALL?? READ_1820??????? ??????? RET ;--------------------------DS18B20初始化程序-------------------------- Set_18B20: ??????? SETB??? DAT ??????? NOP ??????? CLR???? DAT ??????? MOV???? R2,#250???????? ;主机发出延时500微秒的复位低脉冲 ??????? DJNZ??? R2,$ ??????? SETB??? DAT???????????? ;然后拉高数据线 ??????? MOV???? R2,#30 ??????? DJNZ??? R2,$??????????? ;延时60us等待DS18B20回应 ??????? JNB???? DAT,INIT1 ??????? JMP???? Set_18B20?????? ;超时而没有响应,重新初始化 INIT1:? MOV???? R2,#120 ??????? DJNZ??? R2,$??????????? ;延时240us ??????? JB????? DAT,INIT2????
显示全部
相似文档