ADC0809与18b20程序
ï??#include //包æ‹?ä??ä?ª52æ ‡å‡†å†…æ ?çš„å??æ–‡ä?? #include
#include
#define uchar unsigned char //å?šä?‰ä??ä?‹æ–?ä??ä??ç”? #define uint unsigned int
#define ulong unsigned long /********************************************/
sbit duan=P2^6;
sbit wei=P2^7;
sbit key=P1^0;
sbit adcs=P2^5;
sbit adwr=P3^6;
sbit adrd=P3^7;
sbit sd=P2^0;
sbit beep=P3^1;
sbit led0=P3^2;
sbit led1=P3^3;
sbit led2=P3^4;
sbit led3=P3^5;
///////////////////////////////////////////
uchar ge,shi,bai,temp0,flag�;
uchar code table[]={ox3f,ox06,ox5b,ox4f,ox66,
ox6d,ox7d,ox07,ox7f,ox6f};
uint temp;
float f_temp;
uint warn_l1=270;
uint warn_l2=250;
uint warn_h1=300;
uint warn_h1=320;
///////////////////////////////////
/***********************************************/
void display(uint temp_data)
{
uchar ge_data,shi_data,bai_data;
bai_data=temp_data/100 ;
temp_data=temp_data%100; //å –ä??è? ç?—
shi_data=temp_data/10 ;
temp_data=temp_data%10; //å –ä??è? ç?—
ge_data=temp_data;
bai_data=table[bai_data];
shi_data=table[shi_data];
ge_data =table[ge_data];
bai = bai_data;
shi = shi_data;
ge = ge_data ;
switch(flag)
{
case 0x00:
wei=1;
P0=0xfb;
wei=0;
duan=1;
P0=bai;
duan=0;
flag++;
break;
case 0x01:
wei=1;
P0=0xfd;
wei=0;
duan=1;
P0=shi;
duan=0;
flag++;
break;
case 0x02:
wei=1;
P0=0xfe;
wei=0;
duan=1;
P0=ge;
duan=0;
flag++;
break;
}
}
/****************ds18b20��化*************************/
void ds_init() {
uint i;
ds=0;
i=100;
while(i>0)i--; ds=1;
i=4;
while(i>0)i--;
}
/********************è??ä??ä??æ•?æ??***************************/
bit tempreadbit(void)
{
uint i;
bit dat;
ds=0;
i++;
ds=1;
i++;i++;
dat=ds;
i=8;
while(i>0)i--; return(dat);
}
/********************è??ä??ä?ªå?—节***************************/
uchar tempread(void) {
uchar i,j,dat; dat=0;
for(i=0;i<8;i--) {
j=tempreadbit(); dat=(j<<7)|(dat>>1); }
return(dat)
}
/********************å†?ä??ä?ªå?—节***************************/
void tempwrite(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=0;j<8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
ds=0;
i++;
i++;
ds=1;
i=8;while(i>0)i--;
}
else
{
ds=0;
i=8;
while(i>o)i--;
ds=1;
i++;i++;
}
}
}
/********************è??å –æ??åº?å??è??æ•?***************************/
void tempchange(void) {
ds_init();
delay_50us(2);
tempwrite(oxcc); tempwrite(ox44);
}
/*********************è??å?„å??å??ä??æ??åº?å??**************************/
uint get_temp() {
uchar a,b;
ds_init();
delay_50us(2);
tempwrite(oxcc); tempwrite(oxbb); a=tempread();
b=tempread();
temp=b;
temp<<=8;
temp=temp|a;
f_temp=temp*0.0625; temp=f_temp*10+0.5; f_temp=f_temp+0.05; return temp;
}
/*******************ç›?应æŠ?è??è??ç??****************************/
void warn(uint s,uchar led)
{
uchar i;
i=s;
beep=0;
P1=~led;
while(i--)
{
display(get_temp());
}
beep=1;
P1=0xff;
i=s;
while(i--)
{
display(get_temp);
}
}
/*******************æ??åº?å?„ç?†****************************/
void deal(uint m) {
uchar i;
if((m>warn_l2)&&(m<=warn_l1))
{
warn(40,0x01);
}
else if(m<=warn_l2)
{
warn(10,0x03);
}
else if((m=warn_h1))
{
warn(40,0x04);
}
else if(m>=warn_h2)
{
warn(10,0x0c);
}
else
{
i=40;
while(i--);
{
display(get_temp());
}
}
}
/********************adc0809***************************/
void ad()
{
uint b,value;
while(1)
{
adcs=0;
adwr=0;
delay_50us(2);
adcs=1;
adwr=1;
delay_50us(10);
adcs=0;
adrd=0;
delay_50us(1);
value=P1;//P1å??æ??adcèŠ?片DB1--DB8
display(value);
adrd=1;
adcs=1;
}
}
/*******************ä??å‡?æ•?****************************/
void main()
{
if(key==0)
{
ad();
/*while(1)
{
adcs=0;
adwr=0;
delay_50us(2);
adcs=1;
adwr=1;
delay_50us(10);
adcs=0;
adrd=0;
delay_50us(1);
display(b);
adrd=1;
adcs=1;
}*/
}
else
{
while(1)
{
tempchange();
for(i=10;i>0;i--)
{
display(get_temp());
}
deal(temp);
}
}
}
本文档为【ADC0809与18b20程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。