版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄目錄1 緒論 .11.1 課題開發(fā)背景及意義.11.2 主要內(nèi)容及設(shè)計(jì)要求.12 硬件系統(tǒng)設(shè)計(jì) .22.1 系統(tǒng)設(shè)計(jì)框圖.22.2 電源電路.22.3 系統(tǒng)硬件詳細(xì)設(shè)計(jì)圖.32.4 各芯片介紹.42.4.1 單片機(jī) at89c51 .42.4.2 ds18b20 簡介.52.4.3 sht15 簡介.92.5 各功能模塊電路的設(shè)計(jì).112.5.1 溫度測量電路 .112.5.2 濕度測量電路 .123 系統(tǒng)軟件設(shè)計(jì) .133.1 系統(tǒng)功能模塊圖及各模塊介紹.133.1.1 溫度獲取模塊 .133.1.2 濕度獲取模塊 .163.1.3 lcd 顯示控制模塊 .183.2 主程序流程圖.20
2、4 硬件電路和軟件系統(tǒng)的調(diào)試 .224.1 印制電路板的設(shè)計(jì)與制作.224.2 系統(tǒng)軟件調(diào)試.255 結(jié)論 .27參考文獻(xiàn) .28致謝 .29附錄 1 系統(tǒng)印制電路板 .30附錄 2 程序源代碼 .31摘 要溫度濕度的測量與控制在工業(yè)、農(nóng)業(yè)、國防等行業(yè)有著廣泛的應(yīng)用。利用單片機(jī)技術(shù)的溫度濕度測量計(jì)有體積小,可靠性高等優(yōu)點(diǎn),在本設(shè)計(jì)中對數(shù)字式溫度濕度測量計(jì)進(jìn)行了分析設(shè)計(jì)。本系統(tǒng)針對所使用的 at89c51 單片機(jī)的性能和發(fā)展情況做了比較詳細(xì)的介紹,對本系統(tǒng)使用的溫度芯片 ds18b20 和濕度芯片 sht15 做了性能方面的簡單說明。重點(diǎn)對硬件、軟件的組成進(jìn)行了分項(xiàng)、模塊化設(shè)計(jì)。對各部分的電路一
3、一進(jìn)行了介紹,最終實(shí)現(xiàn)了該系統(tǒng)的硬件設(shè)計(jì),繪制了電路原理圖、印制電路板圖。在軟件設(shè)計(jì)方面完成了各功能模塊的流程圖,并根據(jù)設(shè)計(jì)要求對需要實(shí)現(xiàn)的功能經(jīng)過反復(fù)的模擬運(yùn)行、調(diào)試、修改簡化,最后得出一套完整的軟件系統(tǒng)。關(guān)鍵詞:關(guān)鍵詞:單片機(jī) at89c51;溫度傳感器 ds18b20;濕度傳感器 sht15;液晶顯示模塊 lcd1602abstractthe test of temperature and moisture has been widely used in industry, agriculture, national defense and so on. by the advantage
4、 of small volume and high reliance of single chip micyoco temperature and moisture meter, the article has analyzed and designed the digital temperature and moisture meter in this designing.this system made detailed introduction about performance and development situation of single chip microcomputer
5、 at89c51, and made simple explanation about the temperature chip ds18b20 and humidity chip sht15. it has mainly analyzed and designed the composition of hardware and software carried on the item, modulation gradually. this system has introduced part of the electric circuit step by step, and has fina
6、lly realized the hardware electric circuit of this system. it has protracted the electric circuit principle diagram, the printed circuit board chart. according to the function that must be realized in designing, by repeated simulation run and debugging, it has revised and simplified the software sys
7、tem, and finally has formed a set of complete program.key words: microcomputer at89c51; temperature sensor ds18b20; humidity sensor sht15; liquid-crystal display lcd16021 緒論1.1 課題開發(fā)背景及意義在日常生活和生產(chǎn)中,我們經(jīng)常要測量環(huán)境的溫、濕度,傳統(tǒng)的測量方式采用水銀溫度計(jì)和干濕球濕度計(jì)查算法,存在著誤差大,操作使用不便等問題,采用工業(yè)級測量儀表價格昂貴。采用 at89c51 和 ds18b20、sht15 等構(gòu)成的 l
8、cd 數(shù)字式溫度濕度測量計(jì)精度高且價格便宜。1.2 主要內(nèi)容及設(shè)計(jì)要求(1)掌握單片機(jī)中斷,定時器應(yīng)用及各并行口的應(yīng)用;(2)掌握單片機(jī)的濕度測量方法;(3)利用單片機(jī)芯片 89c51 及溫度傳感芯片 ds18b20 完成溫度的檢測,利用 sht15完成濕度測量;(4)測溫范圍:-10100精度0.1,測溫速度:1s。2 硬件系統(tǒng)設(shè)計(jì)2.1 系統(tǒng)設(shè)計(jì)框圖系統(tǒng)硬件設(shè)計(jì)的原理框圖如圖 1 所示:at89c51單片機(jī) 系統(tǒng)溫度讀取時鐘濕度讀取電源輸入顯示電路圖圖 1 溫度濕度測量系統(tǒng)框圖溫度濕度測量系統(tǒng)框圖該系統(tǒng)的原理由圖 1 可以看出,由溫度和濕度采集電路采集信號經(jīng)單片機(jī)處理后再送至顯示電路顯示1
9、。2.2 電源電路電源電路如圖 2 所示:1234d1壓壓壓t1壓壓壓+ c1470ufc20.1uc30.1u331122c17805220v50hz+-5v9v圖圖 2 電源電路電源電路該電路的工作原理是:輸入的 220v 左右的交流電壓,經(jīng)變壓器、整流橋全波整流之后,經(jīng)電解電容濾波,再經(jīng) 7805 穩(wěn)壓,得到穩(wěn)定的+5v 直流電流,向系統(tǒng)各模塊提供能量,是一個比較簡單的電源電路。2.3 系統(tǒng)硬件詳細(xì)設(shè)計(jì)圖在圖3所示電路中,at89c51為主控制器,p0口與液晶顯示器lcd1602相連,在at89c51的控制下,由ds18b20、sht15完成溫濕度信號的采集,由p0口輸出送液晶顯示模塊l
10、cd1602顯示6。琴鍵開關(guān)s1按下,使得rst端為高電平,at89c51被復(fù)位。該電路采用的主要器件有:ds18b20是溫度傳感器,檢測和完成溫度的轉(zhuǎn)換;sht15是溫度濕度傳感器,其主要完成溫度和濕度的測量及轉(zhuǎn)換;at89c51控制信號的采集過程及實(shí)現(xiàn)系統(tǒng)的時鐘顯示;lcd1602是液晶顯示器,顯示當(dāng)前的溫度、濕度數(shù)據(jù)及系統(tǒng)時鐘2。系統(tǒng)整機(jī)電路圖如圖3所示:p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78rst /vpd9p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.5/t115p3.6/wr16
11、p3.7/rd17xtal 218xtal 119gnd20p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728psen29ale /prog30ea/vpp31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40at89c5189c5112345678910111213141516p1header 16y112mvccvccc230pc330p331122s10ds18b20+c110ur210ks2sw-pb12j1con2vccvccvccr110k10ks1sw-pbvccvccvcc11
12、223344j2sht 15vcc圖圖3 數(shù)字溫度濕度測量計(jì)整機(jī)電路數(shù)字溫度濕度測量計(jì)整機(jī)電路在圖3所示電路中,ds18b20作為溫度采集電路,輸出為數(shù)字信號,可以大大的縮減外圍電路,從而使得電路更加的簡單,sht15是溫濕度采集電路3,也是數(shù)字輸出,這樣就使得整個電路比較簡單、明了,同時也節(jié)約的成本。2.4 各芯片介紹2.4.1 單片機(jī) at89c51 at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的低電壓、高性能cmos8位微處理器。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除
13、100次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器,器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和flash存儲單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的at89c51提供了高性價比的解決方案。at89c51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案4。at89c51元件的圖形如圖4所示:圖圖4 at89c51的引腳排列圖的引腳排列圖管腳說明:(1)電源部分:vcc:供電電
14、壓。gnd:接地。(2)晶振部分:xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。(3)接口電路部分:p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時,p0輸出原碼,此時p0外部必須被拉高。p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電
15、平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時,p1口作為第八位地址接收。 p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。(4)復(fù)位部分:rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機(jī)器周期的高電平時間7。2.4.2 ds18b20 簡介測溫元件采用新型的溫度傳感器ds18b20。ds18b20是由dallas半導(dǎo)體公司生產(chǎn)的“一線總線”接口的溫度傳感器。一線總線結(jié)構(gòu)具有簡潔且經(jīng)濟(jì)的特點(diǎn),可使
16、用戶輕松地組建傳感器網(wǎng)絡(luò),從而為測量系統(tǒng)的構(gòu)建引入全新概念,ds18b20的測溫范圍為-55+125,在-10+85范圍內(nèi),精度為0.0625,現(xiàn)場溫度可直接通過“一線總線”以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。ds18b20適合于惡劣環(huán)境的現(xiàn)場溫度測量,如環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。它工作在3v5.5v的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計(jì)更靈活、方便,設(shè)定分辨率及用戶設(shè)定的報(bào)警溫度存儲在eeprom中,掉電后依然保存5。ds18b20 的內(nèi)部結(jié)構(gòu)如圖 5 所示:圖圖 5 ds18b20 內(nèi)部結(jié)構(gòu)圖內(nèi)部結(jié)構(gòu)圖ds18b20 主要由 4 部分組成:64 位 rom
17、、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器th 和 tl、配置寄存器5。ds18b20 的封裝形式及引腳排列如圖 6 所示:圖圖 6 ds18b20 的引腳排列圖的引腳排列圖ds18b20 有 4 個主要的數(shù)據(jù)部件:(1)光刻 rom 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 ds18b20 的地址序列碼。64 位光刻 rom 的排列是:開始 8 位(28h)是產(chǎn)品類型標(biāo)號,接著的 48位是該 ds18b20 自身的序列號,最后 8 位是前面 56 位的循環(huán)冗余校驗(yàn)碼(crc=x8+x5+x4+1) 。光刻 rom 的作用是使每一個 ds18b20 都各不相同,這樣就可以實(shí)現(xiàn)一根總線上
18、掛接多個 ds18b20 的目的。(2)ds18b20 中的溫度傳感器可完成對溫度的測量,以 12 位轉(zhuǎn)化為例:用 16 位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625/lsb 形式表達(dá),其中 s 為符號位。其中dq為數(shù)字信號輸入/輸出端;gnd為電源地;vdd為外接供電電源輸入端(采用寄生電源供電方式時接地)。表表1 ds18b20溫度數(shù)據(jù)表溫度數(shù)據(jù)表temperaturedigital output(binary)digital output(hex)+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000
19、 0001 1001 00010191h+10.1250000 0000 1010 001000a2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111ff6eh-551111 1100 1001 0000fc90h(3)ds18b20溫度傳感器的存儲器ds18b20溫度傳感器的內(nèi)部存儲器包括一個高速暫存ram和一個非易失性的可電擦除的eepram,后者存放高溫度和低溫
20、度觸發(fā)器th、tl和結(jié)構(gòu)寄存器。(4)配置寄存器該字節(jié)各位的意義如下:表表2 配置寄存器結(jié)構(gòu)配置寄存器結(jié)構(gòu)tmr1r011111低五位一直都是1,tm是測試模式位,用于設(shè)置ds18b20在工作模式還是在測試模式。在ds18b20出廠時該位被設(shè)置為0,用戶不要去改動。r1和r0用來設(shè)置分辨率,如下表所示(ds18b20出廠時被設(shè)置為12位): 表表3 分辨率設(shè)置分辨率設(shè)置r1r0分辨率分辨率溫度最大轉(zhuǎn)換時間溫度最大轉(zhuǎn)換時間009位93.75ms0110位187.5ms1011位375ms1112位750msds18b20采用單總線工作方式,由于所有信號(控制和數(shù)據(jù))都通過單總線傳輸,因此總線的時
21、序邏輯必須非常嚴(yán)格,其工作時序如圖7所示8:圖圖7 ds18b20工作時序工作時序2.4.3 sht15 簡介sht15型傳感器是單片、多用途的智能傳感器,其中不僅包含基于濕敏電容器的微型相對濕度傳感器和基于帶隙電路的微型溫度傳感器,而且還有14位的a/d轉(zhuǎn)換器和2線串行接口。能輸出經(jīng)過校準(zhǔn)的相對濕度和溫度的串行數(shù)據(jù),所以系統(tǒng)中不再使用傳統(tǒng)設(shè)計(jì)需要的多路轉(zhuǎn)換開關(guān)、a/d轉(zhuǎn)換器及信號調(diào)理電路,系統(tǒng)結(jié)構(gòu)比較緊湊和簡單,shtl5能在同一位置測量相對濕度和溫度。它的內(nèi)部結(jié)構(gòu)如圖8所示:圖圖 8 sht15 內(nèi)部結(jié)構(gòu)圖內(nèi)部結(jié)構(gòu)圖sht15 的引腳比較少,使用方便,其引腳排列如圖九所示。sht15 型智
22、能傳感器的相對濕度測量范圍是 0100%。分辨率達(dá) 0.03%,最高精度為2%rh,溫度測量范圍是-40+123.8,分辨率為 0.1。電源電壓范圍是+2.5v+5.5v,響應(yīng)時間小于 3s。引腳功能如表 4 所示:圖圖 9 sht15 引腳排列圖引腳排列圖表表 4 sht15 引腳功能表引腳功能表引腳號引腳名稱功 能1gnd接地端2data串行數(shù)據(jù)輸入/輸出端3sck串行時鐘輸入端4vdd接電源端5,6,7,8nc不連接采用溫濕度傳感器 sht15,sht15 傳感器是一款由多個傳感器模塊組成的單片全校準(zhǔn)數(shù)字輸出相對濕度的傳感器。它采用了特有的專業(yè)級 cmos 技術(shù),保證了極高的可靠性和卓越
23、的長期穩(wěn)定性。整個芯片包括校準(zhǔn)的相對溫度和濕度傳感器。它們與 1 個14 位的 a/d 轉(zhuǎn)換器相連;此外還有一個 i2c 總線串行接口電路。 每一個傳感器都是在極為精確的濕度室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)預(yù)先存放在 otp 內(nèi)存中。在測量校準(zhǔn)的過程中都要用到這些系數(shù)9。其特點(diǎn)如下:電源引腳shtxx 的供電電壓為 2.45.5v。串行接口 (兩線雙向)shtxx 應(yīng)用的的串行接口技術(shù),在傳感器信號讀取及電源損耗方面都做了優(yōu)化處理;但與 i2c 接口不兼容。串行數(shù)據(jù)(data)data 三態(tài)門用于數(shù)據(jù)的讀取。data 在 sck 時鐘下降沿之后改變狀態(tài),并僅在sck 時鐘上升沿有效。數(shù)據(jù)傳輸期間,在 s
24、ck 時鐘高電平時,data 必須保持穩(wěn)定。為避免信號沖突,微處理器應(yīng)驅(qū)動 data 在低電平。需要一個外部的上拉電阻(例如:10k)將信號提拉至高電平。上拉電阻通常已包含在微處理器的 i/o 電路中。測量時序(rh 和 t)發(fā)布一組測量命令后,控制器要等待測量結(jié)束。這個過程需要大約 11/55/210ms,分別對應(yīng) 8/12/14bit 測量。確切的時間隨內(nèi)部晶振速度,最多有15%變化。shtxx 通過下拉 data 至低電平,表示測量的結(jié)束。控制器在觸發(fā) sck 時前,必須等待這個“數(shù)據(jù)備妥”信號。接著傳輸 2 個字節(jié)的測量數(shù)據(jù)和 1 個字節(jié)的 crc 奇偶校驗(yàn)。uc 需要通過下拉 dat
25、a 為低電平,以確認(rèn)每個字節(jié)。所有的數(shù)據(jù)從 msb 開始,右值有效(例如:對于 12bit 數(shù)據(jù),從第 5 個 sck 時鐘起算作 msb;而對于 8bit 數(shù)據(jù),首字節(jié)則無意義) 。用 crc 數(shù)據(jù)的確認(rèn)位,表明通訊結(jié)束。如果不使用 crc-8 校驗(yàn),控制器可以在測量值lsb 后,通過保持確認(rèn)位 ack 高電平,來中止通訊。在測量和通訊結(jié)束后,shtxx 自動轉(zhuǎn)入休眠模式5。圖圖 10 sht15 數(shù)字式溫濕度傳感器的性能指標(biāo)數(shù)字式溫濕度傳感器的性能指標(biāo)2.5 各功能模塊電路的設(shè)計(jì)2.5.1 溫度測量電路溫度測量電路如圖 11 所示:p1.01p1.12p1.23p1.34p1.45p1.5
26、6p1.67p1.78rst/vpd9p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.5/t115p3.6/wr16p3.7/rd17xt al 218xt al 119gn d20p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728psen29al e/prog30ea /vpp31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40at 89c5189c51y112mvccc230pc330p331122s10ds18b20vccvc
27、c圖圖 11 溫度檢測電路溫度檢測電路2.5.2 濕度測量電路濕度測量電路的設(shè)計(jì)如圖 12 所示:圖圖 12 濕度檢測電路濕度檢測電路n3 系統(tǒng)軟件設(shè)計(jì)3.1 系統(tǒng)功能模塊圖及各模塊介紹3.1.1 溫度獲取模塊溫度顯示模塊程序流程圖如圖 13 所示:圖圖 13 溫度測量流程圖溫度測量流程圖檢測 ds18b20存在?開始初始化 ds18b20讀 ds18b20 的序列號發(fā)送跳過 rom 指令溫度轉(zhuǎn)換i=1,等待ds18b20 復(fù)位發(fā)送 ds18b20 編碼讀取溫度數(shù)據(jù)y18b20 溫度測量部分程序如下10:void delays(uint i)while(i-);/初始化函數(shù)void init_
28、ds18b20(void)unsigned char x=0;dq = 1; /dq 復(fù)位delays(9); /稍做延時dq = 0; /單片機(jī)將 dq 拉低delays(55); /精確延時 511usdq = 1; /拉高總線delays(6); /延時 70usx=dq; /稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗 while(x); delays(48); /讀一個字節(jié)uchar readonechar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)dq = 0; / 給脈沖信號dat=1; i+;i+;i+; i-;i-
29、;i-;dq = 1; / 接收信號if(dq)dat|=0 x80;delays(5);return(dat);/寫一個字節(jié)void writeonechar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)dq = 0;dq = dat&0 x01;delays(3);dq = 1;dat=1; /delays(4);/讀取溫度void readtemperature(void)uchar a=0;uchar b=0;uint t=0;init_ds18b20();writeonechar(0 xcc); / 跳過讀序號列號的操作w
30、riteonechar(0 x44); / 啟動溫度轉(zhuǎn)換init_ds18b20();writeonechar(0 xcc); /跳過讀序號列號的操作writeonechar(0 xbe); /讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();t=b;t4;tempdec=currenttempvalue/10;temp1bit=currenttempvalue%10;currenttempvalue=(int)(t*0.625); tempdec=currenttempvalue/100; temp1bit=(curren
31、ttempvalue/10)%10;tempdot= currenttempvalue%10;displayarray2=tempdec;displayarray1=temp1bit; displayarray0=tempdot;3.1.2 濕度獲取模塊濕度測量部分程序流程圖如圖 14 所示11:圖圖 14 濕度測量部分程序流程圖濕度測量部分程序流程圖其關(guān)鍵部分源代碼如下:char s_read_byte(unsigned char ack) unsigned char i,val=0; data=1; for (i=0 x80;i0;i/=2) sck=1; if (data) val=(v
32、al | i);開始初始化 sht15讀 sht15 的序列號發(fā)送跳過 rom 指令濕度轉(zhuǎn)換j=1,等待sht15 復(fù)位發(fā)送 sht15 編碼檢測 sht15存在?讀取濕度數(shù)據(jù)yn sck=0; data=!ack; sck=1; _nop_();_nop_();_nop_(); sck=0; data=1; return val; data=1; sck=0; _nop_(); sck=1; _nop_(); data=0; _nop_(); sck=0; _nop_();_nop_();_nop_(); sck=1; _nop_(); data=1; _nop_(); sck=0;3.1.
33、3 lcd 顯示控制模塊顯示部分程序流程圖如圖 15 所示:圖圖 15 顯示部分程序流程圖顯示部分程序流程圖顯示部分程序主要包括個三方面的操作:(1)lcd 的初始化void lcd_init() lcd_wcmd(0 x38); /設(shè)置顯示模式:delay(2);/延時 2 秒lcd_wcmd(0 x08); /顯示開/關(guān)設(shè)置 delay(1);lcd_wcmd(0 x01); /清除 lcd 的顯示內(nèi)容delay(1);lcd_wcmd(0 x06); /文字不動,光標(biāo)自動右移 delay(1);lcd_wcmd(0 x0c); /顯示器開、光標(biāo)關(guān)、光標(biāo)不允許閃爍delay(1);(2)寫
34、指令操作,主要完成對 lcd 顯示模式,位置等到處理操作,其主要程序?qū)崿F(xiàn)如下:void lcd_write_command(uchar command)/(命令,是否等待閑)初始化寫指令函數(shù)寫數(shù)據(jù)到液晶初始化液晶體顯示返回lcd 忙?yn while(wait_enable(); rs=0; rw=0; delay(5); en=0; p0=command; en=1; en=0;(3)寫數(shù)據(jù)到 lcd,其主要源代碼如下:void lcd_write_data(uchar char_data) while(wait_enable(); rs = 1; rw = 0; en = 0; p0 =
35、char_data; en = 1; delay(1); en = 0;3.2 主程序流程圖初始化單片機(jī)開始初始化 ds18b20初始化 sht15初始化 lcd1602讀取溫度數(shù)據(jù)讀取濕度數(shù)據(jù)顯示返回圖圖 16 系統(tǒng)主程序流程圖系統(tǒng)主程序流程圖4 硬件電路和軟件系統(tǒng)的調(diào)試4.1 印制電路板的設(shè)計(jì)與制作在原理圖做好了之后,單擊 design 選擇創(chuàng)建網(wǎng)絡(luò)表,來生成網(wǎng)絡(luò)表,如圖 17 所示:圖圖 17 生成網(wǎng)絡(luò)表生成網(wǎng)絡(luò)表圖圖 18 在在 pcb 中調(diào)入網(wǎng)絡(luò)表中調(diào)入網(wǎng)絡(luò)表在打開的 pcb 板中單擊 design 菜單下的網(wǎng)絡(luò)表,導(dǎo)入網(wǎng)絡(luò)表,如圖 18 所示。當(dāng)導(dǎo)入網(wǎng)絡(luò)表之后發(fā)現(xiàn)有很多錯誤,原來是
36、原理圖中元件的封裝設(shè)置有問題,所以我就把原理圖中的封裝從新設(shè)定并改正其中的錯誤之后,就可以通過了。其中開始時錯誤比較多,如下面圖中所示,最后全部更正之后 execute 在 pcb 板中將原理圖中的電路導(dǎo)入到 pcb板中,然后將各元件的位置做一定的調(diào)整6。圖圖 19 pcb 中導(dǎo)入網(wǎng)絡(luò)表中導(dǎo)入網(wǎng)絡(luò)表(1)圖圖 20 設(shè)定布線規(guī)則設(shè)定布線規(guī)則在 pcb 板中畫適當(dāng)?shù)囊粋€區(qū)域,將元件拖放到適當(dāng)?shù)奈恢?,然后點(diǎn)擊 design 菜單下的規(guī)則,在規(guī)則中將 routing 中的 routing layers rule 面板中的 toolaver 設(shè)定為 not used,設(shè)定為單層布線。然后再在 rout
37、ing layers rule 面板中的 width constraint 的線寬設(shè)定成如下面圖示的寬度,再添加一個電源線和一個地線。并將其寬度設(shè)定好。圖圖 21 設(shè)定單層布線設(shè)定單層布線圖圖 22 設(shè)定線寬設(shè)定線寬設(shè)定完成之后,點(diǎn)擊 auto route 自動布線,選中 all,在彈出的方框中選擇 route all 自動布線。如圖 23 所示:圖圖 23 自動布線自動布線4.2 系統(tǒng)軟件調(diào)試 軟件編譯完成以后利用 keil uvision3 平臺對軟件進(jìn)行編譯,結(jié)果如圖 24 所示:圖圖 24 軟件編譯過程軟件編譯過程程序執(zhí)行及觀測如圖 25 所示:圖圖 25 軟件仿真執(zhí)行圖軟件仿真執(zhí)行圖
38、5 結(jié)論本設(shè)計(jì)實(shí)現(xiàn)的數(shù)字式溫度濕度測量計(jì)電路比較簡單,有體積小、可靠性高、測量精度高、價格便宜等優(yōu)點(diǎn)。在完成本設(shè)計(jì)過程雖然做了大量的工作,但因?yàn)闀r間關(guān)系及本人知識能力的限制,本設(shè)計(jì)還存在的以下問題:電路單純只有溫度和濕度的測量,沒有控制溫度和濕度的部分;電路控制部分沒有進(jìn)行擴(kuò)展;這些問題還需在以后的工作進(jìn)一步完善。參考文獻(xiàn)參考文獻(xiàn)1張俊謨編著單片機(jī)中級教程原理與應(yīng)用m,北京:北京航空航天大學(xué)出版社,20042求是科技單片機(jī)通信技術(shù)與工程實(shí)踐m,北京:人民郵電出版社,2004.113秦實(shí)宏,周龍等單片機(jī)原理與應(yīng)用技術(shù)m,北京:中國水利水電出版社,2005.94求是科技單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航m
39、,北京:人民郵電出版社,2004.5:55-665劉迎春傳感器原理設(shè)計(jì)與應(yīng)用m,北京:國防科技大學(xué)出版社,2005:205-2076夏路易等電路原理圖與電路板設(shè)計(jì)教程m,北京:北京希望電子出版社,2002.6:155-166 7范風(fēng)強(qiáng),蘭蟬麗單片機(jī)語言 c51 應(yīng)用實(shí)戰(zhàn)集錦m,電子工業(yè)出版社,2005.58胡漢才單片機(jī)原理及接口技術(shù)m,北京:清華大學(xué)出版社,1996.79何立民單片機(jī)與嵌入式系統(tǒng)應(yīng)用j,北京:北京航空航天出版社第四期,2003:15-1610趙亮,侯國銳等單片機(jī) c 語言編程與實(shí)例m,北京:人民郵電出版社,200311馬忠梅等單片機(jī)的 c 語言應(yīng)用程序設(shè)計(jì)m,北京:北京航空航天
40、大學(xué)出版社,2003.11致謝致謝我做的這個lcd 數(shù)字式溫度濕度測量計(jì)的設(shè)計(jì)是一個綜合的工作,它涉及到電路的設(shè)計(jì)、單片機(jī)的編程還有相關(guān)軟件的使用。在本次畢業(yè)設(shè)計(jì)中,我遇到了很多問題和困難,但是在指導(dǎo)老師 講師的精心指導(dǎo)和同學(xué)們的幫助下,完成了該設(shè)計(jì)工作。在這次設(shè)計(jì)中我極大的提高了自己的理論知識水平、動手能力,并對當(dāng)前電子領(lǐng)域的研究狀況和發(fā)展方向有了一定的了解,單片機(jī)領(lǐng)域這對我今后進(jìn)一步學(xué)習(xí)計(jì)算機(jī)方面的知識有極大的幫助。另外,此次畢業(yè)設(shè)計(jì)還獲得了物電系各位領(lǐng)導(dǎo)和老師的大力支持。在此,我忠心感謝方飛老師以及物電系各位老師和同學(xué)們的指導(dǎo)和支持。附錄附錄 1 系統(tǒng)印制電路板系統(tǒng)印制電路板該系統(tǒng)的印制
41、電路板如圖 26 所示:圖圖 26 數(shù)字式溫度濕度測量電路數(shù)字式溫度濕度測量電路 pcb 板圖板圖附錄附錄 2 程序源代碼程序源代碼#include regx52.h#include #include #define uchar unsigned char#define uint unsigned int#define scan_cycle 500sbit rs=p27;/*液晶數(shù)據(jù)與命令切換*/sbit rw=p26;/*液晶讀寫使能*/sbit en =p25;/*液晶使能*/sbit bf=p07; /液晶忙閑標(biāo)志sbit dq=p23; /*ds1820 輸入接口 p2.3*/bit
42、initf=1;/*濕度處理變量定義部分* typedef union unsigned int i; float f; value;enum temp,humi;sbit data=p11;sbit sck=p10 ;#define noack 0#define ack 1#define status_reg_w 0 x06 #define status_reg_r 0 x07#define measure_temp 0 x03 #define measure_humi 0 x05#define reset 0 x1e value humi_val,temp_val; float dew_p
43、oint; unsigned char error,checksum; unsigned int i; uchar readhumidityflag=0;uchar xdata currenthumidity=current humidity;/*濕度處理變量定義部分*/*溫度處理部分*uchar displayarray3=0 x02,0 x00,0 x00; /*前 3 位用于設(shè)置溫度值顯示 3 位用于當(dāng)前溫度值顯示 */uint currenttempvalue=0,tempdispersion=0;/*放大 10 倍進(jìn)行處理*/uchar readtemptimevalue=1,msc
44、ond=0,scond=0,readtempflag=0;uchar tempdec=0,temp1bit=0,tempdot=0;uchar xdata currenttemp=current temperature;void delays(uint i);void init_ds18b20(void);uchar readonechar(void);void writeonechar(uchar dat);void readtemperature(void);void delays(uint i)while(i-);/初始化函數(shù)void init_ds18b20(void)unsigned
45、 char x=0;dq = 1; /dq 復(fù)位delays(9); /稍做延時dq = 0; /單片機(jī)將 dq 拉低delays(55); /精確延時 511us 77dq = 1; /拉高總線delays(6); /延時 70usx=dq; /稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗 while(x); delays(48); /uchar readonechar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)dq = 0; / 給脈沖信號dat=1; i+;i+;i+; i-;i-;i-;dq = 1; / 接收信號if(dq
46、)dat|=0 x80;delays(5);return(dat);/寫一個字節(jié)void writeonechar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)dq = 0;dq = dat&0 x01;delays(3);dq = 1;dat=1; /delays(4);/讀取溫度void readtemperature(void)uchar a=0;uchar b=0;uint t=0;init_ds18b20();writeonechar(0 xcc); / 跳過讀序號列號的操作writeonechar(0 x44); / 啟
47、動溫度轉(zhuǎn)換init_ds18b20();writeonechar(0 xcc); /跳過讀序號列號的操作writeonechar(0 xbe); /讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();t=b;t4;tempdec=currenttempvalue/10;temp1bit=currenttempvalue%10;*/currenttempvalue=(int)(t*0.625); tempdec=currenttempvalue/100; temp1bit=(currenttempvalue/10)%10;tem
48、pdot= currenttempvalue%10;displayarray2=tempdec;displayarray1=temp1bit; displayarray0=tempdot;/*溫度處理部分結(jié)束*/*液晶顯示部分*void delay(uchar ms) / 延時子程序 uchar k; while(ms) ms-; for(k = 250; k!=0;k-); /等待液晶閑狀態(tài)bit wait_enable(void) / 測試 lcd 忙碌狀態(tài) bit result; p0=0xff; rs = 0; rw = 1; en = 1; en = 0; result=en; re
49、turn result;/寫指令函數(shù): e=高電平跳變成低電平時 rs=0 rw=0void lcd_write_command(uchar command)/(命令,是否等待閑) while(wait_enable(); rs=0; rw=0; delay(5); en=0; p0=command; en=1; en=0;/寫數(shù)據(jù)到液晶void lcd_write_data(uchar char_data) while(wait_enable(); rs = 1; rw = 0; en = 0; p0 = char_data; en = 1; delay(1); en = 0;/初始化液晶v
50、oid lcd_init() /lcd 初始化設(shè)定 delay(15); lcd_write_command(0 x38); /設(shè)置顯示模式:8 位 2 行 5x7 點(diǎn)陣 lcd_write_command(0 x38); /設(shè)置顯示模式:8 位 2 行 5x7 點(diǎn)陣 lcd_write_command(0 x38); /設(shè)置顯示模式:8 位 2 行 5x7 點(diǎn)陣 delay(5); lcd_write_command(0 x01); /清除 lcd 的顯示內(nèi)容 delay(5); lcd_write_command(0 x03); /光標(biāo)復(fù)位,光標(biāo)返回到地址 00h delay(5); lc
51、d_write_command(0 x38); /設(shè)置顯示模式:8 位 2 行 5x7 點(diǎn)陣 delay(5); lcd_write_command(0 x0c); /顯示器開、光標(biāo)開、光標(biāo)允許閃爍 delay(5); lcd_write_command(0 x06); /文字不動,光標(biāo)自動右移 delay(5);/顯示一個字符void display_a_char(uchar position,uchar char_data) lcd_write_command(position+0 x80); lcd_write_data(char_data);/顯示一個字符串void display_a
52、_string(uchar position,uchar *content,uchar length) uchar i; for(i=0;i=50) mscond=0; readtempflag=1;readhumidityflag=1; /*濕度處理模塊*char s_write_byte(unsigned char value) unsigned char i,error=0; for (i=0 x80;i0;i/=2) if (i&value) data=1; else data=0; sck=1; _nop_();_nop_();_nop_(); sck=0; data=1; sck=
53、1; error=data; sck=0; return error; / reads a byte form the sensibus and gives an acknowledge in case of ack=1char s_read_byte(unsigned char ack) unsigned char i,val=0; data=1; for (i=0 x80;i0;i/=2) sck=1; if (data) val=(val | i); sck=0; data=!ack; sck=1; _nop_();_nop_();_nop_(); sck=0; data=1; return val;void s_transstart(void)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 挖掘機(jī)拆遷安全協(xié)議書
- 《水分析化學(xué)》重點(diǎn)筆記
- 2024-2025學(xué)年六年級上冊數(shù)學(xué)北師大版期中模擬檢測卷(1-3單元)(含答案)
- 氣體儲存技術(shù)新進(jìn)展
- 高考數(shù)學(xué)復(fù)習(xí):三角函數(shù)的概念與三角公式應(yīng)用
- 合伙企業(yè)的賬務(wù)處理-做賬實(shí)操
- 2024年煤層氣(煤田)項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 【北京】期中模擬卷【18-19章】
- 公司生產(chǎn)設(shè)備購買合同(3篇)
- 左傳讀書心得體會三篇
- 對數(shù)運(yùn)算課件
- 0324心臟瓣膜病課件
- 2020年1月自考00804金融法二試題及答案含解析
- 看花識草辨藥材(山東聯(lián)盟)智慧樹知到期末考試答案2024年
- 小班語言《兩片樹葉》課件
- 頭療專業(yè)知識和話術(shù)課件
- 毛澤東詩詞鑒賞
- (高清版)DZT 0426-2023 固體礦產(chǎn)地質(zhì)調(diào)查規(guī)范(1:50000)
- 中國經(jīng)濟(jì)增長現(xiàn)狀及未來前景分析報(bào)告
- 龍井營銷方案
- 大學(xué)生職業(yè)生涯規(guī)劃書護(hù)理
評論
0/150
提交評論