版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
致謝通過這個設(shè)計,我認(rèn)識到科學(xué)的相通性,很多新的設(shè)計都匯集了眾多技術(shù)項目。在這里我們需要感謝幫助我們的指導(dǎo)老師,是他們一步一步地進(jìn)行引導(dǎo)我們打開了思想去構(gòu)造出各項組件。當(dāng)所有的困難都出現(xiàn)時,老師總是指出困惑并回答我們。使得計劃繼續(xù)進(jìn)行,在整個過程中會出現(xiàn)新的困難,整個任務(wù)進(jìn)展也會被打斷。但在老師的幫助下,我們不斷克服這些問題,解決這些問題。人生就是一個在不斷的學(xué)習(xí)和實踐,一次又一次地挑戰(zhàn)自己的過程;這個設(shè)計,不僅給了我一次社會實踐的機會,端正了我的學(xué)習(xí)生活態(tài)度,提高了我的動手操作能力。讓我在各方面都得到很大的提高。鍛煉了我的思維,提高了我的整體素質(zhì)。通過技術(shù)創(chuàng)新性實驗,我體會到創(chuàng)新發(fā)展能力和動手實踐能力的重要性,同時,也看到了我們自身能力存在的不足,并在不斷地進(jìn)行努力中完善了自己。論文寫完的時候意味這在這個學(xué)校得最后一課也結(jié)束了,回想三年的時光轉(zhuǎn)瞬即逝,曾經(jīng)的伙伴也背起了行囊準(zhǔn)備踏入社會,感謝老師這兩年的教育,然我受益匪淺,那些往日的點點滴滴映入眼簾,曾經(jīng)的歡笑,眼淚,挫敗還有收獲都是我最寶貴的回憶,我將好好珍藏。這些回憶都是那樣的溫暖。其中最要感謝的是我的指導(dǎo)老師戴紅霞,因為本論文是在她的悉心的幫助下完成的。她把她對論文的構(gòu)思,框架和理論教給了我,這才使的我的論文可以順利地完成。最后感謝所有關(guān)心我的人和我關(guān)心的人,我會努力的。附錄一元件清單附錄A元件清單編號注釋描述數(shù)量130pf直插瓷片電容2210uF直插電解電容13SMG04_1共陽數(shù)碼管14LED0LED燈5mm15speaker蜂鳴器16POWERDC電源插座17S9012PNP三極管581K電阻14910K電阻210SW-PB按鍵411MCU51單片機112DS18B20數(shù)字溫度管11312MHZ晶振114導(dǎo)線100cm115焊錫200cm116USB電源線系統(tǒng)供電117萬用板優(yōu)質(zhì)板118單片機插座40腳IC座1附錄三實物圖附錄Bc語言程序#include<reg52.h> //調(diào)用單片機頭文件#defineucharunsignedchar//無符號字符型宏定義 變量范圍0~255#defineuintunsignedint //無符號整型宏定義 變量范圍0~65535#include"eeprom52.h"http://數(shù)碼管段選定義012345 6 7 8 9 ucharcodesmg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8}; ucharsmg_i=3;//顯示數(shù)碼管的個位數(shù)sbitdq=P2^4; //18b20IO口的定義bitkey_500ms;sbitbeep=P2^3;//聲光報警接口ucharf_pwm_l; //越小越慢uinttemperature;//bitflag_300ms;ucharmenu_1;//菜單設(shè)計的變量uintt_high,t_low; //溫度上下限報警值uintnumber;/***********************1ms延時函數(shù)*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}voiddelay_uint(uintq){ while(q--);}voiddisplay(){ staticuchari; i++; if(i>=smg_i) i=0; P1=0xff; //消隱 P3=smg_we[i]; //位選 P1=dis_smg[i]; //段選 }voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); }voidread_eeprom(){ t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);}/**************開機初始化保存的數(shù)據(jù)*****************/voidinit_eeprom(){ read_eeprom(); //先讀 if(a_a!=22) //新的單片機初始單片機內(nèi)問eeprom { t_high=400; t_low=100; a_a=22; write_eeprom(); //保存數(shù)據(jù) } }voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(20); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把總線拿低讀時間隙開始 value>>=1; //讀數(shù)據(jù)是低位開始 dq=1; //釋放總線 if(dq==1) //開始讀寫數(shù)據(jù) value|=0x80; delay_uint(5); //60us 讀一個時間隙最少要保持60us的時間 } returnvalue; //返回數(shù)據(jù)}uintread_temp(){ uintvalue; ucharlow; init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉(zhuǎn)換命令 EA=1; delay_uint(50); //500us init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}voidtime_init() { EA=1; //開總中斷 TMOD=0X11; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時 ET1=1; //開定時器0中斷 TR1=0; //允許定時器0定時}/********************獨立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨立按鍵程序{ staticucharkey_new; key_can=20;//按鍵值還原 P2|=0x07; if((P2&0x07)!=0x07) //按鍵按下 { if(key_500ms==1) //連加 { key_500ms=0; key_new=1; } delay_1ms(1); //按鍵消抖動 if(((P2&0x07)!=0x07)&&(key_new==1)) { //確認(rèn)是按鍵按下 key_new=0; switch(P2&0x07) { case0x06:key_can=3;break; case0x05:key_can=2;break; case0x03:key_can=1;break; } flag_lj_en=1; //連加使能 } } else { if(key_new==0) { key_new=1; write_eeprom(); //保存數(shù)據(jù) flag_lj_en=0; //關(guān)閉連加使能 flag_lj_3_en=0; //關(guān)閉3秒后使能 key_value=0; //清零 key_time=0; key_500ms=0; } } }voidkey_with(){ if(key_can==1) //設(shè)置鍵 { f_pwm_l=30; menu_1++; if(menu_1>=3) { menu_1=0; smg_i=3; //數(shù)碼管顯示3位 } } if(menu_1==1) //設(shè)置高溫報警 { smg_i=4; //數(shù)碼管顯示4位 if(key_can==2) { if(flag_lj_3_en==0) t_high++; //按鍵按下未松開自動加三次 else t_high+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_high>990) t_high=990; } if(key_can==3) { if(flag_lj_3_en==0) t_high--; //按鍵按下未松開自動減三次 else t_high-=10; //按鍵按下未松開自動減三次之后每次自動減10 if(t_high<=t_low) t_high=t_low+1; } dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0xdf;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x64; //H } if(menu_1==2) //設(shè)置低溫報警 { smg_i=4; //數(shù)碼管顯示4位 if(key_can==2) { if(flag_lj_3_en==0) t_low++; //按鍵按下未松開自動加三次 else t_low+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_low>=t_high) t_low=t_high-1; } if(key_can==3) { if(flag_lj_3_en==0) t_low--; //按鍵按下未松開自動減三次 else t_low-=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_low<=10) t_low=10; } dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0xdf;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0x3D; //L } }/****************報警控制函數(shù)***************/voidbaojing_kz(){ if(temperature<t_high&&temperature>t_low) { TR1=0; beep=1; } else { TR1=1; if(number>=1000) { number=0; beep=~beep; } }} /****************主函數(shù)***************/voidmain(){ P0=P1=P2=P3=0xff; time_init();//初始化定時器 temperature=read_temp(); //先讀出溫度的值 init_eeprom();//開始初始化保存的數(shù)據(jù) delay_1ms(650); temperature=read_temp(); //先讀出溫度的值 dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0xdf;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 f_pwm_l=50; while(1) { key(); //按鍵程序 if(key_can<10) { key_with(); //設(shè)置報警溫度 } if(flag_300ms==1) //300ms處理一次溫度程序 { flag_300ms=0; temperature=read_temp(); //先讀出溫度的值 if(menu_1==0) {
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲店鋪租賃合同樣板
- 煙草種植園設(shè)備更新合同
- 店鋪轉(zhuǎn)讓出售合同范例
- 會展物流服務(wù)合同模板
- 扶梯配件采購合同范例
- 拉石子運費合同模板
- 招聘電商合同模板
- 救助拖船租賃合同范例
- 壓瓦加工合同模板
- 內(nèi)部承包維修合同范例
- 讓成長不煩惱小學(xué)生青春期性教育
- 輸血相關(guān)移植物抗宿主疾病課件
- 5.2探秘人工智能+教學(xué)設(shè)計
- 公共政策分析的實際案例【4篇】
- 《工程項目審計》課件
- 四年級(上)體育課教案
- 四川省達(dá)州市2024年中考數(shù)學(xué)試卷【附真題答案】
- 郵儲高級練習(xí)卷二(第7章-第11章)附有答案
- 2024年巴西機器人工具快換裝置市場機會及渠道調(diào)研報告
- 基礎(chǔ)教育質(zhì)量提升調(diào)研報告(3篇模板)
- 云南省昭通市一中教研聯(lián)盟高一上學(xué)期期末考試數(shù)學(xué)(B卷)
評論
0/150
提交評論