📄 main.c
字号:
#include "mylib.h"
/*
编写:bobo
调试AD7705过程中有几个问题需要注意:
1:AD7705内部增益应尽量小,以免零电压时读数不为零。
2:AD7705的设置寄存器应设置成数据缓冲模式(特别是在双通道都使用时,单通道可不用)。
(1)当设置成非缓冲模式时,单通道使用可正常工作,双通道使用时不能正常工作(除非每次
读写数据时重新复位AD7705)。
(2)当设置成缓冲模式时,单通道与双通道均可正常工作。
3:AD7705的数据刷新不要太快,太快有时会使AD7705不能正常工作。
4:AD7705的复位口最好使用单片机口线控制,这样可在AD7705工作不正常时重新复位AD7705。
5:AD7705单通道使用时的编程步骤:
(1)初使化AD7705当前使用的通道。
(2)读数据。
6:AD7705双通道使用时的编程步骤:
(1)初使化AD7705第1通道。
(2)读数据。
(3)初使化AD7705第2通道。
(4)读数据。
*/
/*
编写:bobo
1:为了允许Keil51对STC单片机内部扩展RAM的读写,须将RAM设置成外部XDATA的RAM。
2:主程序中加入了看门狗,以防程序死机或受其它方面影响而造成的单片机工作不正常。
*/
uchar i,h,bufdata[2],count,count1;
uint j,ReaddataChx;
float ak1,ak2,ak3,ak4,ak5;
float y,x,z,v;
uchar xdata inbuf1[5];
uchar xdata inbuf2[5];
uint k;
void main(void)
{
AD7705_reset();
init_serial();
lcd_init();
lcd_clr();
draw_bmp1(0,5,Power);
lcd_clr2();
delay();
WDT_CONTR=0x3f;
while(1)
{
// INI7705();
// AD7705_reset();
CH1_init();
k=filter(0);
lcd_clr();
display_num(0);
Led=0;
for(i=0;i<100;i++)
for(j=0;j<500;j++);
Led=1;
CH2_init();
k=filter(1);
lcd_clr();
display_num(1);
Led=0;
for(i=0;i<100;i++)
for(j=0;j<500;j++);
Led=1;
WDT_CONTR=0x3f;
}
}
uint filter(bit mode)
{
uint sum = 0;
for ( count=0;count<25;count++)
{
ReaddataChx=ReadDataCh1_Ch2(mode);
if(ReaddataChx<10)
ReaddataChx=0;
sum =sum+ReaddataChx;
delay();
}
x=(float)sum/25;
y=x*0.038148;
v=13.093289;
z=v*y;
return (uint)(z);
}
#ifdef countresult
#define countresult
void CountResult(bit mode)
{
ReaddataChx=ReadDataCh1_Ch2(mode);
if(ReaddataChx<10)
ReaddataChx=0;
// sum=sum+ReaddataChx;
}
void CountChange(void)
{
if(count==0)
x=sum1;
else if(count==1)
x=sum2;
else if(count==2)
x=sum3;
else if(count==3)
x=sum4;
else if(count==4)
x=sum5;
y=x*0.038148;
v=13.093289;
z=v*y;
if(count==0)
ak1=z;
else if(count==1)
ak2=z;
else if(count==2)
ak3=z;
else if(count==3)
ak4=z;
else if(count==4)
ak5=z;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -