畢業(yè)設(shè)計(jì)(論文)紅外報警監(jiān)控系統(tǒng)溫濕度監(jiān)測_第1頁
畢業(yè)設(shè)計(jì)(論文)紅外報警監(jiān)控系統(tǒng)溫濕度監(jiān)測_第2頁
畢業(yè)設(shè)計(jì)(論文)紅外報警監(jiān)控系統(tǒng)溫濕度監(jiān)測_第3頁
畢業(yè)設(shè)計(jì)(論文)紅外報警監(jiān)控系統(tǒng)溫濕度監(jiān)測_第4頁
畢業(yè)設(shè)計(jì)(論文)紅外報警監(jiān)控系統(tǒng)溫濕度監(jiān)測_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 華南農(nóng)業(yè)大學(xué)珠江學(xué)院 畢業(yè)論文 題目 紅外報警監(jiān)控系統(tǒng) 溫濕度監(jiān)測 作者: 指導(dǎo)老師: 系:2008 年級專業(yè):電子信息工程 提交日期: 答辯日期: 答辯委員會主席(簽名): 評閱人(簽名): 年 月 日 (一) 摘 要隨著社會的發(fā)展,科學(xué)技術(shù)的進(jìn)步和安全防范意識的增強(qiáng),人們越來越注重自身所處的環(huán)境是否安全。當(dāng)家中無人或者僅有老人孩子在家時,必須考慮家庭成員生命和財產(chǎn)的絕對安全。目前,許多住宅小區(qū)的安防主要依靠安裝防盜窗、防盜門以及人工防范。這樣不僅有礙美觀,不符合防火的要求,而且不能有效地防止壞人的侵入。本課題研究紅外報警監(jiān)控系統(tǒng),它集紅外報警、溫濕度測量顯示、實(shí)時時鐘為一體,簡單實(shí)用,抗

2、干擾能力強(qiáng)、靈敏度高、安全可靠,具有較高的應(yīng)用價值。本系統(tǒng)采用單片機(jī)stc89c51,溫濕度測量采用全數(shù)字型溫濕度傳感器dht11,溫度測量范圍0-50,濕度測量范圍20%rh90%rh,可以滿足一般需要。若要求更寬測量范圍,只需更換溫濕度傳感器型號,硬件電路及軟件程序全兼容。采用ds1302做實(shí)時時鐘電路,ds1302是dallas公司推出的涓流充電時鐘芯片,內(nèi)含有一個實(shí)時時鐘/日歷和31字節(jié)靜態(tài)ram,通過簡單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息。每月的天數(shù)和閏年的天數(shù)可自動調(diào)整。時鐘操作可通過am/pm指示決定采用24或12小時格式。顯示部

3、分采用smc 1602液晶屏進(jìn)行數(shù)據(jù)顯示,顯示容量16x2個字節(jié),工作電壓5.0v。重點(diǎn)對硬件、軟件的組成進(jìn)行了分項(xiàng)、模塊化設(shè)計(jì)。對各部分的電路一 一進(jìn)行了介紹,最終實(shí)現(xiàn)了該系統(tǒng)的硬件設(shè)計(jì),繪制了電路原理圖。在軟件方面完成了各功能模塊的流程圖,并根據(jù)設(shè)計(jì)要求對需要實(shí)現(xiàn)的功能經(jīng)過反復(fù)的模擬運(yùn)行、調(diào)試、修改、簡化、最后得出一套完整的 軟件系統(tǒng)。關(guān)鍵字:溫濕度傳感器 ds1302時鐘芯片 smc 1602液晶屏 stc89c51 (二)目 錄(三)元件清單 紅外報警監(jiān)控系統(tǒng)(3005)元器件清單元件名封裝標(biāo)稱值說明數(shù)量c1直插10uf/16v電解電容1c2c3直插20pf2c4直插0.1uf1c5直

