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

正文內(nèi)容

基于51單片機及ds18b20溫度傳感器的數(shù)字溫度計設(shè)計(留存版)

2025-08-08 16:40上一頁面

下一頁面
  

【正文】 值二進制輸出十六進制輸出+125℃0000 0111 1101 000007D0h+85℃0000 0101 0101 00000550h+℃0000 0001 1001 00010191h+℃0000 0000 1010 001000A2h+℃0000 0000 0000 10000008h0℃0000 0000 0000 00000000h℃1111 1111 1111 1000FFF8h℃1111 1111 0101 1110FF5Eh℃1111 1110 0110 1111FF6Fh55℃1111 1100 1001 0000FC90hDS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。顯示是用4位共陰極LED數(shù)碼管實現(xiàn)溫度顯示,LED數(shù)碼管的優(yōu)點是顯示數(shù)字比較大,查看方便。 基于51單片機及DS18B20溫度傳感器的數(shù)字溫度計設(shè)計 基于51單片機及DS18b20溫度傳感器的數(shù)字溫度計設(shè)計摘 要本設(shè)計采用的主控芯片是ATMEL公司的AT89S52單片機,數(shù)字溫度傳感器是DALLAS公司的DS18B20。測溫傳感器使用的是DS18B20,DS18B20是一種可組網(wǎng)的高精度數(shù)字式溫度傳感器,由于其具有單總線的獨特優(yōu)點,可以使用戶輕松地組建起傳感器網(wǎng)絡(luò),并可使多點溫度測量電路變得簡單、可靠。圖22 DS18B20的封裝形式DS18B20的64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。表22是一部分溫度值對應(yīng)的二進制溫度數(shù)據(jù)。采用寄生電源供電方式時VDD端接地。為操作各器件作好準備。當(dāng)主機把數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫時序。具體的程序流程圖如圖35所示。在以后的學(xué)習(xí)中,我們會更加注重實踐方面的鍛煉,多提高自己的動手實踐能力。 //獲取溫度函數(shù) keyscan()。}void ds18b20_delayms(uint t) //延時1ms左右{ uint i,j。 //準備讀; for(i=8。 _nop_()。 //DS18B20初始化 ds18b20_write(0xcc)。 if (i==0) { f=0。 //向DS18B20發(fā)跳過讀ROM命令 ds18b20_write(0x4e)。} if((temp+temp_d*)max )//當(dāng)測量值小于最大值時不報警 {w=0。 //uchar i=0。 //每按一下K2溫度上調(diào)1 if(a==1){if(count125) count=125。}/*****************************讀鍵盤函數(shù)******************************/void keyscan(){ if(key1==0) { if(v2==0) beer=0。 //a=1選擇顯示上限溫度 case 2:a=2。 if(key4==0) { beer=1。 keyscan_delay(10)。 } } } }endif/*********************************************************************** 程序名。 //設(shè)定定時器1工作在方式1, TH0=0x3c。}else{beer=1。 for(i=0。 if(s1==1) selsct_1(f_min,min)。 wei3=1。 bit f=0。 break。 break。//第二個數(shù)碼管顯示 wei1=0。 wei4=1。 if(s1==1) selsct_2(f_min,min)。//若s=0則顯示第二個數(shù)碼管,否則不顯示 else P0=temperature3[0]。 else P0=temperature1[k%100/10]。led=1。i) for(j=120。 if(key4==0) { beer=1。 //開定時器1開始定時一分鐘左右 s1=1。min=temp_change(min,f_min)。 //存儲調(diào)整后的上下限報警溫度 } switch(i) //顯示選擇 { case 0:a=0。}//當(dāng)溫度值達到0時不再調(diào) if(a==2){if(count0) count=0。}/****************************溫度調(diào)節(jié)函數(shù)******************************/int temp_change(int count,bit f) //上下限溫度調(diào)整{ if(key2==0) //判斷K2是否按下 { if(v2==0)beer=0。 __keyscan_H__ * 功 能: ds18b20鍵盤頭文件,通過鍵盤設(shè)定設(shè)定上下限報警溫度* 編程者:zicreate* 編程時間:2009/10/2 **********************************************************************/ifndef __keyscan_H__ //定義頭文件define __keyscan_H__sbit key1=P2^2。} //當(dāng)測量值大于最小值且小于最大值時不報警 } if(f==1){w=1。 }}/*************************存儲極限溫度函數(shù)***************************/ void store_t() { if(f_max==1) //若上限溫度為負,將上限溫度轉(zhuǎn)換成有符號數(shù)(最高1是負,0是正) max=max+0x80。min=(min0x80)。//寫啟動DS18B20進行溫度轉(zhuǎn)換命令,轉(zhuǎn)換結(jié)果存入內(nèi)部RAM if(f==1) { //首次啟動DS18B20進行溫度轉(zhuǎn)換需要500ms,若轉(zhuǎn)換時間不夠就出錯,讀出的是85度的錯誤值。 for(i=8。 //延時,等待上拉電阻拉高總線 DQ=1。 //測量溫度的標志位,0’表示“正溫度”‘1’表示“負溫度”)bit f_max=0。 //關(guān)閉LED燈 timer1_init(0)。經(jīng)過此次的硬件制作與調(diào)試,鍛煉了我們的動手實踐能了。圖34 DS18B20程序流程圖 顯示程序設(shè)計顯示電路是由四位一體的數(shù)碼管來實現(xiàn)的。DS18B20的初始化時序如圖32所示。如圖31 DS18B20的操作流程 DS18B20傳感器的指令表DS18B20傳感器的操作指令如表31所示。原理圖如圖24所示。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第2字節(jié)。用動態(tài)掃描的方式進行顯示,這樣能有效節(jié)省I/O口。在顯示實時測量溫度的模式下還可以通過查詢按鍵查看設(shè)定的上下限報警溫度。51單片機是最常用的一種單片機,而且在高校中都以51單片機教材為藍本,這使得51單片機成為初學(xué)單片機技術(shù)人員的首選。圖21 溫度計電路總體設(shè)計框圖AT89S52單片機是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機,片內(nèi)含有8kb的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準8051指令系統(tǒng)及引腳。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值,該字節(jié)各位的定義如表21所示。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。圖26 顯示電路 按鍵電路設(shè)計按鍵電路是用來實現(xiàn)調(diào)節(jié)設(shè)定報警溫度的上下限和查看上下報警溫度的功能。結(jié)果存入內(nèi)部9字節(jié)RAM中。對于主機產(chǎn)生寫“1”時序時,數(shù)據(jù)線必須先被拉至低電平,然后被釋放,使數(shù)據(jù)線在寫時序開始之后15μs內(nèi)拉至高電平。5電子綜合設(shè)計體會經(jīng)過將近一個月的設(shè)計、焊接、編程、調(diào)試,我們終于完成了數(shù)字溫度計的設(shè)計,基本能夠達到設(shè)計要求,而且還設(shè)計了一些其他功能,比可以開啟或消除按鍵音功能,開機動畫功能,查看報警上下限溫度功能。在調(diào)節(jié)上下限溫度模式下,K2是實現(xiàn)加1功能,* K1是實現(xiàn)減1功能,K3是用來設(shè)定上下限溫度正負的。 __ds18b20_h__* 功 能: DS18B20的c51編程頭文件 * 編程者:zicreate* 編程時間:2009/10/2 * 說 明:用到的全局變量是:無符號字符型變量temp(測得的溫度整數(shù)部分),temp_d * (測得的溫度小數(shù)部分),標志位f(測量溫度的標志位‘0’表示“正溫度”‘1’表* 示“負溫度”),標志位f_max(上限溫度的標志位‘0’表示“正溫度”、‘1’表* 示“負溫度”),標志位f_min(下限溫度的標志位‘0’表示“正溫度”、‘1’表* 示“負溫度”),標志位w(報警標志位‘1’啟動報警‘0’關(guān)閉報警)。j)。_nop_()。 DQ=1。 //讀內(nèi)部RAM (TH) min=ds18b20_read()。 //小數(shù)部分 } else { f=1。 //DS18B20初始化 ds18b20_write(0xcc)。TR1=1。 //v1=1時定時1250ms時間到自動關(guān)閉報警上下限查看功能bit v2=0。} } } while(key2==0)。//在上下溫度調(diào)節(jié)功能模式下選擇K4的調(diào)整上下限溫度正負的功能 v=1。 } if(a==1amp。}//當(dāng)溫度大于55度時,只能設(shè)定為正溫度 } while(key4==0)。 //下限顯示不閃爍,顯示1s自動退出 } while(key3==0)。 //uchar num=0。 // 局部變量t為1啟動定時器1,為0關(guān)閉定時器1}/**************************定時器1中斷函數(shù)*****************************/void timer1() interrupt 3{ TH0=0x3c。 //定時1s時間到時自動關(guān)閉報警上下限查看功能 }}/****************
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1