《基于STC89C51單片機的智能風扇控制系統(tǒng)設計》11000字(論文)_第1頁
《基于STC89C51單片機的智能風扇控制系統(tǒng)設計》11000字(論文)_第2頁
《基于STC89C51單片機的智能風扇控制系統(tǒng)設計》11000字(論文)_第3頁
《基于STC89C51單片機的智能風扇控制系統(tǒng)設計》11000字(論文)_第4頁
《基于STC89C51單片機的智能風扇控制系統(tǒng)設計》11000字(論文)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

[30],增加了延時時間后再次下載程序,發(fā)現(xiàn)此時能夠很好的對屏幕進行清除。查閱資料得知,LCD1602執(zhí)行清屏的操作的確需要1.64ms,所以最后將程序延時時間修改為了4ms。(2)存儲數(shù)據(jù)不準確。解決方法:使用當前顯示設備對單片機內部的EEPROM存儲的數(shù)據(jù)進行觀察后發(fā)現(xiàn)第一個數(shù)據(jù)信息為0x00。當EEPROM存儲了0xf0數(shù)據(jù)信息后,關閉電源,然后打開電源,所讀數(shù)據(jù)信息為0xf0。然后第二次存儲0x0f并將其關閉,再一次接通電源后數(shù)據(jù)信息發(fā)生了改變,存儲的數(shù)據(jù)統(tǒng)一為0x0f,并進行解讀。如果想使用單片機內部儲存數(shù)據(jù)需要先格式化單片機,這一問題的主要原因在于由于地址限制輸入問題。當我們在測試過程中發(fā)現(xiàn)該問題后立即進行了擦除痕跡,解決這個問題的要素為在單片機運行之前,先擦除之前的地址信息,重新輸入即可。第五章結束語經過一段時間的建設,該項目的要求終于得到了基本的實現(xiàn)。由于時間、水平和經驗的限制,設計工作仍然存在一些差距。在整個設計過程中我受益匪淺,不僅提高了自己的實際操作能力,也讓我感受到了理論知識與實際應用之間的天差地別。設計過程中出現(xiàn)了很多沒有預設道德問題,雖然一開始會有些慌亂,但只要針對具體問題進行具體的分析,就能夠一步一步地解決它。本文中設計的系統(tǒng)軟件可以擴展為包括不同行業(yè)的電動機和可以調節(jié)的電動機運行速度的自動控制系統(tǒng)。在日常生活中,這種設計改進了每個人都在使用的風扇,使日常生活更加便捷。自動化工廠也可以在制造過程中協(xié)助調整發(fā)動機的運行速度??偠灾?,這項研究對我們的日常生產和生活非常有用。參考文獻薛娓娓,李娣娜,馬惠鋮.基于軸加速度傳感器的智能計步器設計[J].價值程,2019,38(33):162-164.廖建寧,袁粼,唐浩權,馬雪亭.多傳感器融合技術的智能窗居系統(tǒng)設計[J].數(shù)字技術與應用,2019,37(04):165-166.鐘鵬程.基于51單片機的多功能數(shù)字鐘設計[J].電子制作,2019(07):17-19.陳奕鴻,孫玉軒,周祖德,何芳.心率計脈搏測量儀[J].電子世界,2019(06):66-67.呂鵬飛.飛行器彈射參數(shù)測量裝置的研究與設計探析[J].電子世界,2019(06):67-68.李娣娜,馬惠鋮,王海軍.一種智能窗簾控制系統(tǒng)的設計[J].電子制作,2018(17):31-33.張亮.基于單片機的脈搏測試手表的設計[J].計算機與數(shù)字工程,2018,46(03):609-613.劉韋辰.光伏跟蹤系統(tǒng)設計與控制算法研究[D].西安建筑科技大學,2018.陳振,梅順齊,劉超,譚捷.基于51單片機的智能溫控風扇系統(tǒng)設計[J].機電信息,2017(21):124-125.梅孝安,劉航,彭嘉豪,王權,王佩佩.基于光纖通信的電機遙控系統(tǒng)的設計[J].電子技術,2017,46(01):45-46.全麗希.基于溫度壓力補償?shù)娘L速計的研究[D].東華理工大學,2015.范靜.基于圖像定位的PCB板級EMI自動監(jiān)測系統(tǒng)[D].蘇州大學,2015.陳樂庚,洪志鵬,崔更申.嵌入式物聯(lián)網智能網關的設計與實現(xiàn)[J].通信技術,2014,47(12):1455-1458.王世勇.基于CAN總線生物質鍋爐溫度控制系統(tǒng)設計[D].內蒙古工業(yè)大學,2014.郭蕭,祝玲.基于GPS/GSM的汽車智能防丟報警系統(tǒng)——軟件設計[J].電子世界,2014(08):111-112.張寧子.基于ITU總線的智能干濕球溫濕度測試系統(tǒng)研究[D].寧夏大學,2013.于云濤.煤礦大型機電設備群異常運行狀態(tài)辨識與預警網絡化系統(tǒng)研制[D].青島科技大學,2012.李建昌.基于DDS的信號波形發(fā)生器設計[D].河北科技大學,2010.易麗華,黃俊.基于AT89C51單片機與DS18B20的溫度測量系統(tǒng)[J].電子與封裝,2009,9(05):39-43.張拓.無線多點溫度采集系統(tǒng)的設計[D].武漢理工大學,2009.肖勇,張軍,閻家光.煤礦監(jiān)控系統(tǒng)中CAN總線網絡控制系統(tǒng)的設計與實現(xiàn)[J].礦業(yè)安全與環(huán)保,2008(06):34-35+42.李會艷.基于Web技術的糧庫監(jiān)控系統(tǒng)研究[D].武漢理工大學,2008.武寧.濕簾—風機降溫控制系統(tǒng)[D].河北工程大學,2007.張志勇,衛(wèi)勇,單慧勇.一種基于單片機控制的數(shù)字溫度計的設計[J].天津農學院學報,2007(01):51-54.楊秀鳳.雙路可控電源驅動電路設計研究[D].河北工業(yè)大學,2007.陳亞萍.FDM溫度控制系統(tǒng)的硬件結構設計[D].華中科技大學,2007.彭海霞,余永權,曾碧.基于LonWorks技術的智能家居網絡節(jié)點設計與開發(fā)[J].現(xiàn)代電子技術,2005(12):45-47.扈宏毅.獨立式全空調型客車空調模糊控制系統(tǒng)研究[D].廈門大學,2002.Ylai,Y,Wang.Threedimensionalnonlinearanalysisfortemperaturecharacteristofventilatedembankmentinpermafrostregions[J].GoldRegionsScienceandTechnology,2004,38(2):165-184.ChengGuodong.Linearityengineeringinpermafrostareas[J].JournalofGlac-iologyandGeocryology(inChinese),2001,23(3):213-217.附錄主要程序代碼#include<reg52.h> //頭文件定義#include<DS18B20.h>#include<EEPROM.h>#include<LCD1602.h>#include<INTERRUPT.h>#defineucharunsignedchar //宏定義#defineuintunsignedint/*****************燈、蜂鳴器、按鍵引腳定義*******************/sbitled=P3^2; //LED燈引腳定義sbitbuzz=P3^7; //蜂鳴器sbitkey_set=P1^0; //設置鍵sbitkey_jia=P1^3; //加值鍵sbitkey_jian=P1^6; //減值鍵/*********************全局變量定義***************************/ucharTemp_up,Temp_down;//存儲溫度上限值、下限值uintset_f;//設置選擇標記,=0非設置,=1設置上限,=2設置下限ucharnum; //計數(shù)變量/********************************************************函數(shù)名稱:voiddelayms(uintms)函數(shù)作用:毫秒延時函數(shù)參數(shù)說明:ms為延時的毫秒數(shù)********************************************************/voiddelayms(uintms){ unsignedchari=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } }}/********************************************************函數(shù)名稱:voiddisplay()函數(shù)作用:正常顯示溫度參數(shù)說明:********************************************************/voiddisplay(){ lcd1602_write_character(0,2,"H:"); //顯示"H"【0:表示第1列,2:表示第2行,所有關于顯示都一樣】 lcd1602_write_character(9,2,"L:"); LCD_disp_char(2,2,ASCII[Temp_up%1000/100]);//顯示【溫度上限值】 LCD_disp_char(3,2,ASCII[Temp_up%100/10]); LCD_disp_char(4,2,ASCII[Temp_up%10]); LCD_disp_char(5,2,0); //顯示自定義字符【°】 LCD_disp_char(6,2,'C'); //顯示【C】 LCD_disp_char(11,2,ASCII[Temp_down%1000/100]);//顯示【溫度下限值】 LCD_disp_char(12,2,ASCII[Temp_down%100/10]); LCD_disp_char(13,2,ASCII[Temp_down%10]); LCD_disp_char(14,2,0); //顯示自定義字符【°】 LCD_disp_char(15,2,'C'); //顯示【C】 if(fuhao==0) //顯示溫度符號 LCD_disp_char(3,1,'+'); //零上 else LCD_disp_char(3,1,'-'); //零下 lcd1602_write_character(4,1,temp_t); //顯示【實際溫度值】 LCD_disp_char(10,1,0); //顯示自定義字符【°】 LCD_disp_char(11,1,'C'); //顯示【C】}/********************************************************函數(shù)名稱:voiddisplay2()函數(shù)作用:顯示設置溫度限值參數(shù)說明:********************************************************/voiddisplay2(){ num++; lcd1602_write_character(0,1,"Setlimitvalue"); lcd1602_write_character(0,2,"H:"); lcd1602_write_character(9,2,"L:"); LCD_disp_char(5,2,0); //顯示自定義字符【°】 LCD_disp_char(6,2,'C'); //顯示【C】 LCD_disp_char(14,2,0); //顯示自定義字符【°】 LCD_disp_char(15,2,'C'); //顯示【C】 if(num%2==0) //偶數(shù)次顯示,奇數(shù)次不顯示。這樣就會有閃爍效果,可以清楚看到當前設置的是哪個值 { LCD_disp_char(2,2,ASCII[Temp_up%1000/100]);//顯示【溫度上限值】 LCD_disp_char(3,2,ASCII[Temp_up%100/10]); LCD_disp_char(4,2,ASCII[Temp_up%10]); LCD_disp_char(11,2,ASCII[Temp_down%1000/100]);//顯示【溫度下限值】 LCD_disp_char(12,2,ASCII[Temp_down%100/10]); LCD_disp_char(13,2,ASCII[Temp_down%10]); } else //奇數(shù)次不顯示 { if(set_f==1)//設置上限值 lcd1602_write_character(2,2,""); //顯示空格 if(set_f==2)//設置下限值 lcd1602_write_character(11,2,""); }}/********************************************************函數(shù)名稱:voidscan(void)函數(shù)作用:按鍵檢測處理參數(shù)說明:********************************************************/voidscan(void){ //設置鍵,不支持連按 if(key_set==0) //按鍵按下 { delayms(7); //延時消抖 if(key_set==0) //再次確認按下按鍵 { led=1; //關閉報警燈 buzz=1; //關閉蜂鳴器 feng=1; //關閉風扇 TR0=0; //關閉定時器 if(set_f==0)//進入設置時,先清除屏幕 { LCD_write_command(0x01);//清除屏幕顯示 delay_n40us(100); //延時等待全部清除完畢 } set_f++; //設置變量+1 if(set_f==3)//如果設置完成,退出設置 { set_f=0;//重置設置變量 EEPROM_delete(0x2002); //擦除扇區(qū) EEPROM_write(0x2002,Temp_up);//寫入【溫度上限值】數(shù)據(jù)保存 EEPROM_delete(0x2202); //擦除扇區(qū) EEPROM_write(0x2202,Temp_down);//寫入【溫度下限值】數(shù)據(jù)保存 LCD_write_command(0x01);//清除屏幕顯示 delay_n40us(100); //延時等待全部清除完畢 } } while(!key_set);//等待按鍵松開 } //加值鍵,支持連按 if(key_jia==0&&set_f!=0)//按鍵按下,并卻在設置模式下 { delayms(7); //延時消抖 if(key_jia==0) //再次確認按鍵按下 { if(set_f==1)//設置【溫度上限值】 { if(Temp_up<125)//最大值可設置125℃ Temp_up++;//溫度上限值+1℃ } if(set_f==2)//設置【溫度下限值】 { if(Temp_down<125&&Temp_down+1<Temp_up)//最大值可設置125℃,并且下限不可超過上限 Temp_down++;//溫度下限值+1℃ } } } //減值鍵,支持連按 if(key_jian==0&&set_f!=0)//按鍵按下,并卻在設置模式下 { delayms(7); //延時消抖 if(key_jian==0) //再次確認按鍵按下 { if(set_f==1)//設置【溫度上限值】 { if(Temp_up!=0&&Temp_up>Temp_down+1)//最小值可設置0℃,并且上限得比下限大 Temp_up--;//溫度上限值-1℃ } if(set_f==2)//設置【溫度下限值】 { if(Temp_down!=0)//最小值可設置0℃ Temp_down--;//溫度下限值-1℃ } } }}/********************************************************函數(shù)名稱:voidmain()函數(shù)作用:主函數(shù)參數(shù)說明:********************************************************/voidmain(){ uinti;//循環(huán)計數(shù) Temp_up=EEPROM_read(0x2002); //讀取存儲的【溫度上限值】數(shù)據(jù) Temp_down=EEPROM_read(0x2202);//讀取存儲的【溫度下限值】數(shù)據(jù) DS18B20_init(); //DS18B20初始化 LCD_init(); //LCD1602初始化 T0_init(); //定時器初始化 lcd1602_write_pic(0,pic);//將自定義字符【°】寫入LCD1602液晶 lcd1602_write_character(0,1,"init..."); for(i=0;i<150;i++) //上電先等待DS18B20溫度傳感器進入正常工作。 DS18B20_Read_Temperature();//讀取溫度 LCD_write_command(0x01);//清除屏幕顯示 delay_n40us(100); //延時等待全部清除完畢 while(1) //死循環(huán) { scan(); //進行按鍵檢測 if(set_f==0)//非設置模式,正常顯示溫度 { i++; //循環(huán)次數(shù)+1 if(i>=15000)//每循環(huán)15000次,采集一次溫度 { i=0; //重置循環(huán)變量 EA=0; DS18B20_Read_Temperature();//讀取溫度數(shù)據(jù) EA=1; DS18B20_Temperature(); //將溫度數(shù)據(jù)轉換實際溫度 if(presence==0) //判斷溫度讀取正常 { if(Temperature>=Temp_up||Temperature<Temp_down)//判斷實際溫度是否大于等于上限或小于下限值 { led=0; //打開報警燈 buzz=0; //蜂鳴器報警 TR0=0; if(Temperature>=Temp_up)//如果,超過上限值 feng=0;//打開風扇 else //否則,低于下限值 feng=1;//關閉風扇 } else //實測溫度處于限值之間 { led=1;//關閉報警燈 buzz=1;//關閉蜂鳴器 PWM=50;//控制PWM=50% TR0=1;//開啟定時器,PWM控制風扇轉速 } display();//顯示實際溫度 } else //否則,溫度采集失敗 { TR0=0; //關閉定時器 feng=1;//關閉風扇 lcd1602_write_character(3,1,"NOT"); } } } else//設置模式顯示 display2(); //顯示設置限值 }}#ifndef_INTERRUPT_H_#define_INTERRUPT_H_#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint/**********************引腳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論