⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 液晶显示屏12232的驱动程序.内包含了EEPROM及AD7705的驱动程序
💻 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 + -