您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页DS18B20和ADC0832共同使用

DS18B20和ADC0832共同使用

来源:步遥情感网


DS18B20和ADC0832共同使用

#include

#define uchar unsigned char

sbit DQ=P1^4;

uchar data temp_data[2]={0x00,0x00};

uchar data display[5]={0x00,0x00,0x00,0x00,0x00};

unsigned char code ditab[16] ={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,

0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;

//共阴数码管

uchar code table[11]

={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};// 0,1,2,3,4,5 ,6,7,8,9,百位或当最高位十位为0时不显示

uchar code table1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};// 0.,1.,2.,3.,4.,5.,6.,7.,8.,9.各位带有小数点的显示

//以下为水位显示区域

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define _rrca_() CY = ACC & 0x01 #define _rlca_() CY = ACC & 0x80 sbit bADcs=P1^7;

sbit bADcl=P1^6;

sbit bADda=P1^5;

sbit flag=P1^3;

//sbit str=P2^7;

//sbit d=P2^6;

//sbit clk=P2^5;

//产生RRC A指令//产生RLC A指令

bit choose=0;

unsigned char data1;

unsigned char count;

unsigned char cycle;

uint ge,xiao1,xiao2;

unsigned long data2;

unsigned char code tablewe[]=

{

0xFE,0xFD,0xFB,0xF7,

0xEF,0xDF,0xBF,0x7F

};//自己写的

void delay_18b20(unsigned int i)

{

while(i--);

}

//函数区域水位

void Delayus(uchar i)

{

while(--i);

}

void ad(void)

{ uchar i;

//data1=0;

bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.

bADcl=0;

bADda=1;

bADcl=1;

bADcl=0;//i down

bADda=1;

bADcl=1;

bADcl=0; // 2 down

bADda=0;

bADcl=1;

bADcl=0; // 3 down

bADda=1;

bADcl=1;

bADcl=0; // 4 down

for(i=8;i>0;i--)

{

data10;i--)

{

DQ=0; // 给脉冲信号

dat>>=1;

DQ=1; // 给脉冲信号

if(DQ)

dat|=0x80 ;

delay_18b20(4) ;

}

return (dat) ;

}

WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay_18b20(5);

DQ=1;

dat>>=1;

}

}

Read_Temperature(void)

{

Init_DS18B20() ;

WriteOneChar(0xCC) ; // 跳过读序号列号的操作

WriteOneChar(0x44) ; // 启动温度转换

Init_DS18B20() ;

WriteOneChar(0xCC) ; //跳过读序号列号的操作

WriteOneChar(0xBE) ; //读取温度寄存器

temp_data[0] = ReadOneChar(); //温度低8位

temp_data[1] = ReadOneChar(); //温度高8位

}

Disp_Temperature()

{

display[4]=temp_data[0]&0x0f;

display[0]=ditab[display[4]]; //查表得小数位的值

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务