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

正文內(nèi)容

基于單片機的數(shù)字溫度記錄儀設計畢業(yè)設計-資料下載頁

2025-06-01 22:33本頁面
  

【正文】 25 附件 1 電路原理圖 26 附錄 2 程序代碼 /******************************************************************** * 程序名 。 基于 DS18B20 的測溫系統(tǒng) * 功 能: 實時測量溫度,超過上下限報警,報警溫度可手動調(diào)整。 K1 是用來 * 進入上下限調(diào)節(jié)模式的 ,當按一下 K1 進入上限調(diào)節(jié)模式,再按一下進入下限 * 調(diào)節(jié)模式。在正常模式下,按一下 K2 進入查看上限溫度模式, * 按一下 K3 進入查看下限溫度模式,在調(diào)節(jié)上下限 * 溫度模式下, K2 是實現(xiàn)加 1 功能, K1 是實現(xiàn)減 1 功能, K3 是用來設定上下限溫度正負的 , K4 是退出 。 ******************************************************************** include include define uint unsigned int define uchar unsigned char uchar max_int=0x00,max_dot=0x00,min_int=0x00,min_dot=0x00。 bit s=0,s1=0。 include include include /***********************主函數(shù) ************************/ void main() { beer=0。 led=1。 IT1=1。 EX1=0。 EA=1。 timer1_init(0)。 get_temperature(1)。 while(1) { keyscan()。 get_temperature(0)。 keyscan()。 display(temp,temp_d*)。 alarm()。 keyscan()。 } } /******************************************************************** * 程序名 。 __ds18b20_h__ * 功 能: DS18B20 的 c51 編程頭文件 * 說 明:用到的全局變量是:無符號字符型變量 temp(測得的溫度整數(shù)部分 ),temp_d * (測得的溫度小數(shù)部分 ),標志位 f(測量溫度的標志位 ?0?表示 “正溫度 ”?1?表 * 示 “負溫度 ”),標志位 f_max(上限溫度的標志位 ?0?表示 “正溫度 ”、 ?1?表 * 示 “負溫度 ”),標志位 f_min(下限溫度的標志位 ?0?表示 “正溫度 ”、 ?1?表 * 示 “負 溫度 ”),標志位 w(報警標志位 ?1?啟動報警 ?0?關閉報警 )。 *********************************************************************/ifndef __ds18b20_h__ 27 define __ds18b20_h__ define uint unsigned int define uchar unsigned char sbit DQ= P2^3。 sbit beer=P3^0。 sbit led=P3^1。 uchar temp=0。 //溫度的整數(shù)部分 uchar temp_d=0。 //溫度的小數(shù)部 uchar n。 bit f=0,f_max=0,f_min=0。w=0。 /***********************延時子函數(shù) ************************/ void ds18b20_delayus(uint t) { while(t)。 } void ds18b20_delayms(uint t) { uint i,j。 for(i=t。i0。i) for(j=120。j0。j)。 } /******************ds18b20 初始化函數(shù) *********((*********/ void ds18b20_init() // DS18B20 初始化 { DQ=1。 DQ=0。 //控制器向 DS18B20 發(fā)低電平脈沖 ds18b20_delayus(30)。 //延時 480μ s DQ=1。 //控制器拉高總線, while(DQ)。 //等待 DS18B20 拉低總線,在 60240μ s 之間 ds18b20_delayus(20)。 //延時,等待上拉電阻拉高總線 DQ=1。 //提升數(shù)據(jù)線,準備數(shù)據(jù)傳輸; } /******************ds18b20 字節(jié)讀函數(shù) ******************/ uchar ds18b20_read() //DS18B20 字節(jié)讀取 { uchar i。 uchar d = 0。 DQ = 1。 //準備讀; for(i=8。i0。i) { d = 1。 //低位先發(fā); DQ = 0。 _nop_()。 _nop_()。 _nop_()。 28 DQ = 1。 //必須寫 1,否則讀出來的將是不預期的數(shù)據(jù); if(DQ) //在 12us 處讀取數(shù)據(jù); d |= 0x80。 ds18b20_delayus(10)。 } return d。 } /******************ds18b20 字節(jié)寫函數(shù) ******************/ void ds18b20_write(uchar d) // ds18b20 字節(jié)寫 { uchar i。 for(i=8。i0。i) { DQ=0。 _nop_()。 _nop_()。 _nop_()。 DQ=damp。0x01。 ds18b20_delayus(5)。 DQ=1。 d = 1。 } } /*********************獲取溫度函數(shù) **********************/ void get_temperature(bit f) //得到整數(shù)的溫度值 { uchar a=0,b=0,c=0,d=0。 uint i。 ds18b20_init()。 //DS18B20 初始化 ds18b20_write(0xcc)。 //向 DS18B20 發(fā) SKIP ROM 命令 ds18b20_write(0x44)。 //啟動 DS18B20 進行溫度轉(zhuǎn)換,結果存入內(nèi)部 RAM ds18b20_delayms(1)。 ds18b20_init()。 //DS18B20 初始化 ds18b20_write(0xcc)。 //向 DS18B20 發(fā) SKIP ROM 命令 ds18b20_write(0xbe)。 //讀內(nèi)部 RAM 中 9 字節(jié)的內(nèi)容命令 a=ds18b20_read()。 //讀內(nèi)部 RAM ( LSB) b=ds18b20_read()。 //讀內(nèi)部 RAM ( MSB) if(f==1) { max_int=ds18b20_read()。 //讀內(nèi)部 RAM ( LSB) min_int=ds18b20_read()。 } if((max_intamp。0x80)==0x80) {f_max=1。max_int=(max_int0x80)。} 29 if((min_intamp。0x80)==0x80) {f_min=1。min_int=(min_int0x80)。} i=b。 i=4。 if (i==0) { f=0。 //i 為 0,正溫度 ,設立正溫度標記 temp=((a4)|(b4))。 //整數(shù)部分 a=(aamp。0x0f)。 temp_d=a。 //小數(shù)部分 } else { f=1。 //i 為 1,負溫度 ,設立負溫度標記 a=~a+1。 b=~b。 temp=((a4)|(b4))。 //整數(shù)部分 a=(aamp。0x0f)。 //小數(shù)部分 temp_d=a。 } } void store_t() { if(f_max==1) max_int=max_int+0x80。 if(f_min==1) min_int=min_int+0x80。 ds18b20_init()。 //DS18B20 初始化 ds18b20_write(0xcc)。 //向 DS18B20 發(fā) SKIP ROM 命令 ds18b20_write(0x4e)。 ds18b20_write(max_int)。 ds18b20_write(min_int)。 ds18b20_write(0xff)。 ds18b20_init()。 //DS18B20 初始化 ds18b20_write(0xcc)。 //向 DS18B20 發(fā) SKIP ROM 命令 ds18b20_write(0x48)。 } /**********************溫度超限報警函數(shù) ***********************/ void alarm() { if(f_max==0) { if(f_min==0) { if(f==0) { if((temp+temp_d*)=min_int||(temp+temp_d*)=max_int) {w=1。TR1=1。} 30 if((temp+temp_d*)max_intamp。amp。(temp+temp_d*)min_int) {w=0。} } if(f==1){w=1。TR1=1。} } if(f_min==1) { if(f==0) { if((temp+temp_d*)=max_int) {w=1。TR1=1。} if((temp+temp_d*)max_int ) {w=0。} } if(f==1) { if((temp+temp_d*)=min_int) {w=1。TR1=1。} if((temp+temp_d*)min_int ) {w=0。} } } } if(f_max==1) { if(f_min==1) { if(f==1) { if((temp+temp_d*)=max_int||(temp+temp_d*)=min_int) {w=1。TR1=1。} if((temp+temp_d*)min_intamp。amp。(temp+temp_d*)max_int) {w=0。} } if(f==0){w=1。TR1=1。} } } } endif /******************************************************************* * 程序名 。 __keyscan_H__ * 功 能: ds18b20 鍵盤頭文件,通過鍵盤設定設定上下限報警溫度 *******************************************************************/ ifndef __keyscan_H__ define __keyscan_H__ sbit key1=P3^2。 31 sbit key2=P3^1。 sbit key3=P3^0。 sbit key4=P3^3。 uchar a=0,i=0。 bit
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1