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

正文內容

高精度溫度檢測器(編輯修改稿)

2025-08-03 16:20 本頁面
 

【文章內容簡介】 保留 應用設計微處理器采用二線串行數字接口和溫濕度傳感器芯片SHT11進行通信,所以硬件接門設計非常簡單;然而,通信協(xié)議是芯片廠家自己定義的,所以在軟件設計中,需要用微處理器通用I/O口模擬通信協(xié)議。硬件設計SHT11通過二線數字串行接口來訪問,所以硬件接口電路非常簡單。需要注意的地方是:DATA數據線需要外接上拉電阻,時鐘線SCK用于微處理器和SHT11之間通信同步,由于接口包含了完全靜態(tài)邏輯,所以對SCK最低頻率沒有要求;,SCK頻率最高為10MHz, 時,SCK最高頻率則為1MHz。 所示。圖 微處理器和 SHT11 之間的硬件連接圖(1)軟件設計微處理器和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為時鐘線,DATA為數據線。該二線串行通信協(xié)議和I2C協(xié)議是不兼容的。在程序開始,微處理器需要用一組“啟動傳輸”時序表示數據傳輸的啟動。當SCK時鐘為高電平時,DATA翻轉為低電平;緊接著SCK變?yōu)榈碗娖?,隨后又變?yōu)楦唠娖?;在SCK時鐘為高電平時,DATA再次翻轉為高電平。圖 。其中,陰影部分為SHT11控制總線。主機發(fā)出啟動命令,隨后發(fā)出一個后續(xù)8位命令碼,該命令碼包含3個地址位(芯片設定地址為000)和5個命令位;發(fā)送完該命令碼,將DATA總線設為輸入狀態(tài)等待SHT11的響應;SHT11接收到上述地址和命令碼后,在第8個時鐘下降沿,將DATA下拉為低電平作為從機的ACK;在第9個時鐘下降沿之后,從機釋放DATA(恢復高電平)總線;釋放總線后,從機開始測量當前濕度,測量結束后,再次將DATA總線拉為低電平;得知濕度測量已經結束,給出SCK時鐘信號;從機在第8個時鐘下降沿,先輸出高字節(jié)數據;在第9個時鐘下降沿,主機將DATA總線拉低作為ACK信號。然后釋放總線DATA;在隨后8個SCK 周期下降沿,從機發(fā)出低字節(jié)數據;接下來的SCK下降沿,主機再次將DATA總線拉低作為接收數據的ACK信號;最后8個SCK下降沿從機發(fā)出CRC校驗數據,主機不予應答(NACK)則表示測量結束。S地址和命令ACK測量數據(高)ACK數據(低)ACKCRCMACK圖 SHT11 濕度測試時序圖由于微處理器通過二線串行數字接口訪問濕度傳感器SHT11,而訪問協(xié)議是芯片生產商定義的,所以需要用通用I/O口模擬該通信協(xié)議。我們選用Atmel公司的微處理器ATmega128。通過對I/O口寄存器的編程,該處理器的I/O口可以根據需要設置成輸入、輸出、高阻等狀態(tài)。這為模擬該通信協(xié)議提供了條件。在軟件實現過程中,通過宏定義來實現I/O口狀態(tài)的改變。define set_data_0() DDRB|=(1PB5)。PORTBamp。=~(1PB5) //DATA 輸出 0define set_data_1() DDRB|=(1PB5)。PORTB|=(1PB5) //DATA 輸出 1define release_data_1() DDRBamp。=~(1PB5)//釋放總線,總 DATA 設為輸入狀態(tài),因為外接上拉電阻,DATA總線被上拉為高電平define set_sck_output() DDRB|=(1PB4) //設置 SCK 為輸出define set_sck_1() PORTB|=(1PB4) //SCK 輸出高電平define set_sck_0() PORTBamp。=~(1PB4) //SCK 輸出為低電平通過以上宏定義,可以實現SCK和DATA總線的各種輸入和輸出狀態(tài)。為了模擬該二線串行數字協(xié)議,還需要一個延時函數。WINAVR 庫函數提供了一個延時函_delay_loop_2(unsigned char s),該延時函數運行用4個時鐘周期,所以自定義延時1μs函數可以定義如下:define //系統(tǒng)晶振(頻率單位為 MHz)void delay_us(unsigned char us){_delay_loop_2((unsigned int)((us)*CPU_CRYSTAL/4))。//延時 1us 程序}基于以上宏定義和延時函數,可以方便地使SCK和DATA總線輸出持續(xù)一定時間的高電平或低電平, 所示的溫濕度傳感器SHT11的讀寫協(xié)議。(2)濕度線性補償和溫度補償SHT11可通過DATA數據總線直接輸出數字量濕度值。該濕度值稱為“相對濕度”,需要進行線性補償和溫度補償后才能得到較為準確的濕度值。由于相對濕度數字輸出特性呈一定的非線性,因此為了補償濕度傳感器的非線性,可按下式修正濕度值:RH linear = = C1 + C2 180。 SORH + C3 180。 SORH式中:RHlinear為經過線性補償后的濕度值,SORH為相對濕度測量值,CCC3 為線性補償系數。由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度25℃有所不同,所以對線性補償后的濕度值進行溫度補償很有必要。補償公式如下:RH true = (T 25) 180。 (t1 + t2 180。 SORH ) + RH linear式中:RHtrue為經過線性補償和溫度補償后的濕度值,T為測試濕度值時的溫度(℃),t1和t2為溫度補償系數。 濕度值溫度補償系數 (3)溫度值輸出由于SHT11是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實際溫度值可由下式算得:Temperature=d1+d2SOT式中:d1和d2為特定系數,d1的取值與SHT11工作電壓有關,d2的取值則與SHT11內部A/D轉換器采用的分辨率有關。 d1與工作電壓的對應關系表 d2 與分辨率的對應關系 (4)露點計算露點是一個特殊的溫度值,是空氣保持某一定濕度必須達到的最低溫度。當空氣的溫度低于露點時,空氣容納不了過多的水分,這些水分會變成霧、露水或霜。露點可以根據當前相對濕度值和溫度值計算得出,具體的計算公式如下:LogEW=+T/(+T)+log10(SORH)2Dp=(())/()式中:T為當前溫度值,SORH為相對濕度值,Dp為露點。 模塊功能介紹 復位電路部分這種復位電路的工作原理是:單片機的復位電路在剛接通電時,剛開始電容是沒有電的,電容內的電阻很低,通電后,5V 的電通過電阻給電容進行充電,電容兩端的電會由 0V 慢慢的升到 4V 左右(此時間很短一般小于 秒),RC 構成的微分電路在上電瞬間產生一個微分脈沖,其寬度大于兩個機器周期,89C51將復位。正因為這樣,復位腳的電由低電位升到高電位,引起了內部電路的復位工作,RST 端電壓慢慢下降,降到一定電壓值以后,即為低電平,單片機開始正常工作(這是單片機的上電復位,也叫初始化復位);當按下復位鍵時,電容兩端放電,電容又回到 0V 了,于是又進行了一次復位工作(這是手動復位原理)。圖 手動復位及晶振電路 傳感器電路部分此模塊是整個電路設計的信號采集及初步處理的模塊,由溫濕度傳感器芯片SHT11 構成,主要的功能結構在前面的芯片介紹中已有,這里不重新介紹。圖 SHT11 傳感器電路 顯示電路部分此模塊是由 LCD1604 芯片組成溫濕度顯示的電路部分,部分。LCD1604 是一個四行每行 16 字的液晶顯示屏,D0D7 接 P0 口,RS、RW、E接 、 起控制作用。圖 LCD1604 顯示及其連接電路 超限處理電路部分此部分電路是由 5 個發(fā)光二極管和一個蜂鳴報警器構成,分別是 D0、DDD4 和 D5,蜂鳴器接單片機的 口,發(fā)光二極管與單片機的連接部分如圖所示。D0、DDDD5 分別代表著發(fā)光、降溫、加熱、干燥和加濕,一旦傳感器測定的溫濕度超過設定的限額,就會產生不同的發(fā)光反應,起警示作用,同時蜂鳴報警器連續(xù)發(fā)出“滴” 的聲音。圖 超限處理警示電路部分圖 蜂鳴器電路 整體電路圖 圖 整體電路圖 軟件介紹編程軟件采用的是keil uvision2軟件,程序采用C語言編程。軟件部分經本人調試可以運行,能夠正確顯示結果。)主函數文件和9個h文件構成。H文件如下所示:;(8051的相關參數初始化);;(偽本征函數);(數學公式函數);(1604液晶顯示函數);(溫濕度采集計算函數);(限額報警函數) 主程序框圖:開始 單片機開機初始化LCD 初始化SHT11 初始化LCD 初始化DS1302 初始化SHT11 初始化DS1302 運行確定時間/日期SHT11 運行進行溫濕度采集與測量LCD 顯示實時溫濕度檢測溫濕度是否改變N等待主程序框圖第 28 頁 共 43 頁Y 溫濕度采集及處理框圖開始SHT11 初始化啟動 SHT11等待主機發(fā)送指令測量溫濕度溫濕度計算浮點數轉換并發(fā)送至主機復位SHT11溫濕度采集處理框圖第 29 頁 共 43 頁 LCD 顯示框圖開始初始化 LCD設置顯示位置顯示字符結束LCD顯示框圖 主函數解析:/***************************************************//***************************************************/includeincludeincludeincludeincludeincludeincludeincludeincludevoid Delay1ms(unsigned int count){unsigned int i,j。//延時函數for(i=0。icount。i++)for(j=0。j120。j++)。}main(){SYSTEMTIME CurrentTime。//定義時間日期結構體SHT_dat aa。//定義溫濕度測量處理結構體Init_12864()。//12864 的顯示*/Initial_DS1302()。 //DS1302 初始化*/第 30 頁 共 43 頁 LCD_Initial()。{GotoXY(0,0)。//LCD 初始化//LCD 顯示函數Print(Date:)。GotoXY(16,0)。Print(Temper:)。GotoXY(0,1)。Print(Time:)。GotoXY(16,1)。Print(Humidi:)。while(1){convert_SHT(amp。aa,TEMP)。convert_SHT(amp。aa,HUMI)。caculation_SHT(amp。aa)。float_convert(amp。aa)。doing_temp(amp。aa)。//溫度轉換//濕度轉換//溫度和濕度的補償//將浮點數轉換成整型,各個位的數分別保存//檢測溫度是否超限doing_humi(amp。aa)。//檢測濕度是否超限DS1302_GetTime(amp。CurrentTime)。DateToStr(amp。CurrentTime)。TimeToStr(amp。CurrentTime)。GotoXY(5,0)。//第一行顯示日期Print()。GotoXY(23,0)。Print()。GotoXY(28,0)。//第三行顯示溫度Print()。GotoXY(5,1)。//第二行顯示時間Print()。GotoXY(23,1)。Print()。GotoXY(28,1)。Print()。Delay1ms(300)。//第四行顯示濕度//延時}}}/***************************************************//***************************************************/第 31 頁 共 43 頁 整個軟件通過 C 語言編程,先在 Keil C51 集成開發(fā)環(huán)境下將編好的程序進行編譯、調試, :新建一個項目文件,然后新建一個 C 語言程序,并把新建的 C 語言程序加到項目中,然后編譯項目。(編譯的目的就是把我們能看懂的程序設計語言轉化為上面的機器語言, 文件)。第一步:建立您的第一個 C 項目(1)點擊 Project 菜單,選擇彈出的下拉式菜單中的 New Project,如圖圖 新建項目文件項目名稱,這里我們用“test“, “保存“,這是KEILuVision2 項目文件擴展名,以后我們可以直接點擊此文件以打開此項目(你安裝的軟件是 KEIL UV3,可能與圖略有不同)。(2)選擇所要的單片機,這里我們選擇常用的 Ateml 公司的 AT89C51。第 32 頁 共 43 頁 (3)首先我們要在項目中創(chuàng)建新的程序文件。如果您沒有現成的程序,那么就要新建一個程序文件。Fil
點擊復制文檔內容
數學相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1