<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

ds18b20溫度傳感器

2023-06-29

第一篇:ds18b20溫度傳感器

DS18B20溫度傳感器設計報告

傳感器課程設計

專 業: 計算機控制技術

---數字溫度計

年 級: 2011 級 姓 名: 樊 益 明

學 號: 20113042

指導教師: 劉 德 春

阿壩師專電子信息工程系

1. 引 言

1.1. 設計意義

在日常生活及工農業生產中,經常要用到溫度的檢測及控制,傳統的測溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部硬件支持。其缺點如下:

● 硬件電路復雜; ● 軟件調試復雜; ● 制作成本高。

本數字溫度計設計采用美國DALLAS半導體公司繼DS1820之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55~125℃,最高分辨率可達0.0625℃。

DS18B20可以直接讀出被測溫度值,而且采用三線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的熱點。

2 設計要求

2.1基本要求 1) 用LCD12232實現實時溫度顯示溫度和自己的學號。 2) 采用LED數碼管直接讀顯示。 2.2擴展功能

溫度報警,能任意設定溫度范圍實現鈴聲報警;

33.1單片機89C52模塊

單片機89C52是本設計中的控制核心,是一個40管腳的集成芯片構成。引腳部分:單片機引腳基本電路部分與普通設計無異,40腳接Vcc+5V,20腳接地。X1,X2兩腳接12MHZ的晶振,可得單片機機器周期為1微秒。RST腳外延一個RST復位鍵,一端通過10K電阻接Vcc,一端通過10K電阻接地。AT89S52是一種低功耗、高性能的8位CMOS微控制器,具有8K的可編程Flash 存儲器。使

資料準備 用高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧的8位CPU和在線系統可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8K字節Flash,256字節RAM,32位I/O 口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。P 0口接一個470的上拉電阻。P0口0~8腳接4位共陽數碼管的段選,P2口0~4腳接4位共陽數碼管的位選,P3.7接DS18B20采集信號。

3.2 DS18B20簡介

DALLAS最新單線數字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經濟 Dallas 半導體公司的數字化溫度傳感器DS1820是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。DS18B20、 DS1822 “一線總線”數字化溫度傳感器 同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內,精度為±0.5°C。DS1822的精度較差為± 2°C ?,F場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統的抗干擾性。適合于惡劣環境的現場溫度測量,如:環境控制、設備或過程控制、測溫類消費電子產品等。與前一代產品不同,新的產品支持3V~5.5V的電壓范圍,使系統設計更靈活、方便。而且新一代產品更便宜,體積更小。 DS18B20、 DS1822 的特性 DS18B20可以程序設定9~12位的分辨率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產品中最好的!性能價格比也非常出色! DS1822與 DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數的EEPROM,精度降低為±2°C,適用于對性能要求不高,成本控制嚴格的應用,是經濟型產品。 繼“一線總線”的早期產品后,DS1820開辟了溫度傳感器技術的新概念。DS18B20和DS1822使電壓、特性及封裝有更多的選擇,讓我們可以構建適合自己的經濟的測溫系統。3.3 溫度傳感器的工作原理

DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s 減為750ms。 DS18B20測溫原理:低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振 隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值,即為所測溫度。

3.4 DS18B20中的溫度傳感器對溫度的測量

高速暫存存儲器由9個字節組成,其分配如表5所示。當溫度轉換命令發布后,經轉換所得的溫度值以二字節補碼形式存放在 高速暫存存儲器的第0和第1個字節。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后。

溫度數據值格式

下表為12位轉化后得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0, 這5位為0,只要將測到的數值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際 溫度。 例如+125℃的數字輸出為07D0H,

實際溫度=07D0H*0.0625=2000*0.0625=125℃。

例如-55℃的數字輸出為FC90H,則應先將11位數據位取反加1得370H(符號位不變,也不作運算), 實際溫度=370H*0.0625=880*0.0625=55℃。

可見其中低四位為小數位。

DS18B20溫度與表示值對應表

3.5 DS18B20的內部結構

DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。DS18B20的管腳排列如下:

DQ為數字信號輸入/輸出端;

GND為電源地;

VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。

1) 64位的ROM 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。

2) DS18B20溫度傳感器的存儲器

DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發器TH、TL和結構寄存器。

暫存存儲器包含了8個連續字節,前兩個字節是測得的溫度信息,第一個字節的內容是溫度的低八位,第二個字節是溫度的高八位。第三個和第四個字節是TH、TL的易失性拷貝,第五個字節是結構寄存器的易失性拷貝,這三個字節的內容在每一次上電復位時被刷新。第

六、

七、八個字節用于內部計算。第九個字節是冗余檢驗字節。

3.6 DS18B20的時序

由于DS18B20采用的是單總線協議方式,即在一根數據線實現數據的雙向傳輸,而對89C51單片機來說,硬件上并不支持單總線協議,因此,我們必須采用軟件的方法來模擬單總線的協議時序來完成對DS18B20芯片的訪問。

由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。

1) DS18B20的復位時序

2)DS18B20的讀時序

對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。

對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數據傳輸到單總線上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。

3) DS18B20的寫時序

對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。

對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線。

4系統框架設計如下圖所示:

按照系統設計功能的要求數字溫度計總體電路結構框圖如下圖所示

5硬件設計

溫度計采用AT89C51單片機作為微處理器,溫度計系統的外圍接口電路由晶振、LCD顯示電路、復位電路、溫度檢測電路、LCD驅動電路。

溫度計的工作過程是:初始化其接收需要檢測的溫度,并一直處于檢測狀態,并將檢測到的溫度值讀取,并轉化為十進制數值,通過LCD顯示出來,再顯示溫度,方便用戶來讀數使用記錄數據。

溫度計系統的的硬件電路圖如下圖所示。

DS18B20測溫和學號顯示

6系統程序的設計

6.1主程序

主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1s進行一次。

主程序流程圖如圖4.1.1所示。

初始化調用顯示子程序1s到?YN初次上電?N讀出溫度值溫度計算處理顯示數據刷新Y發溫度轉換開始命令

主程序流程圖

6.2讀出溫度子程序

讀出溫度子程序的主要功能是讀出RAM中的9字節。在讀出時須進行CRC校驗,校驗有錯時不進行溫度數據的改寫。

讀出溫度子程序流程圖如圖4.2所示。

發DS18B20復位信號發跳過ROM命令CRC校驗正確?發讀取溫度命令Y移入溫度暫存器讀取操作,CRC校驗YNN結束9字節完?

6.3溫度轉換命令子程序

溫度轉換命令子程序主要是發溫度轉換開始命令。當采用12位分辨率時,轉換時間大約為750ms。在本程序設計中,采用1s顯示程序延時法等待轉換的完成。 溫度轉換命令子程序圖如圖4.3所示。

發DS18B20復位uml發跳過ROM命令發溫度轉換開始命令

結束

6.4計算溫度子程序

計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值的正負判斷。

計算溫度子程序流程圖如圖4.4所示。

開始計算小數位溫度BCD值溫度零下?N計算整數位溫度BCD值Y置“+”標志溫度值補碼置“—”標志結束

6.5顯示數據刷新子程序

顯示數據刷新子程序主要是對顯示緩沖器中得顯示數據進行刷新操作,當最高數據顯示位為0時,將符號顯示位移入下一位。

顯示數據刷新子程序流程圖如圖4.5所示。

7 設計總結

本設計利用89S51芯片控制溫度傳感器DS18B52,再輔之以部分外圍電路實現對環境溫度的控制,性能穩定,精度較高,而且擴展性很強。由于DS18B20支持單總線協議,我們可以將多個DS18B52并聯到3根或2根線上,CPU只需一根端口線就能與諸多DS18B52通信,占用較少的微處理器的端口就可以實現多點測溫監控系統。

我們在老師的指導下完成了基于DS18B20的數字溫度計的設計和制作。在進行實驗的過程中,我們了解并熟悉DS18B20、AT89C2051以及74LS244的工作原理和性能。并且通過溫度計的制作,我們將電子技能實訓課堂上學到的知識進行運用,并在實際操作中發現問題,解決問題,更加增加對知識的認識和理解。

第二篇:2011基于18B20溫度傳感器論文

基于單片機18B20的溫度計設計

摘要:文章主要介紹有關18B20溫度傳感器的應用及有關注意事項,經典接線原理圖。 1. 引言:

溫度傳感器的種類眾多,在應用與高精度、高可靠性的場合時DALLAS(達拉斯)公司生產的DS18B20溫度傳感器當仁不讓。超小的體積,超低的硬件開消,抗干擾能力強,精度高,附加功能強,使得DS18B20更受歡迎。對于我們普通的電子愛好者來說,DS18B20的優勢更是我們學習單片機技術和開發溫度相關的小產品的不二選擇。了解其工作原理和應用可以拓寬您對單片機開發的思路。

2. DS18B20的主要特征: * 全數字溫度轉換及輸出。 * 先進的單總線數據通信。 * 最高12位分辨率,精度可達土0.5攝氏度。 * 12位分辨率時的最大工作周期為750毫秒。 * 可選擇寄生工作方式。 * 檢測溫度范圍為–55°C ~+125°C (–67°F ~+257°F) * 內置EEPROM,限溫報警功能。 * 64位光刻ROM,內置產品序列號,方便多機掛接。 * 多樣封裝形式,適應不同硬件系統。 3. DS18B20引腳功能:

•GND 電壓地 •DQ 單數據總線 •VDD 電源電壓

4. DS18B20工作原理及應用:

DS18B20的溫度檢測與數字數據輸出全集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數據處理。在講解其工作流程之前我們有必要了解18B20的內部存儲器資源。18B20共有三種形態的存儲器資源,它們分別是:

ROM 只讀存儲器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗)。數據在出產時設置不由用戶更改。DS18B20共64位ROM。

5. 控制器對18B20操作流程:

1、 復位:首先我們必須對DS18B20芯片進行復位,復位就是由控制器(單片機)給DS18B20單總線至少480uS的低電平信號。當18B20接到此復位信號后則會在15~60uS后回發一個芯片的存在脈沖。

2、 存在脈沖:在復位電平結束之后,控制器應該將數據單總線拉高,以便于在15~60uS后接收存在脈沖,存在脈沖為一個60~240uS的低電平信號。至此,通信雙方已經達成了基本的協議,接下來將會是控制器與18B20間的數據通信。如果復位低電平的時間不足或是單總線的電路斷路都不會接到存在脈沖,在設計時要注意意外情況的處理。

3、 控制器發送ROM指令:雙方打完了招呼之后最要將進行交流了,ROM指令共有5條,每一個工作周期只能發一條,ROM指令分別是讀ROM數據、指

定匹配芯片、跳躍ROM、芯片搜索、報警芯片搜索。ROM指令為8位長度,功能是對片內的64位光刻ROM進行操作。其主要目的是為了分辨一條總線上掛接的多個器件并作處理。誠然,單總線上可以同時掛接多個器件,并通過每個器件上所獨有的ID號來區別,一般只掛接單個18B20芯片時可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發送ROM指令,而是用特有的一條“跳過指令”)。ROM指令在下文有詳細的介紹。

4、 控制器發送存儲器操作指令:在ROM指令發送給18B20之后,緊接著(不間斷)就是發送存儲器操作指令了。操作指令同樣為8位,共6條,存儲器操作指令分別是寫RAM數據、讀RAM數據、將RAM數據復制到EEPROM、溫度轉換、將EEPROM中的報警值復制到RAM、工作方式切換。存儲器操作指令的功能是命令18B20作什么樣的工作,是芯片控制的關鍵。

5、 執行或數據讀寫:一個存儲器操作指令結束后則將進行指令執行或數據的讀寫,這個操作要視存儲器操作指令而定。如執行溫度轉換指令則控制器(單片機)必須等待18B20執行其指令,一般轉換時間為500uS。如執行數據讀寫指令則需要嚴格遵循18B20的讀寫時序來操作。數據的讀寫方法將有下文有詳細介紹。 6. DS28B20芯片ROM指令表

Read ROM(讀ROM)[33H] (方括號中的為16進制的命令字) Match ROM(指定匹配芯片)[55H] Skip ROM(跳躍ROM指令)[CCH] Search ROM(搜索芯片)[F0H] Alarm Search(報警芯片搜索)[ECH] 7. DS28B20芯片存儲器操作指令表:

Write Scratchpad (向RAM中寫數據)[4EH] Read Scratchpad (從RAM中讀數據)[BEH] Copy Scratchpad (將RAM數據復制到EEPROM中)[48H] Convert T(溫度轉換)[44H] Recall EEPROM(將EEPROM中的報警值復制到RAM)[B8H] Read Power Supply(工作方式切換)[B4H] 8.寫程序注意事項

DS18B20復位及應答關系

每一次通信之前必須進行復位,復位的時間、等待時間、回應時間應嚴格按時序編程。

DS18B20讀寫時間隙:

DS18B20的數據讀寫是通過時間隙處理位和命令字來確認信息交換的。 寫時間隙:

寫時間隙分為寫“0”和寫“1”,時序如圖7。在寫數據時間隙的前15uS總線需要是被控制器拉置低電平,而后則將是芯片對總線數據的采樣時間,采樣時間在15~60uS,采樣時間內如果控制器將總線拉高則表示寫“1”,如果控制器將總線拉低則表示寫“0”。每一位的發送都應該有一個至少15uS的低電平起始位,隨后的數據“0”或“1”應該在45uS內完成。整個位的發送時間應該保持在60~120uS,否則不能保證通信的正常。 讀時間隙:

讀時間隙時控制時的采樣時間應該更加的精確才行,讀時間隙時也是必須先由主機產生至少1uS的低電平,表示讀時間的起始。隨后在總線被釋放后的15uS

中DS18B20會發送內部數據位,這時控制如果發現總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數據“0”。每一位的讀取之前都由控制器加一個起始信號。注意:必須在讀間隙開始的15uS內讀取數據位才可以保證通信的正確。 在通信時是以8位“0”或“1”為一個字節,字節的讀或寫是從高位開始的,即A7到A0.字節的讀寫順序也是如圖2自上而下的。

9.接線原理圖:

本原理圖采用四位數碼管顯示,低于100度時,首位不顯示示例27.5,低于10度時示例為9.0,低于零度時示例為-3.7。

結束語:基于DS18B20溫度測量溫度準確,接線簡單,易于控制,加以擴展可以應用到各種溫度控制和監控場合。

參考文獻:

DALLAS(達拉斯)公司生產的DS18B20溫度傳感器文獻

程序:

#include

#define uchar unsigned char #define uint unsigned int

sbit sda=P1^7; sbit dian=P0^7;//小數點顯示 uint tem;

uchar h; uchar code tabw[4]={0xf7,0xfb,0xfd,0xfe};//位選 uchar code tabs[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//數碼管數據

//

0

4 5 6

8 9

- uchar code ditab[16]= {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; //查表顯示小數位 ,1/16=0.0625,即當讀出數據為3時,3*0.0625=0.1875,讀出數據為3時對應1,查表顯示1,為4時顯2 uchar data temp[2]={0};//高位數據與低位數據暫存 uchar data display[5]={0};//顯示緩存

void delay(uchar t)//t為1時延時小于5us { while(t--); } void delay1()//4us {} void delays(uchar m)//1ms { uchar i,j; for(i=0;i

for(j=0;j<110;j++); } void reset()//初始化 { uchar x=1; while(x) {

while(x)

{

sda=1;

sda=0;

delay(50);//延時500us以上

sda=1;

delay(5);//等待15us-60us

x=sda;

}

delay(45);

x=~sda; }

sda=1; } void write_s(uchar temp)//寫入一個字節 { uchar i; for(i=0;i<8;i++) {

sda=1;

sda=0;

delay1();

sda=temp&0x01;

delay(6);

temp=temp/2; } sda=1; delay(1); } uchar read_s()//讀出一個字節的數據 { uchar m=0,i; for(i=0;i<8;i++) {

sda=1;

m>>=1;

sda=0;

delay1();

sda=1;

delay1();

if(sda)

m=m|0x80;

delay(6); } sda=1; return m; } uint read_1820()//讀出溫度 { reset(); delay(200); write_s(0xcc);//發送命令

write_s(0x44);//發送轉換命令

reset(); delay(1); write_s(0xcc);

write_s(0xbe); temp[0]=read_s(); temp[1]=read_s(); tem=temp[1]; tem<<=8; tem|=temp[0]; return tem; } void scan_led()//數據顯示—數碼管 { uchar i; for(i=0;i<4;i++) {

P0=tabs[display[i]];

P1=tabw[i];

delays(7);

if(i==1)

dian=0;

P1=tabw[i];

delays(2); } } void convert_t(uint tem)//溫度轉換{ uchar n=0; if(tem>6348) {

tem=65536-tem;

n=1; } display[4]=tem&0x0f; display[0]=ditab[display[4]];

display[4]=tem>>4;

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10; if(!display[3]) {

display[3]=0x0a; } if(!display[2])

display[2]=0x0a; if(n)

// 取百位數據暫存

// 取后兩位數據暫存// 取十位數據暫存

{

n=0;

display[3]=0x0b; } } void main() { delay(0); delay(0); delay(0); P0=0xff; P1=0xff; for(h=0;h<4;h++)//初始化為零

{

display[h]=0; } reset(); write_s(0xcc); write_s(0x44); for(h=0;h<100;h++)//顯示0保持

scan_led(); while(1) {

convert_t(read_1820());//讀出并處理

scan_led();//顯示溫度

} }

第三篇:基于AVR的DS18b20程序

//說明:單片機ATmega16的18B20程序。調這個18B20程序問題主要出現在延時部分,即單片機實際輸出的延時與設定不符。//后面為別人精確延時,我用自己的單片機通過示波器重新測量實際延時。建議調延時用示波器先看看。我用的晶振12M,但延時根本就與理論不符。其中480us的延時要在480us與960us之間,選取550us比較合適,一般都這么選。 最后一句話:DS18B20的程序很多,模塊基本相似,調不出來就是因為延時問題,示波器是必備工具,否則很盲目。

#include

#define uchar unsigned char

#define uchar unsigned char

#define uint unsigned int

//------------------------//

//.....18B20........

void init_1820(void)

{

int Flag_1820Error;

uchar i;

uint j=0;

PORTD|=(1<<7);//PORTC|=(1<<7);

PORTD&=~(1<<7);//PORTC&=~(1<<7);

for(i=0;i<8;i++)delay(180);//delay_60us();//480us以上

PORTD|=(1<<7);//PORTC|=(1<<7);

DDRD&=~(1<<7);//DDRC&=~(1<<7);//

delay(40);//delay_15us();//15~60us

delay(40);//delay_15us();

Flag_1820Error=0;

while(PIND&(1<<7)

{ delay(180);//delay_60us();

j++;

if(j>=18000){Flag_1820Error=1;break;}

}

DDRD|=(1<<7);//DDRC|=(1<<7);//PORTC7 is OUTPUT

PORTD|=(1<<7);//PORTC|=(1<<7);

for(i=0;i<4;i++)delay(180);//delay_60us(); //240us

}

/********************************/

/********************************/

void write_1820(uchar x)

{

uchar m;

for(m=0;m<8;m++)

{

if(x&(1<

{

PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_5us(); //5usPORTD|=(1<<7);//PORTC|=(1<<7); //write"1"delay(40);//delay_15us(); //15~45usdelay(40);//delay_15us();delay(40);//delay_15us();

}

else

{

PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_15us();//15us

delay(40);//delay_15us(); //write"0"delay(40); //delay_15us(); //15~45usdelay(40);//delay_15us();

PORTD|=(1<<7);//PORTC|=(1<<7);

}

PORTD|=(1<<7);// PORTC|=(1<<7);

}

/*******************************/

uchar read_1820(void)

{

uchar temp,k,n;

temp=0;

for(n=0;n<8;n++)

{

PORTD&=~(1<<7);//PORTC&=~(1<<7);

delay(13);//delay_5us();

PORTD|=(1<<7);//PORTC|=(1<<7);

delay(13);//delay_5us();

DDRD&=~(1<<7);//DDRC&=~(1<<7);//"PINC7 is INPUT"k=(PIND&(1<<7));//k=(PINC&(1<<7)); //讀數據,從低位開始if(k)

temp|=(1<

else

temp&=~(1<

delay(40);//delay_15us();//45us

delay(40);//delay_15us(); delay(40);//delay_15us();

DDRD|=(1<<7);//DDRC|=(1<<7);//

}

return (temp);

}

/*************************************/

float read_temperature(void)

{

float temp;////////////

uchar teml=0,temh=0;

unsigned long t=0;

init_1820();//復位18b20write_1820(0xcc);// 發出轉換命令write_1820(0x44);

//Delay_nms(100);

init_1820();

write_1820(0xcc);//發出讀命令write_1820(0xbe);

teml=read_1820();//讀數據byte1temh=read_1820();//byte2

t=temh;

t=t<<8; t=t|teml; temp=t*0.0625*260/286; return(temp); /*if(temh&0xf8)sign=0; else sign=1; if(sign==0){temh=255-temh;teml=255-teml;}temh=temh<<4;

temh|=(teml&0xf0)>>4;

}

//再在主程序中調用一下read_temperature(void),讀取溫度。 teml=teml&0x0f; teml=(teml*10)/16; tempval=temh;e[0]=tempval/100; tempval=temh;e[1]=(tempval/10)%10; tempval=temh;e[2]=tempval%10; tempval=teml;e[3]=tempval;*/

第四篇:第3課 電子溫度計---溫度傳感器 教學設計

《電子溫度計---溫度傳感器》

教材分析

本課內容分為兩部分。第一部分是溫度傳感器以及應用,以多功能電子鐘還能顯示溫度為切入點,引出溫度計在日常生活中國的普遍應用,進而認識溫度傳感器以及典型應用。第二部分介紹濕度傳感器及相對濕度,要求了解日常生活中各類環境中適宜的相對濕度范圍。本課的核心是溫度傳感器及其應用。

學情分析

學生對溫度的認識有著直接的生活經驗,可以安排對電子溫度計產品功能的差異性進行適當的探討。對于濕度傳感器,學生理解的不多,主要側重讓學生了解不同環境中較為適宜的相對濕度數據范圍。

預設教學目標

1.認知溫度傳感器極其應用; 2.了解濕度傳感器。

教學重點

認知溫度傳感器極其應用,了解濕度傳感器

教學難點

認知溫度傳感器極其應用,了解濕度傳感器

課時安排: 1課時 預設教學過程:

一、導入

同學們,在上節課的學習中,我們了解了紅外線傳感器,實際上我們生活中這樣的傳感器還有很多,你知道還有些什么嗎?

大家說了很多,今天老師給大家帶來了其中一樣,大家看看這是什么,你知道它使用的是什么傳感器嗎? (出示課題:電子溫度計——溫度傳感器)

二、溫度傳感器

這是在我們生活中常見的電子溫度計,它使用的是溫度傳感器,那么溫度傳感器是做什么的呢?大家一起看看書上的介紹。能夠探測物體溫度及其變化并轉換成電信號的電子器件叫作溫度傳感器。

大家思考一下,溫度傳感器的作用很明顯和紅外線相同是用來探測溫度的,那么它能用在什么方面呢?

小組討論,并進行匯報

師:溫度控制,還有探測環境,在一些環境中也可以搭配紅外做報警裝置等等。它的用途也是相當廣泛的。

三、濕度傳感器

在天氣預報中,經常會出現溫度和濕度的預報,這是因為對種植業來說,濕度和溫度同樣重要。濕度指的是什么有同學知道嗎?

原來我們的空氣,是有一定的水汽,水汽的多和少對環境還是很有影響的,這也是很多鐵制品,在放置一段時間后,會生銹的原因,那么怎么樣的濕度是適宜的呢,我們一起來看看書上的介紹。

學生觀察書上的介紹,了解適宜的濕度數據。

溫度不控制,對生活的影響大家很容易感受到,那么濕度如果不控制,對我們的生活是否有影響呢?請學生上網搜索相關知識,組內交流,進行匯報。

四、總結

通過今天的學習,我們簡單的了解了溫度和濕度傳感器,相對于溫度我們比較熟悉,濕度我們是第一次了解,但大家可以發現,它在我們的生活中,其實也有非常重要的影響。課后希望大家通過自己的觀察、調查等相關的途徑,更加客觀清楚的認識這兩種傳感器,了解它們的技術應用,在生活實踐中體驗到它們帶給我們的方便和巨大作用。

教后反思:

學生對溫度的認識有著直接的生活經驗,建議可安排對電子溫度計產品功能的差異性進行適當探討。如電子溫度計與電子體溫計,雖然名稱類似,但應用領域不同,測量范圍也有差異。

除了教材上“實踐園“提供的實驗外,建議增加利用實驗器材對常規物品(如木塊和鐵塊)的溫度測量對比,并探討實驗結果與生活經驗產生沖突的原因。

對于濕度傳感器,側重讓學生了解不同環境中較為適宜的相對濕度數據范圍。

第五篇:畢業設計(論文)-基于專用溫度傳感器的溫度檢測系統

摘 要 在現代工業領域溫度檢測系統是指用某種方式顯示出當前的環境溫度。傳 統使用PTC或NTC電阻作為溫度傳感器的方式在使用過程中存在著很多不足之 處比如所采集溫度的精度比較低、系統的可靠性差、設計難度較大、整體設計 成本較高等缺點已經無法滿足現代工業生產中高精度溫度控制的需求。而采用 專用溫度傳感器則可以在克服以上缺點很大程度上提高溫度檢測系統的性能。 本文闡述了一個基于專用溫度傳感器AD590的 高精度溫度檢測系統的設計

和實現過程。整個設計包括使用AD590的模擬溫度采集傳感器專用儀表放大 器AD620的信號處理系統由ADC0804構成的模數轉換電路采用AT89C52組 成的單片機系統數碼管顯示系統和整機所需的供電系統。

關鍵字溫度檢測系統AD590AT89C52

Ⅰ Abstract The temperature check system in modern industry is that uses some special method to process and display the environmental temperature. Tradition uses PTC or NTC resistance to be using process to there be existing much defects as the temperature sensor way, supposes that what be detected the temperature has a bad accuracy, systematic reliability is bad, has much difficulties to design, and the cost of e ntire system is expensive. To use this method already unable satisfied modern industry produces the need being hit by the high-accuracy temperature under the control. Use the special temperature transducer could improve the systematic function of temperature detecting. This article elaborated the high-accuracy temperature having set forth a because of special temperature transducer AD590 checks the main body of a book systematically designing and realizing process. Entire design is included: Use the AD590 temperature transducer to detect the analog temperature, instrumentation amplifier AD620 signal process system, change the analog signal to digital signal circuit of ADC0804, the AT89C52 MUC system and the power system.

Key wordtemperature check systemAD590AT89C52

Ⅱ 目

錄 摘 要.............................................................Ⅰ

Abstract............................................................Ⅱ 目 錄.............................................................Ⅲ 1 緒論..............................................................1 1.1簡介.......................................................... 2 1.2 溫度控制系統的國內外現狀......................................2 1.3 溫度控制系統方案..............................................2 1.4 論文的主要任務和所做的工作....................................2 2設計方案以及論證.................................................. 4 2.2 溫度傳感部分..................................................4 2.3 A/D轉換部分.................................................. 5 2.4數字顯示部分.................................................. 6 3 電路設計......................................................... 8 3.1 硬件電路設計................................................. 8 3.1.1 溫度采集電路............................................... 8 3.1.2 AD轉換電路................................................. 8 3.1.3 單片機電路.................................................10 3.1.4 顯示電路...................................................14 3.1.5 電源電路...................................................16 3.2 軟件系統設計.................................................16 3.2.1 主程序設計.................................................16 3.2.2 AD轉換程序.................................................17 3.2.3 溫度采樣...................................................18 3.2.4溫度標度轉換算法........................................... 19 3.3 特殊元器件介紹.............................................. 22 4 總結.............................................................24 參考文獻.........................................................25 附錄.............................................................26

1 緒論

1.1 簡介 當代社會溫度檢測系統被廣泛應用于社會生產、生活的各個領域。業、環境檢測、醫療、家庭等多方面均有應用。同時單片機在電子產品中的應用 已經越來越廣泛。

在很多電子產品中也將其用到溫度檢測和溫度控制。目前溫度測量系統種類 繁多功能參差不齊。有簡單的應用于家庭的如空調電飯煲、太陽能熱水器 電冰箱等家用電器的溫度進行檢測和控制。采用AT89C51單片機來對溫度進行 控制不僅具有控制方便、組態簡單和靈活性大等優點而且可以大幅度提高被 控溫度的技術指標從而能夠大大提高產品的質量和數量。單片機以其功能強、 體積小、可靠性高、造價低和開發周期短等優點為自動化和各個測控領域中廣

在工 泛應用的器件在日常生活中成為必不可少的器件尤其是在日常生活中發揮的 作用也越來越大。因此單片機對溫度的控制問題是一個日常生活中經常會遇到 的問題。

本論文以上述問題為出發點設計實現了溫度實時測量、顯示、控制系統。 以AD590為采集器AT89S51為處理器空調相應電路為執行器來完成設計任務 提出的溫度控制要求。設計過程流暢所設計的電路單元較為合理。該設計在硬 件方案設計單元電路設計元器件選擇等方面較有特色。 1.2 溫度控制系統的國內外現狀 通過網上查詢、翻閱圖書了解到目前國內外市場以單片機為核心的溫度控制

系統很多而且方案靈活且應用面比較廣可用于工業上的加熱爐、熱處理爐、 反應爐在生活當中的應用也比較廣泛如熱水器室溫控制農業中的大棚溫 度控制。以上出現的溫度控制系統產品根據其系統組成、使用技術、功能特點、 技術指標。選出其中具有代表性的幾種如下

1.虛擬儀器溫室大棚溫度測控系統在農業應用方面虛擬儀器溫室大棚溫度

測控系統是一種比較智能經濟的方案適于大力推廣改系統能夠對大棚內的 溫度進行采集然后再進行比較通過比較對大棚內的溫度是否超過溫度限制進 行分析如果超過溫度限制溫度報警系統將進行報警來通知管理人員大棚內 的溫度超過限制大棚內的溫控系統出現故障從而有利于農作物的生長提高 產量。本系統最大的優點是在一臺電腦上可以監測到多個大棚內的溫度情況從

而進行控制。該系統LabVIEW虛擬儀器編程通過對前面板的設置來顯示溫室大 棚內的溫度并進行報警進而對大棚內溫度進行控制。該系統有單片機溫度

傳感器串口通信和計算機組成。計算機主要是進行編程對溫度進行顯示、 報警和控制等溫度傳感器是對大棚內溫度進行測量顯示單片機是對溫度傳 感器進行編程去讀溫度傳感器的溫度值并把半溫度值通過串口通信送入計算 機串口通信作用是把單片機送來的數據送到計算機里起到傳輸作用。 2.電烤箱溫度控制系統

該方案采用美國TI公司生產的FLASH型超低功耗16位單片機MSP430F123 為核心器件通過熱電偶檢測系統溫度用集成溫度傳感器AD590作為溫度測量 器件利用該芯片內置的比較器完成高精度AD信號采樣根據溫度的變化情況 通過單片機編寫閉環算法從而成功地實現了對溫度的測量和自動控制功能。其 測溫范圍較低,大概在0-250之間具有精度高相應速度快等特點。 3.小型熱水鍋爐溫度控制系統

該設計解決了北方冬季分散取暖采用人工定時燒水供熱耗煤量大浪費人

力溫度變化大的問題。設計方案硬件方面采用MCS-51系列8031單片機為核心 擴展程序存儲器2732 AD590溫度檢測元件測量環境溫度和供水溫度ADC0809 進行模數轉換同向驅動器740

7、光電耦合器及9103的功放完成對電機的控制。 軟件方面建立了供暖系統的控制系統數學模型。本系統硬件電路簡單,軟件程序 易于實現。它可用于一臺或多臺小型取暖熱水鍋爐的溫度控制,可使居室溫度基 本恒定,節煤,節電,省人力。 1.3 溫度控制系統方案 結合本設計的要求和技術指標通過對系統大致程序量的估計和系統工作速

度的估計考慮價格因素。選定AT89S51單片機作為系統的主要控制芯片8 位模數轉換器AD0804采用AD509進行溫度采集溫度設定范圍為-10℃~ 45℃ 通過溫度采集系統對溫度進行采集并作A/D轉換再傳輸給單片機。以空調 機為執行器件通過單片機程序完成對室內溫度的控制。 1.4 論文的主要任務和所做的工作 本論文主要是完成一種低成本、低價格、功能齊全、及溫度測量、溫度顯示、 溫度控制于一體的單片機溫度控制系統的理論設計。包括硬件電路和主要的軟件 設計。

研究的關鍵問題是室溫的精確測量溫度采集器AD590溫度控制電路設 計單片機與A/D轉換電路、顯示電路以及軟件設計。

根據本設計所要完成的任務本論文完成了如下工作 1介紹了研究和設計的背景和意義調查并綜述了當前溫度控系統市場的國內外 現狀

2 提出了符合設計要求的高精度溫度控制系統方案并闡述了其工作原理。 3 完成了硬件電路的設計它包括溫度采集系統電路包含89S51單片機模數 轉換器ADC0804等芯片的接口電路通過AD590實現的溫度控制采集電路; 鍵盤接口和LED顯示電路。

4 基本完成了軟件部分設計它包括主程序流程圖A/D轉換子程序顯示子程 序主程序清單。 2設計方案以及論證

2.1設計方案 經過查閱國內外相關資料現代工業控制的溫度采集系統雖然傳感器種類不 同但總體框架比較類似。通過仔細比較繪制出整體框架圖如下

2.2 溫度傳感部分 方案1 基于PTC或NTC電阻的設計

熱敏電阻是開發早、種類多、發展較成熟的敏感元器件。熱敏電阻由

半導體陶瓷材料組成 利用溫度引起電阻變化。若電子和空穴的濃度分別 為n、p遷移率分別為μn、μp則半導體的電導為

σ=qnμn+pμp

因為n、p、μn、μp都是依賴溫度T的函數所以電導是溫度的函數 因此可由測量電導而推算出溫度的高低并能做出電阻-溫度特性曲線這 就是半導體熱敏電阻的工作原理

熱敏電阻包括正溫度系數PTC和負溫度系數NTC熱敏電阻以 及臨界溫度熱敏電阻CTR。

使用熱敏電阻設計而成的溫度檢測系統利用“惠更斯”電橋提取出 溫度的變化然后通過高共模抑制比的儀表放大器將信號放大把模擬信 號信號送入模數轉換電路進行模擬到數字信號的轉變從而將信號送入單 片機進行處理最終由數碼管顯示出當前的溫度值。整體框圖如下 但熱敏電阻精度、重復性、可靠性較差不適用于檢測小于1 ℃的信號而

且線性度很差不能直接用于A/D轉換應該用硬件或軟件對其進行線性化補償。

方案2

采用集成溫度傳感器如常用的AD590和LM35。

AD590是電流型溫度傳感器。這種器件是以電流作為輸出量指示溫度其典 型的電流溫度敏感度是1μA/K.它是二端器件使用非常方便作為一種高阻電 流源他不需要嚴格考慮傳輸線上的電壓信號損失噪聲干擾問題因此特別適合 作為遠距測量或控制用。另外AD590也特別適用于多點溫度測量系統而不必 考慮選擇開關或CMOS多路轉換開關所引起的附加電阻造成的誤差。

由于采用了一種獨特的電路結構并利用最新的薄膜電阻激光微調技術校 準使得AD590具有很高的精度。并且應用電路簡單便于設計。

方案選擇選擇方案2。理由電路簡單穩定可靠無需調試與A/D連接 方便。 2.3 A/D轉換部分 模/數轉化器是一種將連續的模擬量轉化成離散的數字量的一種電路或器件 模擬信號轉換為數字信號一般需要經過采樣保持和量化編碼兩個過程。針對不同

的采樣對象有不同的A/D轉換器ADC可供選擇其中有通用的也有專用的。 有些ADC還包含有其他功能在選擇ADC器件時需要考慮多種因素除了關鍵參 數、分辨率和轉換速度以外還應考慮其他因素如靜態與動態精度、數據接口 類型、控制接口與定時、采樣保持性能、基本要求、校準能力、通道數量、功耗、 使用環境要求、封裝形式以及與軟件有關的問題。ADC按功能劃分可分為直接 轉換和非直接轉換兩大類其中非直接轉換又有逐次分級轉換、積分式轉換等類 型。

A/D轉換器在實際應用時除了要設計適當的采樣/保持電路、基準電路和

多路模擬開關等電路外還應根據實際選擇的具體芯片進行模擬信號極性轉換等 的設計。

方案1采用分級式轉換器這種轉換器采用兩步或多步進行分辨率的閃爍 式轉換進而快速地完成“模擬-數字”信號餓轉換同時可以實現較高的分辨 率。例如在利用兩步分級完成n位轉換的過程中首先完成m位的粗轉換然后 使用精度至少為m位的數/模轉換器ADC將此結果轉換達到1/2的精度并且與 輸入信號比較。對此信號用一個k位轉換器k+m<=n轉換最后將兩個輸出結 果合并。

方案2采用積分型A/D裝換器如ICL7135等。雙積分型A/D轉換器轉換 精度高但是轉換速度不太快若用于溫度測量不能及時地反應當前溫度值 而且多數雙擊分型A/D轉換器其輸出端多不是而二進制碼而是直接驅動數碼管 的。所以若直接將其輸出端接I/O接口會給軟件設計帶來極大的不方便。 方案3采用逐次逼近式轉換器對于這種轉換方式通常是用一個比較輸 入信號與作為基準的n位DAC輸出進行比較并進行n次1位轉換。這種方法類 似于天平上用二進制砝碼稱量物質。采用逐次逼近寄存器輸入信號僅與最高位 MSB比較確定DAC的最高位DAC滿量程的一半。確定后結果0或1 被鎖存同時加到DAC上以決定DAC的輸出0或1/2。

逐次逼近式A/D轉換器如ADC080

4、AD574等其特點是轉換速度快精 度也比較高輸出為二進制碼直接接I/O口軟件設計方便。由于ADC0804 設計時考慮到若干種模/數轉換技術的優點所以該芯片非常適合于過程控制、 微控制器輸入通道的結合口電路、智能儀器和機床控制等應用場合并且價格低 廉降低設計成本。

方案選擇選擇方案3。理由用ADC0804采樣速度快配合溫度傳感器應 用方便價格低廉降低設計成本。 2.4 數字顯示部分 通常用的LED顯示器有7段或8段“米”字段之分。這種顯示器有共陽極和

共陰極兩種。共陰極LED顯示器的發光二極管的陰極連接在一起通常此公共陰 極接地。當某個發光二極管的陽極為高電平時發光二極管點亮相應的段被顯 示。同樣共陽極LED顯示器的工作原理也一樣。 方案1采用靜態顯示方式。在這種方式下各位LED顯示器的共陽極或 共陰極連接在一起并接地或電源正每位的段選線分別與一8位的鎖存器 輸出相連各個LED的顯示字符一旦確定相應鎖存器的輸出將維持不變直到 顯示另一個字符為止正因為如此靜態顯示器的亮度都較高。若用I/O口接口 這需要占用N*8位I/O口LED顯示器的個數N。這樣的話如果顯示器的個數 較多那使用的I/O接口就更多因此在顯示位數較多的情況下一般都不用靜 態顯示。

方案2采用動態顯示方式。當多位LED顯示時通常將所有位的段選線相應 的并聯在一起由一個8位I/O口控制形成段選線的多路復用。而各位的共陽 極或共陰極分別有相應的I/O口線控制實現各位的分時選通。其中段選線占用 一個8位I/O口而位選線占用N個I/O口N為LED顯示器的個數。由于各 位的段選線并聯段碼的輸出對各位來說都是相同的因此同一時刻如果各 位選線都處于選通狀態的話那LED顯示器將顯示相同的字符。若要各位LED 能顯示出與本為相同的字符就必須采用掃描顯示方式即在某一時刻只讓某 一位的位選線處于選通狀態而其他各位的位選線處于關閉狀態同時段選線 上輸出相應位要顯示字符的段碼。

方案選擇選擇方案2。理由非常節約I/O口亮度高節約CPU的使用 率。 3 電路設計

3.1 硬件系統設計 3.1.1 溫度采集電路

溫度采集系統主要由AD590、AD620組成如圖所示 選用溫度傳感器AD590AD590具有較高精度和重復性重復性優于0.1℃ 其良好的非線形可以保證優于0.1℃的測量精度利用其重復性較好的特點通

過非線形補償可以達到0.1℃測量精度。由AD590采集到的溫度信號通過AD620, 一款低功耗、高進度的儀表放大器進行線性放大在AD620的外部只需要通過 一只電阻即可將放大倍數從1-1000倍進行調整。在本電路系統中我們需要將 輸出最大值和最小值調整在0-5V之間便于A/D進行轉換以提高溫度采集電 路的可靠性。

集成溫度傳感器的輸出形式分為電壓輸出和電流輸出兩種。電壓輸出型的靈 敏度一般為10mV/K溫度0℃時輸出為0溫度25℃時輸出為2.982V。電流輸 出型的靈敏度為1 μA/K。這樣便于A/D轉換器采集數據。 3.1.2 AD轉換電路 在學習和實驗過程當中對于AD轉換芯片通常使用美國國家半導體公司

生產的AD0809芯片進行模擬信號到數字信號的轉換。AD0809相關資料齊全 使用廣泛但是對于本設計略顯奢侈AD0809可以同時轉換8路模擬輸入但 本設計中只需要轉換一路模擬輸入。因此我放棄使用AD0809轉而使用美國 國家半導體公司的同類產品AD0804一款與AD0809同類型的模數轉換芯片。 在達到系統要求的同時降低了電路的成本減小了電路的體積簡化了電路的 復雜程度。 用單片機控制ADC時多數采用查詢和中斷控制兩種方式。查詢法是在單片

機把啟動命令送到ADC之后執行別的程序同時對ADC的狀態進行查詢以檢 查ADC變換是否已經完成如查詢到變換已結束則讀入轉換完畢的數據。中斷 控制是在啟動信號送到ADC之后單片機執行別的程序。當ADC轉換結束并向單 片機發出中斷請求信號時單片機響應此中斷請求進入中斷服務程序讀入轉 換數據并進行必要的數據處理然后返回到原程序。這種方法單片機無需進行 轉換時間管理CPU效率高所以特別適合于變換時間較長的ADC。本設計采用 查詢方式進行數據收集。由于ADC0804片內無時鐘故運用8051提供的地址鎖 存使能信號ALE經D觸發器二分頻后獲得時鐘。因為ALE信號的頻率是單片機時 鐘頻率的1/6如果時鐘頻率為6MHz,則ALE信號的頻率為1MHz經二分頻后為 500kHz與AD0804時鐘頻率的典型值吻合。由于AD0804具有三態輸出鎖存器 故其數據輸出引角可直接與單片機的總線相連。并將A/D的ALE和START腳連在 一起以實現在鎖存通道地址的同時啟動ADC0804轉換。啟動信號由單片機的寫 信號和P2.7經或非門而產生。在讀取轉換結果時用單片機的讀信號和P2.7 經或非門加工得到的正脈沖作為OE信號去打開三態輸出鎖存器。根據所選用的 是查詢、中斷、等待延時三種方式之一的條件去執行一條輸入指令讀取A/D 轉換結果。

ADC0804是一個8位逐次逼近的A/D轉換器。AD0804的轉換時間為100μs。 在CPU啟動A/D命令后便執行一個固定的延時程序延時時間應略大于A/D 的轉換時間延時程序一結束便執行數據讀入指令讀取轉換結果。本設計選 用Motorola公司的基準源TL431產生參考電壓2.50V即一位數字量對應10mV 即1℃。所以用起來很方便。具體電路如下

3.1.3 單片機電路 單片微型計算機簡稱單片機。它在一塊芯片上集成了各種功能部件中央處

理器CPU、隨機存取存儲器RAM、只讀存儲器ROM、定時器/計數器和各 種輸入/輸出I/O接口如并行I/O口、串行I/O口和A/D轉換器等。它們 之間相互連結構成一個完整的微型計算機。

單片機的發展經歷了四個階段第一階段19711974年主要是美國INTEL 公司從早先的第一臺MCS-4微型計算機到后來功能較強的8位微處理器

Intel8008和FAIRCHILD公司的F8微處理器。這些微處理器雖說還不是單片機 但從此拉開了研制單片機的序幕。第二階段19741978初級單片機階段 以INTEL公司的MCS-48為代表。這個系列的單片機內集成有8位CPU并行I/O 口8位定時器/計數器尋址范圍不大于4K且無串行口。第三階段1978 1983高性能單片機階段。在這一階段的單片機普遍帶有串行口多級中斷處 理系統和16位定時器/計數器。片內ROMRAM容量加大且尋址范圍可達64K 字節有的片內還帶有A/D轉換器接口。這類單片機有INTEL公司的MCS-51 MOTOROLA公司的6801和ZILOG公司的Z8等。其中MCS-51系列產品由于其優 良的性能價格比特別適合我國的國情MCS-51系列單片機有可能穩定相當一

段時期?,F在國內的MCS-51熱正在升溫隨著我國經濟建設步伐的加大MCS-51 系列單片機必將在各個領域大顯身手。第四階段1983現在8位單片機鞏 固發展及16位單片機推出階段。此階段主要特征是一方面發展16位單片機及專

用單片機另一方面不斷完善高檔8位單片機改善其結構以滿足不同用戶的 需要。

MCS-51系列屬高檔單片機近年來INTEL公司在提高該系列產品性能方面 做了不少工作相繼推出了不少新產品8052/8752/80

32、低功耗的CHMOS工藝 芯片80C51/87C51/80C

31、具有高級語言編程的芯片8052AH-BASIC、高性能的 C252系列等。在本次設計中我們采用了MCS -51系列中的89C51來完成產品的CPU 的功能。

89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器FPEROM—Falsh Programmable and Erasable Read Only Memory的低電壓高性能CMOS8位微 處理器俗稱單片機。89C2051是一種帶2K字節閃爍可編程可擦除只讀存儲器 的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL 高密度非易失存儲器制造技術制造與工業標準的MCS-51指令集和輸出管腳相 兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中ATMEL的89C51 是一種高效微控制器89C2051是它的一種精簡版本。89C單片機為很多嵌入式 控制系統提供了一種靈活性高且價廉的方案。

89C51的主要特性有與MCS-51 兼容4K字節可編程閃爍存儲器壽命

1000寫/擦循環數據保留時間10年全靜態工作0Hz-24Hz三級程序存儲 器鎖定128*8位內部RAM32可編程I/O線兩個16位定時器/計數器5個

中斷源可編程串行通道低功耗的閑置和掉電模式片內振蕩器和時鐘電路。 下面按其引腳功能分為四部分敘述這40條引腳的功能 1 主電源引腳VCC和GND VCC40腳接+5V電壓。GND20腳接地。

2 外接晶體引腳XTAL1和XTAL2 XTAL1 和XTAL2外接晶體振蕩器(簡稱晶振)或陶瓷諧振器 ,就構成了內部

振蕩方式。由于單片機內部有一個高增益反相放大器當外接晶振后就構成了 自激振蕩器并產生振蕩時鐘脈沖。

3 控制或與其它電源復用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP RST/VPD當振蕩器運行時在此引腳上出現兩個機器周期的高電平將使單 片機復位。在此引腳與VSS引腳之間連接一個約10KΩ的下拉電阻與VCC引 腳之間連接一個約10μF的電容可以保證可靠地復位。VCC掉電期間此引腳 可接上備用電源以保持內部RAM的數據不丟失。當VCC主電源下掉到低于 規定的電平而VPD在其規定的電壓范圍5土0.5V內VPD就向內部RAM 提供備用電源。ALE/PROG當訪問外部存儲器時ALE允許地址鎖存的 輸出用于鎖存地址的低位字節。即使不訪問外部存儲器ALE端仍然以不變的 頻率周期性地出現正脈沖信號此頻率為振蕩器頻率的1/6。因此它可用作對 外輸出的時鐘或用于定時目的。然而要注意的是每當訪問外部數據存儲器時 將跳過一個ALE脈沖。ALE端可以驅動吸收或輸出電流8個LS型的TTL 輸入電路。對于EPROM型的單片機如8751在EPROM編程期間此引腳 用于輸入編程脈沖PROG。PSEN此腳的輸出是外部程序存儲器的讀選通 信號。在從外部程序存儲器取令或常數期間每個機器周期兩次PSEN有效。

但在此期間每當訪問外部數據存儲器時這兩次有效的PSEN信號將不出現。PSEN同樣可以驅動吸收或輸出8個LS型的TTL輸入。EA/VPP當EA端

保持高電平時訪問內部程序存儲器但在PC程序計數器值超過0FFFH對 8051/8751/80C51或1FFFH對3052時將自動轉向執行外部程序存儲器內 的程序。當EA保持低電平時則只訪問外部程序存儲器不管是否有內部程序 存儲器。對于常用的8031來說無內部程序存儲器所以EA腳必須常接地 這樣才能只選擇外部程序存儲器。對于EPROM型的單片機如8751在EPROM 編程期間此引腳也用于施加21伏的編程電源VPP。 4 輸入/輸出I/0引腳P0、P

1、P

2、P3共32根 P0口39腳--32腳是雙向8位三態I/O口在外接存儲器時與地址總 線的低8位及數據總線復用能以吸收電流的方式驅動8個LS TTL負載。P1 口l腳--8腳是8位準雙向I/O口。由于這種接口輸出沒有高阻狀態輸入 也不能鎖存故不是真正的雙向I/O口。能驅動吸收或輸出電流4個LS TTL 負載。對80

52、8032 P1.0引腳的第二功能為T2定時/計數器的外部輸入P1.1 引腳的第二功能為T2EX捕捉、重裝觸發即T2的外部控制端。對EPROM編

程和程序驗證時它接收低8位地址。P2口21腳--28腳是8位準雙向I/O 口。在訪問外部存儲器時它可以作為擴展電路高8位地址總線送出高8位地址。

在對EPROM編程和程序驗證期間它接收高8位地址。P2可以驅動吸收或 輸出電流4個LS TTL負載。P3口l0腳--17腳是8位準雙向I/O口在 MCS-51中這8個引腳還用于專門功能是復用雙功能口。P3能驅動吸收或 輸出電流4個LS TTL負載。作為第一功能使用時就作為普通I/O口用功 能和操作方法與P1口相同。作為第二功能使用時各引腳的定義如表3.1所示。 值得強調的是P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二 功能。 P3口的第二功能定義 口線

引腳 第二功能 P3.0 10 RXD串行輸入口 P3.1 11 TXD串行輸入口 P3.2 12 INT0外部中斷 0

P3.3 13 1 INT外部中斷1 P3.4 14 T0 定時器0外部輸入 P3.5 15 T1 定時器1外部輸入

P3.6 16 WR外部數據存儲器寫脈沖

P3.7 17 RD外部數據存儲器讀脈沖

3.1.4 顯示電路

顯示電路采用鎖存器74HC573和數碼管組合的方式進行顯示溫度數值。 數碼管是單片機應用電路中常用的顯示器件。每個數碼管由8個發光二極管組 成。數碼管有共陰極和共陽極兩種類型。共陰極數碼管內部8個二極管的陰極被 連接在一起和引腳com相接在使用是引腳應接低電平當數碼管其余的某個引 腳接高電平則相應的發光二極管被點亮。共陽極數碼管com端應接高電平當 數碼管其余的某個引腳接低電平則相應的發光二極管被點亮。在使用過沖當中 我們需要在每個數碼管的每一位段選上串聯電阻限制導通電流來保證發光二極 管不被燒壞。本設計中選用共陽極數碼管。 a共陰數碼管原理圖 b共陽數碼管原理圖 1 2 3 4 5 6 7a b c d e f g8dp9GND a bf c g d e dp a bf c g d e VCC1 2 3 4 5 6 7a b c d e f g8dp dp9 c共陰數碼管電路符號圖 d共陽數碼管電路符號圖 鎖存器

74HC573是一款高速低功耗TTL鎖存器它能夠鎖存8位數據最高鎖存17ns 變化的數據。本設計中使用一組I/O口用來傳送數碼管的段選同時使用該組 I/O口的高四位傳送位選。這樣一來可以大大提高I/O口的使用效率。同時 使用另外兩個I/O口控制兩個鎖存器的鎖存端是能段來控制鎖存器的工作。 關于74HC573的鎖存使用說明如下圖

顯示總體電路如下

3.1.5 電源電路

一個優秀系統中的電源電路極為重要電源的好壞可以直接影響整機的工 作。本設計中采用線性穩壓系統提供信號處理電路所需的正負15V電壓和單片 機、數字電路、數碼管所需的5V電壓。電源系統的設計原理是通過工頻變壓器 將市電220V 50Hz的交流電變為雙13V 50Hz的低壓交流電再通過全橋整流變 為脈動的正電壓經過電容濾波、7

8、79系列線性穩壓芯片穩壓最終輸出穩 定的+15V、-15V和+5V直流電壓供系統相應電路模塊使用。 電源部分電路圖如下所示

3.2 軟件系統設計 本系統的單片機程序使用C語言編寫相比匯編語言C語言具有使用靈

活、移植性強、易于上手、方便使用、可完成高級功能等特點。 3.2.1 主程序設計 程序啟動后首先清理系統內存然后進行采集并通過A/D轉換后傳輸

到單片機再由單片機控制顯示設備顯示現在的溫度然后系統進入待機狀態 等待再次檢測溫度。

3.2.2 AD轉換程序

89S51給出一個脈沖信號啟動A/D轉換后ADC0809對接受到的模擬信號進 行轉換這個轉換過程大約需要100μs,系統采用的是固定延時程序所以在預 先設定的延時后89S51直接從ADC0809中讀取數據。

主程序開始 采集溫度 查詢溫度 調A/D程序

調顯示程序 要控制溫度

鍵盤輸入設定值 和設定值比較 啟動加熱/降溫

溫度采集和比較 與設定值相等

是 N 否 是

3.2.3 溫度采樣

采樣子程序流程圖如圖所示。

A/D入口 啟動

A/D轉換 查詢EOC 讀取轉換數據 壓縮BCD碼 作未壓縮處理

整理好的十位和個位 分別存入某地址單元

子程序結果

3.2.4溫度標度轉換算法

A/D轉換器輸出的數碼雖然代表參數值的大小但是并不代表有量綱的參數

值必須轉換成有量綱的數值才能進行顯示標度轉換有線性轉換和非線性轉換 兩種本設計使用的傳感器線性好在測量的量程制內基本能與溫度成線性關系。 溫度標度轉換程序TRAST目的是要把實際采樣的二進制值轉換的溫度值

轉換成BCD形式的溫度值。對一般的線性儀表來說標度轉換公式為 AX=0A+) AA0 mNN NN0 m 0X

式中0A為一次儀表的下限 Am為一次量程儀表的上限為實際測量值工程量為儀表下限所對應的數字量 Nm為儀表上限所應的數字量 NX為測量所得數字量。例如若某熱處理儀表量程為200—800℃在某一時刻計算機采樣得到的 二進制值U(K)=CDH則相應的溫度值為 采樣值起始地址送 R0 采樣次數送R2 啟動AD590 延時

A/D完成 所有采樣結束 返回 Y N N AX=0A+) AA0 mNN NN0 m 0X=200+800-200255205=682℃

根據上述算法只要設定熱電偶的量程則相應的溫度轉換子程序TARST

N0 很容易編寫只要把這一算式變成程序將A/D轉換后經數字濾波處理后的值代 入即可計算出真實的溫度值。具體算法如圖所示。 保護現場 R0←Am, R1 ←0A 計算 NX-N0 R0←Nm, R1 ←N0 計算 Am-0A 計算) AA0 m/NN0m R0←NX, R1 ←N0 計算 Nm-N0 計算) AA0 mNN NN0 m 0X

R2—0A AX=0A+) AA0 mNN NN0 m 0X

DATA←AX 返 回 3.3 特殊元器件介紹 溫度傳感器AD590 簡介

AD590溫度傳感器是一種已經IC化的溫度傳感器它會將溫度轉換為電流 其規格如下

1、溫度每增加1℃它會增加1μA輸出電流

2、可測量范圍為-55℃至150℃ 3 、供電電壓范圍為+4V至+30V AD590的輸出電流值說明見表。

其輸出電流是以絕對溫度零度-273℃為基準溫度每增加1℃它會增

加1μA輸出電流因此在室溫25℃時其輸出電流Iout=273+25=298μA。 AD590溫度與電流的關系 溫度與電流的關系 攝氏溫度 AD590電流 經10KΩ電壓 0℃ 273.2 uA 2.732V 10℃ 283.2 uA 2.832 V 20℃ 293.2 uA 2.932 V 30℃ 303.2 uA 3.032 V 40℃ 313.2 uA 3.132 V 50℃ 323.2 uA 3.232 V 60℃ 333.2 uA 3.332 V 100℃ 373.2 uA 3.732 V 主要特性如下

1 流過器件的電流mA等于器件所處環境的熱力學溫度開爾文度 數

2AD590的測溫范圍為-55℃+150℃。

3AD590的電源電壓范圍為4V30V。電源電壓可在4V6V范圍變化 電流變化1mA相當于溫度變化1℃。AD590可以承受44V正向電壓和20V反向 電壓因而器件反接也不會被損壞。 4輸出電阻為710MΩ。

5精度高。AD590共有I、J、K、L、M五檔其中M檔精度最高在-55℃ +150℃范圍內非線性誤差為±0.3℃。 AD590測量熱力學溫度、攝氏溫度、兩點溫度差、多點最低溫度、多點平均

溫度的具體電路廣泛應用于不同的溫度控制場合。由于AD590精度高、價格低、 不需輔助電源、線性好常用于測溫和熱電偶的冷端補 AD590實際應用電路舉例 分析

1AD590的輸出電流I=273+TμAT為攝氏溫度因此測量的電壓 V為273+TμA×10K=2.73+T/100V。為了將電壓測量出來又務須使輸出 電流I不分流出來我們使用電壓跟隨器其輸出電壓V2等于輸入電壓V。 2由于一般電源供應教多器件之后電源是帶雜波的因此我們使用齊 納二極管作為穩壓組件再利用可變電阻分壓其輸出電壓V1需調整至2.73V 3接下來我們使用差動放大器其輸出Vo為100K/10K×V2-V1=T/10 如果現在為攝氏28℃輸出電壓為2.8V輸出電壓接AD轉換器那么AD轉換 輸出的數字量就和攝氏溫度成線形比例關系。

AD590測量熱力學溫度、攝氏溫度、兩點溫度差、多點最低溫度、多點平均

溫度的具體電路廣泛應用于不同的溫度控制場合。由于AD590精度高、價格低、

不需輔助電源、線性好常用于測溫和熱電偶的冷端補償。 4 總結 AT89C51單片機體積小重量輕抗干擾能力強對環境要求不高價格

低廉可靠性高靈活性好本文的溫度控制系統只是單片機廣泛應用于各行 各業中的一例。

設計實現了溫度實時測量、顯示。本設計溫度控制電路具有較高的抗干擾性 實時性方案具有較高的測量精度溫度控制實時性更高。在設計過程中首先 在老師的指導下熟悉了系統的工藝進行對象的分析按照要求確定方案。然后 進行硬件和軟件的設計。通過設計使我掌握了微型機控制系統I/O接口的使用方 法模擬量輸入/輸出通道的設計常用顯示程序的設計方法數據處理及線性 標度技術基本算法的設計思想。

在做畢業設計之前我對單片機的基本知識了解甚少而C語言雖是接觸過 可是沒有具體的設計和編輯過所以花了大量的時間去做準備工作。在老師的指 導和幫助下克服了一系列困難終于完成了本設計基于本人能力有限該設計 還有許多不足之處有待改進。

參考文獻 [1]錢聰.電子線路分析與設計[M].西安:陜西人民出版社,2000. [2]談文心,錢聰,宋云嫻.模擬集成電路原理與應用[M].西安:西安交通大學出版 社,1994. [3]孫肖子

,鄧建國,陳南錢聰.電子設計指南[M].西安:高等教育出版社,2006. [4]HAN Zhi-jun Liu Xin-min.DIGITAL TEMPERATURE SENSOR DS18B20 AND ITS APPLICATION [J]. Nanjing: Journal of Nanjing Institute of Technology(Natural Science Edition).2003 [5]SHEN Li-li,CHEN Zhong-rong. Design of Multi-Channel Test System of Measuring Temperature for Grain Storage Based on CPLD and DS18B20[J].Nanjing: Nanjing University of Information Science & Technology.2008 [6]You Guanjun Hu Yihua Liu Shenlong Zhao Tianxiang. THE CIRCUITRY OF AD590 IC TEMPERATURE SENSOR AND THE APPLICATION IN TEMPERATURE MEASUREMENT AND CONTROL[J].COLLEGE PHYSICAL EXPERIMENT,2000. [7]張國勛. 縮短ICL7135A/D采樣程序時間的一種方法[J].電子技術應用 1993第一期. [8]高峰. 單片微型計算機與接口技術[M].北京:科學出版社2003 [9]劉偉,趙駿逸,黃勇. 一種基于C8051單片機的SOC型數據采錄的設計與實現 [A].天津:天津市計算機協會單片機分會編 2003 [10]何立民. 單片機高級教程[M].北京:北京航空航天大學出版社,2000 [11]李元. 數字電路與邏輯設計[M].南京:南京大學出版社,1997 [12]蘇麗萍. 電子技術基礎[M].西安:西安電子科技大學,2006 [13]徐江海. 單片機實用教程[M]:機械工業出版社,2003 [14]謝文和. 傳感器技術及其應用[M]:高等教育出版社,2004 [15]孟立凡,藍金輝. 傳感器原理與應用[M].電子工業出版社,2000 [16]江曉安. 模擬電子技術 第二版[M].西安:西安電子科技大學出版社,2004

附錄 單片機應用程序 #include #define uchar unsigned char #define uint unsigned int sbit wela=P3^0; sbit dula=P3^1; sbit wr=P3^6; sbit rd=P3^7; sbit cs=P3^5; uchar num; uint a1,b1,c1; uchar table1[]= {0xff,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x86}; uchar table2[]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x86}; uchar table3[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x86}; void delay(uint z); uchar ad(); void display(uint,uint,uint); void main() { while(1) { switch(ad()) { case 0x00: a1=0,b1=0,b1=0; break; case 0x01: a1=0,b1=0,c1=3; break; case 0x02: a1=0,b1=0,c1=7; break; case 0x03: a1=0,b1=1,c1=1; break; case 0x04: a1=0,b1=1,c1=5; break; case 0x05: a1=0,b1=1,c1=9; break; case 0x06: a1=0,b1=2,c1=3; break; case 0x07: a1=0,b1=2,c1=7; break; case 0x08: a1=0,b1=3,c1=1; break; case 0x09: a1=0,b1=3,c1=5; break; case 0x0a: a1=0,b1=3,c1=9; break; case 0x0b: a1=0,b1=4,c1=2; break; case 0x0c: a1=0,b1=4,c1=6; break; case 0x0d: a1=0,b1=5,c1=0; break; case 0x0e: a1=0,b1=5,c1=4; break; case 0x0f: a1=0,b1=5,c1=8; break; case 0x10: a1=0,b1=6,c1=2; break; case 0x11: a1=0,b1=6,c1=6; break; case 0x12: a1=0,b1=7,c1=0; break; case 0x13: a1=0,b1=7,c1=4; break; case 0x14: a1=0,b1=7,c1=8; break; case 0x15: a1=0,b1=8,c1=2; break; case 0x16: a1=0,b1=8,c1=5; break; case 0x17: a1=0,b1=8,c1=9; break; case 0x18: a1=0,b1=9,c1=3; break; case 0x19: a1=0,b1=9,c1=7; break; case 0x1a: a1=1,b1=0,c1=1; break; case 0x1b: a1=1,b1=0,c1=5; break; case 0x1c: a1=1,b1=0,c1=9; break; case 0x1d: a1=1,b1=1,c1=3; break; case 0x1e: a1=1,b1=1,c1=7; break; case 0x1f: a1=1,b1=2,c1=1; break; case 0x20: a1=1,b1=2,c1=5; break; case 0x21: a1=1,b1=2,c1=8; break; case 0x22: a1=1,b1=3,c1=2; break; case 0x23: a1=1,b1=3,c1=6; break; case 0x24: a1=1,b1=4,c1=0; break; case 0x25: a1=1,b1=4,c1=4; break; case 0x26: a1=1,b1=4,c1=8; break; case 0x27: a1=1,b1=5,c1=2; break; case 0x28: a1=1,b1=5,c1=6; break; case 0x29: a1=1,b1=6,c1=0; break; case 0x2a: a1=1,b1=6,c1=4; break; case 0x2b: a1=1,b1=6,c1=8; break; case 0x2c: a1=1,b1=7,c1=2; break; case 0x2d: a1=1,b1=7,c1=5; break; case 0x2e: a1=1,b1=7,c1=9; break; case 0x2f: a1=1,b1=8,c1=3; break; case 0x30: a1=1,b1=8,c1=7; break; case 0x31: a1=1,b1=9,c1=1; break; case 0x32: a1=1,b1=9,c1=5; break; case 0x33: a1=1,b1=9,c1=9; break; case 0x34: a1=2,b1=0,c1=3; break; case 0x35: a1=2,b1=0,c1=7; break; case 0x36: a1=2,b1=1,c1=1; break; case 0x37: a1=2,b1=1,c1=4; break; case 0x38: a1=2,b1=1,c1=8; break; case 0x39: a1=2,b1=2,c1=2; break; case 0x3a: a1=2,b1=2,c1=6; break; case 0x3b: a1=2,b1=3,c1=0; break; case 0x3c: a1=2,b1=3,c1=4; break; case 0x3d: a1=2,b1=3,c1=8; break; case 0x3e: a1=2,b1=4,c1=2; break; case 0x3f: a1=2,b1=4,c1=6; break; case 0x40: a1=2,b1=5,c1=0; break; case 0x41: a1=2,b1=5,c1=3; break; case 0x42: a1=2,b1=5,c1=7; break; case 0x43: a1=2,b1=6,c1=1; break; case 0x44: a1=2,b1=6,c1=5; break; case 0x45: a1=2,b1=6,c1=9; break; case 0x46: a1=2,b1=7,c1=3; break; case 0x47: a1=2,b1=7,c1=7; break; case 0x48: a1=2,b1=8,c1=1; break; case 0x49: a1=2,b1=8,c1=5; break; case 0x4a: a1=2,b1=8,c1=9; break; case 0x4b: a1=2,b1=9,c1=3; break; case 0x4c: a1=2,b1=9,c1=6; break; case 0x4d: a1=3,b1=0,c1=0; break; case 0x4e: a1=3,b1=0,c1=4; break; case 0x4f: a1=3,b1=0,c1=8; break; case 0x50: a1=3,b1=1,c1=2; break; case 0x51: a1=3,b1=1,c1=6; break; case 0x52: a1=3,b1=2,c1=0; break; case 0x53: a1=3,b1=2,c1=4; break; case 0x54: a1=3,b1=2,c1=8; break; case 0x55: a1=3,b1=3,c1=2; break; case 0x56: a1=3,b1=3,c1=5; break; case 0x57: a1=3,b1=3,c1=9; break; case 0x58: a1=3,b1=4,c1=3; break; case 0x59: a1=3,b1=4,c1=7; break; case 0x5a: a1=3,b1=5,c1=1; break; case 0x5b: a1=3,b1=5,c1=5; break; case 0x5c: a1=3,b1=5,c1=9; break; case 0x5d: a1=3,b1=6,c1=3; break; case 0x5e: a1=3,b1=6,c1=7; break; case 0x5f: a1=3,b1=7,c1=1; break; case 0x60: a1=3,b1=7,c1=5; break; case 0x61: a1=3,b1=7,c1=8; break; case 0x62: a1=3,b1=8,c1=2; break; case 0x63: a1=3,b1=8,c1=6; break; case 0x64: a1=3,b1=9,c1=0; break; case 0x65: a1=3,b1=9,c1=4; break; case 0x66: a1=3,b1=9,c1=8; break; case 0x67: a1=4,b1=0,c1=2; break; case 0x68: a1=4,b1=0,c1=6; break; case 0x69: a1=4,b1=1,c1=0; break; case 0x6a: a1=4,b1=1,c1=4; break; case 0x6b: a1=4,b1=1,c1=8; break; case 0x6c: a1=4,b1=2,c1=1; break; case 0x6d: a1=4,b1=2,c1=5; break; case 0x6e: a1=4,b1=2,c1=9; break; case 0x6f: a1=4,b1=3,c1=3; break; case 0x70: a1=4,b1=3,c1=7; break; case 0x71: a1=4,b1=4,c1=1; break; case 0x72: a1=4,b1=4,c1=5; break; case 0x73: a1=4,b1=4,c1=9; break; case 0x74: a1=4,b1=5,c1=3; break; case 0x75: a1=4,b1=5,c1=7; break; case 0x76: a1=4,b1=6,c1=0; break; case 0x77: a1=4,b1=6,c1=4; break; case 0x78: a1=4,b1=6,c1=8; break; case 0x79: a1=4,b1=7,c1=2; break; case 0x7a: a1=4,b1=7,c1=6; break; case 0x7b: a1=4,b1=8,c1=0; break; case 0x7c: a1=4,b1=8,c1=4; break; case 0x7d: a1=4,b1=8,c1=8; break; case 0x7e: a1=4,b1=9,c1=2; break; case 0x7f: a1=4,b1=9,c1=6; break; case 0x80: a1=5,b1=0,c1=0; break; case 0x81: a1=5,b1=0,c1=3; break; case 0x82: a1=5,b1=0,c1=7; break; case 0x83: a1=5,b1=1,c1=1; break; case 0x84: a1=5,b1=1,c1=5; break; case 0x85: a1=5,b1=1,c1=9; break; case 0x86: a1=5,b1=2,c1=3; break; case 0x87: a1=5,b1=2,c1=7; break; case 0x88: a1=5,b1=3,c1=1; break; case 0x89: a1=5,b1=3,c1=5; break; case 0x8a: a1=5,b1=3,c1=9; break; case 0x8b: a1=5,b1=4,c1=3; break; case 0x8c: a1=5,b1=4,c1=6; break; case 0x8d: a1=5,b1=5,c1=0; break; case 0x8e: a1=5,b1=5,c1=4; break; case 0x8f: a1=5,b1=5,c1=8; break; case 0x90: a1=5,b1=6,c1=2; break; case 0x91: a1=5,b1=6,c1=6; break; case 0x92: a1=5,b1=7,c1=0; break; case 0x93: a1=5,b1=7,c1=4; break; case 0x94: a1=5,b1=7,c1=8; break; case 0x95: a1=5,b1=8,c1=2; break; case 0x96: a1=5,b1=8,c1=5; break; case 0x97: a1=5,b1=8,c1=9; break; case 0x98: a1=5,b1=9,c1=3; break; case 0x99: a1=5,b1=9,c1=7; break; case 0x9a: a1=6,b1=0,c1=1; break; case 0x9b: a1=6,b1=0,c1=5; break; case 0x9c: a1=6,b1=0,c1=9; break; case 0x9d: a1=6,b1=1,c1=3; break; case 0x9e: a1=6,b1=1,c1=7; break; case 0x9f: a1=6,b1=2,c1=1; break; case 0xa0: a1=6,b1=2,c1=5; break; case 0xa1: a1=6,b1=2,c1=8; break; case 0xa2: a1=6,b1=3,c1=2; break; case 0xa3: a1=6,b1=3,c1=6; break; case 0xa4: a1=6,b1=4,c1=0; break; case 0xa5: a1=6,b1=4,c1=4; break; case 0xa6: a1=6,b1=4,c1=8; break; case 0xa7: a1=6,b1=5,c1=2; break; //65.2 default: a1=7,b1=10,c1=10;break; } display(a1,b1,c1); } }

uchar ad() { cs=1; wr=1; cs=0; wr=0; delay(1); wr=1; cs=1; rd=1; delay(3); cs=0; rd=0; num=P1; delay(1); rd=1; cs=1; delay(50); return num; } void display(uint a,uint b,uint c) { P2=0x00; wela=1; P2=0x80; wela=0; P2=0xff; dula=1; P2=table1[a]; dula=0; delay(10); //第一位 P2=0x00; wela=1; P2=0x40; wela=0; P2=0xff; dula=1; P2=table2[b]; dula=0; delay(10); //第二位 P2=0x00; wela=1; P2=0x20; wela=0; P2=0xff; dula=1; P2=table3[c]; dula=0; delay(10); //第三位 P2=0x00; wela=1; P2=0x10; wela=0; P2=0xff; dula=1; P2=0xc6; dula=0; delay(10); //第四位 P2=0x00; wela=1; P2=0x00; wela=1; delay(10); } void delay(uint z) { uint t1,y; for(t1=z;t1>0;t1--) for(y=10;y>0;y--); }

本文來自 99學術網(www.gaojutz.com),轉載請保留網址和出處

上一篇:1263機關黨建工作機制下一篇:unit5高一必修二教案

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火