单片机室内温度控制器程序

1、采集温度、显示当时温度 2、使用数码管显示3、根据当前温度控制通风和暖气开关(用灯模拟)4、可通过按键修改温度阈值,修改时不显示实时温度,显示修改过程。


建议上某宝搜,常见题目都有现成的软硬件方案全套,专门给学生党准备的。

这个不难,关键是你得搞个单片机,然后把配套的硬件配好,开关,灯,数码管,温度传感器,主要弄清楚温度传感器接入单片机的方法,模拟量控制,淘宝上买个单片机的学习板吧,几百块钱的事,所有的内容包括硬件接线,软件程序都有,把需要的研究下,再组合起来就好了。有基础的,电路,程序都可以复制,稍作修改就搞定了。

这个51和Arduino就能实现好像,用我参加电赛的知识告诉你,温度传感器用上,然后就能检测温度了
而且我们之前也写过这部分的代码

使用arm或者是arduino很容易实现,新手直接arduino一天就搞定了。

单片机温度控制系统(附程序及原理图)
https://max.book118.com/html/2021/1017/7064013103004023.shtm
51单片机温度控制c语言程序,51单片机-温度控制-PID算法-DS18B20-C语言
https://blog.csdn.net/weixin_30954879/article/details/117044342

1、采集温度、显示当时温度 2、使用数码管显示3、根据当前温度控制通风和暖气开关(用灯模拟)4、可通过按键修改温度阈值,修改时不显示实时温度,显示修改过程。
要完成题主的问题其实也不难,既然题主有这方面的需求,建议题主自己买个单机片玩一下,学起来也不难,学习资料网上一大堆。但后单机片原理啥的网上也是一搜一大片,找一找适合自己学习思路的学习,挺快的

有要求什么型号的单片机吗,学校一般的都是51,最多就32,数码管显示数电应该学过吧,这个用灯模拟如果只是简单的亮灭模拟就很简单,如果要求PWM模拟就要看具体要求了,按键修改就是设置一些中断去修改。

这篇文章可以满足你的单片机作业需求

单片机温度控制系统(附程序及原理图).pdf-原创力文档 单片机温度控制系统(附程序及原理图).pdf,1绪 论 温度控制,在工业自动化控制中占有非常重要的地位。单片机系统的开发 应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单 片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统 中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制 效果和控制精度。现代自动控制越来越朝着智能化发展,在很多自动控制系统中 都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大 的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。但随 https://max.book118.com/html/2021/1017/7064013103004023.shtm

很简单的!花点时间看下!

答主可以看一下本回答:可以买个国信长天的单片机
设备按照用户通过按键设定的时间间隔自动采集并存储温度数据,并具有采集完成提醒、数码管显示等功能,系统硬件部分主要由按键电路、电源供电电路、 RTC 时钟、传感器电路和显示电路组成。


建议自己买个板子。

#include<stc15f2k60s2.h>
#include "ds1302.h"
#include "onewire.h"
#define uchar unsigned char
#define uint unsigned int
 
uchar code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
uchar flag1=0;
uchar flag2=0;
uchar led=0;
uchar count=0;
uchar wendu=0;
uchar tt=0;
uchar caiji_wendu[10];
uchar n=0;
uchar jiange=0;
uchar f1,f2,f3,f4,f5,f6,f7,f8;
 
void delayms(uchar ms);
void delay();
void display12(uchar f1,uchar f2);
void display34(uchar f3,uchar f4);
void display56(uchar f5,uchar f6);
void display78(uchar f7,uchar f8);
void keyscan();
void allinit();
void Time0_init();
 
