基于STC89C52單片机的温度控制电路设计.docVIP

  • 37
  • 0
  • 约5.01千字
  • 约 9页
  • 2016-11-27 发布于重庆
  • 举报

基于STC89C52單片机的温度控制电路设计.doc

基于STC89C52單片机的温度控制电路设计

PAGE 9 2.7系统整体硬件电路 系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主控电路等,通过Protel99se可画出如图2-9所示的电路图[9][10][11] 图 图2-9 温度控制电路原理 三 系统软件设计 3.1 温度控制系统原理框图 主控制程序的主要是用来实时控制当前所要测控的环境温度,并读出由DS18B20测量的经过处理的当前环境的温度值,同时检查温度是否在限度之内,否则报警,同时调整温度值。其主控制程序流程图如3-1所示。 开始STC 开始 STC89C52初始化 DS18B20初始化 温度是否到达设定限度 温度显示 结束 红灯亮 温度在显示范围内 Y N Y N Y 发温度转换命令 发DS18B20复位命令 发跳过读序列号命令 读取操作,CRC校验 9字节完? CRC校验正?确? 移入温度暂存器 结束  N N Y 图3-1 主程序流程图 图3-2 读温度流程图 温度控制系统C语言程序 #include reg51.h #define uint unsigned int #define uchar unsigned char sbit p34=P2^4; sbit p35=P2^5; sbit p36=P2^6; sbit dp=P0^7; sbit p37=P2^7; sbit DQ=P2^2; //定义DS18B20总线I/O sbit SET=P3^1; //定义选择报调整警温度上限和下限(1为上限,0为下限) sbit LING=P2^0; //定义闪烁 signed char m; //温度值全局变量 bit sign=0; //外部中断状态标志 signed char shangxian=38; //上限报警温度,默认值为38 signed char xiaxian=5; //下限报警温度,默认值为5 ucharcode LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延时子程序*****/ void Delay(uint i) { while( i-- ); } /*****初始化DS18B20*****/ void Init_DS18B20(void) { unsigned char x=0; DQ=1; Delay(8); //稍做延时 DQ=0; //单片机将DQ拉低 Delay(80); //精确延时,大于480us DQ=1; //拉高总线 Delay(14); x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay(20); } /*****读一个字节*****/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i0;i--) { DQ=0; // 给脉冲信号 dat=1; DQ=1; // 给脉冲信号 if(DQ) dat|=0x80; Delay(4); } return(dat); } /*****写一个字节*****/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i0; i--) { DQ=0; DQ=dat0x01; Delay(5); DQ=1; dat=1; } } void Tmpchange(void) //发送温度转换命令 { Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 } /*****读取温度*****/ unsigned int ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Tmpchan

文档评论(0)

1亿VIP精品文档

相关文档