很高,需要解决大量的逻辑控制问题。
1.2 温度检测系统
1.2.1 系统流程图
开CPU初参数是是否否采样显示实时数据处理子控制电机启
图6.1.2.1 系统流程图
按
1.2.2 程序编写
程序的功能是:启动DS18B20测量温度,将测量值与给定值进行比较,若测得温度小于设定值,则进入加热阶段,置P1.1为低电平,这期间继续对温度进行监测,直到温度在设定范围内,置P1.1为高电平断开可控硅, 关闭加热器,等待下一次的启动命令。当测得温度大于设定值,则进入降温阶段,则置P1.2为低电
平,这期间继续对温度进行监测,直到温度在设定范围内,置P1.2为高电平断开,关闭风扇,等待下一次的启动命令。
WR1:CLR P1.0 MOV R3,#6 DJNZ R3,$ RRC A MOV P1.0,C MOV R3,#23 DJNZ R3,$ SETB P1.0 NOP DJNZ R2,WR1 RET; 读DS18B2
1.3 水位检测系统
1.3.1系统主程序流程图
系统主程序的功能主要是完成对单片机的初始化,设置警戒液位的上下限,实时显示液位值以及键盘扫描如图6.1.3.1所示
图6.1.3.1 主程序流程图
1.3.2 显示与A/D转换的数据处理
系统中,显示输出的要求为压缩BCD码,而A/D转换输入的数据是8位16进制码,因此在实现显示之前需要编码的转换。对8位A/D转换器而言,其十六进制、相对满偏电压比率、相对电压幅值的关系对应如表6.1.3.2:
满刻度比率 十六进二进制 制 F E 1111 1110 高四位 15/16 14/16 低四位 电压 15/256 14/256 4.800 4.480 电压 0.320 0.280 高四位低四位相对电压幅值Vref=2.5V
D C B A 9 0 7 6 5 4 3 2 1 0 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 13/16 12/16 11/16 10/16 9/16 8/16 7/16 6/16 5/16 4/16 3/16 2/16 1/16 0/16 13/256 12/256 11/256 10/256 9/256 8/256 7/256 6/256 5/256 4/256 3/256 2/256 1/256 0/256 4.160 3.840 3.520 3.200 2.880 2.560 2.240 1.920 1.600 1.280 0.960 0.640 0.320 0.000 0.260 0.240 0.220 0.200 0.180 0.160 0.140 0.120 0.100 0.080 0.060 0.040 0.020 0.000 表6.1.3.2 A/D转换幅值数据关系对照表
显示转换部分程序简略如下: uchar dis_transform(uchar num) {
uchar ac, quotient, play, mid ; ac = num%5;
quotient = (num-ac)/5; if(ac>2) quotient++; ac=quotient; mid=(quotient-ac)/10; play=ac+mid*16; return play; }
1.3.3 系统主程序
ORG 0000H AJMP MAIN ORG 0060H
MAIN: MOV P1, #FFH ; P1 P3口初始化置1 MOV P3,#FFH
JNB P1.3 , AVT ; 若手动在自动位置,跳到自动模式程序 AJMP MEN ; END
AUT: NOP(空命令)
JNB P1.2 , LG ; JB P1.1 LD , ; CLR P3.1 ; JB P1.0, LDD ; CLR P3.0 ; JNB 3.1 P1.6, Y1 ; M1CLR P1.4 ; Y1:JNB P1.7 ,Y2 ; M2 CLR P1.5 ; Y2:ACALL DELAY ; AJMP AUT ; LDD: JNB P1.6 ,Y3 ; CLR P1.4
Y3: JB P1.7 Y2 SETB P1.5 AJMP Y2
LG:CLR P3.2 ; LD: AJMP MAIN ; 否则转到手动模式子程序 水位高—LG 水位没低---LD 水位低报警 水位未低低---LDD 水位低低报警 已启动—Y1 否则启动M1 已启动---Y2 否则启动M2 延时1分钟 返回自动模式
单独运行M1(LDD〈水位〈LD) 水位高报警 返回主程序
1.4 DS18B20主程序
#include
#define uchar unsigned char #define uint unsigned int
sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2;
unsigned char code str1[]={%unsigned char code str2[]={%uchar fCode[8]; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志
七.结论
本文详细介绍了基于单片机89C51的温度控制系统的设计方案与软硬件实现。系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块,驱动电路五个部分。文中对每个部分功能、实现过程作了详细介绍。完成了课题既定的任务,达到了预期的目标。系统具有如下特点:
⑴.采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;
⑵.89C51单片机的采用,有利于功能扩展; ⑶.电路设计充分考虑了系统可靠性和安全性。
本课题软件和硬件相结合,有相当的难度,同时也有很大的实用性。
八.参考文献
[1] 马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,1998
[2] 李晓荃.单片机原理与应用[M].北京:电子工业出版社,2000年8月 [3] 何立民 AVR单片机原理与接口技术[M].北京:北京航空航天大学出版社,