91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 12KB
    文件類型: .c
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-11
  • 語言: 其他
  • 標(biāo)簽: 單片機(jī)??

資源簡介

控制蔬菜大棚的溫度在一定的范圍內(nèi)變化,過高或者過低就進(jìn)行報(bào)警

資源截圖

代碼片段和文件信息





#include
#include





sbit?DQ?=?P2^5;???????????????? //定義ds18b20通信端口
unsigned?char?result_18b20;?????//ds18b20初始化結(jié)果
signed?int?temKLKHKL1KH1;???//溫度






sbit?sda=P2^7;?????????????????//串行數(shù)據(jù)/地址
sbit?scl=P2^6;?????????????????//串行時(shí)鐘




sbit?P2_0=P2^0;????????????????//數(shù)碼管選擇
sbit?P2_1=P2^1;
sbit?P2_2=P2^2;

sbit?P2_3=P2^3;????????????????//“負(fù)號“數(shù)碼管控制
sbit?P2_4=P2^4;

sbit?P3_2=P3^2;????????????????//控制紅色發(fā)光二極管
sbit?P3_3=P3^3;????????????????//控制藍(lán)色發(fā)光二極管
?
unsigned?char?baishige;?????//數(shù)據(jù)的百位?十位?個(gè)位
unsigned?int?z=0;?????????????//用于控制那個(gè)藍(lán)色按鈕按下是偶數(shù)次還是奇數(shù)次








/***********ds18b20延遲子函數(shù)(晶振12MHz)延時(shí)時(shí)間為n乘以15us****************/?

void?delay_18B20(unsigned?int?n)
{
do{
???_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???????_nop_();
???n--;
???}while(n);
}


/***************************ds18b20初始化函數(shù)*********************************/

void?Init_DS18B20(void)?
{
??????????DQ?=?0;????????????????//單片機(jī)將DQ拉低
??delay_18B20(36);????????//延時(shí)540us
??DQ?=?1;?????????????????//拉高總線
??delay_18B20(6);?????????//延時(shí)90us
??result_18b20=DQ;????????//稍做延時(shí)后如果result_18B20=0則初始化成功result_18B20=1則初始化失敗
??delay_18B20(18);????????//延時(shí)270us

}



/***************************ds18b20讀一個(gè)字節(jié)**********************************/??

unsigned?char?ReadOneChar(void)
{
unsigned?char?ij;
????unsigned?char?dat?=?0;
for?(i=8;i>0;i--)
?{
??dat>>=1;
??????????DQ?=?0;?????????????????//?拉低總線產(chǎn)生讀信號
??for(j=2;j>0;j--);???????//延時(shí)4us
??DQ?=?1;?????????????????//?釋放總線準(zhǔn)備讀數(shù)據(jù)
??????????for?(j=4;j>0;j--);??????//延時(shí)8微秒讀數(shù)據(jù)
??if(DQ==1)
??dat|=0x80;
??delay_18B20(4);
??????????DQ?=?1;????????????????//拉高總線準(zhǔn)備下一位數(shù)據(jù)的讀取.
?}
? return(dat);?????????????????//返回讀到的數(shù)據(jù)
}

/************************ds18b20寫一個(gè)字節(jié)***********************************/??

void?WriteOneChar(unsigned?char?dat)
{
? unsigned?char?ij;
? for?(i=8;?i>0;?i--)
? {
?? DQ?=?0;????????????????//拉低總線產(chǎn)生寫信號
????????for?(j=2;j>0;j--);?????//延時(shí)4us
? DQ?=?dat&0x01;?????????//發(fā)送1位
???? delay_18B20(5);????????//延時(shí)75us
? DQ?=?1;????????????????//釋放總線等待總線恢復(fù)
???? dat>>=1;???????????????//準(zhǔn)備下一位數(shù)據(jù)的傳送
?}
}


/*******************讀取ds18b20當(dāng)前溫度,tem中為測得的溫度值****************************/

void?ReadTemperature(void)
{
unsigned?char?a=0b=0;
float?x;
????signed?int?t=0;

Init_DS18B20();?????????//初始化
WriteOneChar(0xCC);???? //跳過讀序號列號的操作
WriteOneChar(0x44);? //啟動(dòng)溫度轉(zhuǎn)換
Init_DS18B20();?????????//初始化
WriteOneChar(0xCC);? //跳過讀序號列號的操作
WriteOneChar(0xBE);? //讀取溫度寄存器等,前兩個(gè)就是溫度

a=ReadOneChar();???? //讀取溫度值低位
b=ReadOneChar();??? //讀取溫度值高位

t=b;
t=t<<8;
t=t+a;?????????????????//將溫度高低位合成
????

if(t<0)????????????????//判斷溫度t為正還是負(fù)
{t=-t;
?x=t*0.0625;???????????//當(dāng)前采集溫度值除16得實(shí)際溫度值
?????tem=x*10+0.5;?????????//將溫度放大十倍,并精確到小數(shù)點(diǎn)后一位

評論

共有 條評論

相關(guān)資源