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

📄 adcuart.c

📁 学aduc845的时候自己写的一个温度计的代码。供初学者使用。
💻 C
字号:
#include <stdio.h>
#include <ADuC848.h>
//#include <myMB.c>
#include <Tab.c>
#include <math.h>
#include <seril.c>
#include <seril.h>


//sbit LED = 0x0B4;
int flag;


xdata unsigned char send_buf[5];
       




//code unsigned  int send_buf[5];

//void Send2ByteTo595(unsigned int);
void dis_buf(void);
void DelayNS(int);


/*	 
float ShowTM_k(float x)   //0.000-20.644mv  如果要处理其他热偶的数据,皆可按照这个函数。
{
  float u0, u1,u2,u3,u4,u5,u6,u7,u8,u9;
  //float x;
  u0=-1.052755E-08;
  u1=u0*x+1.057734E-06 ;
  u2=u1*x-4.413030E-05;           
  u3=u2*x+9.804036E-04;                            
  u4=u3*x-1.228034E-02;                                        
  u5=u4*x+8.315270E-02;
  u6=u5*x-2.503131E-01;
  u7=u6*x+7.860106E-02;
  u8=u7*x+2.508355E+01;
  u9=u8*x+0;
return u9;
}
	
  */  
  

 

int Read2ByteFlash(unsigned char addr)
 {
  idata int MemByte;
  EA = 0;
  EADRH = 0;
  EADRL = addr;
  ECON = 1;
  MemByte = EDATA1;//EDATA2;
  //MemByte = MemByte << 8;
  //MemByte = ( (unsigned int)(EDATA1) ) | MemByte;
  EA = 1;	
  return MemByte;
 }


void Write2ByteFlash(unsigned char addr , unsigned char MemByte)
 {
  EA = 0;
 // TR530SetPoints[addr] = MemByte;
  EADRH = 0;
  EADRL = addr;
  ECON = 1;
  EDATA1 = (unsigned char)MemByte;//(unsigned char)(MemByte & 0x00FF);
  //MemByte = MemByte >> 8;
  //EDATA2 = (unsigned char)(MemByte);
  ECON = 5;
  ECON = 2;
  EA = 1;
 }
			


int ConvertHexChar(char ch)
{
	if((ch>=0)&&(ch<=9))   
		return  (int)ch;//-0x30;   
	else if (ch==0xA)   
			return  10;   
	else if (ch==0xB)   
			return  11; 
    else if (ch==0xC)   
			return  12; 
	else if (ch==0xD)   
			return  13;
	else if (ch==0xE)   
			return  14;  
	else if (ch==0xF)   
			return  15; 

} 
  /*
void change(long value)
{ //char send_buf[5];
   
   char qian,bai,shi,ge;
 qian=value/1000;
 bai=(value-=qian*1000)/100;
 shi=(value-=bai*100)/10;
 ge=(value-=shi*10);


send_buf[3]=qian;

send_buf[2]=bai; 

 

send_buf[1]=shi; 
 

send_buf[0]=ge;
dis_buf();

}
	*/

	void BINtoBCD(int BINNumber)
 {
  send_buf[4] = (unsigned char)(BINNumber /10000);
  send_buf[3] = (unsigned char)(BINNumber % 10000/1000);	 
  send_buf[2] = (unsigned char)(BINNumber % 1000/100);
  
  send_buf[1] = (unsigned char)(BINNumber %100/10);  
  
  send_buf[0] = (unsigned char)(BINNumber%10);			   dis_buf();
  return;
 }	
