温度控制器.rar

  • 寂寞de鑫
    了解作者
  • C/C++
    开发工具
  • 4.7MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 0
    下载次数
  • 2019-11-28 14:28
    上传日期
ds18b20温度采集数码管八位显示带小数点,ds1320时间计时,四个独立按键切换功能。
温度控制器.rar
内容介绍
#include<reg52.h> #include"ds18b20.h" #include"ds1302.h" #include"eeprom.h" #include "iic.h" sbit LED1=P0^4; sbit LED2=P0^5; sbit LED3=P3^5; sbit KEY7=P3^7; sbit KEY6=P3^6; sbit KEY5=P3^2; sbit KEY4=P3^4; sbit LEDD=P3^1; sbit LEDJ=P0^0; bit type=0;//type=1进入温度阈值设置界面 bit k=0; bit k1=0; char HighTemp=25; int WorkForm=1; int temp; int Data[8]; char BeginHour=8; char BeginMinute=0; char EndHour=8; char EndMinute=30; char setTime=0; uchar code table1[11]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; uchar code table2[11]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff}; void keyscan(); void times() { TMOD=0X01; TH0=0XFC; TL0=0X18; ET0=1; EA=1; TR0=1; } void delay(int delay_time) { while(delay_time) { int p,q; for(p=0;p<2;p++) {} for(q=0;q<100;q++) {} delay_time--; } } void display() { int i; for(i=0;i<8;i++) { switch(i) { case(0) : P2=0x7F; break; case(1) : P2=0xBF; break; case(2) : P2=0xDF; break; case(3) : P2=0xEF; break; case(4) : P2=0xF7; break; case(5) : P2=0xFB; break; case(6) : P2=0xFD; break; case(7) : P2=0xFE; break; } P1=Data[i]; delay(1); P1=0xFF; // P2=0xff; } } void gettemp() { EA=0; temp = ds18b20_temp(); EA=1; } void main() { int o; Ds1302Init(); HighTemp=Read_eeprom(0X00); delay(10); BeginHour=Read_eeprom(0X01); delay(10); BeginMinute=Read_eeprom(0X02); delay(10); EndHour=Read_eeprom(0X03); delay(10); EndMinute=Read_eeprom(0X04); delay(10); times(); while(1) { Ds1302ReadTime(); keyscan(); if(k1==1) { gettemp(); } if(WorkForm==1) { LED1=0;LED2=1;LED3=1; if(type==0) { Data[0]=table1[TIME[2]/16]; if (k==0) { Data[1]=table1[TIME[2]&0x0f]; } else { Data[1]=table2[TIME[2]&0x0f]; } Data[2]=table1[TIME[1]/16]; Data[3]=table1[TIME[1]&0x0F]; Data[4]=0xBF; Data[5]=table1[temp%1000/100]; Data[6]=table2[temp%100/10]; Data[7]=table1[temp%10]; display(); } else { for(o=0;o<5;o++) { Data[o]=table1[10]; } Data[5]=0xBF; Data[6]=table1[HighTemp/10]; Data[7]=table1[HighTemp%10]; display(); } if((temp%1000)<(HighTemp*10)) { LEDD=0; LEDJ=0; } else { LEDD=1; LEDJ=1; } } if(WorkForm==2) { LED1=1;LED2=0;LED3=1; Data[0]=table1[TIME[2]/16]; if (k==0) { Data[1]=table1[TIME[2]&0x0f]; } else { Data[1]=table2[TIME[2]&0x0f]; } Data[2]=table1[TIME[1]/16]; Data[3]=table1[TIME[1]&0x0F]; Data[4]=0xBF; Data[5]=table1[temp%1000/100]; Data[6]=table2[temp%100/10]; Data[7]=table1[temp%10]; display(); } if(WorkForm==3) { LED1=1;LED2=1;LED3=0; if(setTime==0) { Data[0]=table1[TIME[2]/16]; if (k==0) { Data[1]=table1[TIME[2]&0x0f]; } else { Data[1]=table2[TIME[2]&0x0f]; } Data[2]=table1[TIME[1]/16]; Data[3]=table1[TIME[1]&0x0F]; Data[4]=0xBF; Data[5]=table1[temp%1000/100]; Data[6]=table2[temp%100/10]; Data[7]=table1[temp%10]; display(); if((((TIME[2]/16)*600+(TIME[2]&0x0f)*60+(TIME[1]/16)*10+(TIME[1]&0x0f))>(BeginHour*60+BeginMinute))&&(((TIME[2]/16)*600+(TIME[2]&0x0f)*60+(TIME[1]/16)*10+(TIME[1]&0x0f))<(EndHour*60+EndMinute))) { LEDD=0; LEDJ=0; } else { LEDD=1; LEDJ=0; } } if(setTime==1) { Data[0]=table1[BeginHour/10]; Data[1]=table2[BeginHour%10]; Data[2]=table1[BeginMinute/10]; Data[3]=table1[BeginMinute%10]; Data[4]=table1[EndHour/10]; Data[5]=table2[EndHour%10]; Data[6]=table1[EndMinute/10]; Data[7]=table1[EndMinute%10]; display(); } if(setTime==2) { Data[4]=table1[EndHour/10]; Data[5]=table2[EndHour%10]; Data[6]=table1[EndMinute/10]; Data[7]=table1[EndMinute%10]; if(k==1) { Data[0]=table1[BeginHour/10]; Data[1]=table2[BeginHour%10]; Data[2]=table1[BeginMinute/10]; Data[3]=table1[BeginMinute%10]; } else { Data[0]=table1[10]; Data[1]=table2[10]; Data[2]=table1[10]; Data[3]=table1[10]; } display(); } if(setTime==3) { Data[0]=table1[BeginHour/10]; Data[1]=table2[BeginHour%10]; Data[2]=table1[BeginMinute/10]; Data[3]=table1[BeginMinute%10]; if(k==1) { Data[4]=table1[EndHour/10]; Data[5]=table2[EndHour%10]; Data[6]=table1[EndMinute/10]; Data[7]=table1[EndMinute%10]; } else { Data[4]=table1[10]; Data[5]=table2[10]; Data[6]=table1[10]; Data[7]=table1[10]; } display(); } if(setTime==4) { Data[0]=table1[TIME[2]/16]; if (k==0) { Data[1]=table1[TIME[2]&0x0f]; } else { Data[1]=table2[TIME[2]&0x0f]; } Data[2]=table1[TIME[1]/16]; Data[3]=table1[TIME[1]&0x0F]; Data[4]=0xBF; Data[5]=table1[temp%1000/100]; Data[6]=table2[temp%100/10]; Data[7]=table1[temp%10]; display(); } } } } void keyscan() { if(KEY7==0) { delay(100); if(KEY7==0) { setTime=0; WorkForm++; if(WorkForm==4) { WorkForm=1; } } while(!KEY7); } if(KEY6==0) { delay(100); if(KEY6==0) { if(WorkForm==1) { type=~type; } if(WorkForm==2) { LEDD=~LEDD; } if(WorkForm==3) { setTime++; if (setTime==5) { setTime=0; } if(setTime==4) { Write_eeprom(0X01,BeginHour); delay(10); Write_eeprom(0X02,BeginMinute); delay(10); Write_eeprom(0X03,EndHour); delay(10); Write_eeprom(0X04,EndMinute); delay(10); } } } while(!KEY6); } if(KEY5==0) { delay(100); if(KEY5==0) { if(WorkForm==1) { if(HighTemp==99) { HighTemp=0; } else { HighTemp++; } Write_eeprom(0X00,HighTemp); delay(20); } if(WorkForm==2) { LEDJ=~LEDJ; } if(WorkForm==3) { if(setTime==2) { if(BeginHour==23) { BeginHour=0; } else { BeginHour++; } } if(setTime==3) { if(EndHour==23) { EndHour=0; } else { EndHour++; } } } } while(!KEY5); } if(KEY4==0) { delay(100); if(KEY4==0) { if(WorkForm==1) { if(HighTemp==0) { HighTemp=99; } else { HighTemp--; } Write_eeprom(0X00,HighTemp); delay(20); } if(WorkForm==3) { if(setTime==2) { if(BeginMinute==59) { BeginMinute=0; } else { BeginMinute++; } } if(setTime==3) { if(EndMinute==59) { EndMinute=0; } else { EndMinute++; } } } } while(!KEY4); } } void Timer0() interrupt 1 { static int i,m; TH0=0XFC; TL0=0X18; i++; m++; if(i==500) { i=0; k=~k; } if(m==1000) { m=0; k1=~k1; } }
评论
    相关推荐
    • 温度控制器.zip
      温度监控”可以实现环境温度检测及报警功能;通过 EEPROM 存储上下限温度数值, ...系统硬件电路主要有单片机控制电路、数码管显示电 路、EEPROM 存储电路、直流电机驱动电路(设计部分)、键控制电路及继电组成
    • 智能温度控制器.rar
      当温控开关打开时,若测得环境温度大于设定温度,则继电吸合 启动电机工作;若测得环境温度小于设定温度,则继电释放, 电机停止工作;
    • 温度控制器.zip
      该程序利用PID实现了简易的温度控制器设计,温度控制范围为30-60
    • tempctrl:发酵温度控制器
      临时Ctrl 发酵温度控制器 子模块 此仓库包含子模块。 克隆后,运行: git submodule init
    • 基于PIC单片机的温度控制器
      基于pic单片机的温度控制器,课程设计中的,希望大家用得到。
    • 无传感器烙铁温度控制器-电路方案
      市场上廉价的烙铁温度控制器实际上并不控制温度。它们中的大多数仅是使用晶闸管和TRIAC的电流控制。然后,我考虑要制造一种利用陶瓷加热器的耐温特性的无传感器烙铁温度控制器。 注意:本产品支持最高110V烙铁! 由于...
    • 温度控制器
      利用C语言描写,关于温度控制器,其中涉及PID算法的内容
    • 单片机温度控制器
      单片机 温度控制器系统设计 还有报警器设置
    • 基于单片机温度控制器课程设计
      不是很好,可以参考,一个温度控制器。基于51单片机的。
    • 单片机做的温度控制器
      单片机基于DS18B20传感器的温度控制器