利用51單片機(jī)linux系統(tǒng)在arm板上顯示的溫度測(cè)量?jī)x表_第1頁(yè)
利用51單片機(jī)linux系統(tǒng)在arm板上顯示的溫度測(cè)量?jī)x表_第2頁(yè)
利用51單片機(jī)linux系統(tǒng)在arm板上顯示的溫度測(cè)量?jī)x表_第3頁(yè)
利用51單片機(jī)linux系統(tǒng)在arm板上顯示的溫度測(cè)量?jī)x表_第4頁(yè)
利用51單片機(jī)linux系統(tǒng)在arm板上顯示的溫度測(cè)量?jī)x表_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、紹興文理學(xué)院數(shù)理信息學(xué)院課 程 設(shè) 計(jì) 報(bào) 告 書題目 溫度測(cè)量?jī)x表 物電 系 電子信息工程 專業(yè) 101 班姓 名 麗平 指導(dǎo)教師 朱敏杰 時(shí) 間 2013年 7月12日25 / 29課程設(shè)計(jì)任務(wù)書班 級(jí)電信101姓 名麗平題 目溫度測(cè)量?jī)x表技術(shù)參數(shù)、設(shè)計(jì)要求、檢測(cè)數(shù)據(jù)1、 能完成溫度的數(shù)據(jù)傳輸2、 完成串口通信3、 在ARM開發(fā)板上顯示出溫度設(shè)計(jì)進(jìn)度安排或工作計(jì)劃2013.7.3 2013.7.5: 教師布置課題,學(xué)生查詢相關(guān)資料,完成方案選擇、確定驗(yàn)證方案。2013.7.62013.7.8: 設(shè)計(jì)模塊劃分、實(shí)現(xiàn)與各模塊仿真圖設(shè)計(jì)。2013.7.82013.7.11:設(shè)計(jì)整體實(shí)現(xiàn)、調(diào)試與驗(yàn)

2、證,并開始撰寫報(bào)告。2012.7.12:課程設(shè)計(jì)報(bào)告撰寫并定稿,上交。其 它認(rèn)真閱讀智能儀器儀表課程設(shè)計(jì)報(bào)告撰寫規(guī);課題小組經(jīng)協(xié)商好要指定組長(zhǎng)并明確分工,形成良好團(tuán)隊(duì)工作氛圍;基于課題基本要求,各小組與指導(dǎo)老師討論,再將課題細(xì)化、增加要求;課題小組每成員均需各自撰寫一份課程設(shè)計(jì)報(bào)告。溫度測(cè)量?jī)x表摘 要隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普與到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文主要介紹了一個(gè)基于 89S51 單片機(jī)的測(cè)溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以與各模塊系統(tǒng)流程進(jìn)行了詳盡分析,特別

3、是數(shù)字溫度傳感器DS18B20數(shù)據(jù)采集過程。對(duì)各部分的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20與AT89C51結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。嵌入式系統(tǒng)采用的是微處理器,實(shí)現(xiàn)相對(duì)單一的功能,采用獨(dú)立的操作系統(tǒng),往往不需要大量的外圍器件。因而在體積上功耗上有其自身的優(yōu)勢(shì),相比

4、之下,一個(gè)使用Windows CE的PDA,僅靠機(jī)電源使用幾天,而一臺(tái)筆記本僅僅能夠支持三小時(shí)左右。其實(shí)一個(gè)軟硬件高度結(jié)合的產(chǎn)物,能提高執(zhí)行速度和系統(tǒng)的可靠性。關(guān)鍵詞 單片機(jī) ;DS18B20 ;溫度傳感器 ;數(shù)字溫度計(jì); AT89S51;嵌入式系統(tǒng)目 錄課程設(shè)計(jì)任務(wù)書I摘要II1. 設(shè)計(jì)概述12. 設(shè)計(jì)方案23. 設(shè)計(jì)實(shí)現(xiàn)23.1系統(tǒng)設(shè)計(jì)原理23.1.1溫度測(cè)量模塊23.1.2 AT89S51單片機(jī)73.1.3 ARM核心控制模塊73.2系統(tǒng)設(shè)計(jì)程序流程框圖104. 設(shè)計(jì)驗(yàn)證115. 總結(jié)12參考文獻(xiàn)13附錄141. 設(shè)計(jì)概述溫度控制系統(tǒng)廣泛應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域,如家電、汽車、材料、電力

