資源簡介
用DS18B20溫度傳感器檢測溫度并顯示在數(shù)碼管上,當(dāng)溫度超過32度時自動報警(蜂鳴器響)

代碼片段和文件信息
#include???????
#include?? //包含_nop_()函數(shù)定義的頭文件
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?beep=P3^4;
sbit?JDQ=P2^4;
sbit?we1=P2^0;
sbit?we2=P2^1;
sbit?we3=P2^2;
sbit?we4=P2^3;
uchar?shigex1x2;
uchar?limith=32limitl=30temp;
uchar?code?tab[]?=?{0xc00xf90xa40xb00x990x920x820xf80x800x90};??//不帶小數(shù)點(diǎn)
uchar?code?tab1[11]={0X400X790X240X300X190X120X020X780X000X100xc6};??//帶點(diǎn)的?????//0x39是C
uchar?TL;?????
uchar?TH;????
uchar?TN;??????
uchar?TD;???????
?void?delaynms(uchar?n)
?{
???uchar?ij;
for(i=0;i for(j=330;j>0;j--);
?}
sbit?DQ=P3^5;
uchar?time;???
bit?Init_DS18B20(void)
{
?bit?flag;?????
?DQ?=?1;???????
?for(time=0;time<2;time++)?
?????;
?DQ?=?0;???????
?for(time=0;time<200;time++)??
?????;????????
?DQ?=?1;????????
??for(time=0;time<10;time++)
?????;???????
?flag=DQ;????????????
?for(time=0;time<200;time++)??
??????;
?return?(flag);
}
uchar?ReadOneChar(void)
?{
uchar?i=0;
uchar?dat;? ?
for?(i=0;i<8;i++)
?{
???
???DQ?=1;??????
???_nop_(); ??? ?
???DQ?=?0;??????
???dat>>=1;
???_nop_();???? ???
???DQ?=?1;???????
???for(time=0;time<2;time++)
?????????????;?
if(DQ==1)??????????
??????dat|=0x80;?
else
dat|=0x00;
?????? ?
???for(time=0;time<8;time++)
?????? ;????????
????} ????????????????????
?return(dat);???? ?
}
WriteOneChar(uchar?dat)
{
uchar?i=0;
for?(i=0;?i<8;?i++)
?{
??DQ?=1;????????
??_nop_(); ????
??DQ=0;?????????????????
??DQ=dat&0x01;??
????????????????????????
?for(time=0;time<10;time++)
?????;???????????
??DQ=1;????????? ????
??for(time=0;time<1;time++)
??;??????????
??dat>>=1;??????
?}
??for(time=0;time<4;time++)
??????????????;??????
}
?
void?ReadyReadTemp()
{
????????Init_DS18B20();????
WriteOneChar(0xCC);
WriteOneChar(0x44);???
????for(time=0;time<100;time++)
????????????; ???????
Init_DS18B20();????
WriteOneChar(0xCC);?
WriteOneChar(0xBE);?
}
void?display_temp1(uchar?x)
{
?uchar?kl;?????
k=x/10;???? ???????
l=x%10;?????????????
P0=0xff;
we1=0;
P0=tab[k];
delaynms(10);
we1=1;
P0=0xff;
we2=0;
P0=tab1[l];
delaynms(10);
we2=1;
P0=0xff;
delaynms(50);??????????????
?}
?void?display_temp2(uchar?x)
{
?uchar?ab;
a=x/10;
b=x%10;
P0=0xff;
we3=0;
P0=tab[b];
delaynms(10);
we3=1;
P0=0xff;
we4=0;
P0=tab1[10];
delaynms(10);
we4=1;
P0=0xff;
delaynms(50);?????????????
}
void?tempdisplay()
{
uchar?w0w1;
ReadyReadTemp();?????
????TL=ReadOneChar();????
TH=ReadOneChar();????
TN=TH*16+TL/16;??????
????TD=(TL%16)*10/16;???
w0=TN<<4;
w1=TD>>4; ?????????????????
temp=w0+w1;
????display_temp1(TN);???
????display_temp2(TD);???
????????delaynms(10);???
}
?void?main(void)
?{
JDQ=1;
??beep=0; ??
??Init_DS18B20();
??delaynms(5);???????????
???while(1)???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????186992??2010-07-17?08:01??程序-----設(shè)置溫度上下限并報警(32)度\Backup?Of?STC89C52共陽實驗板.DBK
?????文件?????191386??2010-07-17?09:03??程序-----設(shè)置溫度上下限并報警(32)度\Last?Loaded?STC89C52共陽實驗板.DBK
?????文件?????182058??2010-07-17?22:04??程序-----設(shè)置溫度上下限并報警(32)度\STC89C52共陽實驗板.DSN
?????文件???????1054??2010-07-19?17:17??程序-----設(shè)置溫度上下限并報警(32)度\STC89C52共陽實驗板.PWI
?????文件???????3322??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警
?????文件???????3209??2010-07-19?21:40??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.c
?????文件???????1843??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.hex
?????文件?????????72??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.lnp
?????文件???????7070??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.LST
?????文件??????14915??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.M51
?????文件???????4969??2010-07-18?09:46??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.OBJ
?????文件???????1024??2010-07-19?21:40??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.Opt
?????文件????????218??2010-07-19?21:40??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.plg
?????文件???????2102??2010-07-19?21:38??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警.Uv2
????.......??????1203??2010-07-19?21:38??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警_Opt.Bak
????.......??????1694??2010-07-18?20:38??程序-----設(shè)置溫度上下限并報警(32)度\設(shè)置溫度上下限并報警_Uv2.Bak
?????目錄??????????0??2010-07-19?21:40??程序-----設(shè)置溫度上下限并報警(32)度
-----------?---------??----------?-----??----
???????????????603131????????????????????17
評論
共有 條評論