4、插22uf/16v電解電容1d1直插1n41481r1,r3-r4,r9-r13直插1k8r2,r5-r6,r8,r14-r17直插10k8r7直插5k1b1直插蜂鳴器1v1直插8550三極管1l1直插綠色發(fā)光管1l3直插紅色發(fā)光管1l4直插紅色發(fā)光管1l5直插紅色發(fā)光管1y1直插11.0572m晶振1y2直插32.768k晶振1k1直插自鎖按鈕電源按鈕1k2直插微動開關(guān)按鍵1k3直插微動開關(guān)按鍵1k4直插微動開關(guān)按鍵1k5直插微動開關(guān)按鍵1u1直插stc89c52單片機(jī)1u2dip8dyp-me003紅外傳感器1u3dip824c01eeprom1u4直插dht11傳感器1u5dip8ds1

5、302時鐘芯片1液晶屏lcd1602綠屏1紐扣電池cr23023v1紐扣電池座1usb插座4腳插針1單片機(jī)插座dip401lcd排針sip161lcd轉(zhuǎn)接插座16腳插針1usb下載線1連接導(dǎo)線1電路板1 (四)正文1、前言1.1、設(shè)計(jì)的背景在日常生活和生產(chǎn)中,我們經(jīng)常要測量環(huán)境的溫濕度,傳統(tǒng)的測量方式采用水銀溫度計(jì)和干濕球濕度計(jì)查算法,存在著誤差大,操作使用不便等問題,采用工業(yè)級測量儀表價格昂貴。1.2、設(shè)計(jì)的意義采用stc89c51和dht11等構(gòu)成的lcd數(shù)字式溫濕度測量精度好可以且價格便宜。2、 設(shè)計(jì)的基礎(chǔ)依據(jù) 1.熟悉電路的工作原理; 2.掌握該電路中的元器件的識別方法; 3.掌握電路

6、的調(diào)試方法; 4.熟練電路簡單的故障分析方法; 5.論文符合其格式、字?jǐn)?shù)的基本要求,內(nèi)容要求充實(shí)、作圖嚴(yán)謹(jǐn)規(guī)范等。3、 文獻(xiàn)綜述 1.新型單總線數(shù)字溫濕度傳感器dht11具有體積小巧、接口簡單、響應(yīng)速度快、性價比高等特點(diǎn)。文章簡要介紹了單總線概念,闡述了dht11的基本原理和控制使用方法,以及其在倉庫溫濕度測控系統(tǒng)中的應(yīng)用。dht11的諸多優(yōu)點(diǎn),使其在自動控制和家電消費(fèi)品領(lǐng)域中擁有較高的應(yīng)用價值。 2.基于溫室和養(yǎng)殖孵化等場所需要及時監(jiān)測環(huán)境溫濕度的需求,設(shè)計(jì)了一種低成本、低功耗的無線溫濕度傳感器網(wǎng)絡(luò)節(jié)點(diǎn)。主要介紹了節(jié)點(diǎn)的軟硬件設(shè)計(jì),詳細(xì)闡述了dht11溫濕度傳感器的時序。傳感器節(jié)點(diǎn)的設(shè)計(jì)以超

7、低功耗msp430f122單片機(jī)為核心,配以dht11和無線rf收發(fā)芯片nrf401實(shí)現(xiàn)了節(jié)點(diǎn)有效的數(shù)據(jù)采集和可靠的數(shù)據(jù)傳輸。節(jié)點(diǎn)具有功耗低、成本低、體積小、集成度高、工作穩(wěn)定等優(yōu)點(diǎn)。 3.以單片機(jī)為控制核心,采用dht11溫濕度傳感器,12864lcd顯示模塊,實(shí)現(xiàn)了實(shí)驗(yàn)室多點(diǎn)溫濕度參數(shù)的實(shí)時采集、顯示和超限報警功能。系統(tǒng)的優(yōu)點(diǎn)為單總線串口通信,使系統(tǒng)結(jié)構(gòu)簡化,節(jié)約了單片機(jī)資源,易于系統(tǒng)的功能擴(kuò)展。 4.環(huán)境溫濕度對蠶的生長有著極大的影響,而目前市場上的溫濕度控制產(chǎn)品價格過高,不適應(yīng)于中小型農(nóng)村蠶農(nóng)的需求,大部分農(nóng)村蠶農(nóng)還在使用原始的溫濕度調(diào)節(jié)方法。介紹了一種基于dht11數(shù)字溫濕度傳感器和

