DS18B20温度传感器完整C程序.txt资料文档下载
《DS18B20温度传感器完整C程序.txt资料文档下载》由会员分享,可在线阅读,更多相关《DS18B20温度传感器完整C程序.txt资料文档下载(4页珍藏版)》请在冰豆网上搜索。
{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
ucharcodedis_7[12]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xff,0x02};
//����LED�����"
0"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
"
����"
-"
ucharcodescan_con[4]={0xf7,0xfB,0xfD,0xff};
//��ɨ�������
uchardatatemp_data[2]={0x00,0x00};
//�����¶
��ݷ�
uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};
//��ʾ��Ԫ���ݣ���4�����ݺ�һ����������
/*****************11us��ʱ����*************************/
voiddelay(uintt)
{
for(;
t>
0;
t--);
}
/****************��ʾɨ�躯��***************************/
scan()
chark;
for(k=0;
k<
4;
k++)//4λLEDɨ�����
Disdata=dis_7[display[k]];
//������ʾ
if(k==1){DIN=1;
}//С������ʾ
discan=scan_con[k];
//λѡ
delay(300);
/****************DS18B20�����************************/
ow_reset(void)
charpresence=1;
while(presence)
while(presence)
{
DQ=1;
_nop_();
//�Ӹ�������
DQ=0;
delay(50);
//550us
DQ=1;
delay(6);
//66us
presence=DQ;
//presence=0��λ�ɹ�,������һ��
}
delay(45);
//��ʱ500us
presence=~DQ;
//���ߵ�ƽ
/****************DS18B20����************************/
//��1-WIRE������д1���ֽ�
voidwrite_byte(ucharval)
{
uchari;
for(i=8;
i>
i--)
{
DQ=1;
//�Ӹ�������
DQ=0;
//5us
DQ=val&
0x01;
//���λ�Ƴ�
delay(6);
//66us
val=val/2;
//����1λ
}
delay
(1);
/****************DS18B20��1�ֽں���************************/
//��������ȡ1���ֽ�
ucharread_byte(void)
uchari;
ucharvalue=0;
for(i=8;
DQ=1;
value>
>
=1;
DQ=0;
//4us
if(DQ)value|=0x80;
delay(6);
//66us
return(value);
/****************�����¶
Ⱥ���************************/
read_temp()
ow_reset();
//���߸�λ
delay(200);
write_byte(0xcc);
//������
write_byte(0x44);
//��ת������
delay
(1);
write_byte(0xbe);
temp_data[0]=read_byte();
//���¶
�ֵ�ĵ��ֽ�
temp_data[1]=read_byte();
�ֵ�ĸ��ֽ�
temp=temp_data[1];
temp<
<
=8;
temp=temp|temp_data[0];
//���ֽںϳ�һ�����ͱ�����
returntemp;
//�����¶
�ֵ
/****************�¶
����ݴ������************************/
//�����Ƹ��ֽڵĵͰ��ֽں͵��ֽڵĸ߰��ֽ����һ�ֽ�,���
//�ֽڵĶ�����ת��Ϊʮ���ƺ�,�����¶
�ֵ�İ١�ʮ����λֵ,��ʣ
//�µ
ĵ��ֽڵĵͰ��ֽ�ת����ʮ���ƺ�,�����¶
�ֵ��С������
/********************************************************/
work_temp(uinttem)
ucharn=0;
if(tem>
6348)//�¶
�ֵ�����ж�
{tem=65536-tem;
n=1;
}//���¶
�����,��־λ��1
display[4]=tem&
0x0f;
//ȡС�����ֵ�ֵ
display[0]=ditab[display[4]];
//����С��������ʾֵ
display[4]=tem>
//ȡ�м��λ,���������ֵ�ֵ
display[3]=display[4]/100;
//ȡ��λ�����ݴ�
display[1]=display[4]%100;
//ȡ����λ�����ݴ�
display[2]=display[1]/10;
//ȡʮλ�����ݴ�
display[1]=display[1]%10;
/******************����λ��ʾ�ж�**************************/
if(!
display[3])
display[3]=0xF5;
//���λΪ0ʱ����ʾ
if(!
display[2])
display[2]=0xF5;
//�θ�λΪ0ʱ����ʾ
}
if(n){display[3]=0xF4;
}//���¶
�ʱ���λ��ʾ"
/****************������************************/
main()
Disdata=0x00;
//��ʼ���˿�
discan=0x00;
for(h=0;
h<
h++)//������ʾ"
8888"
{display[h]=8;
}
//������ת��һ��
//SkipROM
//��ת������
100;
h++)//������ʾ"
{scan();
while
(1)
work_temp(read_temp());
//�����¶
�����
scan();
//��ʾ�¶