




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、天津理工大學(xué) 通信工程 課程設(shè)計(jì)電子技術(shù)課程設(shè)計(jì)題目:多路智能溫度測(cè)控系統(tǒng)設(shè)計(jì) 學(xué) 院 計(jì)算機(jī)與通信工程學(xué)院 專 業(yè) 通信工程 2011年5月目 錄摘要 3關(guān)鍵字 3前言 3一proteus內(nèi)容簡(jiǎn)介4二、設(shè)計(jì)目的4三、設(shè)計(jì)內(nèi)容4四、ds18b20簡(jiǎn)介5五、單片機(jī)簡(jiǎn)介9六、基本設(shè)計(jì)原理9七、設(shè)計(jì)步驟10八、proteus設(shè)計(jì)圖11九、proteus仿真調(diào)試11十、軟件設(shè)計(jì)13結(jié)語總結(jié) 14參考文獻(xiàn) 14附錄115附錄217摘 要:本文介紹了數(shù)字溫度傳感器ds18b20測(cè)溫的基本原理以及基于ds18b20的多點(diǎn)溫度測(cè)量系統(tǒng)的設(shè)計(jì)過程,包括軟件設(shè)計(jì)和硬件設(shè)計(jì)兩大部分。軟件部分給出了軟件設(shè)計(jì)思想及軟件
2、流程圖,硬件部分給出了單片機(jī)、測(cè)溫電路、顯示電路設(shè)計(jì)。單片機(jī)使用at89c52單片機(jī),溫度傳感器使用美國(guó)dallas公司最新推出的ds18b20數(shù)字式溫度傳感器,顯示模塊采用lcd顯示?;赿s18b2o的多點(diǎn)測(cè)溫系統(tǒng)在實(shí)際中應(yīng)用廣泛,測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少、轉(zhuǎn)換速度快、給硬件電路設(shè)計(jì)工作帶來極大的方便并且縮短了開發(fā)周期。關(guān)鍵詞:ds18b20 多點(diǎn)溫度測(cè)量 單片機(jī) proteus仿真前 言隨著電子技術(shù)的快速發(fā)展,我們生活中的方方面面幾乎都充斥著電子產(chǎn)品,我們也無時(shí)無刻不享受著電子技術(shù)帶給我們的便利。作為電子專業(yè)的大學(xué)生,我們應(yīng)當(dāng)在享受電子生活帶給我們的便捷的同時(shí),應(yīng)該
3、更多的理解與思考電子產(chǎn)品的設(shè)計(jì)過程,并能在已有的集成芯片和單片機(jī)等微控制器的基礎(chǔ)上,自己動(dòng)手親身體驗(yàn)電子設(shè)計(jì)的過程,以便于將課本上的理論實(shí)踐化,做到學(xué)以致用,更好的掌握單片機(jī)等元器件的應(yīng)用,鍛煉獨(dú)立解決問題的能力。本課程設(shè)計(jì)題目是基于ds18b20的多路智能溫度測(cè)控系統(tǒng)設(shè)計(jì),主要介紹了ds18b20的工作過程和原理,以及基于它的系統(tǒng)設(shè)計(jì)。在這個(gè)設(shè)計(jì)里,根據(jù)要求設(shè)計(jì)了兩個(gè)ds18b20與單片機(jī)之間的單端口通信,可以推廣到多個(gè)ds18b20。通過學(xué)習(xí)了解掌握了proteus 原理圖設(shè)計(jì)及仿真方法,熟悉keil開發(fā)環(huán)境。在設(shè)計(jì)過程中參考或引用了基于proteus的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真,ds18
4、b20數(shù)據(jù)手冊(cè)等參考資料以及網(wǎng)絡(luò)上的相關(guān)資料。在此,向這些技術(shù)資料的作者表示感謝。由于設(shè)計(jì)者的學(xué)識(shí)水平有限,加之時(shí)間倉(cāng)促,作品不夠完善,不足之處在所難免,敬請(qǐng)老師指導(dǎo)和改正。一proteus內(nèi)容簡(jiǎn)介proteus軟件是英國(guó)labcenter electronics公司出版的eda工具軟件。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。proteus從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到pcb設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、pcb設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),
5、其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086、msp430、cortex和dsp系列處理器。它是能進(jìn)行模擬電路、數(shù)字電路、模數(shù)混合電路、rs232動(dòng)態(tài)仿真、i2c調(diào)試器、spi 調(diào)試器、鍵盤和lcd、led 系統(tǒng)的設(shè)計(jì)與仿真的平臺(tái)。proteus 具備原理圖設(shè)計(jì)、電路分析與仿真、pcb 設(shè)計(jì)功能,可以通過調(diào)入程序的編譯結(jié)果. hex 或. cof 文件來調(diào)試單片機(jī)程序,還可直接嵌入到 microchip 公司的單片機(jī)調(diào)試軟件 mplab ide中,進(jìn)行程序的調(diào)試和仿真。二、設(shè)計(jì)目的1、掌握單片機(jī)基本編程技術(shù)及外圍電路的搭
6、建2、熟練掌握ds18b20的基本操作并了解其工作原理3、熟練掌握proteus原理圖設(shè)計(jì)及仿真三、設(shè)計(jì)內(nèi)容1、單片機(jī)最小系統(tǒng)設(shè)計(jì)2、ds18b20與單片機(jī)的單口通信設(shè)計(jì)3、proteus原理圖的繪制與仿真4、單片機(jī)程序編寫四、ds18b20簡(jiǎn)介ds18b20數(shù)字溫度計(jì)是dallas公司生產(chǎn)的1-wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來組成一個(gè)測(cè)溫系統(tǒng),可以節(jié)約硬件資源,而且使用較為方便。ds18b20產(chǎn)品的特點(diǎn) (1)只要求一個(gè)端口即可實(shí)現(xiàn)通信。 (2)在 ds18b20中的每個(gè)器件上都有獨(dú)一無二的序列號(hào)。 (3)實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。 (4)測(cè)量
7、溫度范圍在55c到125c之間。 (5)數(shù)字溫度計(jì)的分辨率用戶可以從 9位到 12 位選擇。 (6)內(nèi)部有溫度上、下限告警設(shè)置。ds18b20的引腳介紹 to-92封裝的ds18b20的引腳排列見下圖 ds18b20的使用方法由于 ds18b20 采用的是 1wire 總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)at89s51 單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì) ds18b20 芯片的訪問。 由于 ds18b20是在一根 i/o線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。ds18b20 有嚴(yán)格的通信協(xié)議來保證各位數(shù)
8、據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。(此圖為以下時(shí)序圖的圖例)ds18b20的復(fù)位時(shí)序ds18b20的讀時(shí)序 對(duì)于ds18b20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。對(duì)于ds18b20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在 15us之內(nèi)釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20進(jìn)行一個(gè)讀時(shí)序過程,至少需要60us才能完成
9、。(下圖左邊為讀“0”時(shí)序,右邊為讀“1”時(shí)序)ds18b20的寫時(shí)序 對(duì)于 ds18b20 的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程。對(duì)于ds18b20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證ds18b20能夠在 15us 到 45us 之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。(下圖左邊為讀“0”時(shí)序,右邊為讀“1”時(shí)序)單片機(jī)檢測(cè)到ds18b20的存在,即可向其發(fā)送rom操作命令 每一片ds18b20在其rom中都存有其唯一的64位序列號(hào),在出廠前已寫入片內(nèi)rom中,主機(jī)在進(jìn)入操作程序
10、前必須逐一接入18b20用讀rom(33h)命令將該18b20的序列號(hào)讀出并登陸。當(dāng)主機(jī)需要對(duì)眾多在線18b20進(jìn)行操作是,首先要發(fā)出匹配rom命令(55h)之后的操作就是針對(duì)該18b20的。而所謂跳過rom命令即為:之后的操作是對(duì)所有18b20的框圖中先有跳過rom,即是啟動(dòng)所有18b20進(jìn)行溫度變換之后,通過匹配rom再逐一地讀回每個(gè)18b20的溫度數(shù)據(jù)。在18b20組成的測(cè)溫系統(tǒng)中,主機(jī)在發(fā)出跳過rom命令之后,再發(fā)出統(tǒng)一的溫度轉(zhuǎn)換啟動(dòng)碼44h就可以實(shí)現(xiàn)所有18b20的統(tǒng)一轉(zhuǎn)換,再經(jīng)過1s后,就可以用很少的時(shí)間去逐一讀取。64-bit rom數(shù)據(jù)結(jié)構(gòu)圖:低8位為產(chǎn)品類型編碼(ds18b2
11、0均為10h),中間48位為每個(gè)器件唯一的序號(hào),高8位為crc(循環(huán)冗余校驗(yàn))碼。ds18b20中有用于存儲(chǔ)測(cè)得的溫度值的兩個(gè)8位ram存儲(chǔ)器,編號(hào)為0號(hào)到1號(hào)。1號(hào)存儲(chǔ)器存放溫度值的符號(hào),如果溫度為負(fù),則1號(hào)存儲(chǔ)器8位全為1,否則全為0。0號(hào)存儲(chǔ)器用于存放溫度值的補(bǔ)碼,lsb(最低位)的“1”表示0.5攝氏度。將存儲(chǔ)器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)化成十進(jìn)制數(shù)并處以2就得到被測(cè)溫度值(-55攝氏度125攝氏度)。溫度/數(shù)據(jù)轉(zhuǎn)換關(guān)系轉(zhuǎn)換示例五、單片機(jī)簡(jiǎn)介單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機(jī)存儲(chǔ)器ram、只讀存儲(chǔ)器rom、多種i/o口和中斷系統(tǒng)、定
12、時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),是典型的嵌入式微控制器(microcontroller unit),常用英文字母的縮寫mcu表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。六、基本設(shè)計(jì)原理單片機(jī)在本設(shè)計(jì)中充當(dāng)了重要的角色,是整個(gè)溫度測(cè)控系統(tǒng)的核心,作為控制中心而存在,與本設(shè)計(jì)中的另一個(gè)重要部分ds18b20進(jìn)行數(shù)據(jù)通信并控制lcd液晶屏顯示輸出,完成了整個(gè)多點(diǎn)溫度的測(cè)控任務(wù),ds18b20、at89c52單片機(jī)、lcd液晶屏構(gòu)成了整個(gè)多點(diǎn)溫度測(cè)控系統(tǒng)。本設(shè)計(jì)共采用了2
13、片ds18b20芯片并接于p1.1口采用at89c52作為控制中心與ds18b20完成單口通信,讀取ds18b20采集的溫度信息,并經(jīng)過處理交由1602lcd顯示。本設(shè)計(jì)出于只闡述說明原理考慮只使用了2片ds18b20芯片,并外接了一個(gè)開關(guān)用于這2片芯片溫度數(shù)據(jù)之間的切換。系統(tǒng)框圖如下所示。 系統(tǒng)框圖at89c52ds18b20ds18b20lcd1602七、設(shè)計(jì)步驟1、查閱 ds18b20芯片datasheet,熟悉其工作原理2、在proteus環(huán)境下繪制系統(tǒng)原理圖3、在keil開發(fā)環(huán)境下編寫程序4、將程序?qū)雙roteus下仿真5、根據(jù)仿真結(jié)果改寫程序6、撰寫設(shè)計(jì)報(bào)告八、proteus設(shè)計(jì)
14、圖說明:左下角為兩個(gè)ds18b20芯片,dq端同接于at89c52的p1.1口,右上角為1602lcd,p3.3口接開關(guān),通過它的開關(guān)切換兩片ds18b20之間的溫度顯示。九、proteus仿真調(diào)試在proteus中使用多個(gè)ds18b20 時(shí),必須改變器件的屬性,使仿真中的每個(gè)器件序列號(hào)各不相同。具體做法:右擊ds18b20,選中edit properties選項(xiàng),在其中改變r(jià)om serial number的值(在該對(duì)話框下還可以改變granularity的數(shù)值,即改變每次調(diào)整溫度的額度)。在proteus中,可以人為改變3個(gè)字節(jié)的器件序列號(hào)。要想得到全部8個(gè)字節(jié),一個(gè)簡(jiǎn)單的方法就是每一次總
15、線上只連接一個(gè)器件,利用0x33讀器件序列號(hào)的命令在程序中得到完整的器件序列號(hào)。將測(cè)試序列號(hào)的程序燒入proteus下at89c51中,程序中定義通信端口為p1.1只需將ds18b20依次與單片機(jī)連接即可。并在運(yùn)行中點(diǎn)擊菜單項(xiàng)debug,選中watch window,按alt+a,即出現(xiàn)圖1所示對(duì)話框,在name項(xiàng)中輸入a,在address項(xiàng)中輸入0x08,點(diǎn)擊add,在watch window窗口中即可看到序列號(hào)低八位的值。然后依次輸入0x090x0f,再點(diǎn)擊done鍵,即可獲得所有64位序列號(hào)。所得序列號(hào)如圖2所示(本設(shè)計(jì)共用了兩個(gè)ds18b20)。測(cè)試程序詳見附錄1 程序中包含向ds18
16、b20發(fā)送一個(gè)字節(jié),讀取一個(gè)字節(jié),以及ds18b20的初始化等子程序。 圖 1圖 2 十、軟件設(shè)計(jì)1、軟件流程圖判斷k=1?讀取1st ds18b20lcd顯示讀取2nd ds18b20lcd顯示初始化ds18b20開始是否主程序流程圖 ds18b20讀取溫度流程圖開始初始化ds18b20跳過讀序列號(hào)操作匹配rom啟動(dòng)溫度轉(zhuǎn)換讀序列號(hào)匹配rom讀取溫度寄存器 2、關(guān)鍵模塊說明本程序由主函數(shù)main.c 、 頭文件ds18b20.h 、 lcd1602.h (為便于調(diào)用特將其編為.h文件)三部分組成。主函數(shù)main.c中處理了由ds18b20采集的溫度信息并交由1602lcd顯示,并設(shè)置了一個(gè)開
17、關(guān),當(dāng)打開開關(guān)顯示1st的溫度,閉合開關(guān)顯示2nd的溫度。ds18b20.h 是ds18b20的驅(qū)動(dòng)程序,包含了ds18b20的初始化函數(shù)、讀寫一個(gè)字節(jié)的函數(shù)、匹配rom函數(shù)、溫度讀取函數(shù)。lcd1602.h是1602lcd的驅(qū)動(dòng)程序,包含了lcd初始化等程序,使用時(shí)只需在主程序中調(diào)用gotoxy()函數(shù)即可讓lcd1602顯示字母數(shù)字等信息。具體程序見附錄2。結(jié)語總結(jié) 在本次課程設(shè)計(jì)中,我對(duì)于芯片的學(xué)習(xí)能力有了一定了提高,對(duì)于初次接觸的ds18b20芯片能通過閱讀它的數(shù)據(jù)手冊(cè)了解其使用方法,并付諸于軟件編程思想。在設(shè)計(jì)中碰到了一些困難,如在實(shí)現(xiàn)多個(gè)ds18b20的單總線通信時(shí),遇到了編程上的
18、瓶頸,接著又在proteus仿真中遇到了不會(huì)讀取ds18b20的序列號(hào)的困難,幸而被一一克服,才得以完成本設(shè)計(jì)最終的仿真實(shí)現(xiàn)。第一次親自動(dòng)手編寫此類較為冗長(zhǎng)的程序,將所學(xué)的c語言運(yùn)用到實(shí)際,才發(fā)現(xiàn)實(shí)踐總是高于理論的,在實(shí)際應(yīng)用中總會(huì)出現(xiàn)困難。在完成本設(shè)計(jì)后,本人感覺工程設(shè)計(jì)能力有較大的提升,培養(yǎng)了系統(tǒng)的思維能力,總之得到了很好的鍛煉。參考文獻(xiàn)1、 唐穎. 單片機(jī)原理與應(yīng)用及c51程序設(shè)計(jì).北京:北京大學(xué)出版社,20082、 周潤(rùn)景.張麗娜.基于proteus的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真.北京:北京航空航天大學(xué)出版社,2006附錄1ds18b20 rom系列號(hào)測(cè)試程序#includesbit d
19、q = p11; /定義通信端口 unsigned char a8;/延時(shí)程序void delay_18b20(unsigned int i) while(i-);/初始化函數(shù)init_ds18b20(void) unsigned char x=0; dq = 1; /dq復(fù)位 delay_18b20(4); /稍做延時(shí) dq = 0; /單片機(jī)將dq拉低 delay_18b20(100); /精確延時(shí) 大于 480us dq = 1; /拉高總線 delay_18b20(40); /讀一個(gè)字節(jié) readonechar(void)unsigned char i=0;unsigned char
20、dat = 0;for (i=8;i0;i-) dq = 0; / 給脈沖信號(hào) dat=1; dq = 1; / 給脈沖信號(hào) if(dq) dat|=0x80; delay_18b20(10); return(dat);/寫一個(gè)字節(jié) writeonechar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)dq = 0;dq = dat&0x01; delay_18b20(10); dq = 1; dat=1; void main(void) unsigned char i;init_ds18b20(); writeonechar(0x
21、33);for(i=0;i8;i+)ai=readonechar();/將rom序列號(hào)存入a中 附錄2主程序1、main.c#include#include#includeunsigned char tempbuffer6;sbit k=p30;void delay(unsigned int i) while(i-);void main(void) unsigned int temp;init_ds18b20();delay(5000); while(1) if(k=1)/打開開關(guān)顯示1st ds18b20 temp = readtemperature(1); if(flag_negative
22、_number)tempbuffer0=-; else tempbuffer0=+; tempbuffer1=temp/1000+0;/百位數(shù) tempbuffer2=temp%1000/100+0;/十位數(shù) tempbuffer3=temp%100/10+0;/個(gè)位數(shù) tempbuffer5=temp%10+0;/小數(shù)位 tempbuffer4=.; /小數(shù)點(diǎn) lcd_initial(); gotoxy(0,0); print( 1st ds18b20); gotoxy(0,1); print(temp:); gotoxy(5,1); print(&tempbuffer0); gotoxy(
23、11,1); print( cent); delay(50000); else /閉合開關(guān)顯示2nd ds18b20 temp = readtemperature(2); if(flag_negative_number)tempbuffer0=-; else tempbuffer0=+; tempbuffer1=temp/1000+0;/百位數(shù) tempbuffer2=temp%1000/100+0;/十位數(shù) tempbuffer3=temp%100/10+0;/個(gè)位數(shù) tempbuffer5=temp%10+0;/小數(shù)位 tempbuffer4=.; /小數(shù)點(diǎn); lcd_initial();
24、 gotoxy(0,0); print( 2nd ds18b20); gotoxy(0,1); print(temp:); gotoxy(5,1); print(&tempbuffer0); gotoxy(11,1); print( cent); delay(50000); 2、ds18b20.h#ifndef _ds18b20_h_#define _ds18b20_h_sbit dq = p11; /定義通信端口 unsigned char flag_negative_number = 0;/負(fù)數(shù)標(biāo)志unsigned char code str1=0x28,0x30,0xc5,0xb8,0x
25、00,0x00,0x00,0x8e;unsigned char code str2=0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9;/晶振11.0592mhz void delay_18b20(unsigned int i) while(i-);/初始化函數(shù)init_ds18b20(void) unsigned char x=0; dq = 1; /dq復(fù)位 delay_18b20(4); /稍做延時(shí) dq = 0; /單片機(jī)將dq拉低 delay_18b20(100); /精確延時(shí) 大于 480us dq = 1; /拉高總線 delay_18b20(40);
26、 /讀一個(gè)字節(jié) readonechar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) dq = 0; / 給脈沖信號(hào) dat=1; dq = 1; / 給脈沖信號(hào) if(dq) dat|=0x80; delay_18b20(10); return(dat);/寫一個(gè)字節(jié) writeonechar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = dat&0x01; delay_18b20(10); dq = 1; dat=1; /匹
27、配rommatchrom(unsigned char a) char j; writeonechar(0x55);/發(fā)送匹配rom命令 if(a=1) for(j=0;j8;j+) writeonechar(str1j);/發(fā)送18b20的序列號(hào),先發(fā)送低字節(jié) if(a=2) for(j=0;j8;j+) writeonechar(str2j);/發(fā)送18b20的序列號(hào),先發(fā)送低字節(jié) /讀取溫度readtemperature(unsigned char z)unsigned char a=0;unsigned char b=0;unsigned int t=0; init_ds18b20();
28、writeonechar(0xcc); /跳過讀序號(hào)列號(hào)的操作init_ds18b20();if(z=1)matchrom(1); /匹配rom 1if(z=2)matchrom(2); /匹配rom 2writeonechar(0x44);/*啟動(dòng)溫度轉(zhuǎn)換*/delay_18b20(5);init_ds18b20(); writeonechar(0xcc);/讀序列號(hào)init_ds18b20(); if(z=1)matchrom(1); /匹配rom 1if(z=2)matchrom(2);/匹配rom 2 writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩
29、個(gè)就是溫度a=readonechar();b=readonechar();/啟動(dòng)下一次溫度轉(zhuǎn)換init_ds18b20();writeonechar(0xcc); / 跳過讀序號(hào)列號(hào)的操作writeonechar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換t=b;t0x0fff) t=t+1;flag_negative_number = 0xff;t=t*0.625; /有效位到小數(shù)點(diǎn)后2位return(t);#endif3、lcd1602.h#ifndef lcd_char_1602_2005_4_9#define lcd_char_1602_2005_4_9#include /port definit
30、ionssbit lcdrs= p20;sbit lcdrw= p21;sbit lcden = p22;sfr dbport = 0x80;/p0=0x80,p1=0x90,p2=0xa0,p3=0xb0.數(shù)據(jù)端口/內(nèi)部等待函數(shù)unsigned char lcd_wait(void)lcdrs=0;lcdrw=1;_nop_();lcden=1;_nop_();/while(dbport&0x80);/在用proteus仿真時(shí),注意用屏蔽此語句,在調(diào)用gotoxy()時(shí),會(huì)進(jìn)入死循環(huán), /可能在寫該控制字時(shí),該模塊沒有返回寫入完備命令,即dbport&0x80=0x80 /實(shí)際硬件時(shí)打開此語句lcden=0;return dbport;/向lcd寫入命令或數(shù)據(jù)#define lcd_command0 / command#define lcd_data1 / data#define lcd_clear_screen0x01 / 清屏#define lcd_homing 0x02 / 光標(biāo)返回原點(diǎn)void lcd_write(bit style, unsigned char input)lcden=0;lc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 碼頭貨物運(yùn)輸合同
- 工程熱力學(xué)模擬試答題
- 企業(yè)內(nèi)部年度財(cái)務(wù)分析報(bào)告
- 寓言故事烏鴉喝水的啟示讀后感
- 企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)及維權(quán)服務(wù)協(xié)議
- 年度目標(biāo)達(dá)成報(bào)告
- 大數(shù)據(jù)挖掘在輿情監(jiān)控中的應(yīng)用實(shí)踐指南
- 如何正確使用辦公軟件提高效率
- 太陽能光伏發(fā)電系統(tǒng)安裝合同
- 人與自然紀(jì)錄片評(píng)析和諧共生的啟示
- 商業(yè)道德承諾書
- 中職語文必考文言文15篇
- 光伏電站巡檢記錄表完整
- 高血壓患者不遵醫(yī)飲食行為的原因分析及對(duì)策
- 《團(tuán)隊(duì)的凝聚力》課件
- 膝關(guān)節(jié)僵硬個(gè)案護(hù)理
- 《民間皮影》課程標(biāo)準(zhǔn)
- 新教科版六下科學(xué)1.4《設(shè)計(jì)塔臺(tái)模型》教學(xué)設(shè)計(jì)(新課標(biāo))
- 電氣設(shè)備維修
- 森林專業(yè)撲火隊(duì)培訓(xùn)課件
- 學(xué)校體育學(xué)第八章課余體育鍛煉課件
評(píng)論
0/150
提交評(píng)論