8、at89c51單片機(jī)的低成本蠶室溫濕度自動控制系統(tǒng),以為蠶農(nóng)養(yǎng)蠶提供便利。4、 總體方案的確定1. 利用單片機(jī)芯片89c52及dht11溫濕度傳感器完成溫濕度的測量,不間斷測量當(dāng)前溫度和濕度數(shù)據(jù),并在液晶屏上實(shí)時顯示。2.具備不間斷時鐘電路,當(dāng)前時間在液晶屏顯示。時鐘電路具有后備電池,系統(tǒng)掉電后始終依然運(yùn)行,再次上電顯示當(dāng)前時間,無須重新調(diào)時。 3.四鍵鍵盤可以調(diào)校時鐘初始值,具體方法是連續(xù)按設(shè)置鍵直至“年”、“月”、“日”、“時”、“分”、“秒”相應(yīng)的位置閃爍,再通過up鍵和down鍵調(diào)整數(shù)值,調(diào)整完畢繼續(xù)按設(shè)置鍵進(jìn)入正常狀態(tài)。5、 硬件設(shè)計(jì) 本研究設(shè)計(jì)的溫濕度控制器框圖如圖1所示。圖1紅外

9、報警監(jiān)控系統(tǒng)方框圖圖中stc89c52單片機(jī)隨時監(jiān)控dyp-me003紅外人體傳感器送來的報警信號。當(dāng)報警功能打開并且傳感器檢測到有人侵入時,單片機(jī)通過聲(蜂鳴器)光(led發(fā)光管)報警,同時將入侵時間記錄在外部存儲芯片at24c04中。系統(tǒng)還可以即時顯示當(dāng)前環(huán)境溫濕度值。單片機(jī)每2秒鐘從dht11溫濕度傳感器中讀入溫度和濕度,在液晶屏上即時顯示。系統(tǒng)通過ds1302時鐘電路獲得并顯示當(dāng)前時間。該時間初始值可以通過設(shè)置鍵、上調(diào)鍵和下調(diào)鍵設(shè)定,由于具有后備電池,主控系統(tǒng)斷電后時鐘仍然繼續(xù)運(yùn)行。系統(tǒng)通過四鍵鍵盤切換開、關(guān)報警狀態(tài),設(shè)定時鐘初始值,查詢報警時間等。系統(tǒng)各單元電路介紹如下。5.1、單片

10、機(jī)電路本設(shè)計(jì)選用宏晶公司高性能單片機(jī)stc89c52采用主控芯片,其管腳如圖2所示。圖2 stc89c52單片機(jī)管腳圖該芯片為52內(nèi)核8位單片機(jī),兼容intel等52內(nèi)核單片機(jī),支持isp下載,適用于常用檢測控制電路。由stc89c52組成的單片機(jī)系統(tǒng)原理圖如圖2所示。圖3 單片機(jī)系統(tǒng)電路圖中alert引腳輸入dyp-me003紅外人體傳感器信號,該信號為高電平時有人入侵,為低電平時表示沒有檢測到人。data引腳為溫濕度傳感器單總線引腳。2402_scl和2402_sda為外存芯片at24c04通信引腳,該芯片為iic接口芯片,通過時鐘線和數(shù)據(jù)線二線接口通信。k1、k2、k3、k4為四只按鍵,

11、分別為設(shè)置鍵、上調(diào)鍵、下調(diào)鍵和查詢鍵。l2為報警led發(fā)光管。p0.0p0.7為lcd數(shù)據(jù)線,p2.5p2.7為lcd控制線。系統(tǒng)采用11.0572mhz外部晶振電路。5.2、紅外熱釋電報警傳感器電路圖4 dyp-me003紅外人體傳感器電路傳感器使用dyp-me003紅外人體傳感器,圖中alert引腳輸出信號,該信號為高電平時有人入侵,為低電平時表示無人入侵。r17電阻為下拉電阻,防止管腳誤報。5.3、溫濕度傳感器器及檢測電路圖5 dht11溫濕度傳感器外型及管腳dht11溫濕度傳感器外型及管腳如圖5所示。其中電源引腳的供電電壓為 3.5-5.5v。傳感器上電后,要等待 1s 以越過不穩(wěn)定狀