void main(){
ds1302_init();
allinit();
Time0_init();
 
while(1)
{    
    wendu=get_wendu();
    keyscan();
    switch(count)
    {
      case 1:jiange=1;break;
      case 2:jiange=5;break;
      case 3:jiange=30;break;
      case 4:jiange=60;count=0;break;
    }
 
    if(flag1==0)
    {
      f1=11;f2=11;f3=11;f4=11;f5=11;f6=10;f7=jiange/10;f8=jiange%10;
    }
 
    if(flag1==1)
     {
        ds1302_read();
        if(time[0]%2==1)
        {
          f1=time[2]/10;f2=time[2]%10;f3=10;
          f4=time[1]/10;f5=time[1]%10;f6=10;
          f7=time[0]/10;f8=time[0]%10;
        }
        else
        {
          f1=time[2]/10;f2=time[2]%10;f3=11;
          f4=time[1]/10;f5=time[1]%10;f6=11;
          f7=time[0]/10;f8=time[0]%10;  
        }
      }
      display12(f1,f2);
      display34(f3,f4);
      display56(f5,f6);
      display78(f7,f8);
   }
}
 
 
void keyscan(){
if(P30==0)         //s7
{
  delayms(5);
  if(P30==0)
  {
    flag1=0;
  }
while(!P30);
}
 
 if(!P31==0)   //s6
{
  delayms(5);
  if(P31==0)
  {
    led=0;
  }
while(!P31);
}
 
  if(P32==0)      //s5
{
  delayms(5);
  if(P32==0)
  {
    if(flag1==0)
    {
       flag1=1;
       tt=0;
       count=1; 
  }
}
}
 
 if(P33==0)       //s4
{
   delayms(5);
   if(P33==0)
   {
      count++;
    }
while(!P33);
}
 
}
 
void allinit(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0XFF;P2=0XFF;P0=0XFF;
}
 
void delayms(uchar ms){
uchar i,j,k;
for(k=ms;k>0;k--)
{
   i=12;
   j=169;
   do
   {
     while(j--);
   }
   while(i--);
}
}
 
void delay(){
uchar i,j;
for(i=10;i>0;i--)
for(j=200;j>0;j--);
}
 
void display12(uchar f1,uchar f2){
P2=0XC0;P0=0X01;P2=0XFF;P0=tab[f1];
delay();
P2=0XC0;P0=0X02;P2=0XFF;P0=tab[f2];
delay();
}
 
void display34(uchar f3,uchar f4){
P2=0XC0;P0=0X04;P2=0XFF;P0=tab[f3];
delay();
P2=0XC0;P0=0X08;P2=0XFF;P0=tab[f4];
delay();
}
 
void display56(uchar f5,uchar f6){
P2=0XC0;P0=0X10;P2=0XFF;P0=tab[f5];
delay();
P2=0XC0;P0=0X20;P2=0XFF;P0=tab[f6];
delay();
}
 
void display78(uchar f7,uchar f8){
P2=0XC0;P0=0X40;P2=0XFF;P0=tab[f7];
delay();
P2=0XC0;P0=0X80;P2=0XFF;P0=tab[f8];
delay();
}
 
void Time0_init(){
TMOD=0X01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
EA=1;
ET0=1;
}
 
void Time0_service() interrupt 1
{
  TH0=(65536-5000)/256;
  TL0=(65536-5000)%256;
  tt++;
  if((tt==jiange*200)&&(flag1==1))
  {
    tt=0;
    caiji_wendu[n]=wendu;
    n++;
    if(n==10)
    {
      n=0;
      led=1;
      flag1=2;
      f1=10;f2=0;f3=0;
      f4=11;f5=11;f6=10;
      f7=caiji_wendu[0]/10;f8=caiji_wendu[0]%10;
    }
  }
 
  if((flag1==2)&&(tt==200))
    {
      tt=0;
      if(led==1)
      {
      if(flag2==0)
      {
        flag2=1;
        P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
        P00=0;
      }
      else if(flag2==1)
      {
        flag2=0;
        P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
        P00=1;
      }
     }
     else if(led==0)
     {
       P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
       P00=1;
       f1=10;f2=n/10;f3=n%10;
       f4=11;f5=11;f6=10;
       f7=caiji_wendu[n]/10;f8=caiji_wendu[n]%10;
       n++;
       if(n==10)
       {
         flag1=3;
         n=0;
       }
     }
   }
}
```c


```

这不是挺简单的吗?