久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于單片機的恒溫控制
[打印本頁]
作者:
w1162687410
時間:
2019-5-15 14:52
標題:
基于單片機的恒溫控制
#include<reg52.h>
#include"mytype.h"
#include"led.h"
#include"ds18b20.h"
#include"key.h"
/*****繼電器端口***********/
sbit cold=P1^4;
sbit heat=P1^5;
sbit buzzer=P1^6; //蜂鳴器
uint tvalue;
uint dig3,dig2,dig1,dig0; //digx數碼管要顯示的數據,在led.h中聲明的外部變量
uint dig3_u,dig2_u,dig1_u,dig0_u; //保存設置上限 up
uint dig3_d,dig2_d,dig1_d,dig0_d; //保存設置下限 down
uchar key; //key是key的返回值,在key.h中聲明的外部變量
uchar kflag,kshift=1,kmode=0;//按鍵設置標志、閃爍led的移位按鍵、按鍵模式(上下限溫度)
uint temp; //緩存溫度
void KeyCtrl();//按鍵控制
void main(void)
{
TMOD=0x01; //方式1的定時計數50ms,設置定時器每一段時間采集溫度值
TH0=0x3c;
TL0=0xb0;
EA=1;
TR0=1;
ET0=1;
dig2_u=5; //初始化上限50.0度
dig1_u=0;
dig0_u=0;
dig2_d=3; //初始化下限30.0度
dig1_d=0;
dig0_d=0;
while(1)
{
if(KeyScan())KeyCtrl();//掃描到按鍵執行按鍵控制,否則跳過
if(kflag) //如果按鍵設置標志為1,進入閃爍顯示
{
LedFlick(kshift); //數碼管閃爍顯示
}
else
{
temp=tvalue; //tvalue是外部變量,在定時器執行中斷采集溫度時ReadTemp();改變溫度值
dig3=0;
dig2=temp/100%10;
dig1=temp/10%10 ;
dig0=temp%10;
LedScan();//數碼管顯示采集溫度
if( temp>(dig2_u*100+dig1_u*10+dig0_u) )//大于上限值報警并制冷
{
buzzer=1;
heat=0;
cold=1;
}
else if(temp<(dig2_d*100+dig1_d*10+dig0_d) )//小于下限值報警并制熱
{
buzzer=1;
heat=1;
cold=0;
}
else //不報警停止制冷制熱
{
buzzer=0;
heat=0; //高電平有效,此處關閉制熱
cold=0; //高電平有效,此處關閉制冷
}
}
}
}
/***********按鍵控制函數,模式、加減、確認***********/
void KeyCtrl()
{
if(key) //key是外部變量,在掃描的時候改變,在退出這個函數前清零,否則會一直保持控制,閃啊閃的
{
switch(key) //判斷掃描到的按鍵是什么,作出相應的操作
{
case 1: kflag=1; //模式切換按鍵
kmode++;
if(kmode==1)//把保存的上限溫度值顯示出來
{
dig0=dig0_u;
dig1=dig1_u;
dig2=dig2_u;
dig3=11;//'H'
}
else if(kmode==2) //把保存的下限溫度值顯示出來
{
dig0=dig0_d;
dig1=dig1_d;
dig2=dig2_d;
dig3=12;//'L'
}
else if(kmode==3) //恢復溫度采集顯示
{
kmode=0;
kflag=0;
dig3=0;
}
break;
case 2: kshift++; //閃爍位左移按鍵
if(kshift==4)kshift=1;
break;
case 3: if(kflag) //加1按鍵
switch(kshift)
{
case 1: dig0++;
if(dig0==10)dig0=0; //之所以這樣,是避免dig0加到10以上會顯示數組段碼的后面的字符
break;
case 2: dig1++;
if(dig1==10)dig1=0;
break;
case 3: dig2++;
if(dig2==10)dig2=0;
break;
}
break;
case 4: if(kflag) //減1按鍵
switch(kshift)
{
case 1: dig0--;
if(dig0==-1)dig0=9;
break;
case 2: dig1--;
if(dig1==-1)dig1=9;
break;
case 3: dig2--;
if(dig2==-1)dig2=9;
break;
}
break;
default:break;
}
}
if(kmode==1) //把顯示的溫度值上限保存一下
{
dig0_u=dig0;
dig1_u=dig1;
dig2_u=dig2;
dig3_u=dig3;
}
else if(kmode==2) //把顯示的溫度值下限保存一下
{
dig0_d=dig0;
dig1_d=dig1;
dig2_d=dig2;
dig3_d=dig3;
}
key=0;
}
/**********定時中斷每隔一段時間采集一次當前溫度******/
void time0() interrupt 1
{
uchar cnt;
TH0=0x3c; //重賦初值
TL0=0xb0;
if(!cnt)
{
ReadTemp();
}
cnt++;
if(cnt==4)cnt=0; //50ms*4=1/5s采集一次溫度值
}
作者:
admin
時間:
2019-5-15 21:55
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产高清无av久久
|
天天想天天干
|
99亚洲精品视频
|
这里精品
|
免费在线观看av网址
|
天天夜天天操
|
欧美黄色片
|
中文字幕在线观看一区
|
午夜视频免费在线观看
|
国产91亚洲精品一区二区三区
|
污免费网站
|
一区欧美
|
国产日韩一区二区三免费高清
|
欧美亚洲国产日韩
|
七七婷婷婷婷精品国产
|
精品久久久久久久
|
福利视频一区二区
|
亚洲一区二区视频在线播放
|
日本三级电影在线免费观看
|
亚洲一区二区免费视频
|
成人免费福利
|
天天插天天操
|
国产成人综合网
|
国产女人第一次做爰毛片
|
www.日韩高清
|
91精品国产综合久久久久久漫画
|
精品一区二区三区在线播放
|
蜜桃一区二区三区
|
久久av一区
|
欧美另类视频
|
久热精品免费
|
国产人免费人成免费视频
|
免费99视频
|
国产精品视频综合
|
美女一级a毛片免费观看97
|
久久精品成人
|
精品日韩
|
狠狠干夜夜草
|
国产精品欧美一区二区三区
|
国产欧美一区二区精品久导航
|
一区二区在线免费播放
|