12、態(tài)在此期間不要發(fā)送任何指令。電源引腳(vdd,gnd)之間可增加一個100nf 的電容,用以去耦濾波。 dht11典型應(yīng)用電路如圖5所示,其連接電路簡單,只需要占用控制器一個i/o口即可完成上下位的連接。建議連接線長度短于20時用5k上拉電阻,大于20米時根據(jù)實(shí)際情況使用合適的上拉電阻。圖6 dht11典型應(yīng)用電路dht11數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式,即單個數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5byte(40bit)組成。一次通訊時間最大3ms,數(shù)據(jù)分小數(shù)部分和整數(shù)部分。 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。 數(shù)據(jù)格式如表2:表1 dht11數(shù)據(jù)格式5.4、ds1302實(shí)

13、時時鐘電路ds1302是dallas公司推出的涓流充電時鐘芯片,內(nèi)含有一個實(shí)時時鐘/日歷和31字節(jié)靜態(tài)ram,通過簡單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息。每月的天數(shù)和閏年的天數(shù)可自動調(diào)整。時鐘操作可通過am/pm指示決定采用24或12小時格式。其芯片管腳如圖7所示。 圖7 ds1302管腳圖ds1302 與單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需用到三個口:線1-res復(fù)位,2-i/o數(shù)據(jù)線和3-sclk串行時鐘。時鐘/ram 的讀/寫數(shù)據(jù)以一個字節(jié)或多達(dá)31個字節(jié)的字符組方式通信,ds1302工作時功耗很低,保持?jǐn)?shù)據(jù)和時鐘信息時功率

14、小于1mw。ds1302是由ds1202改進(jìn)而來,增加了以下的特性,雙電源管腳用于主電源和備份電源,供應(yīng)vcc1為可編程涓流充電電源,附加七個字節(jié)存儲器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等。l 實(shí)時時鐘具有能計(jì)算2100 年之前的秒分時日日期星期月年的能力還有閏年調(diào)整的能力;l 31*8位暫存數(shù)據(jù)存儲ram;l 串行i/o 口方式使得管腳數(shù)量最少;l 寬范圍工作電壓2.0-5.5v;l 工作電流:2.0v 時,小于300na;l 讀/寫時鐘或ram 數(shù)據(jù)時有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送字符組方式;l 8 腳dip封裝或可選的8腳soic封裝,根據(jù)表面裝配;l 簡

15、單3線接口;l 與ttl兼容,vcc=5v;l 可選工業(yè)級溫度范圍-40-+85;l 與ds1202 兼容;l 雙電源管用于主電源和備份電源供應(yīng),備份電源管腳可由電池或大容量電容輸入;l 附加的7字節(jié)暫存存儲器。ds1302與單片機(jī)系統(tǒng)連接電路如圖8所示。圖8 ds1302電路連接圖如圖8所示,ds1302的sclk、i/o和rst三個引腳通過上拉電阻連接單片機(jī)的p1.4、p1.5和p1.6。5.5、lcd顯示電路顯示部分采用smc 1602液晶屏進(jìn)行數(shù)據(jù)顯示,其主要技術(shù)參數(shù)為:表2 液晶屏技術(shù)指標(biāo)接口信號說明如表3所示。表3 液晶屏接口信號說明與單片機(jī)接口電路如圖9所示。其中p0.0p0.7

16、接lcd數(shù)據(jù)線,p2.5p2.7接lcd控制線。圖9 lcd與單片機(jī)接口電路5.6、eeprom存儲器電路紅外報警監(jiān)控系統(tǒng)的報警時間存儲在eeprom芯片at24c04中,并可以通過查詢按鍵查看。at24c04是iic芯片,其管腳連接如圖10所示,與單片機(jī)連接電路。如圖11所示 圖10 at24c04管腳圖 圖11 與單片機(jī)連接圖5.7、鍵盤電路本設(shè)計(jì)采用四鍵鍵盤,電路如圖12所示。圖12 四鍵鍵盤電路 按鍵直接接單片機(jī)p3.2p3.5,程序采用查詢方式獲取按鍵狀態(tài)。5.8、供電及程序下載電路本設(shè)計(jì)采用usb接口供電,電源電壓5v。同時,usb接口通過內(nèi)含pl2303芯片的轉(zhuǎn)換電路對單片機(jī)進(jìn)行

