版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機畢業(yè)設(shè)計糧食倉庫實時溫度監(jiān)控報警系統(tǒng)院 系: 班 級: 設(shè) 計 :學 號: 指 導 老 師: 設(shè)計日期:目 錄第1章 引言3第2章 設(shè)計任務(wù)分析5第3章 倉庫環(huán)境溫度實時監(jiān)控系統(tǒng)的總體設(shè)計5 一、總體設(shè)計框圖.5 二、 硬件設(shè)計.6 三、軟件設(shè)計.7 設(shè)計小結(jié). .29 參考文獻. 30第1章 引言本論文是基于單片機的倉庫溫濕度監(jiān)控系統(tǒng),該系統(tǒng)克服了傳統(tǒng)裝置的不足之處,由信號采集、信號分析和信號處理三個部分組成的,是一種造價低廉、使用方便簡單,且測量準確的溫濕度測量裝置。論文介紹 本設(shè)計用于溫度的智能控制,節(jié)能環(huán)保,低耗能,噪音低,設(shè)計合理,體現(xiàn)了優(yōu)化設(shè)計低碳生活的理念。下面是本設(shè)計的具
2、體內(nèi)容及功能說明。1.溫度測量,測量范圍0-125 c2.數(shù)字式溫度范圍可調(diào),0-125 c。各種設(shè)定值在掉電后不會丟失,各種溫度初始化設(shè)定值如下所述: 風機啟動:90 c 風機停止:70 c 超溫報警:120 c 報警: 100 c3.保存上次掉電時的瞬間溫度,最高溫度,最低溫度。4.可以手動啟停風機,超溫報警,報警信號的顯示。5.可以聲光報警。6.帶時鐘顯示,可以調(diào)整時間,7.可以查看掉電時,瞬間溫度的時間,最高溫度的時間,最低溫度的時間8.鬧鐘設(shè)置功能9.鬧鐘初始值 是 8:00(1鍵是確定鍵,2鍵是加鍵,3是減鍵,4是退出鍵,5是設(shè)置溫度鍵,6是時間設(shè)置鍵,7是查看掉電前時的瞬間溫度及
3、出現(xiàn)的時間,最高溫度及出現(xiàn)的時間,最低溫度及出現(xiàn)的時間,當前最高時的溫度及出現(xiàn)的時間。8鍵時設(shè)置鬧鐘時的時間。9鍵手動開關(guān)風機,超溫跳閘,報警。)10. 可以與上位機進行通訊:上位機 (1)按下1鍵可以在上位機查看掉電前瞬間時的溫度,及時間 (2)按下2鍵時在上位機可以看到此刻的溫度,及時間 (3)按下3鍵可在上位機以看到設(shè)定超溫的溫度 也就是跳閘溫度 (4)按下4鍵可以在上位機看到設(shè)定的報警溫度 (5)按下5鍵在上位機上可以看到設(shè)定的開風機溫度 (6)按下6鍵在上位機上可以看到設(shè)定的關(guān)風機溫度 (7)按下7鍵可以實現(xiàn)開風機 (8)按下8鍵可以實現(xiàn)關(guān)風機11、設(shè)置時間:按下設(shè)置時間鍵后,接下來
4、設(shè)置月,設(shè)置日,設(shè)置時,設(shè)置分,設(shè)置時,按2,3鍵進行調(diào)整數(shù)值,設(shè)置時可以按退出鍵(4)退出。12.設(shè)置鬧鐘時,按下設(shè)置鬧鐘鍵后,接下來設(shè)置時,分,按2,3鍵進行調(diào)整數(shù)值,設(shè)置時可以按退出鍵(4)退出。13.設(shè)置溫度:按下設(shè)置溫度鍵后,會彈出提示語,ok按1鍵,ese按4鍵,設(shè)置完后,按ok鍵可以退出,在中間設(shè)置時,可以按退出鍵(4)退出。14查詢溫度:按下查詢溫度鍵后,按下2,3鍵可以切換查詢的內(nèi)容,在溫度后面顯示的數(shù)字:0代表掉電前瞬間時的溫度,1代表掉電前出現(xiàn)的最高溫度,2代表掉電前出現(xiàn)的最低溫度,3代表此次出現(xiàn)的最高溫度,4代表此次出現(xiàn)的最低溫度。按退出鍵(4)退出查看。15.手動開關(guān)
5、風機,當按下9鍵后,超溫跳閘,按2,3鍵后可以超溫跳閘,報警,開風機,關(guān)風機之間切換,按退出鍵(4)鍵退出手動操作。第2章 設(shè)計任務(wù)分析一實時 :能夠按照實際的日期時間顯示和記錄各項待檢測物理量的參數(shù)值。二溫度:能夠檢測各連續(xù)時間點所對應(yīng)的的溫度值。三監(jiān)控:用戶隨時能夠了解到倉庫任意時間(包括歷史時間)的溫度狀況以及做出相應(yīng)的對策和處理措施,特別是不需要工作人員到倉庫現(xiàn)場就可以知道倉庫里的溫度環(huán)境狀況。四報警:當倉庫的環(huán)境溫度超過設(shè)定值時系統(tǒng)報警,風機啟動,然后進行通風。五本系統(tǒng)通過液晶顯示器將時間和溫度顯示給用戶以及和上位機通訊。第3章 倉庫環(huán)境溫度實時監(jiān)控系統(tǒng)的總體設(shè)計一、總體設(shè)計框圖單
6、片 機倉庫檢測溫度時鐘輸入ic總線lcd 液晶顯示功率接口(驅(qū)動器)繼電器風機聲音報警通訊二、 硬件設(shè)計(附圖) 重要元器件介紹 此次設(shè)計用到的芯片有at89s52、at2404、lcm2402、uln2003、maxim487、dst302、ds18b20三 、軟件設(shè)計設(shè)計程序如下:30 #include#include#define uchar unsigned char#define uint unsigned int uchar count,count1;uchar clock_beep;char k_diaodian;uchar chaowenflag,baojinflag,kaif
7、engjiflag;uchar key_ok=0; uchar key_ese=0;uchar key_add1=0; uchar key_add2=0; uchar key_settemp=0;uchar key_time=0;uchar key_searchtem=0; uchar key_clock=0;uchar key_qiting=0;uchar ser_flag=0;uchar ser_a=0;#define lcm2402_db0_db7 p0 /數(shù)據(jù)總線 sbit lcm2402_rs =p25; /定義lcm2402的rs控制線sbit lcm2402_rw =p24; /
8、定義lcm2402 的rw控制線sbit lcm2402_e =p23; /定義lcm2402的e控制線sbit lcm2402_busy =p07; /定義lcm2402的側(cè)忙線 /lcm2402指令集#define cmd_clear 0x01 #define cmd_back 0x02#define cmd_dec1 0x04#define cmd_add1 0x06#define cmd_dis_gb1 0x0f#define cmd_dis_gb2 0x0e#define cmd_dis_gb3 0x0c#define cmd_off_dis 0x08#define cmd_set8
9、2 0x38#define cmd_set81 0x30#define cmd_set42 0x28#define cmd_set41 0x20#define lin_1 0x80#define lin_2 0xc0/ 底層協(xié)議void delays(uint a) /延時 大概1ms uchar i; while (-a!=0) for(i=0;i125;i+) ; void delays250(void) /延時 delays(250); / lcm2402測忙,若lcm2402處于忙狀態(tài),本函數(shù)將繼續(xù)測忙,直到lcm2402處于非忙狀態(tài) void lcm2402_testbusy(voi
10、d ) lcm2402_db0_db7=0xff; /設(shè)備讀狀態(tài) lcm2402_rs=0; lcm2402_rw=1; lcm2402_e=1; while (lcm2402_busy); lcm2402_e=0; void lcm2402_writecmd(uint lcm2402_command) lcm2402_testbusy(); lcm2402_db0_db7=lcm2402_command; lcm2402_rs=0; lcm2402_rw=0; lcm2402_e=1; lcm2402_e=0; void lcm2402_writedata(uint lcm2402_data
11、) lcm2402_testbusy(); lcm2402_db0_db7=lcm2402_data; lcm2402_rs=1; lcm2402_rw=0; lcm2402_e=1; lcm2402_e=0; void lcm2402_init(void) lcm2402_writecmd(cmd_set82); lcm2402_writecmd(cmd_clear); lcm2402_writecmd(cmd_back); lcm2402_writecmd(cmd_add1); lcm2402_writecmd(cmd_dis_gb3); void print (uint *str) lc
12、m2402_writecmd(a); while (*str!=0) lcm2402_writedata(*str+);*str=0; void print2(uint a,uint t) lcm2402_writecmd(a); lcm2402_writedata(t); /寫數(shù)據(jù)lcm創(chuàng)建小漢字 unsigned int code xword= 0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00, /c 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00, /一 0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0
13、x00, /二 0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00, /三 0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00, /四 0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00, /五 0x00,0x0r,0x00,0xff,0x00,0x0a,0x11,0x00, /六 0x00,0x1f,0x11,0x1f,0x11,0x11,0x1f,0x00, /日; void cgramwrite(void) /裝入cgram unsigned int i,k; k=at24c02_read(0x33);
14、/讀取標志位,多次開機,只執(zhí)行一次這程序 if(k=1) lcm2402_writecmd(0x06); / cgram地址自動加一 lcm2402_writecmd( 0x40); /cgram 地址設(shè)為00處 for(i=0;i64;i+) lcm2402_writedata(xwordi); at24c02_writecmd(0x33,0); / 寫入0標志位 /at24c02芯片 的處理sbit scl=p21;sbit sda=p22;sbit mos_bitsbit low_bitdata com_data / 定義一個能位尋址的變量mos_bit= com_data7;low_b
15、it= com_data0;void start() sda=1; _nop_(); _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); sda=0; _nop_(); _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_(); void stop() sda=0; _nop_(); _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); sda
16、=1; _nop_(); _nop_(); _nop_(); _nop_(); void ack() scl=1; _nop_(); _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_();void shift8(char a) data uchar i; com_data=a; for(i=0;i8;i+) sda=mos_bit; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_(); com_
17、data=com_data*2; unsigned char at24c02_read(char a) /讀數(shù)據(jù) data unsigned char i,command; sda=1; _nop_(); _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_(); start(); command=160; shift(command); ack(); shift8(a); ack(); start(); command=161; shift8(command); ack(); sda=1; _nop_(); _n
18、op_(); _nop_(); _nop_(); for(i=0;i0;i-) dq=0; dat=1; dq=1; if(dq) dat|=0x80; delay(4); return(dat); void writeonechar(uchar dat) / 寫一字節(jié) uchar i=0; for(i=8;i0;i-) dq=0; dq=dat&01; delay(5); dq=1; dat=1; uint readtemperature(void)/讀取溫度 uchar a=0; uchar b=0; uint t=0; float tt=0; init_ds18b20(); writeo
19、nechar(0xcc); / 跳過序列號的操作 writeonechar(0x44);/啟動溫度轉(zhuǎn)換 init_ds18b20(); writeonechar(0xcc); / 跳過序列號的操作 writeonechar(0xbe)/讀取溫度寄存器 a=readonechar(); b=readonechar(); t=b; t0) print2(0xc2,a+0x30); b=i/100-a*10; print2(0xc3,b+0x30); c=i/10%10; print2(0xc4,c+0x30); print2(0xc5,.); d=t%10; print2(0xc6,d+0x30)
20、;print2(0xc7,0x00); / 實時時間顯示void realtime_display(void) print (0x80,20); print2 (0x82, (read_clock(0x8d)/16)+0x30); print2 (0x83, (read_clock(0x8d)%16)+0x30); print(0x84,/); /顯示年 print2(0x85,(read_clock(0x89)/16)+0x30); print2(0x86,(read_clock(0x89)%16)+0x30); print(0x87,/); /顯示月 print2(0x88,(read_c
21、lock(0x87)/16)+0x30); print2(0x89,(read_clock(0x87)%16)+0x30); print(0x8b,); /顯示 print2(0x8c,read_clock(0x8b)%16); /顯示星期 print(0x8d,); / 顯示 print2(0x8f,(read_clock(0x85)/16)+0x30); /顯示小時 print2(0x90,(read_clock(0x85)%16)+0x30); print(0x91,:); /顯示cgram 第一個字模 print2(0x92,(read_clock(0x83)/16)+0x30); /
22、 顯示分 print2(0x93,(read_clock(0x83)%16)+0x30); print(0x94,.); /顯示cgram 第一個字模 print2(0x95,(read_clock(0x81)/16)+0x30); /顯示秒 print2(0x96,(read_clock(0x81)%16)+0x30); print(0x8a, ); / 在主顯示區(qū)空白處寫入空格 防止亂碼 print(0x8e, ); print(0xc0, ); / 按鍵掃描 void key_scan(void)unsigned char n;/掃描第一行p1=0xfe;n=p1;n&=0xf0;if(
23、n!=0xf0) delay(); p1=0xfe; n=p1; n&=0xf0; if(n!=0xf0) switch(n) case(0xe0):key_ese=1;break; case(0xd0):key_add1=1;break; case(0xb0):key_add2=1;break; case(0x70):key_ok=1;break; /掃描第二行p1=0xfd;n=p1;n&=0xf0;if(n!=0xf0) delay(); p1=0xfd; n=p1; n&=0xf0; if(n!=0xf0) switch(n)case(0xe0):key_settemp=1;break
24、; case(0xd0):key_time=1; break; case(0xb0):key_searchtem;break; case(0x70):key_clock=1;break; /掃描第三行 / 后面8個鍵暫無定義,以備后用p1=0xfb;n=p1;n&=0xf0;if(n!=0xf0) delay(); p1=0xfb; n=p1; n&=0xf0; if(n!=0xf0) switch(n) case(0xe0):qiting=1;break; case(0xd0):;break; case(0xb0):;break; case(0x70):;break; /掃描第四行p1=0x
25、f7;n=p1;n&=0xf0;if(n!=0xf0) delay(); p1=0xf7; n=p1; n&=0xf0; if(n!=0xf0) switch(n) case(0xe0):;break; case(0xd0):;break; case(0xb0):;break; case(0x70):;break; / 按鍵初始化void key_init() key_ok=0; key_ese=0; key_add1=0; key_add2=0; key_settemp=0; key_time=0; key_searchtem=0; key_clock=0; /產(chǎn)生鬧鐘 sbit bell_
26、out =p23;void beep( uchar a,uchar b,uchar c,uchar d) for(;a0;a-) bell_out=bell_out; /產(chǎn)生音頻 delay(b); /音調(diào)延時 for(;c0;c-) bell_out=bell_out; delay(d); bell_out=1; void beep_k(void) / 揚聲器按鍵音 beep(10,60,5,250); void beep_c(void) /超溫報警聲音 beep(400,26,350,40); void beep_a(void) /報警聲音 beep(300,16,250,40); voi
27、d beep_al(void) /報警聲音 beep(100,16,150,40); void beep_z(void) / 整點報時 beep(60,100,100,80); void beep_n(void) /鬧鐘響 beep(200,20,150,15); void kaifengji(); char k; k=at24c02_read(0x32); /判斷是否第一次開機,第一次時k=255;第一次時,進行初始化下,不是,則退出 if(k!=1) at24c02_write(0x20,1); /初始化超溫,報警,開關(guān)風機 at24c02_write(0x21,2); at24c02_w
28、rite(0x22,0); at24c02_write(0x24,1); at24c02_write(0x25,0); at24c02_write(0x26,0); at24c02_write(0x28,0); at24c02_write(0x29,9); at24c02_write(0x2a,0); at24c02_write(0x2c,0); at24c02_write(0x2d,7); at24c02_write(0x2e,0); at24c02_write(0x30,8); /初始化鬧鐘 小時 at24c02_write(0x31,0); /分鐘 at24c02_write(0x32,1); /初始化第一開機 at24c02_write(0x33,1); /cgram 初始化標志位 at24c02_write(0x34,1); /1302 時間初始化標志位 for(i=0;i48;i+) /初始化掉電前時的溫度 at24c02_write(0x40+i,0); void init_time()/兩個定時器初始化 一個定時溫度,報警,定時1定時鬧鐘 tmod=0x11; /工作方式1 th0=(65536-50000)/256; /初始值50ms tl0=(65536-50000)%256; th1=(65536-40000)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度進出口貨運代理合同客戶滿意度與服務(wù)評價體系
- 2025年度酒店餐飲設(shè)備升級改造合同(含售后服務(wù))
- 2025年智能安防系統(tǒng)分包合同
- 2025年度快遞配送服務(wù)合同升級版
- 2025年智能能源管理系統(tǒng)監(jiān)控設(shè)備采購合同
- 2025年度老舊小區(qū)水電改造升級工程合同范本
- 2025年度物流企業(yè)物流成本控制及優(yōu)化合同
- 2025年度房屋買賣稅費代繳代理合同
- 2025年度借車合同模板:車輛借用期限與續(xù)租規(guī)定
- 2025年度高校與企業(yè)聯(lián)合培養(yǎng)實習生安置合同
- 對違反政治紀律行為的處分心得體會
- 大學生職業(yè)生涯發(fā)展與規(guī)劃(第二版)PPT完整全套教學課件
- 《深度學習革命》讀書筆記思維導圖PPT模板下載
- SAP可配置產(chǎn)品學習課件
- 傳統(tǒng)運動療法易筋經(jīng)教案5
- GB/T 8014.1-2005鋁及鋁合金陽極氧化氧化膜厚度的測量方法第1部分:測量原則
- 股票基礎(chǔ)知識(入市必讀)-PPT
- 雅思閱讀題型與技巧課件
- 招商銀行房地產(chǎn)貸款壓力測試
- 公文與公文寫作課件
- 車削成形面和表面修飾加工課件
評論
0/150
提交評論