標題: 51單片機溫控風扇(含程序+原理圖+仿真+PCB) [打印本頁]
作者: 一個好學生 時間: 2016-11-10 16:19
標題: 51單片機溫控風扇(含程序+原理圖+仿真+PCB)
· 1.本設計基于STC89C51/52(與AT89S51/52、AT89C51/52通用,可任選)單片機
· 2.采用DS18B20溫度傳感器測溫,74HC573驅動數碼管顯示溫度和風扇的檔位。
· 3.共3個按鍵:設置、加、減。按一下設置可以設置上限,再按下設置下限,均可以按鍵加減調整。
· 4.利用PWM調速,當溫度低于下限時,風扇不轉動,當溫度處于上、下限之間時1檔轉動(50%的轉速),當溫度超過上限時,全速轉動。
使用說明:
一共3個按鍵:設置、加、減
按下設置鍵的時候才可以加減。
按一下設置鍵,是設置溫度的上限,再按下設置鍵,是設置溫度的下限,再按下設置鍵是退出并保存。
元件清單:
1) 7*9萬用板
2) 風扇
3) STC89C51單片機
4) 74hc573
5) 40腳IC座
6) 20腳IC座
7) 0.56四位一體共陰數碼管
8) 10k電阻*3
9) 1k電阻*2
10) 103排阻
11) DS18B20
12) 10uf電容
13) 12M晶振
14) 30pf瓷片電容*2
15) 8550三極管
16) 8050三極管
17) 3p排針
18) 按鍵*3
19) DC電源接口
20) 自鎖開關
21) 導線若干
22) 焊錫若干
23) 電源線或電池盒+DC電源插頭
- <font color="#000000">#include<reg51.h>
- #include<intrins.h> //包含頭文件
- #define uchar unsigned char
- #define uint unsigned int //宏定義
- ////////////////////
- sbit dj=P1^0;//電機控制端接口
- sbit DQ=P1^6;//溫度傳感器接口
- //////////按鍵接口/////////////////////////////////
- sbit key1=P3^5;//設置溫度
- sbit key2=P3^6;//溫度加
- sbit key3=P3^7;//溫度減
- //////////////////////////////////////////////////////
- sbit w1=P2^4;
- sbit w2=P2^5;
- sbit w3=P2^6;
- sbit w4=P2^7; //數碼管的四個位
- /////共陰數碼管段選//////////////////////////////////////////////
- uchar table[22]=
- {0x3F,0x06,0x5B,0x4F,0x66,
- 0x6D,0x7D,0x07,0x7F,0x6F,
- 0x77,0x7C,0x39,0x5E,0x79,0x71,
- 0x40,0x38,0x76,0x00,0xff,0x37};//'-',L,H,滅,全亮,n 16-21
- uint wen_du; //溫度變量
- uint shang,xia; //對比溫度暫存變量
- uchar dang;//檔位顯示
- uchar flag;
- uchar d1,d2,d3;//顯示數據暫存變量
- void delay(uint ms) //延時函數,大約延時25us
- {
- uchar x;
- for(ms;ms>0;ms--)
- for(x=10;x>0;x--);
- }
- /***********ds18b20延遲子函數(晶振12MHz )*******/
- void delay_18B20(uint i)
- {
- while(i--);
- }
- /**********ds18b20初始化函數**********************/
- void Init_DS18B20()
- {
- uchar x=0;
- DQ=1; //DQ復位
- delay_18B20(8); //稍做延時
- DQ=0; //單片機將DQ拉低
- delay_18B20(80); //精確延時 大于 480us
- DQ=1; //拉高總線
- delay_18B20(14);
- x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
- delay_18B20(20);
- }
- /***********ds18b20讀一個字節**************/
- uchar ReadOneChar()
- {
- uchar i=0;
- uchar dat=0;
- for (i=8;i>0;i--)
- {
- DQ=0; // 給脈沖信號
- dat>>=1;
- DQ=1; // 給脈沖信號
- if(DQ)
- dat|=0x80;
- delay_18B20(4);
- }
- return(dat);
- }
- /*************ds18b20寫一個字節****************/
- void WriteOneChar(uchar dat)
- {
- uchar i=0;
- for (i=8;i>0;i--)
- {
- DQ=0;
- DQ=dat&0x01;
- delay_18B20(5);
- DQ=1;
- dat>>=1;
- }
- }
- /**************讀取ds18b20當前溫度************/
- void ReadTemperature()
- {
- uchar a=0;
- uchar b=0;
- uchar t=0;
- Init_DS18B20();
- WriteOneChar(0xCC); // 跳過讀序號列號的操作
- WriteOneChar(0x44); // 啟動溫度轉換
- delay_18B20(100); // this message is wery important
- Init_DS18B20();
- WriteOneChar(0xCC); //跳過讀序號列號的操作
- WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
- delay_18B20(100);
- a=ReadOneChar(); //讀取溫度值低位
- b=ReadOneChar(); //讀取溫度值高位
- wen_du=((b*256+a)>>4); //當前采集溫度值除16得實際溫度值
- }
- void display()//顯示溫度
- {
- w1=0;P0=table[d1];delay(10); //第1位
- P0=0x00;w1=1;delay(1);
-
- w2=0;P0=table[16];delay(10);//第2位
- P0=0x00;w2=1;delay(1);
- w3=0;P0=table[d2]; delay(10);//第3位
- P0=0x00;w3=1;delay(1);
- w4=0;P0=table[d3];delay(10);//第4位
- P0=0x00;w4=1;delay(1);
- }
- void zi_keyscan()//自動模式按鍵掃描函數
- {
- if(key1==0) //設置鍵按下
- {
- delay(30); //延時去抖
- if(key1==0)flag=1; //再次判斷按鍵,按下的話進入設置狀態
- while(key1==0);//松手檢測 //按鍵釋放
- }
- while(flag==1) //進入設置上限狀態
- {
- d1=18;d2=shang/10;d3=shang%10; //顯示字母H 和上限溫度值
- display(); //調用顯示函數
- if(key1==0) //判斷設置鍵是否按下
- {
- delay(30); //延時去抖
- if(key1==0)flag=2; //按鍵按下,進入設置下限模式
- while(key1==0);//松手檢測
- }
- if(key2==0) //加鍵按下
- {
- delay(30); //延時去抖
- if(key2==0) //加鍵按下
- {
- shang+=5; //上限加5
- if(shang>=100)shang=100; //上限最大加到100
- }while(key2==0);//松手檢測
- }
- if(key3==0) //減鍵按下
- {
- delay(30); //延時去抖
- if(key3==0) //減鍵按下
- {
- shang-=1; //上限減1
- if(shang<=10)shang=10; //上限最小減到10
- }while(key3==0);//松手檢測
- }
- }
- while(flag==2) //設置下限
- {
- d1=17;d2=xia/10;d3=xia%10; //顯示字母L 顯示下限溫度值
- display(); //以下注釋同上
- if(key1==0)
- {
- delay(30);
- if(key1==0)flag=0;
- while(key1==0);//松手檢測
- }
- if(key2==0)
- {
- delay(30);
- if(key2==0)
- {
- xia+=5;
- if(xia>=95)xia=95;
- }while(key2==0);//松手檢測
- }
- if(key3==0)
- {
- delay(30);
- if(key3==0)
- {
- xia-=1;
- if(xia<=0)xia=0;
- }while(key3==0);//松手檢測
- }
- }
- }
- void zi_dong()//自動溫控模式
- {
- uchar i;
- d1=dang;d2=wen_du/10;d3=wen_du%10; //顯示檔位,顯示當前溫度值
- zi_keyscan();//按鍵掃描函數
- display(); //調用顯示函數
- if(wen_du<xia){dj=0;dang=0;}//低于下限 檔位為0 電機停止
- if((wen_du>=xia)&&(wen_du<=shang))//溫度大于下限,小于上限 1擋
- {
- dang=1; //檔位置1
- for(i=0;i<3;i++){dj=0;display();zi_keyscan();} //PWM通過延時得到
- for(i=0;i<6;i++){dj=1;display();zi_keyscan();}
- }
- if(wen_du>shang){dj=1;dang=2;}//高溫全速
- }
- void main() //主函數
- {
- uchar j;
- dj=0; //電機開
- shang=30;
- xia=20; //初始上下限值
- for(j=0;j<80;j++) //先讀取溫度值,防止開機顯示85
- ReadTemperature();
- while(1) //進入while循環
- {
- ReadTemperature(); //讀取溫度值
- for(j=0;j<100;j++)zi_dong();//自動溫控模式
- }
- }</font>
復制代碼
-
照片 761.jpg
(1.59 MB, 下載次數: 441)
下載附件
2016-11-10 16:16 上傳
實物圖正面
-
照片 762.jpg
(1.76 MB, 下載次數: 359)
下載附件
2016-11-10 16:17 上傳
實物圖反面
-
-
溫控風扇.zip
2016-11-10 16:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
790.79 KB, 下載次數: 1784, 下載積分: 黑幣 -5
作者: 修車找我 時間: 2016-11-10 17:25
做得不錯,精致,支持一下。繼續努力!
作者: 越快樂越墮落 時間: 2016-11-13 16:01
DS18B20溫控時序有問題。顯示2- 5是啥意思???我知道5是表示按一次可以加5,那個2是什么鬼
作者: yanyang 時間: 2017-3-14 15:34
感謝資源共享!
作者: liner 時間: 2017-3-14 20:51
非常好的資料,學習中
作者: MeMine 時間: 2017-3-15 09:22
頂不錯的 學習了。 感謝樓主分享
作者: 音響王鳩摩智 時間: 2017-3-31 12:14
太好了學習學習
作者: 柳zkf 時間: 2017-4-5 10:01
厲害666666666666666666666
作者: jiliguala 時間: 2017-4-5 16:51
感謝,正在學習
作者: 安的子時明月 時間: 2017-4-5 17:08
非常好的資料,學習了,謝謝。
作者: 我不認識你 時間: 2017-4-5 17:41
好資料,學習學習
作者: 楊海健 時間: 2017-4-6 13:57
好資料值得分享
作者: waas1987 時間: 2017-4-9 06:44
嗯嗯,回個
作者: zhangsan 時間: 2017-4-9 16:00
感謝分享。
作者: zhangsan 時間: 2017-4-9 16:02
親們能把原理圖帖出來嗎,積分不夠下載不了。。。
作者: lolop 時間: 2017-4-9 16:54
頂不錯的 學習了。 感謝樓主分享
作者: 哈哈哈哈1234 時間: 2017-4-10 21:57
贊贊贊
作者: 519762768 時間: 2017-4-10 22:10
好精簡,易學,感謝樓主:)ㄟ(▔=▔)ㄏ
作者: jamyg 時間: 2017-4-19 09:29
贊!很好的資料
作者: zqy181818 時間: 2017-4-20 15:25
很給力
作者: 221lnmmkl 時間: 2017-4-29 22:36
好東西
作者: tnovicet 時間: 2017-4-30 01:51
感謝資源共享!學習了。
作者: wqz 時間: 2017-4-30 11:53
原理圖在哪看嗎、
作者: tututu 時間: 2017-4-30 16:07
感謝共享資源
作者: 陌雨煙1 時間: 2017-4-30 16:29
謝謝分享!!!
作者: 陌雨煙1 時間: 2017-4-30 16:30
謝謝分享,繼續努力!!!
作者: demonli 時間: 2017-5-4 15:12
謝謝分享!
作者: 世說鑫宇 時間: 2017-5-6 22:50
感謝分享
作者: 星星一眨眼 時間: 2017-5-7 07:13
十分感謝樓主分享這么詳細的資料
,
作者: 五號守門員 時間: 2017-5-7 09:55
果斷下載‘,每天都來打點雞血
作者: 15857153110 時間: 2017-5-7 11:29
不錯,謝謝分享!!
作者: 西電小強 時間: 2017-5-8 19:53
很厲害,準備做一個試試
作者: 胡霸霸 時間: 2017-5-20 15:30
666、頂一下
作者: linnyshow 時間: 2017-5-21 20:47
不錯。值得試試。
作者: zhn123 時間: 2017-5-25 07:50
要好好學習
作者: zhn123 時間: 2017-5-25 10:14
值得學習
作者: 呵呵楊 時間: 2017-5-26 15:19
謝謝樓主分享
作者: yonghu 時間: 2017-5-27 23:10
不用單片機直接驅動電機應該怎么控制速度?
作者: zhn123 時間: 2017-5-27 23:29
可以用proteus仿真嗎?
作者: 單片機真有趣 時間: 2017-6-8 13:56
做得不錯,精致,支持一下。繼續努力!
作者: dashabi123 時間: 2017-6-8 22:10
謝謝樓主分享
作者: yongge 時間: 2017-6-9 16:34
新人來學習
作者: 小橋O流水 時間: 2017-6-10 11:51
謝謝樓主
作者: luodandelang 時間: 2017-6-23 18:14
仿真圖中 74hc573的作用是什么?程序中感覺并沒有用到鎖存器
作者: hzlsw1 時間: 2017-6-25 15:46
仿真打不開
作者: cwsinglan 時間: 2017-7-1 19:29
訪制一個看看
作者: 每一分每一秒 時間: 2017-7-5 16:18
很給力
作者: 天宇vh 時間: 2017-7-8 17:41
線路布得不是很合理
作者: yyyyl 時間: 2017-7-24 21:37
好可惜,黑幣不夠
作者: psswcx 時間: 2017-7-25 20:49
謝謝樓主
作者: psswcx 時間: 2017-7-26 10:10
謝謝大佬
作者: 懶羊羊and灰太狼 時間: 2017-7-27 15:10
一個新人路過
作者: mmss11 時間: 2017-10-1 21:35
必須學習一下,謝謝分享了
作者: 小小亂世 時間: 2017-10-8 21:54
非常值得學習,很好用
作者: mccca 時間: 2017-10-8 23:07
很好
作者: yuemky 時間: 2017-10-10 11:32
謝謝分享
作者: yyfpy 時間: 2017-10-19 13:39
謝謝樓主分享好資料!
作者: XDQ 時間: 2017-10-20 15:52
很不錯
作者: Z禁肥 時間: 2017-10-24 08:58
很適合初學者學習
作者: 彈丸大哥 時間: 2017-10-28 19:03
風扇的話如果是12v的可以接上用嗎
作者: wuxishun 時間: 2017-10-28 20:55
非常感謝不錯的資料,多謝大神
作者: wakalaca 時間: 2017-10-30 14:06
仿真軟件有嗎
作者: mccca 時間: 2017-10-31 21:42
真的很好,非常有用
作者: 清揚化二海 時間: 2017-11-1 17:46
線有點亂了,在合理布局下就更好了
作者: TIANGEYIFANG 時間: 2017-11-18 12:56
正好需要需要這個,謝謝謝謝
作者: TIANGEYIFANG 時間: 2017-11-18 13:09
好厲害,做的很不錯,下下來模范一下,666
作者: TIANGEYIFANG 時間: 2017-11-22 12:55
黑幣不夠下載不了,有什么辦法掙的嘛,想下載這個學習,挺急的。
作者: 夢魂 時間: 2017-11-23 11:49
非常感謝大佬分享
作者: 夢魂 時間: 2017-11-23 14:07
非常感謝大佬分享
作者: DUANS 時間: 2017-11-27 11:48
咋沒見原理圖啊
作者: yyfpy 時間: 2017-11-27 14:30
謝謝!新手學習!
作者: Bright_Zhang 時間: 2017-12-3 15:41
好,感謝你的資料
作者: 1335191367 時間: 2017-12-5 10:31
這個資料很給力
作者: 1335191367 時間: 2017-12-5 11:02
這個有相對應的畢業設計嗎
作者: 李啦啦啦 時間: 2017-12-5 14:22
厲害 學習了
作者: 浩然電腦 時間: 2017-12-5 14:28
學習學習,謝謝
作者: Coca_Cora 時間: 2017-12-14 15:37
蠻好的,正好在用呢~
作者: 2411753671 時間: 2017-12-17 20:49
好東西
作者: ray372liu 時間: 2017-12-18 15:32
謝謝樓主
作者: Sinp102 時間: 2018-1-5 12:00
這溫控做的 我也是醉了 用軟件延時做PWM 浪費黑幣下載
作者: 九紋龍 時間: 2018-1-5 16:10
謝謝樓主
作者: hui001 時間: 2018-3-12 17:23
感謝樓主分享
作者: bb1982 時間: 2018-4-25 16:07
不錯不錯
作者: yzh123 時間: 2018-4-25 19:05
謝謝樓主,
作者: 戚嘉丶 時間: 2018-4-27 14:41
頂一個
作者: 守候楓林紅葉時 時間: 2018-4-30 21:49
感謝分享,學習一下
作者: krate 時間: 2018-5-2 20:39
膜拜了,厲害!!!!1
作者: 566666123 時間: 2018-5-3 17:39
感謝資源共享!
作者: z894194853 時間: 2018-5-17 14:21
好資料,學習了
作者: a6103121 時間: 2018-5-19 12:01
拿來學習
作者: LanYan 時間: 2018-5-20 16:19
樓主寫的很棒!贊!
作者: 草棚 時間: 2018-5-22 15:39
厲害了
作者: 吳奔 時間: 2018-5-28 01:08
仿真圖好像不能在軟件上運行啊
作者: 荷下垂柳 時間: 2018-5-28 09:16
學習了
作者: 魔菲音電子 時間: 2018-5-28 11:24
好貼,參考學習一下
作者: 單片機研究51 時間: 2018-5-30 17:21
贊一個,看來不錯
作者: 想方設法 時間: 2018-5-30 17:26
哇牛逼
作者: 犀牛圣斧魔王 時間: 2018-5-31 15:15
好棒啊,我也想要
作者: liwen711 時間: 2018-6-12 22:02
請問一下,我在調試時候數碼管上總是8888怎么辦
作者: 二白白 時間: 2018-6-19 18:34
很給力
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
av在线播放免费
|
97精品国产97久久久久久免费
|
好色婷婷
|
av久久|
www.日韩在线
|
99这里有精品
|
在线观看欧美日韩视频
|
五月婷婷综合在线
|
在线播放一区
|
天天操夜夜摸
|
亚洲激情五月
|
综合激情网
|
六月色婷婷
|
久久91|
国产成人精品亚洲
|
日韩中文字幕在线视频
|
欧美黄色一区二区
|
亚洲男人av|
国产黄色av
|
久久精品1
|
国产精品成人在线
|
色草在线|
成年视频在线观看
|
在线日韩一区
|
夜夜操av
|
国产激情小视频
|
欧美在线视频一区二区
|
伊人精品综合
|
久久九九精品
|
国产精品三
|
亚洲天天看
|
国产欧美精品一区
|
国产又黄又爽视频
|
天天草天天
|
手机福利视频
|
久久精品伊人
|
婷婷精品
|
久操国产|
日韩不卡av|
美国特色黄a大片
|
亚洲综合激情五月久久
|