17、程序編寫。其電路原理如圖13所示。圖13 供電及程序下載電路 6、 軟件設(shè)計(jì) 6.1、軟件流程圖本設(shè)計(jì)軟件主程序流程圖如圖14所示。圖14 軟件流程圖6.2、主程序下面介紹main.c主程序編寫,其他程序略。(1) 頭文件和一些宏定義#include #include #include 1602.h#include dht.h#include 2402.h#include ds1302.h(2) 管腳定義sbit led_alert=p36;/報警燈sbit in_alert=p21; /報警信號輸入sbit beep=p20; /蜂鳴器sbit key_up = p32;sbit key_d

18、own = p35;sbit key_set = p33;sbit key_review = p34;(3) 常量、變量定義和函數(shù)聲明/定義標(biāo)識volatile bit flagstartrh = 0; /開始溫濕度轉(zhuǎn)換標(biāo)志volatile bit flagkeypress = 0; /有鍵按下標(biāo)志volatile bit flagalert = 0; /報警狀態(tài)標(biāo)志volatile bit flagreview = 0; /查詢標(biāo)志/定義溫濕度傳感器用外部變量extern u8 u8flag,k;extern u8 u8count,u8temp;extern u8 u8t_data_h,u8

19、t_data_l,u8rh_data_h,u8rh_data_l,u8checkdata;extern u8 u8t_data_h_temp,u8t_data_l_temp,u8rh_data_h_temp,u8rh_data_l_temp,u8checkdata_temp;extern u8 u8comdata;extern u8 count, count_r;/溫濕度傳感器用變量u16 temp;s16 temperature, humidity;u16 rhcounter;/按鍵響應(yīng)用變量u8 keyvalue, keyup, keydown, keyset, keyreview;u8

20、flagset; /ds1302時鐘用變量systemtime currenttime;uchar year, month, day, hour, minute, second;/報警及存儲用變量/char * psave;/字符串顯示用變量uchar str16 = 000000;uchar alertdate9=00-00-00, alerttime9=00:00:00;uchar hide;/函數(shù)聲明void int2str(int x, char* str);void delay1ms(unsigned int count);void data_init();void timer0_i

21、nit();void timer0_isr () ;void savealert();void loadalert();void keyprocess(uint num);(4) 各子程序/整型轉(zhuǎn)字符串的函數(shù),轉(zhuǎn)換范圍0-65536void int2str(int x, char* str) int i=1; int tmp=10; while(x/tmp!=0) i+; tmp*=10; tmp=x; stri=0; while(i1) str-i=0+(tmp%10); tmp/=10; str0=tmp+0; void delay1ms(unsigned int count)unsign

22、ed int i,j;for(i=0;icount;i+)for(j=0;j= 450) flagstartrh = 1; rhcounter = 0; /設(shè)定閃爍標(biāo)志 if (hide = 1) hide = 0; else hide = 1; /存入報警日期時間void savealert() wrteeprom(0, year); delay(1500); wrteeprom(1, month); delay(1500); wrteeprom(2, day); delay(1500); wrteeprom(3, hour); delay(1500); wrteeprom(4, minut

23、e); delay(1500); wrteeprom(5, second); delay(1500);/載入報警日期時間void loadalert() uchar value; value = rdeeprom(0); alertdate0=value/10+48; alertdate1=value%10+48; value = rdeeprom(1); alertdate3=value/10+48; alertdate4=value%10+48; value = rdeeprom(2); alertdate6=value/10+48; alertdate7=value%10+48; val

24、ue = rdeeprom(3); alerttime0=value/10+48; alerttime1=value%10+48; value = rdeeprom(4); alerttime3=value/10+48; alerttime4=value%10+48; value = rdeeprom(5); alerttime6=value/10+48; alerttime7=value%10+48;void keyprocess(uint num) switch (num) case 1: /up鍵被按下 switch (flagset) case 0:case 1: break;case