5、電子等 ,常用的控制電路根據(jù)應(yīng)用場(chǎng)合和所要求的性能指標(biāo)有所不同 , 在工業(yè)企業(yè)中,如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員和現(xiàn)場(chǎng)技術(shù)人員努力解決的問題。這類控制對(duì)象慣性大,滯后現(xiàn)象嚴(yán)重,存在很多不確定的因素,難以建立精確的數(shù)學(xué)模型,從而導(dǎo)致控制系統(tǒng)性能不佳,甚至出現(xiàn)控制不穩(wěn)定、失控現(xiàn)象。傳統(tǒng)的繼電器調(diào)溫電路簡(jiǎn)單實(shí)用 ,但由于繼電器動(dòng)作頻繁 ,可能會(huì)因觸點(diǎn)不良而影響正常工作。控制領(lǐng)域還大量采用傳統(tǒng)的PID控制方式,但PID控制對(duì)象的模型難以建立,并且當(dāng)擾動(dòng)因素不明確時(shí),參數(shù)調(diào)整不便仍是普遍存在的問題。而采用數(shù)字溫度傳感器DS18B20,因其部集成了A/D轉(zhuǎn)換器,使得電路結(jié)構(gòu)更加簡(jiǎn)單,而

6、且減少了溫度測(cè)量轉(zhuǎn)換時(shí)的精度損失,使得測(cè)量溫度更加精確。數(shù)字溫度傳感器DS18B20只用一個(gè)引腳即可與單片機(jī)進(jìn)行通信,大大減少了接線的麻煩,使得單片機(jī)更加具有擴(kuò)展性。由于DS18B20芯片的小型化,更加可以通過單跳數(shù)據(jù)線就可以和主電路連接,故可以把數(shù)字溫度傳感器DS18B20做成探頭,探入到狹小的地方,增加了實(shí)用性。更能串接多個(gè)數(shù)字溫度傳感器DS18B20進(jìn)行圍的溫度檢測(cè)。2. 設(shè)計(jì)方案我們選取的方案主要實(shí)現(xiàn)溫度的檢測(cè)以與通過ARM板顯示這兩個(gè)大功能,以與讀取這個(gè)相對(duì)較為容易的功能。因此在溫度檢測(cè)這一模塊上,利用DS18B20這一目前比較先進(jìn)的溫度傳感器,可以很精確地感測(cè)實(shí)時(shí)溫度,對(duì)于DS18

7、B20的通訊協(xié)議的控制,讀取測(cè)量的溫度值,經(jīng)過一定的算法,可以把溫度轉(zhuǎn)化為十進(jìn)制,先暫存起來。經(jīng)顯示模塊調(diào)用,通過ARM,最終在電腦上顯示。圖 2-1硬件總框圖3. 設(shè)計(jì)實(shí)現(xiàn)3.1系統(tǒng)設(shè)計(jì)原理3.1.1溫度測(cè)量模塊圖 3- 1 DS18B20圖例DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出北側(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無須外部器件;可通

8、過數(shù)據(jù)線供電,電壓圍為3.05.5V;零待機(jī)功能;溫度以9或12位數(shù)字量讀出;用戶可定義的非易失性溫度報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其部結(jié)構(gòu)框圖如圖2所示。圖 3- 2 DS18B20部結(jié)構(gòu)圖64位ROM的位結(jié)構(gòu)如圖3所示。開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。非易失性溫度報(bào)警器觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警

9、上下限。圖 3- 3 64位ROM結(jié)構(gòu)圖DS18B20溫度傳感器的部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié)為配置寄存器,它的容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。 DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義熱圖5所示。低5位一直為1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要改動(dòng),R1和R0決定溫度轉(zhuǎn)換