void dis_buf(void)
{ //Send2ByteTo595(0x0000);
unsigned int  qian1,bai1,shi1,ge1,i;
  if(send_buf[2]==0)
   { bai1=(0xf5df);	}
	  switch (send_buf[2])
      {
	   case 9: bai1=0xd7df;break;
	   case 8: bai1=0xf7df;break;
	   case 7: bai1=(0x45df);break;
	   case	6: bai1=(0xf6df);break;
	   case 5: bai1=(0xd6df);break;
	   case 4: bai1=(0x87df);break;
	   case 3: bai1=(0x57df);break;
	   case 2: bai1=(0x73df);break;
       case 1: bai1=(0x05df);break;
	   } 
	   
	//     
 
  if(send_buf[1]==0)
  { shi1=(0xf5bf);  }
   switch (send_buf[1])
    {  case 9: shi1=(0xd7bf);break;
	   case 8: shi1=(0xf7bf);break;
	   case 7: shi1=(0x45bf);break;
	   case	6: shi1=(0xf6bf);break;
	   case 5: shi1=(0xd6bf);break;
	   case 4: shi1=(0x87bf);break;
	   case 3: shi1=(0x57bf);break;
	   case 2: shi1=(0x73bf);break;
       case 1: shi1=(0x05bf);break;
	   }  
//	   

 if(send_buf[0]==0)
  { ge1=(0xf5ef); }
    switch (send_buf[0])
     { case 9: ge1=(0xd7ef);break;
	   case 8: ge1=(0xf7ef);break;
	   case 7: ge1=(0x45ef);break;
	   case	6: ge1=(0xf6ef);break;
	   case 5: ge1=(0xd6ef);break;
	   case 4: ge1=(0x87ef);break;
	   case 3: ge1=(0x57ef);break;
	   case 2: ge1=(0x73ef);break;
       case 1: ge1=(0x05ef);break;}	
//	   
	 

	  if((send_buf[0]>=0)&&(send_buf[1]>=0)&&(send_buf[2]>=0)&&(send_buf[3]))
	 { for(i=0;i<30;i++){
     Send2ByteTo595(ge1);
	  Send2ByteTo595(shi1);
	  Send2ByteTo595(bai1); 	  
	  Send2ByteTo595(qian1);}	}
	  if((send_buf[0]>=0)&&(send_buf[1]>=0)&&(send_buf[2]))
	 {for(i=0;i<30;i++){ 
	  Send2ByteTo595(ge1);
	  Send2ByteTo595(shi1);
	  Send2ByteTo595(bai1);
	  }	 }
	  if((send_buf[0]>=0)&&(send_buf[1]))
	 { for(i=0;i<7500;i++){
	 
	  Send2ByteTo595(ge1);
	  Send2ByteTo595(shi1);
	  
	  
	   }	
	   }
	  if(send_buf[0]>=0)
	 {for(i=0;i<30;i++){ 
	  Send2ByteTo595(ge1);
	   }	 }
	  }
		  

void  UART0_SendByte(unsigned char data1)
{  
   SBUF = data1;				    // 发送数据
   while(!TI );	 // 等待数据发送完毕
   TI = 0;
   }

void  PC_DispChar(unsigned char x, unsigned char y, unsigned char chr, unsigned char color)
{  UART0_SendByte(0xff);			// 发送起始字节
   UART0_SendByte(x);				// 发送字符显示坐标(x,y)
   UART0_SendByte(y);
   UART0_SendByte(chr);				// 发送显示字符
   UART0_SendByte(color);			
}


void  ISendStr(unsigned char x, unsigned char y, unsigned char color, unsigned char *str)
{  while(1)
   {  if(*str=='\0') break;                     // 若为'\0',则退出
      PC_DispChar(x++, y, *str++, color);       // 发送显示数据
      if(x>=80)
      {  x = 0;
         y++;
      }
   }
} 


void DelayNS(int dly)
{int i;
 for(;dly>0;dly--)
  for(i=0;i<5000;i++);
}




int check_temp(int Data)
{ int a;
  
  int i,j;
  if((Data<=4020)&&(Data>=254))
  {
   for(i=0;i<6;i++)
  { 
    for(j=0;j<12;j++)
   { 
      if(temp_tab_L_1[i][j]==Data)
    
     {  a=temp_tab_L_1[i][0]+temp_tab_L_1[0][j];
        BINtoBCD(a);
       goto done;
	   }
     
     }
    }
   }	
   if(Data>4020)
   
   {
   for(i=0;i<6;i++)
  { 
    for(j=0;j<12;j++)
   { 
      if(temp_tab_L_2[i][j]==Data)
    
     {  a=temp_tab_L_2[i][0]+temp_tab_L_2[0][j];
        BINtoBCD(a);
       goto done;
	   }
     
     }
    }
   }		

   if(Data<254)
   
   {
   for(i=0;i<6;i++)
  { 
    for(j=0;j<12;j++)
   { 
      if(temp_tab_L_3[i][j]==Data)
    
     {  a=temp_tab_L_3[i][0]+temp_tab_L_3[0][j];
        BINtoBCD(a);
       //break;
	   
	   goto done;
	   }
     
     }
    }
   }		
   done: return 0;

   }

 


unsigned long Read_Adc()
{
 unsigned char B1,B2;
unsigned int res;
	//	if (adc_data_fresh){
			EADC = 0;
				B1 = ADC0H;			//耱疱扈蝈朦睇

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -