freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于at89c51單片機(jī)的溫度檢測設(shè)計(jì)探討-在線瀏覽

2025-03-07 15:46本頁面
  

【正文】 (1) PO 口為雙向 8 位三態(tài) I/0 口,它既可作為通用 I/O 口,又可作為外部擴(kuò)展時的數(shù)據(jù)總線及低 8 位地址總線的分時復(fù)用口。輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性。 (2) PI 口為 8 位準(zhǔn)雙向 1/0 口,內(nèi)部具有上拉電阻,一般作通用 1/0 口使用,它的每一位都可以分別定義為輸入線或輸出線,作為輸入時,鎖存器必須置 1。 (3) P2 口為 8 位準(zhǔn)雙向 1/0 口,內(nèi)部具有上拉電阻,可直接連接外部 1/0 設(shè)備。一般作為外部擴(kuò)展時的高 8 位地址總線使用。作為通用 1/0 口時,功能與 P1 口相同,常用第二功能。在訪PROG問片外存儲器時,89C51 CPU 在 引腳上輸出片外存儲器低 8 位地址的同時在 ALE/ 上輸出一個高電位脈沖,用于把這個片外存儲器低 8 位地址鎖存到外部專用地址鎖存器,以便空出 引腳線去傳送隨后而來的片外存儲器讀寫數(shù)據(jù)。該脈沖序列可用作外部時鐘源或作為定時脈沖源使用。若 =0,則允許使用片內(nèi) R0M。其他情況下 PSEN 線均為高電平封鎖狀態(tài)。圖 3 AT89C51 引腳圖 時鐘晶振電路和復(fù)位電路 時鐘電路用于產(chǎn)生時鐘信號,時鐘信號是單片機(jī)內(nèi)部各種微操作的時間基準(zhǔn),在此基礎(chǔ)上,控制器按照指令的功能產(chǎn)生一系列在時間上有一定次序的信號,控制相關(guān)的邏輯電路工作,實(shí)現(xiàn)指令的功能。時鐘晶振電路和復(fù)位電路見圖 4[2]。傳感器所測量的非電量是處在不斷的變化之中,傳感器能否將這些非電量的變化不失真地轉(zhuǎn)換成相應(yīng)的電量,取決于傳感器的輸入一輸出特性。傳感器的靜態(tài)特性是指當(dāng)被測量處于穩(wěn)定狀態(tài)下,傳感器的輸入與輸出值之間的關(guān)系。傳感器的動態(tài)特性是指傳感器測量靜態(tài)信號時,由于被測量不隨時間變化,測量和記錄過程不受時間限制。傳感器能測量動態(tài)信號的能力用動態(tài)特性表示。傳感器動態(tài)特性的性能指標(biāo)可以通過時域、頻域以及試驗(yàn)分析的方法確定,其動態(tài)特性參數(shù)如:最大超調(diào)量、上升時間、調(diào)整時間、頻率響應(yīng)范圍、臨界頻率等。但是,除了理想情況以外,實(shí)際傳感器的輸出信號與輸入信號不會具有相同的時間函數(shù),由此引起動態(tài)誤差 [3]。并且多個DS18B20 可以并接到多個地址線上與單片機(jī)實(shí)現(xiàn)通信。 與其它溫度傳感器相比,DS18B20 具有以下特性: (1)全數(shù)字溫度轉(zhuǎn)換及輸出。(3)最高 12 位分辨率,精度可達(dá)土 176。(4)12 位分辨率時的最大工作周期為 750 毫秒。C ~+125176。F ~+257176。(7)多樣封裝形式,適應(yīng)不同硬件系統(tǒng)。VDD:接電源引腳,電源供電 .GND:接地。DQ 引腳的 1/O 為數(shù)據(jù)輸入/輸出端(即單線總線),常態(tài)下呈高電平 [4]。該技術(shù)采用單根信號線,既可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而這種單總線技術(shù)有線路簡單,硬件開銷少,成本低廉,便于總線擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。主機(jī)可以是微控制器,從機(jī)可以是單總線器件,它們之間的數(shù)據(jù)交換只通過一條信號線。當(dāng)有多個從設(shè)備時,系統(tǒng)則按多節(jié)點(diǎn)系統(tǒng)操作。主機(jī)或者從機(jī)通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能夠釋放總線,而讓其他設(shè)備使用總線,其內(nèi)部等效電路如圖 6 所示。圖 6 DS18B20 內(nèi)部等效電路圖 DS18B20 的使用方法 由于DS18B20 采用的是1-Wire 總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20 芯片的訪問。DS18B20 有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。所有時序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。數(shù)據(jù)和命令的傳輸都是低位在先。處理時,將DS18B20信號線與單片機(jī)一位口線相連,單片機(jī)可掛接多片DS18B20,從而實(shí)現(xiàn)多點(diǎn)溫度檢測系統(tǒng)。另外,由于DS18B20單線通信功能是分時完成的,遵循嚴(yán)格的時隙概念,因此,系統(tǒng)對DS18B20和各種操作必須按協(xié)議進(jìn)行,即初始化DS18B20(發(fā)復(fù)位脈沖) →發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。協(xié)議由幾種單線上信號類別型組成:復(fù)位脈沖,存在脈沖,寫0,寫1,讀0,和讀l所有這些信號除了存在脈沖之外均由總線主機(jī)產(chǎn)生??偩€主機(jī)發(fā)送TX復(fù)位脈沖(最短為480μs的低電平信號)。單線總線經(jīng)過5k的上拉電阻被拉至高電平狀態(tài)。 DS18B20 的測溫原理DS18B20 的內(nèi)部框圖如圖 7 所示,它主要包括寄生電源、溫度傳感器、64 位激光 ROM 單線接口、存放中間數(shù)據(jù)的高速暫存器、用于存儲用戶設(shè)定的溫度上下限值、觸發(fā)器存儲與控制邏輯、8 位循環(huán)冗余校驗(yàn)碼發(fā)生器等 7 部分。低溫度系數(shù)振蕩器是一個振蕩頻率隨溫度變化很小的振蕩器,為計(jì)數(shù)器1提供一頻率穩(wěn)定的計(jì)數(shù)脈沖。初始時,溫度寄存器被預(yù)置成55176。C,這個過程重復(fù)進(jìn)行直到計(jì)數(shù)器 2計(jì)數(shù)到0時便停止。C像對應(yīng)的一個預(yù)置值。為了補(bǔ)償振蕩器溫度特性的非線性性,斜率累加器提供的預(yù)置數(shù)也隨溫度相應(yīng)變化。C計(jì)數(shù)器所需的計(jì)數(shù)個數(shù)。在計(jì)數(shù)器2停止計(jì)數(shù)后,比較器將計(jì)數(shù)器1中的計(jì)176。C ,溫度寄存器的最低位就置0。C,就置1,176。這樣,經(jīng)過比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最末位代表0. 5176。C當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。單片機(jī)可通過單總線讀到該數(shù)據(jù),讀取時低位字節(jié)在前,高位字節(jié)在后,176。設(shè)S為標(biāo)志位,對應(yīng)的溫度計(jì)算:當(dāng)符號位 S=0時,直接將二進(jìn)制轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1 時,先將二進(jìn)制的各位取反加 1后再計(jì)算十進(jìn)制。表1 輸出溫度值的不同進(jìn)制溫度(176。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。C 范圍內(nèi),DS18B20的上下限誤差分別為+176。C ,而典型產(chǎn)品的誤差僅為士 0 .25176。 顯示器及其接口 單片機(jī)系統(tǒng)中常用的顯示器有:發(fā)光二極管 LED(Light Emitting Diode)顯示器、液晶 LCD(Liquid Crystal Display)顯示器、CRT 顯示器等。 LED 顯示器工作方式有兩種:靜態(tài)顯示和動態(tài)顯示。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。選亮數(shù)碼管采用動態(tài)掃描顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的。為了顯示數(shù)字或字符,必須對數(shù)字或字符進(jìn)行編碼。因此為 LED 顯示器提供的編碼正好是一個字節(jié)。而我們經(jīng)常采用的是八段顯示器,既 LED 顯示器中有八個發(fā)光二極管,分別代表“a,b,c,d,e,f,g”七個字段和一個全小數(shù)點(diǎn)“ dp”。共陰極 LED 顯示器的發(fā)光二極管的負(fù)極接地,當(dāng)發(fā)光二極管的正極為高電平時,發(fā)光二極管被點(diǎn)亮。LED 顯示器的結(jié)構(gòu)和封裝如圖所示。當(dāng)然 LED 的發(fā)光的強(qiáng)度除了與工作電流有關(guān),還與 LED 的型號有關(guān)。 DS18B20 的軟件設(shè)計(jì)DS18B20 的一線工作協(xié)議流程是:初始化→ROM 操作指令→存儲器操作指令→數(shù)據(jù)傳輸。故主機(jī)控制 DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對 DS18B20 進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 ROM 指令,最后發(fā)送 RAM 指令,這樣才能對 DS18B20 進(jìn)行預(yù)定的操作。 往 DS18B20 寫數(shù)據(jù) 當(dāng)主機(jī)把數(shù)據(jù)線從高邏輯電平拉至低邏輯電平時,產(chǎn)生寫時序。所有時序必須有最短為 60 微秒的持續(xù)期,在各寫周期之間必須有最短為 1 微秒的恢復(fù)時間。如果線為高電平寫 1 就發(fā)生,μ如果線為低電平便發(fā)生寫 0。其程序如下:void writemandtods18b20(unsigned char mand){ unsigned char i。i8。 0x01)==0) //寫 0 { DQ=0。 DQ=1。 _nop_()。 _nop_()。 DQ=1。 } mand=_cror_(mand,1)。當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉至低電平時產(chǎn)生讀時序。來自DS18B20的輸出數(shù)據(jù)在讀時間片下降沿之后15微秒有效。所有讀時序的最短持續(xù)期限為60微秒,各個讀時序之間必須有最短為1微秒的恢復(fù)時間。 bit s。 temp=0。i8。//循環(huán)右移一位 DQ=0。 _nop_()。 s=DQ。 if(s==1) { temp=temp|0x80。//接收 0 } } return(temp)。AT89C51 單片機(jī)中斷處理過程:中斷響應(yīng)條件和時間是中斷源有中斷請求;此中斷源的中斷允許位為 1;CPU 開中斷(即 EA=1) 。 定時器方式控制寄存器 TMOD 用于設(shè)置 Tn 的功能模式和工作方式以及門控制信號你,只能字節(jié)尋址,字節(jié)地址為 89H,高四位用于定時器 T1,低四位用于定時器T0。復(fù)位時,TMOD 所有位均為 0。//定時器 0 方式 1 TH0=(65536500)/256。 ET0=1。//CPU 開放中斷 while(resetpulse())。 //跳過讀序號列號的操作 writemandtods18b20(0x44)。//啟動溫度轉(zhuǎn)換 TR0=1。在溫度轉(zhuǎn)換和讀取溫度前,首先要通過產(chǎn)生復(fù)位脈沖初始化 DS18B20,然后 DS18B20 發(fā)出應(yīng)答脈沖,當(dāng)單片機(jī)接收到應(yīng)答脈沖后才開始后續(xù)的操作。最后由數(shù)碼管顯示出采集的溫度。在本系統(tǒng)中,采用模塊化、層次化設(shè)計(jì)。 本系統(tǒng)的優(yōu)良功能可實(shí)現(xiàn)對溫度的全面、實(shí)時、自動的檢測,及時發(fā)現(xiàn)問題,采取有效防護(hù)措施。例如系統(tǒng)硬件電路的設(shè)計(jì)還需進(jìn)一步簡化,可以加入溫度報(bào)警的程序等。參考文獻(xiàn)[1] ,2022[2] 廖冬初,[M].華中科技大學(xué)出版社應(yīng)用延時函數(shù)用define uint unsigned int define uchar unsigned char define Disdata P1 //段碼輸出口 //sbit LEDC=P2^0。unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0xf4}。//*******溫度小數(shù)部分用查表法**********//uchar data temp_data[2]={0x00,0x00}。//顯示單元數(shù)據(jù),前 4 個存數(shù)據(jù),第五個運(yùn)算暫存用 // //uchar data wei[]={0xf7,0xfb,0xfd,0xfe,0xef}。 sbit DQ=P2^1。for(。t) {for(e=110。e)。t0。}/***********************顯示函數(shù)**********/scan(){ //P1=0x39。 //選擇數(shù)碼管 4//Delay(2)。 //消隱 P1=table[display[0]]。 //選擇數(shù)碼管 4Delay(2)。 //消隱 P1=table[display[1]]|0x80。 //選擇數(shù)碼管 3Delay(2)。 // 消隱 P1=table[display[2]]。 //選擇數(shù)碼管 2Delay(2)。 // 消隱 if(display[3]!=0){ //如果最高位為 0,不顯示P1=table[display[3]]。 //選擇數(shù)碼管 1Delay(2)。 // 消隱 } /*if(display[3]!=0)i=1。i4。 //段碼P0=wei[i]。//P0=0Xff。LEDC=0。while(presence){while(presence){DQ=1。_nop_()。 //delay0(50)。 // delay0(6)。 // presence=0 繼續(xù)下一步 }delay0(45)。}DQ=1。for (i=8。 i) //{DQ=1。_nop_()。_nop_()。_nop_()。_nop_()。0x01。 //66usval=val/2。delay0(1)。uchar value = 0。i0。_nop_()。value=1。 //_nop_()。_nop_()。 //4usDQ = 1。_nop_()。_nop_()。delay0(6)。return(value)。 //
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1