數(shù)字溫度計課程設(shè)計報告_第1頁
數(shù)字溫度計課程設(shè)計報告_第2頁
數(shù)字溫度計課程設(shè)計報告_第3頁
數(shù)字溫度計課程設(shè)計報告_第4頁
數(shù)字溫度計課程設(shè)計報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE22《基于1-wrie串行總線應(yīng)用系統(tǒng)的設(shè)計》課程設(shè)計報告專業(yè):電子科學(xué)與技術(shù)班級:姓名:xxx指導(dǎo)教師:xxxxx二0年十月十八日目錄一、設(shè)計任務(wù)…………31.1設(shè)計題目及要求……………………31.2設(shè)計思路……………3二、設(shè)計方案…………42.1單片的選擇…………42.2溫度傳感器的選擇…………………42.3顯示器的選擇………………………52.4設(shè)計方案……………5三、電路設(shè)計…………53.1AT89S51單片機的特殊功能部件…………………53.2DS18B20的工作原理………………63.3硬件電路設(shè)計及其分析……………73.4DS18B20測溫流程及軟件設(shè)計……………………10四、心得體會…………19五、參考書目…………19第一部分設(shè)計任務(wù)1.1設(shè)計題目及要求設(shè)計制作一個DS18B20溫度計。1.利用單總線完成對DS18B20的初始化操作。2.利用4位數(shù)碼顯示實時環(huán)境溫度3.增加2個按鍵,分別用于實現(xiàn)啟動測溫和關(guān)閉(停止)測溫功能。4.硬件方面需要9V轉(zhuǎn)5V穩(wěn)壓電路。1.2設(shè)計思路溫度計電路設(shè)計總體設(shè)計方框圖如圖1所示,控制器采用單片機AT89S51,溫度傳感器采用DS18B20,用2位LED數(shù)碼管傳送數(shù)據(jù)實現(xiàn)溫度顯示。主控制器主控制器LED顯示溫度傳感器單片機復(fù)位時鐘振蕩報警點按鍵調(diào)整整圖1總體設(shè)計方框圖第二部分設(shè)計方案2.1單片機的選擇采用AT89S51單片機。中央微處理器AT89S51:AT89S51是一個低功耗,高性能CMOS8位單片機,片內(nèi)含4kBytesISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80S51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。AT89S51具有如下特點:40個引腳,4kBytesFlash片內(nèi)程序存儲器,128bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。2.2溫度傳感器的選擇采用數(shù)字單片智能溫度傳感器DS18B20。DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數(shù)字量方式串行輸出,其工作電源既可在遠端引入,也可采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。DS18B20支持“一線總線”接口,測量溫度范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為0.5℃。DS18B20的精度較差為±0.2℃?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量。如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。由于DS18B20將溫度傳感器、信號放大調(diào)理、A/D轉(zhuǎn)換、接口全部集成于一芯片,與單片機連接簡單、方便,與AD590相比是更新一代的溫度傳感器,所以溫度傳感器采用DS18B20。2.3顯示器的選擇采用傳統(tǒng)的七段數(shù)碼LED顯示器。LED數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。2.4設(shè)計方案采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89S51構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC機通信上傳數(shù)據(jù),另外AT89S51在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。第三部分電路設(shè)計3.1AT89S51單片機的特殊功能部件(1)定時/計數(shù)器AT89S51有兩個16位可編程定時/計數(shù)器T0和T1,它們分別有兩個獨立的8位寄存器THx和TLx構(gòu)成,通過編程設(shè)置可以實現(xiàn)4種工作方式。(2)中斷系統(tǒng)51單片機具備較完善的中斷功能,有2個外部中斷、2個內(nèi)部定時器中斷和1個串行口中斷,可以實現(xiàn)不同的控制要求,并具有兩級的優(yōu)先級。(3)時鐘振蕩電路51內(nèi)置一個振蕩器和時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,常用頻率為6MHZ、11.0592MHZ、12MHZ。振蕩器實際上是一個高增益反相器,使用時需外接一個晶振和兩個相匹配的電容。3.2DS18B20的工作原理DS18B20的測溫原理如圖3-1所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫圖2中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值。另外,由于DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。圖3-1DS18B20的測溫原理3.3硬件電路設(shè)計及其分析硬件電路由總控制器電路、DS18B20測溫電路、LED動態(tài)顯示電路組成。(1)總控制器總控制器有電源電路、時鐘電路、復(fù)位電路三部分構(gòu)成。時鐘電路對單片機系統(tǒng)而言是必需的。由于單片機內(nèi)部是由各種各樣的數(shù)字邏輯器件(如觸發(fā)器寄存器存儲器等)構(gòu)成,這些數(shù)字器件的工作必須按時間順序完成,這種時間順序就稱為時序。時鐘電路就是提供單片機內(nèi)部各種操作的時間基準(zhǔn)的電路,沒有時鐘電路單片機就無法工作。此次設(shè)計中,我們采用由由內(nèi)部方式產(chǎn)生時鐘的方法形成時鐘電路。內(nèi)部方式:在XTAL1和XTAL2端外接石英晶體作定時元件,內(nèi)部反相放大器自激振蕩,產(chǎn)生時鐘。時鐘發(fā)生器對振蕩脈沖二分頻,即若石英頻率fosc=6MHz,則時鐘頻率=3MHZ,因此,時鐘是一個雙相信號,由P1相和P2相構(gòu)成。fosc可在2MHZ—12MHZ選擇。小電容可以取30PF左右。XTAL1和XTAL2為片內(nèi)振蕩電路輸入線,這兩個端子用來外接石英晶體和微調(diào)電容。在石英晶體的兩個管腳加交變電場時,它將會產(chǎn)生一定頻率的機械變形,而這種械振動又會產(chǎn)生交變電場,上述物理現(xiàn)象稱為壓電效應(yīng)。一般情況下,無論是機械振動的振幅,還是交變電場的振幅都非常小。但是,當(dāng)交變電場的頻率為某一特定值時,振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。這一特定頻率就是石英晶體的固有頻率(諧振頻率)。即用來連接單片機內(nèi)OSC的定時反饋回路。石英晶振起振后要能在XTAL2線上輸出一個3V左右的正弦波,以便使單片機片內(nèi)的OSC電路按石英晶振相同頻率自激振蕩。通常OSC輸出時鐘頻率f為0.5MHz~16MHz,典型值為12MHz或者11.0592MHz。電容C3和C4可以幫助起振,典型值為30pF,調(diào)節(jié)它們可以達到微調(diào)f的目的。時鐘電路和單片機的連接如圖3-2所示。圖3-2時鐘電路與單片機的連接圖復(fù)位電路的設(shè)計,單片機在開機時都需要復(fù)位,以便中央處理CPU以及其他功能部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。單片機的復(fù)位后是靠外部電路實現(xiàn)的,在時鐘電路工作后,只要在單片機的RST引腳上出現(xiàn)24個時鐘振蕩脈沖(2個機器周期)以上的高電平,單片機便可實現(xiàn)初始化狀態(tài)復(fù)位。單片機的RST引腳是復(fù)位信號的輸入端。單片機時鐘頻率為12MHz,則復(fù)位脈沖寬度至少應(yīng)該為2μs,復(fù)位電路如圖3-3所示圖3-3單片機復(fù)位電路(2)DS18B20測溫電路DS18B20最大的特點是單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線來完成。DS18B20的電源供電方式有2種:外部供電方式和寄生電源方式。工作于寄生電源方式時,VDD和GND均接地,他在需要遠程溫度探測和空間受限的場合特別有用,原理是當(dāng)1Wire總線的信號線DQ為高電平時,竊取信號能量給DS18B20供電,同時一部分能量給內(nèi)部電容充電,當(dāng)DQ為低電平時釋放能量為DS18B20供電。但寄生電源方式需要強上拉電路,軟件控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)到E2PROM時),同時芯片的性能也有所降低。因此,在條件允許的場合,盡量采用外供電方式。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電。在這里采用前者方式供電。DS18B20與芯片連接電路如圖。外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。站長推薦大家在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。(3)LED動態(tài)顯示電路數(shù)碼管由8個發(fā)光二極管(以下簡稱字段)構(gòu)成,通過不同的組合可用來顯示數(shù)字0~9、字符A~F、H、L、P、R、U、Y、符號“-”及小數(shù)點“.”。采用4位共陽極數(shù)碼管。共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動電路輸出端。當(dāng)某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導(dǎo)通并點亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。將數(shù)碼管公共極COM接到+5V,段選段接單片機P0口(當(dāng)單片機P0口高電平輸出時,要接上拉電阻以增大驅(qū)動能力),位選端加三極管驅(qū)動接單片機P2口。數(shù)碼管與單片機的接口電路如圖4-4中所示。系統(tǒng)總電路圖:3.4DS18B20測溫流程及軟件設(shè)計初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)復(fù)位時序:復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示成功.主機發(fā)送(Tx)--復(fù)位脈沖(最短為480μs的低電平信號)。接著主機便釋放此線并進入接收方式(Rx)??偩€經(jīng)過4.7K的上拉電阻被拉至高電平狀態(tài)。在檢測到I/O引腳上的上升沿之后,DS18B20等待15~60μs,并且接著發(fā)送脈沖(60~240μs的低電平信號)。然后以存在復(fù)位脈沖表示DS18B20已經(jīng)準(zhǔn)備好發(fā)送或接收,然后給出正確的ROM命令和存儲操作命令的數(shù)據(jù)。DS18B20通過使用時間片來讀出和寫入數(shù)據(jù),時間片用于處理數(shù)據(jù)位和進行何種指定操作的命令。它有寫時間片和讀時間片兩種:寫時間片:當(dāng)主機把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時,產(chǎn)生寫時間片。有兩種類型的寫時間片:寫1時間片和寫0時間片。所有時間片必須有60微秒的持續(xù)期,在各寫周期之間必須有最短為1微秒的恢復(fù)時間.讀時間片:從DS18B20讀數(shù)據(jù)時,使用讀時間片。當(dāng)主機把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時產(chǎn)生讀時間片。數(shù)據(jù)線在邏輯低電平必須保持至少1微秒;來自DS18B20的輸出數(shù)據(jù)在時間下降沿之后的15微秒內(nèi)有效。為了讀出從讀時間片開始算起15微秒的狀態(tài),主機必須停止把引腳驅(qū)動拉至低電平。在時間片結(jié)束時,I/O引腳經(jīng)過外部的上拉電阻拉回高電平,所有讀時間片的最短持續(xù)期為60微秒,包括兩個讀周期間至少1μs的恢復(fù)時間。一旦主機檢測到DS18B20的存在,它便可以發(fā)送一個器件ROM操作命令。所有ROM操作命令均為8位長。所有的串行通訊,讀寫每一個bit位數(shù)據(jù)都必須嚴(yán)格遵守器件的時序邏輯來編程,同時還必須遵守總線命令序列,對單總線的DS18B20芯片來說,訪問每個器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM命令;最后就是執(zhí)行功能命令(ROM命令和功能命令后面以表格形式給出)。如果出現(xiàn)序列混亂,則單總線器件不會響應(yīng)主機。當(dāng)然,搜索ROM命令和報警搜索命令,在執(zhí)行兩者中任何一條命令之后,要返回初始化?;趩慰偩€上的所有傳輸過程都是以初始化開始的,初始化過程由主機發(fā)出的復(fù)位脈沖和從機響應(yīng)的應(yīng)答脈沖組成。應(yīng)答脈沖使主機知道,總線上有從機,且準(zhǔn)備就緒。在主機檢測到應(yīng)答脈沖后,就可以發(fā)出ROM命令。這些命令與各個從機設(shè)備的唯一64位ROM代碼相關(guān)。在主機發(fā)出ROM命令,以訪問某個指定的DS18B20,接著就可以發(fā)出DS18B20支持的某個功能命令。這些命令允許主機寫入或讀出DS18B20便箋式RAM、啟動溫度轉(zhuǎn)換。主機首先發(fā)出一個復(fù)位脈沖,信號線上的DS18B20器件被復(fù)位。接著主機發(fā)送ROM命令,程序開始讀取單個在線的芯片ROM編碼并保存在單片機數(shù)據(jù)存儲器中,把用到的DS18B20的ROM編碼離線讀出,最后用一個二維數(shù)組保存ROM編碼。系統(tǒng)工作時,把讀取了編碼的DS18B20掛在總線上。發(fā)溫度轉(zhuǎn)換命令,再總線復(fù)位。然后就可以從剛才的二維數(shù)組匹配在線的溫度傳感器,隨后發(fā)溫度讀取命令就可以獲得對應(yīng)的度值了。在主機初始化過程,主機通過拉低單總線至少480us,來產(chǎn)生復(fù)位脈沖。接著,主機釋放總線,并進入接收模式。當(dāng)總線被釋放后,上拉電阻將單總線拉高。在單總線器件檢測到上升沿后,延時15~60us,接著通過拉低總線60~240us,以產(chǎn)生應(yīng)答脈沖。寫時序均起始于主機拉低總線,產(chǎn)生寫1時序的方式:主機在拉低總線后,接著必須在15us之內(nèi)釋放總線。產(chǎn)生寫0時序的方式:在主機拉低總線后,只需在整個時序期間保持低電平即可(至少60us)。在寫字節(jié)程序中的寫一個bit位的時候,沒有按照通常的分別寫0時序和寫1時序,而是把兩者結(jié)合起來,當(dāng)主機拉低總線后在15us之內(nèi)將要寫的位c給DO:如果c是高電平滿足15us內(nèi)釋放總線的要求,如果c是低電平,則DO=c這條語句仍然是把總線拉在低電平,最后都通過延時58us完成一個寫時序(寫時序0或?qū)憰r序1)過程。寫時間時序:當(dāng)主機把數(shù)據(jù)從邏輯高電平拉到邏輯低電平的時候,寫時間隙開始。有兩種寫時間隙,寫1時間隙和寫0時間隙。所有寫時間隙必須最少持續(xù)60μs,包括兩個寫周期至少1μs的恢復(fù)時間。I/O線電平變低后,DS18B20在一個15μs到60μs的窗口內(nèi)對I/O線采樣。如果線上事高電平,就是寫1,如果是低電平,就是寫0。主機要生成一個寫時間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時間隙開始后的15μs內(nèi)允許數(shù)據(jù)線拉到高電平。主機要生成一個寫0時間隙,必須把數(shù)據(jù)線拉到低電平并保存60μs。每個讀時隙都由主機發(fā)起,至少拉低總線1us,在主機發(fā)起讀時序之后,單總線器件才開始在總線上發(fā)送0或1。所有讀時序至少需要60us。讀時間時序:當(dāng)從DS18B20讀數(shù)據(jù)時,主機生成讀時間隙。當(dāng)主機把數(shù)據(jù)從高電平拉到低電平時,寫時間隙開始,數(shù)據(jù)線必須保持至少1μs;從DS18B20輸出的數(shù)據(jù)在讀時間隙的下降沿出現(xiàn)后15μs內(nèi)有效。因此,主機在讀時間隙開始后必須把I/O腳驅(qū)動拉為的電平保持15μs,以讀取I/O腳狀態(tài)。、在讀時間隙的結(jié)尾,I/O引腳將被外部上拉電阻拉到高電平。所有讀時間隙必須最少60μs,包括兩個讀周期至少1μs的恢復(fù)時間。圖3-6讀DS18B20流程圖圖3-7寫DS18B20流程圖系統(tǒng)總程序設(shè)計:(1)數(shù)字溫度計工作主要分為溫度采集、溫度轉(zhuǎn)化、數(shù)據(jù)處理、顯示這幾部分。單片機對與DS18B20主要完成對溫度的檢測和補償,通過AT89S51單片機對DS18B20芯片的控制和數(shù)據(jù)傳輸,查詢當(dāng)前的DS18B20溫度采集和轉(zhuǎn)換是否完成是關(guān)鍵,并且完成對轉(zhuǎn)換后的數(shù)據(jù)的讀取。(2)系統(tǒng)總程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//0~90x40,0x89,0x24,0x30,0x19,0x12,0x02,0x88,0x00,0x10,//10~190xbf,//20符號-0xff,//不顯示};//ds18b20與單片機連接口sbitDQ=P3^2;uchardatadisdata[5];//存放溫度值uinttvalue;//溫度值uchartflag;//溫度正負(fù)標(biāo)志/*************************顯示程序**************************/voiddelay(uintk)//延時1毫秒(不夠精確的){unsignedinti,j;for(i=0;i<k;i++)for(j=0;j<100;j++);}//LCD顯示函數(shù)voidweixuan(){if(tvalue<0) //負(fù)數(shù)處理 { disdata[0]=20; tvalue--; tvalue--; tvalue=~tvalue; tvalue=tvalue%1000; disdata[1]=tvalue/100;//獲取十位 if(disdata[1]==0) disdata[1]=21; tvalue=tvalue%100; disdata[2]=tvalue/10;//獲取個位再 disdata[2]+=10;//加入小數(shù)點,查表可得出有小數(shù)點的排在后10位,所以加10 disdata[3]=tvalue%10;//獲取小數(shù)第一位 }else//正數(shù)的處理{ disdata[0]=tvalue/1000; //顯示百位 if(disdata[0]==0) disdata[0]=21;//判斷溫度為正溫度且沒有上百,前面不顯示,查表第12是空 tvalue=tvalue%1000; disdata[1]=tvalue/100;//顯示十位 if(disdata[0]==21&&disdata[1]==0)//百位和十位同時為0則不顯示 disdata[1]=21; tvalue=tvalue%100; disdata[2]=tvalue/10;//獲取個位再 disdata[2]+=10;//加入小數(shù)點,查表可得出有小數(shù)點的排在后10位,所以加10 disdata[3]=tvalue%10;//獲取小數(shù)第一位}}voiddisplay(uchar*lp,ucharlc)//顯示{uchari; //定義變量 P0=0x00; //端口2為輸出 P2=0xf7; //將P2口的輸出11110111,對應(yīng)第一個數(shù)碼管 for(i=0;i<lc;i++) { //循環(huán)顯示 P0=table[lp[i]]; //查表法得到要顯示數(shù)字的數(shù)碼段 delay(5); delay(5); delay(5); P0=0x00; //清0端口,準(zhǔn)備顯示下位 P2>>=1; //下一位數(shù)碼管 if(i==3) break; }} /******************************ds1820程序***************************************/voiddelay_18B20(uinti)//延時1微秒{while(i--);}/*ds1820復(fù)位*/voidds1820rst(){DQ=1;//DQ復(fù)位delay_18B20(4);//延時DQ=0;//DQ拉低delay_18B20(100);//精確延時大于480usDQ=1;//拉高delay_18B20(40);}/*從ds18b20中讀數(shù)據(jù)*/uchards1820rd(){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;delay_18B20(10)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論