编辑: ZCYTheFirst | 2014-06-10 |
序言: 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数.例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制.采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量.单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,为自动化和各个测控领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大.因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题. 本作业以上述问题为出发点,设计实现了温度实时测量、显示.本设计方案具有一般的测量精度,更加适合实验的要求,通过本设计得到举一反三和触类旁通的效果. 二.电路原理图: 三.系统流程图: 四.程序清单 main.asm= org 0000h ljmp Setup org 0020h setup: mov sp,#60h main: LCALL GET_TEMP ;
未判断负度 ;
温度中间两位合并成16进制数放在A中mov 2Eh,r6 mov 2fh,r7 mov a,2Eh swap a mov 2Eh,a mov a,2fh swap a mov 2fh,a mov 31h,2fh mov r0,#31h mov a,2Eh xchd a,@r0 lcall HBCD mov P1,a ljmp main include "ds18B20.asm" include "Convert.asm" end ds18B20.asm= ;
| 获取单个ds1820转化的温度值的应用程序,P3.4接ds1820 | GET_TEMP: ;
CLR PSW.4 ;
SETB PSW.3 ;
设置工作寄存器当前所在的区域 CLR EA ;
使用ds1820一定要禁止任何中断产生 LCALL INT ;
调用初使化子程序 MOV A,#0CCH LCALL WRITE ;
送入跳过ROM命令 MOV A,#44H LCALL WRITE ;
送入温度转换命令 LCALL INT ;
温度转换完全,再次初使化ds1820 MOV A,#0CCH LCALL WRITE ;
送入跳过ROM命令 MOV A,#0BEH LCALL WRITE ;
送入读温度暂存器命令 LCALL READ MOV R7,A ;
读出温度值低字节存入R7 LCALL READ MOV R6,A ;
读出谩度值高字节存入R6 RET INT:初始化ds1820子程序 CLR EA L0: CLR P0.0 ;
ds1820总线为低复位电平 MOV R2,#200 L1: CLR P3.4 DJNZ R2,L1 ;
总线复位电平保持400us SETB P3.4 ;
释放ds1820总线 MOV R2,#30 L4: DJNZ R2,L4 ;
释放ds1820总线保持60us CLR C ;
清存在信号 ORL C,P3.4 JC L0 ;
存在吗?不存在则重新来 MOV R6,#80 L5: ORL C,P3.4 JC L3 DJNZ R6,L5 SJMP L0 L3: MOV R2,#240 L2: DJNZ R2,L2 RET WRITE:向ds1820写操作命令子程序 CLR EA MOV R3,#8 ;
写入ds1820的bit数,一个字节8个bit WR1: SETB P3.4 MOV R4,#8 RRC A ;
把一个字节data(A)分成8个bit环移给C CLR P3.4 ;
开始写入ds1820总线要处于复位(低)状态 WR2: DJNZ R4,WR2 ;
ds1820总线复位保持16us MOV P3.4,C ;
写入一个bit MOV R4,#20 WR3: DJNZ R4,WR3 ;
等待40us DJNZ R3,WR1 ;
写入下一个bit SETB P3.4 ;
重新释放ds1820总线 RET READ: CLR EA MOV R6,#8 ;
连续读8个bit RE1: CLR P3.4 ;
读前总线保持为低 MOV R4,#4 NOP SETB P3.4 ;
开始读总线释放 RE2: DJNZ R4,RE2 ;
持续8us MOV C,P3.4 ;
从ds1820总线读得一个bit RRC A ;
把读得的位值环移给A MOV R5,#30 RE3: DJNZ R5,RE3 ;
持续60us DJNZ R6,RE1 ;
读下一个bit SETB P3.4 ;
重新释放ds1820总线 RET END Convert.asm= ;
(16) 标号:HBCD 功能:单字节十六进制整数转换成单字节BCD码整数 ;
;
入口条件:待转换的单字节十六进制整数在累加器A中. ;