基于单片机的路温度巡检仪的毕业设计.doc
文本预览下载声明
基于单片机的8路温度巡检仪的毕业设计
答案研究院标准资料研究所 598577184
}
/***********向AD7705写一个字节的数据******************/ void Write_AD_reg(uchar dat) { }
/********从AD7705读出两个字节的数据,AD转换值*******/ //返回值为unsigned int 类型 uint Read_AD_reg() { }
/************对AD7705初始化*****************/ void AD_Init(void) { 0X30 // //
Write_AD_reg(0x08); //写0x10到通信寄存器,到通信寄存器,下一个寄存器指向设置寄存器.倒序:0X08 Write_AD_reg(0x62); //写0x46到设置寄存器,自动校准,单极性,gain=1;缓冲模式,FASYNC=0. 倒序:0X62 Write_AD_reg(0x6E); //写0x76到设置寄存器,自动校准,单极性,gain=64;缓冲模式,FASYNC=0. 倒Write_AD_reg(0X04); //写0X20到通信寄存器,选择通道ANI(+)和ANI(-),下一个寄存器指向时钟寄存器。.Write_AD_reg(0X30); //写0X0C到时钟寄存器,接2M时钟,时钟二分频,输出跟新率50Hz. 倒序: 倒序:0X04
//用串行数据输入时一定要将数据进行倒序处理
uchar low8,high8; uint AD_out; SCON=0x00;
Write_AD_reg(0x1C); while(DRDY); REN =1; RI =0; high8=SBUF; while(!RI); RI =0; low8=SBUF; REN =0;
high8=reverse_order(high8); low8 =reverse_order(low8); AD_out=high8; AD_outAD_out;
//对读回的高8位倒序
while(!RI);
//读数据通道 0x38 //为低电平时读取数据
//接收使能 //等待接收完
SBUF=dat; while(!TI); TI=0;
//等待发送完成
}
return new_dat;
答案研究院标准资料研究所 598577184
序:0X6E }
/************温度采样函数*****************/ void AD_samp(void) {
uchar i,m,n; uchar j=0; Addr_channel=j; for(i=0;i{
ad_data_buff[0]=Read_AD_reg(); //在此也可以做中值滤波处理
Write_AD_reg(0x76); //写0x6e到设置寄存器,自动校准,单极性,gain=32;缓冲模式,FASYNC=0. 倒序:0X76
int k;
ad_data_buff[1]=Read_AD_reg(); ad_data_buff[2]= Read_AD_reg(); for(m=0;m for(n=0;n if(ad_data_buff[n]value_buf[n+1])
{
k= ad_data_buff[n];
ad_data_buff[n]=ad_data_buff[n+1]; value_buf[n+1]=k; }
}
}
/************显示处理函数*****************/ void display(void) {
uchar m,n; float h; uint a,k,d;
dis[4]=0x01; //通道初值为0 for(m=0;m h=ad_data[m]/65535.0;
k=h*300;
dis[3]=k/100; //对温度值取百位数
}
ad_data[i]= ad_data_buff [1]; j++;
Addr_channel=j;
//使模拟开关选通可靠,起延时的作用
Addr_channel=0x00;
答案研究院标准资
显示全部