25、 2: /年 if (year99)year+; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_year,year); write1302(0x8e,0x80); /禁止寫入 break;case 3: /月 if (month12) month+; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_month,month); write1302(0x8e,0x80); /禁止寫入 break;case 4: /日 if (day31) day+; write1302(0x8e,0x00);

26、 /寫入允許 ds1302_settime(ds1302_day,day); write1302(0x8e,0x80); /禁止寫入 break;case 5: /時 if (hour23) hour+; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_hour,hour); write1302(0x8e,0x80); /禁止寫入 break;case 6: /分 if (minute60) minute+; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_minute,minute); w

27、rite1302(0x8e,0x80); /禁止寫入 break;case 7: /秒 if (second0)year-; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_year,year); write1302(0x8e,0x80); /禁止寫入 break;case 3: /月 if (month0) month-; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_month,month); write1302(0x8e,0x80); /禁止寫入 break;case 4: /日 i

28、f (day0) day-; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_day,day); write1302(0x8e,0x80); /禁止寫入 break;case 5: /時 if (hour0) hour-; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_hour,hour); write1302(0x8e,0x80); /禁止寫入 break;case 6: /分 if (minute0) minute-; write1302(0x8e,0x00); /寫入允許 ds130

29、2_settime(ds1302_minute,minute); write1302(0x8e,0x80); /禁止寫入 break;case 7: /秒 if (second0) second-; write1302(0x8e,0x00); /寫入允許 ds1302_settime(ds1302_second,second); write1302(0x8e,0x80); /禁止寫入 break; break; case 3: /set鍵被按下。flagset 0-報警;1-關(guān)報警;2-設(shè)置年;3-月;4-日;5-時;6-分;7-秒 if (flagreview=0) /只有不查詢時才能設(shè)定

30、flagset +;if (flagset=1) l1602_string(2,10,a);else l1602_string(2,10, ); if (flagset=8) flagset = 0; break; case 4: /review鍵被按下 if (flagreview = 0) flagreview = 1; loadalert();l1602_string(1,1, );l1602_string(2,1, ); l1602_string(1,1,alertdate);l1602_string(1,9, alert );l1602_string(2,1,alerttime);l

31、1602_string(2,9, ); else flagreview = 0; break; default: break; /* 名稱 : main()* 功能 : 主函數(shù)*/void main() u16 i, j, testnum; ea = 0;timer0_init(); /定時器0初始化 data_init();initial_ds1302();ea = 1;l1602_init();l1602_string(1,1, welcome to my );l1602_string(2,1,infrared monitor);/延時for (i=0;i1000;i+) for (j=0

32、;j1000;j+) ; /清屏l1602_string(1,1, t c);l1602_string(2,1, h %); while(1) /查詢報警信號 /flagset=0為報警狀態(tài), /flagset=1為關(guān)報警狀態(tài), /flagset=2,3,4,5,6,7依次為設(shè)置年,月,日,時,分,秒狀態(tài) if (flagset=1)&(in_alert=0) /首次觸發(fā)報警則存入報警時間 savealert(); flagalert=1; beep=0;led_alert = 0; else /報警未打開或者無警可報 flagalert=0; beep=1;led_alert = 1; if

33、 (flagstartrh = 1) /溫濕度轉(zhuǎn)換標(biāo)志檢查 tr0 = 0; testnum = rh(); flagstartrh = 0; tr0 = 1; /讀出溫濕度,只取整數(shù)部分 humidity = u8rh_data_h; temperature = u8t_data_h; /讀出日期時間值 ds1302_gettime(¤ttime); year = currenttime.year; month = currenttime.month; day = currenttime.day; hour = currenttime.hour; minute = current

34、time.minute; second = currenttime.second; datetostr(¤ttime); timetostr(¤ttime); /如果不處于查詢狀態(tài)則顯示當(dāng)前日期時間溫度濕度 if (flagreview=0) /清屏 l1602_string(1,1, t c);l1602_string(2,1, );l1602_string(2,12,h %);/顯示溫濕度 if (temperature0) l1602_string(2,7,-); temperature = abs(temperature); int2str(temperatur

35、e,str1); l1602_string(1,14,str1); int2str(humidity,str1); l1602_string(2,14,str1); l1602_string(1,1,currenttime.datestring); l1602_string(2,1,currenttime.timestring); /產(chǎn)生時間設(shè)定時的閃爍效果,只在未查詢且閃爍標(biāo)志置位時運(yùn)行 if (hide=1) switch (flagset) case 0: case 1: break; case 2: /年 l1602_string(1,1, ); break; case 3: /月 l

