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模拟就要看具体要求了,按键修改就是设置一些中断去修改。
很简单的!花点时间看下!
答主可以看一下本回答:可以买个国信长天的单片机
设备按照用户通过按键设定的时间间隔自动采集并存储温度数据,并具有采集完成提醒、数码管显示等功能,系统硬件部分主要由按键电路、电源供电电路、 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
```
这不是挺简单的吗?