10、得精度位數(shù),即用來設(shè)置分辨率,定義方法見表1。圖 3- 4高速暫存RAM結(jié)構(gòu)圖圖 3- 5配置寄存器表3- 1 DS18B20分辨率的定義規(guī)定由表3-1可見,DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存RAM的第6,7,8字節(jié)保存未用,表現(xiàn)為邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1,2字節(jié)。單片機(jī)可以通過單線接口讀出數(shù)據(jù),讀

11、數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625/LSB形式表示。溫度值格式如圖3-6所示。圖 3- 6溫度數(shù)據(jù)值格式當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼轉(zhuǎn)換為原碼,再計(jì)算十進(jìn)制。表3-2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表3- 2 DS18B20溫度與測(cè)得值對(duì)應(yīng)表DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH,TL字節(jié)容作比較。若T>TH或T<TL,則將該器件的報(bào)警標(biāo)志置位,并對(duì)主機(jī)發(fā)出報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位R

12、OM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到ROM數(shù)據(jù)是否正確。DS18B20的測(cè)溫原理如圖3-8所示。圖中第溫度系數(shù)晶振的震蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入.圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)震蕩器產(chǎn)生的時(shí)鐘脈沖計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)震蕩器來決定,每次測(cè)量前,首先將-55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1,溫度寄存器中

13、,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1所對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置值將被重新裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖3-7中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線形性,其輸出用于減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值達(dá)到被預(yù)測(cè)值。另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要

14、,系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。圖 3-7 DS18B20測(cè)溫原理圖DS18B20與單片機(jī)的接口電路DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖3-8所示.單片機(jī)端口接單線總線,為為保證有效DS18B20時(shí)鐘周期提供足夠的電流,可用一個(gè)MOSFET管來完成對(duì)總線的上拉。圖 3-8 DS18B20采用寄生電源的電路圖當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間

15、最大為10us。采用寄生電源供電方式時(shí)VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。3.1.2 AT89S51單片機(jī)圖 3- 9 AT89S51引腳圖本設(shè)計(jì)中所用的單片機(jī)型號(hào)為AT89S51,其主要特性為:1)有CHMOS工藝的節(jié)能運(yùn)行方式2)兼容MCS51指令系統(tǒng)3)3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷4)2個(gè)串行中斷5)2個(gè)外部中斷源6)2個(gè)讀寫中斷口線7)低功耗空閑和掉電模式8)8k可反復(fù)擦寫(>1000次)Flash ROM9)256x8bit部RAM10)時(shí)鐘頻率0-24MHz11)可編程UART串行通道12)共6個(gè)中斷源,3級(jí)加密位13)軟件設(shè)置睡眠和喚

16、醒功能3.1.3 ARM核心控制模塊ARM Cortex-A8處理器基于 ARMv7 體系結(jié)構(gòu),能夠?qū)⑺俣葟?600MHz 提高到 1GHz 以上。Cortex-A8 處理器可以滿足需要在 300mW 以下運(yùn)行的移動(dòng)設(shè)備的功率優(yōu)化要求;以與需要 2000 Dhrystone MIPS 的消費(fèi)類應(yīng)用領(lǐng)域的性能優(yōu)化要求。圖 3-10 ARM Cortex-A8Tiny210核心板介紹:Tiny210 核心板主要采用了2.0mm間距的雙排針,引出 CPU大部分常用功能引腳,并力求和Tiny6410 核心板大小一致(64x50mm),引腳兼容(P1,P2,CON2);另外還根據(jù) S5PV210 芯片的

17、性,分別引出了標(biāo)準(zhǔn)的 miniHDMI 接口,和 1.0mm間距的貼片 CON1 座(51Pin),以作用戶擴(kuò)之用,Tiny210 標(biāo)配512M 存和 512M 閃存(SLC),并可選配 256M/1GB閃存(SLC)。串口介紹:S5PV210 本身總共有 4 個(gè)串口,其中 UART1 為四線的功能串口,UART0、2、3 為兩線串口。 在本開發(fā)板上,UART0 和 UART1 已經(jīng)經(jīng)過 RS232 電平轉(zhuǎn)換,它們分別對(duì)應(yīng)于 COM0 和COM1,你可以通過附帶的交叉串口線和 PC 互相通訊。 圖 3- 11引腳定義圖圖 3- 12 引腳定義圖ARM微控制器是整個(gè)系統(tǒng)的核心部件,主要功能為控制

18、各個(gè)功能模塊正常的工作。在系統(tǒng)初始化完畢后,ARM-CORTEXA8啟動(dòng)溫度傳感器,然后對(duì)所采集的數(shù)據(jù)進(jìn)行處理,將需要備份的數(shù)據(jù)存儲(chǔ)到FLASH當(dāng)中。同時(shí)通過PS232將數(shù)據(jù)送到上位機(jī)進(jìn)行處理顯示。3.2系統(tǒng)設(shè)計(jì)程序流程框圖圖 3- 13 主函數(shù)流程圖對(duì)DS18B20溫度模塊進(jìn)行初始化,利用51單片機(jī)調(diào)用DS18B20頭文件讀取溫度數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理。編寫串口通信程序利用串口向ARM發(fā)送數(shù)據(jù),最后在ARM端讀取串口數(shù)據(jù)獲取溫度值,并顯示在LCD上。4. 設(shè)計(jì)驗(yàn)證圖 4- 1串口助手接收到的數(shù)據(jù)圖4-1中,數(shù)據(jù)按5個(gè)字節(jié)發(fā)送,首先發(fā)送01,再將轉(zhuǎn)化成十進(jìn)制的數(shù)據(jù)按百位、十位、個(gè)位的順序分別加上

19、0x30,最后按和校驗(yàn)方式發(fā)送第五個(gè)數(shù)據(jù),即將前四個(gè)數(shù)據(jù)的高位和低位相加所得。所以圖中標(biāo)識(shí)數(shù)據(jù)所得的溫度為33.5度。圖 4- 2 linux顯示的數(shù)據(jù)圖中第二行與第三行為正常的數(shù)據(jù)發(fā)送,以01為首數(shù)據(jù),按8個(gè)字節(jié)發(fā)送,即圖中數(shù)據(jù)分別為34.5度和34.4度,校驗(yàn)正確。5. 總結(jié)在做課程設(shè)計(jì)的過程中,通過理論聯(lián)系實(shí)際,不斷的學(xué)習(xí)和總結(jié)經(jīng)驗(yàn),鞏固了所學(xué)的知識(shí),提高了處理實(shí)際問題的能力。我的理論和實(shí)踐水平都有了較大的提高。在本設(shè)計(jì)中,我熟練掌握了單片機(jī)硬件設(shè)計(jì)和接口技術(shù),對(duì)溫度傳感器的原理與應(yīng)用有了一定的了解,同時(shí),我對(duì)linux系統(tǒng)有了一定的了解,掌握了各種控制電路與其相關(guān)元器件的使用。這次課程

20、設(shè)計(jì)過程中也讓我認(rèn)識(shí)到了團(tuán)隊(duì)合作的重要性。通過這次課程設(shè)計(jì),我不僅學(xué)會(huì)如何將所學(xué)專業(yè)知識(shí)運(yùn)用到實(shí)際生活中,還學(xué)會(huì)如何克服未知的困難,解決難題的方法,為將來畢業(yè)設(shè)計(jì)的順利進(jìn)行打下了基礎(chǔ)。這次設(shè)計(jì)過程中也讓我認(rèn)識(shí)到了很多不足,在今后的學(xué)習(xí)過程中我一定努力補(bǔ)缺補(bǔ)漏,多實(shí)踐,將理論知識(shí)更好地應(yīng)用于實(shí)踐。最后感各位指導(dǎo)老師的指導(dǎo)。參考文獻(xiàn)1 童詩(shī)白,華成英.模擬電子技術(shù)基礎(chǔ)M. :高等教育,20062 齊,杜群貴.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)M.:電子工業(yè),20073 中國(guó)機(jī)械工業(yè)教育協(xié)會(huì)組編.單片機(jī)原理與應(yīng)用.機(jī)械工業(yè).20014 科技單片機(jī)通信技術(shù)與工程實(shí)踐M.:人民郵電,20055 洪潤(rùn)電子線路與電子技

21、術(shù)M.清華大學(xué)M,20056郭永貞主編數(shù)字電子技術(shù)M.電子科技大學(xué) 20007 廣弟單片機(jī)基礎(chǔ)M,:航空航天大學(xué),20018金巖等.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例M:人民郵電,2005附錄實(shí)物圖主程序源代碼51單片機(jī)代碼:主函數(shù):#include <REG52.H>#include <ds18b20.h>#include <hd7279.h>#include <stdio.h>#include <intrins.h>/*#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#d

22、efine HD7279_RLC 0xa3#define HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80/0x80代表數(shù)碼管1 10進(jìn)制#define HD7279_DECODE1 0xc8/0xC8代表數(shù)碼管1 16進(jìn)制#define HD7279_UNDECODE 0x90/0x90代表數(shù)碼管1 直接顯示#define HD7279_HIDE 0x98#define HD7279_FLASH 0x88#define HD7279_SEGON 0xe0#define

23、HD7279_SEGOFF 0xc0#define HD7279_READ 0x151、下載數(shù)據(jù)并按方式0譯碼數(shù)據(jù)格式 1 0 0 0 0 a2 a1 a0 dp x x x d3 d2 d1 d02、下載數(shù)據(jù)并按方式1譯碼數(shù)據(jù)格式 1 1 0 0 1 a2 a1 a0 dp x x x d3 d2 d1 d03、下載數(shù)據(jù)但不譯碼數(shù)據(jù)格式 1 0 0 1 0 a2 a1 a0 dp a b c d e f g4、閃爍控制數(shù)據(jù)格式 1 0 0 0 1 0 0 0 d7 d6 d5 d4 d3 d2 d1 d05、消隱控制數(shù)據(jù)格式 1 0 0 1 1 0 0 0 d7 d6 d5 d4 d3 d2

24、 d1 d06、段點(diǎn)亮控制數(shù)據(jù)格式 1 1 1 0 0 0 0 0 X X d5 d4 d3 d2 d1 d07、段關(guān)閉控制數(shù)據(jù)格式 1 1 0 0 0 0 0 0 X X d5 d4 d3 d2 d1 d0讀鍵盤指令:數(shù)據(jù)格式 0 0 0 1 0 1 0 1 d7 d6 d5 d4 d3 d2 d1 d0*/*延時(shí)函數(shù), 延時(shí)單位1ms*/unsigned char rev=0xaa;unsigned char flag=0x00;unsigned int temp5;unsigned int num;void Delay_ms(unsigned int Ms)int us,usn;whil

25、e(Ms!=0) usn = 4;while(usn!=0)us=0xfa;while (us!=0)us-;usn-;Ms-;void send_int(void) TMOD = 0x20;/ 定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率/ 定時(shí)器0工作在16位方式TH1 = 0xFD;/ 波特率9600TL1 = 0xFD;SCON = 0x50;/ 設(shè)定串行口工作方式PCON= 0x00;/ 波特率倍增TR1 = 1;void send_char(unsigned char txd)/ 傳送一個(gè)字符SBUF = txd;while(!TI);/ 等特?cái)?shù)據(jù)傳送TI = 0;/ 清除數(shù)據(jù)

26、傳送標(biāo)志void main() unsigned int t0,i;char t1;send_byte(HD7279_RESET);/注意:HD7279復(fù)位后,必須經(jīng)過大概25MS,才會(huì)正常工作!Delay_ms(50);send_int();/串口初始化while(1)t0=ReadTemperature();temp0=t0%10; /個(gè)temp1=t0%100/10;temp2=t0%1000/100;/百temp3=t0/1000;/千 t1=0x01;send_char(t1); t1=temp2+0x30;send_char(t1);t1=temp1+0x30;send_char(

27、t1);t1=temp0+0x30;send_char(t1);t1=0x91+temp0+temp1+temp2;send_char(t1);for(i=0;i+;i<100) _nop_(); if(RI=1)rev=SBUF;RI=0;HD7279頭文件:#include "reg52.h"#include <intrins.h> #ifndef _HD7279A_H_#define _HD7279A_H_sbit HD7279A_CS=P22;/pin1sbit HD7279A_CLK=P11;/pin2sbit HD7279A_DATA=P12;

28、/pin3sbit HD7279A_KEY=P13;/pin4/command define#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#define HD7279_RLC 0xa3#define HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80#define HD7279_DECODE1 0xc8#define HD7279_UNDECODE 0x90#define HD7279_HIDE 0x98#define H

29、D7279_FLASH 0x88#define HD7279_SEGON 0xe0#define HD7279_SEGOFF 0xc0#define HD7279_READ 0x15void Delay_ms(unsigned int Ms);void Delay_us(unsigned char Us);void send_byte(unsigned char c);unsigned char recv_byte(void);void write_hd7279(unsigned char cmd, unsigned char dat);unsigned char read_hd7279(un

30、signed char cmd);void send_byte(unsigned char c) unsigned char i,j,k; HD7279A_CS=0;HD7279A_DATA=1; for (i=0;i<30;i+)/_nop_();for(i=0;i<8;i+) if(c&0x80)HD7279A_DATA=1; elseHD7279A_DATA=0;HD7279A_CLK=1; for (j=0;j<8;j+)/_nop_();HD7279A_CLK=0; for (k=0;k<8;k+)/_nop_();c<<=1; /HD72

31、79A_CS=1;/*讀回按鍵值*/unsigned char recv_byte(void) unsigned char ret; unsigned char i,j,k; HD7279A_CS=0;HD7279A_DATA=1;/讀口線之前要先拉高P1口 for (i=0;i<30;i+)_nop_(); for(i=0;i<8;i+) HD7279A_CLK=1; for (j=0;j<8;j+)_nop_(); ret<<=1; if(HD7279A_DATA)ret|=0x01; HD7279A_CLK=0; for (k=0;k<8;k+)_no

32、p_(); HD7279A_DATA=0; HD7279A_CS=1;return ret;void write_hd7279(unsigned char cmd, unsigned char dat)send_byte(cmd); send_byte(dat);unsigned char read_hd7279(unsigned char cmd) send_byte(cmd); return recv_byte();DS18B20頭文件:#ifndef _DS18b20_2007_8_11_#define _DS18b20_2007_8_11_/*ds18b20*/sbit DQ =P37

33、; /定義通信端口#define uint unsigned int #define uchar unsigned char /*延時(shí)函數(shù)*/void delay(unsigned int i) while(i-);/*初始化函數(shù)*/Init_DS18B20(void) uchar x=0; DQ = 1; /DQ復(fù)位 delay(8); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低 delay(80); /精確延時(shí) 大于 480us DQ = 1; /拉高總線 delay(14); x=DQ; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay(20);/*讀一個(gè)字節(jié)*/

34、ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) dat>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; delay(4); return(dat);/*寫一個(gè)字節(jié)*/WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; /delay(4);/*讀取溫度*/

35、uint ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;t=t*0.625;/有效位到小數(shù)點(diǎn)后1位return(t)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論