一、系統(tǒng)方案
本項(xiàng)目利用DS18B20傳感器、AD加光敏電阻傳感器,按鍵及對(duì)直流電機(jī)的控制實(shí)現(xiàn)智能百葉窗的控制。具體功能:LCD液晶顯示器顯示測(cè)量結(jié)果的光照強(qiáng)度和溫度,設(shè)置三個(gè)按鍵:手動(dòng)/自動(dòng)切換、手動(dòng)正轉(zhuǎn)和手動(dòng)反轉(zhuǎn),用一個(gè)發(fā)光二極管顯示手動(dòng)/自動(dòng)狀態(tài),自動(dòng)狀態(tài)時(shí)二極管亮,自動(dòng)模式下,當(dāng)光照強(qiáng)度或者溫度過高的時(shí)候關(guān)閉百葉窗,反之光強(qiáng)降低且溫度降低的時(shí)候才打開百葉窗。設(shè)置兩個(gè)極限位置保護(hù)行程開關(guān),用于保護(hù)百葉窗葉片:當(dāng)正轉(zhuǎn)到極限位置壓下行程開關(guān)時(shí),電機(jī)停止正轉(zhuǎn),但還可以反轉(zhuǎn);當(dāng)反轉(zhuǎn)到極限位置壓下行程開關(guān)時(shí),電機(jī)停止反轉(zhuǎn),但還可以正轉(zhuǎn)。
二、硬件設(shè)計(jì) 原理圖如下:
三、單片機(jī)軟件設(shè)計(jì) 1、首先是系統(tǒng)初始化: //外部中斷初始化 void EX_Init() { EA=1; IT0=1; EX0=1;
} 2、中斷服務(wù)程序 //中斷函數(shù) void Int0() interrupt 0 { flag=~flag; //模式變換 }
3、按鍵檢測(cè)程序 //讀取溫度 unsigned int Get_Temperature() { unsigned char *pt; //用來存放溫度值,測(cè)溫程序就是通過這個(gè)數(shù)組與主函數(shù)通信的 unsigned int real_tempure; pt=ReadTemperature(); //讀取溫度 covert(pt);//轉(zhuǎn)換溫度 //把溫度擴(kuò)大10倍避免小數(shù)運(yùn)算 real_tempure = ((TempBuffer[2]-0x30)*10)+TempBuffer[3]-0x30; real_tempure =(real_tempure*10) + TempBuffer[5]-0x30; if(TempBuffer[1]==0x31) //說明此時(shí)有百位 { real_tempure+=1000; } if(TempBuffer[0]==0x2d) //負(fù)溫度 { real_tempure*=-1; } return real_tempure; } 4、核心算法程序 void Control_motor() { if(flag==0) //自動(dòng)模式 { xianwei1=1; xianwei2=1; LED=0; _nop_(); if((Light_val<30)&&(real_tempure<200)&&(xianwei1==1)) //0-30 ,溫度小于20度 {IN1=1;IN2=0;} //正傳 else if(((Light_val>50)||(real_tempure>300))&&(xianwei2==1)) //溫度大于30度關(guān)窗簾 {IN1=0;IN2=1;} //反轉(zhuǎn) else {IN1=1;IN2=1;}//30-50 } if(flag==1) //手動(dòng)模式 { K3=1; K2=1; xianwei1=1; xianwei2=1; LED=1; //關(guān)指示燈 if((K2==0)&&(xianwei1==1)) //按鍵按下 {IN1=0;IN2=1;while(!K2);} if((K3==0)&&(xianwei2==1)) {IN1=1;IN2=0;while(!K3);} else {IN1=1;IN2=1;} //電機(jī)停止 } }
四、proteus仿真設(shè)計(jì) Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒有硬件平臺(tái)的基礎(chǔ)上通過自身的軟件仿真出硬件平臺(tái)的運(yùn)行情況,這樣就可以通過軟件仿真來驗(yàn)證我們?cè)O(shè)計(jì)的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達(dá)到我們?cè)O(shè)定的目的,避免我們搭建實(shí)物的時(shí)候,如果當(dāng)初選擇的方案有問題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測(cè)試,這樣會(huì)浪費(fèi)人力和物力,也給開發(fā)者帶來一定困惑,Proteus仿真軟件就很好的解決這個(gè)問題,我們?cè)谠O(shè)計(jì)之初,就使用該軟件進(jìn)行模擬仿真,測(cè)試,選擇滿足我們?cè)O(shè)計(jì)的最優(yōu)方案。最后根據(jù)測(cè)試沒問題的仿真圖紙,焊接實(shí)物,調(diào)試,最終完成本設(shè)計(jì)的作品。
|