36、1602_string(1,4, ); break; case 4: /日 l1602_string(1,7, ); break; case 5: /時 l1602_string(2,1, ); break; case 6: /分 l1602_string(2,4, ); break; case 7: /秒 l1602_string(2,7, ); break; default: break; /以下為鍵盤查詢,當(dāng)有按鍵從按下到彈起時,該按鍵被響應(yīng)。if (key_up)&(keyup=0) flagkeypress = 1; keyvalue = 1; else if (key_down)&

37、(keydown=0) flagkeypress = 1; keyvalue = 2; else if (key_set)&(keyset=0) flagkeypress = 1; keyvalue = 3; else if (key_review)&(keyreview=0) flagkeypress = 1; keyvalue = 4;if (flagkeypress = 1) keyprocess(keyvalue); flagkeypress = 0; if (!key_up) keyup = 0;else keyup = 1; if (!key_down) keydown = 0;e

38、lse keydown = 1; if (!key_set) keyset = 0;else keyset = 1; if (!key_review) keyreview = 0;else keyreview = 1; 7、 實(shí)驗(yàn)及調(diào)試7.1、程序的編寫和編譯 1.程序在uvision4環(huán)境下編寫和編譯,新建工程時選擇at89c52芯片。如圖15所示。 圖15 2.新建文件編寫程序如圖16所示。 圖163. 保存程序并運(yùn)行編譯后,如圖17所示。 圖17 4.編譯生成.hex文件后,就可以下載并進(jìn)行調(diào)試了。如果是其他版本uvision,只需將所有.c和.h文件拷貝至新建項(xiàng)目,重新編譯即可。如圖1

39、8所示。 圖18 7.2、程序下載7.2.1、usb轉(zhuǎn)串口驅(qū)動安裝打開usb驅(qū)動文件夾下的pl2303_prolific_driverinstaller_v130.exe安裝文件,按提示安裝usb轉(zhuǎn)串口驅(qū)動程序。安裝完成后,插入usb下載線后,在開始-控制面板-打印機(jī)和其他硬件-設(shè)備管理器,在“端口”分支下有(prolific usb-to-serial comm port(comx)。x表示串口號,如果沒有說明usb轉(zhuǎn)串口驅(qū)動沒有安裝,須重新安裝。記住括號里的com口號。圖19成功安裝usb轉(zhuǎn)串口驅(qū)動示意圖 7.2.2、下載程序打開stc單片機(jī)下載軟件文件夾,點(diǎn)擊運(yùn)行stc_isp_v481

40、.exe程序,出現(xiàn)如下界面。下載軟件如圖20所示。圖20正確選擇mcu 類型,com口(與剛才安裝的com號一致),最高波特率和最低波特率都選2400bps或者1200bps (下載線內(nèi)pl2303芯片所限,沒辦法?。⒋蜷_正確的.hex數(shù)據(jù)文件。點(diǎn)擊“download/下載”按紐,窗口出現(xiàn)提示:chinese:正在嘗試與 mcu/單片機(jī) 握手連接 . connection is failure. you can try: 1.give your mcu power on reset. 2.stop operation, then re-select com port. 3.because

41、plcc-dip/pqfp-dip socket trace too long. 4.update the stc isp.exe version. 5.if still error, your mcu firmware is error or null.chinese:連接失敗,請嘗試以下操作: 1.在單片機(jī)停電狀態(tài)下,點(diǎn)下載按鈕,再給單片機(jī)上電 2.停止下載,重新選擇 rs-232 串口, 接好電纜 3.可能需要先將 p1.0/p1.1 短接到地 4.可能外部時鐘未接 5.因 plcc、pqfp 轉(zhuǎn)換座引線過長而引起時鐘不振蕩,請 調(diào)整參數(shù) 6.可能要升級電腦端的 stc isp.exe 軟件 7.若仍然不成功,可能 mcu/單片機(jī)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論