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

📄 2020.c

📁 一段键盘处理源码
💻 C
字号:
/*
ad通道1、2        传感器信号
ad通道3           环境温度信号

P2.0-2.4          键盘
P3.7              485芯片控制

*/

#include <aduc812.h>

// data union { int word;
  //             struct{unsigned char hi;
    //                  unsigned char lo;
      //               }byte;
        //     }ad[3];
void sys_init(void)
{
    /*AD set */
      ADCCON1=0x64;
      ADCCON2=0;
    /*发送 set*/
      TMOD=0X20;
      TH1=0Xfd;
      TL1=0Xfd;
      PCON=0X00;
      TR1=1;
      SCON=0X50;     
    //  ES=1;EA=1;
}

void delay(unsigned int x)
{ unsigned int j;
  while(x--){
     for(j=0;j<100;j++)
     {;}
   }
}

void SendByte(unsigned char s)
{
    //P3_7=0;
    SBUF = s;            	//sbuf 发送寄存器
    while (TI == 0) ;
      TI=0;	      //TI  发送结束标志
    //P3_7=1;
}

void SendTemperature(int ss)
{  char ch;

      SendByte('a');
      delay(100);
	if (ss < 0) {SendByte('-');
       delay(100);
		ss = 0 - ss;
	}
	if (ss > 99) {
	  	ch = ss/100+0X30;	//转化为字符
	  	SendByte(ch);
        delay(100);
	  	ch = (ss%100)/10+0X30;
	  	SendByte(ch);
        delay(100);
	  	ch = ss%10+0X30;
	  	SendByte(ch);
        delay(100);
	} else {
		if (ss > 9) {
		  	ch = ss/10+0X30;	//转化为字符
		  	SendByte(ch);
            delay(100);
		  	ch = ss%10+0X30;
		  	SendByte(ch);
            delay(100);
		} else { ch = (char) ss + 0X30;	//转化为字符
			SendByte(ch);
            delay(100);
		}
	}
	SendByte('b');
    delay(200);

}

 
code unsigned int amb_[71]=                /*环温数据表*/
       {0X2200,
        0X22A1,0X2323,0X2500,0X25FF,0X2734,0X2889,0X28DE,0X2901,0X2c87,0X3300,
        0X36A2,0X3A25,0X3D89,0X40D1,0X43FC,0X470D,0X4A03,0X4CE1,0X4FA8,0X5258,
        0X54F2,0X5779,0X59EC,0X5C4D,0X5E9D,0X60DD,0X630E,0X6532,0X674A,0X6955,
        0X6B57,0X6D50,0X6F40,0X7129,0X730D,0X74EC,0X76C7,0X789F,0X7A77,0X7C4E,
        0X7E25,0X7FFF,0X81DC,0X83BD,0X85A3,0X878F,0X8983,0X8B80,0X8D86,0X8F97,
        0X91B4,0X93DF,0X9617,0X985F,0X9AB7,0X9D21,0X9F9D,0XA22D,0XA4D2,0XA78D,
        0XAA5F,0XAD49,0XB04D,0XB36B,0XB6A5,0XB9FB,0XBD70,0XC103,0XC4B6,0XC88B};

  code unsigned int irvt[471]=
      {
       0x01ff,0x0238,0x023b,0x0240,0x0243,0x0248,0x024e,0x024f,0x0252,0x0257,
       0x025d,0x025f,0x0261,0x0263,0x0265,0x0268,0x026a,0x026c,0x026e,0x0270,
       0x0273,0x0275,0x0277,0x027a,0x027c,0x027e,0x0280,0x0282,0x0285,0x0288,
       0x028a,0x028e,0x0292,0x0295,0x0297,0x0299,0x029b,0x02a0,0x02a4,0x02a8,0x02aa,0x02ac,0x02b0,
       0x02b5,0x02b7,0x02b9,0x02bb,0x02bd,0x02c1,0x02c3,0x02c5,0x02c9,0x02cc,0x02d0,0x02d4,0x02d8,
       0x02dc,0x02df,0x02e3,0x02e6,0x02e8,0x02ea,0x02ed,0x02ee,0x02f1,0x02f4,0x02f7,0x02f9,0x02fa,
       0x02fe,0x0300,0x0302,0x0304,0x0307,0x0309,0x030b,0x0310,0x0315,0x0319,0x031d,0x0321,0x0325,
       0x0329,0x032e,0x0331,0x0333,0x0335,0x0338,0x033d,0x0343,0x0348,0x034e,0x0354,0x0357,0x035a,
       0x0360,0x0363,0x0366,0x036c,0x0372,0x0375,0x0378,0x037e,0x0381,0x0385,0x038c,0x0393,0x039a,
       0x03a1,0x03a5,0x03a8,0x03ab,0x03af,0x03b3,0x03b6,0x03bd,0x03c4,0x03cb,0x03d2,0x03d9,0x03e0,
       0x03e8,0x03eb,0x03ef,0x03f2,0x03f6,0x03f9,0x03fd,0x0405,0x0409,0x040c,0x0413,0x041b,0x0422,0x0427,0x0429,
       0x0431,0x0434,0x0438,0x043b,0x0440,0x0444,0x0448,0x0450,0x0454,0x0458,0x045f,0x0467,0x046f,0x0473,0x0477,
       0x047f,0x0483,0x0487,0x048f,0x0493,0x0497,0x049b,0x049f,0x04a3,0x04a7,0x04af,0x04b3,0x04b7,0x04bf,0x04c7,
       0x04d0,0x04d4,0x04d8,0x04e0,0x04e4,0x04e8,0x04f1,0x04f5,0x04f9,0x0501,0x0505,0x050a,0x0512,0x0516,0x051a,
       0x0523,0x0527,0x052e,0x0533,0x0539,0x053f,0x0544,0x054f,0x0554,0x055a,0x0565,0x0570,0x0573,0x057b,0x0586,
       0x0591,0x0595,0x0599,0x05a2,0x05a7,0x05ab,0x05b3,0x05b9,0x05bc,0x05c5,0x05ca,0x05cd,0x05d1,0x05d6,0x05df,
       0x05e8,0x05ee,0x05f0,0x05f4,0x05f9,0x0602,0x0607,0x060a,0x0613,0x0618,0x061c,0x0624,0x0629,0x062d,0x0636,
       0x063f,0x064a,0x0652,0x0656,0x065e,0x0661,0x0666,0x066d,0x0672,0x0678,0x067f,0x0684,0x068f,0x069b,0x06a6,
       0x06b2,0x06b8,0x06bd,0x06c3,0x06c9,0x06d4,0x06dc,0x06e0,0x06e5,0x06eb,0x06f7,0x0702,0x070e,0x0712,0x0719,
       0x0725,0x072d,0x0731,0x0739,0x073e,0x0743,0x074a,0x0751,0x0757,0x0763,0x076b,0x0770,0x077c,0x0789,0x0795,
       0x07a2,0x07a7,0x07ae,0x07b2,0x07bb,0x07c0,0x07c7,0x07d4,0x07e0,0x07e5,0x07ed,0x07f2,0x07f9,0x0806,0x0812,
       0x081f,0x0824,0x082d,0x0833,0x083c,0x0843,0x084b,0x0853,0x085a,0x0869,0x086f,0x0877,0x0886,0x0895,0x08a4,
       0x08b3,0x08bb,0x08c1,0x08c8,0x08d0,0x08d8,0x08df,0x08e7,0x08ee,0x08f5,0x08fd,0x0904,0x090b,0x0913,0x091a,
       0x0921,0x0929,0x0932,0x0938,0x0940,0x0947,0x094f,0x0956,0x095e,0x0965,0x096c,0x0974,0x097a,0x0983,0x0989,
       0x098a,0x0993,0x09ae,0x09a2,0x09aa,0x09b1,0x09ba,0x09c0,0x09c8,0x09cf,
       0x09d4,0x09df,0x09e5,0x09ee,0x09f3,0x09fd,0x0a04,0x0a0c,0x0a15,0x0a1b,
       0x0a22,0x0a2b,0x0a32,0x0a3a,0x0a41,0x0a49,0x0a52,0x0a58,0x0a5f,0x0a67,
       0x0a70,0x0a77,0x0a81,0x0a88,0x0a93,0x0a9a,0x0aa4,0x0aac,0x0ab3,0x0abe,
       0x0ad0,0x0ad5,0x0adb,0x0ae1,0x0aec,0x0af3,0x0afc,0x0b05,0x0b0f,0x0b17,
       0x0b21,0x0b29,0x0b33,0x0b3a,0x0b43,0x0b4c,0x0b53,0x0b5e,0x0b67,0x0b70,
       0x0b7b,0x0b82,0x0b8a,0x0b93,0x0b9e,0x0ba5,0x0bb0,0x0bb7,0x0bc1,0x0bc9,
       0x0bd3,0x0bdb,0x0be2,0x0bec,0x0bd4,0x0bfd,0x0c02,0x0c0e,0x0c13,0x0c1f,
       0x0c26,0x0c31,0x0c3b,0x0c42,0x0c4d,0x0c53,0x0c5a,0x0c64,0x0c6c,0x0c76,
       0x0c7f,0x0c87,0x0c92,0x0c98,0x0ca2,0x0ca9,0x0cb3,0x0cbb,0x0cc4,0x0ccc,
       0x0cd2,0x0cdd,0x0ce5,0x0cee,0x0cf6,0x0cff,0x0d05,0x0d0e,0x0d11,0x0d17,
       0x0d22,0x0d2d,0x0d33,0x0d3c,0x0d44,0x0d4e,0x0d56,0x0d5c,0x0d62,0x0d67,
       0x0d72,0x0d78,0x0d7f,0x0d83,0x0d89,0x0d94,0x0d9b,0x0da3,0x0dac,0x0db2,
       0x0db8,0x0dbd,0x0dc2,0x0dc8,0x0dce,0x9dd4,0x0ddb,0x0de0,0x0de4,0x0dff,
     };


main(void)
{
    unsigned char hi,lo;           /* AD采集转换的三个通道的值*/
    int j,ad[3];
   // int ambf,ambc;
    SP=0x60;
    sys_init();

  while(1)
  { 
    ADCCON2=0x18;
//    SCONV=1;
    ;
    ;
   while(ADCCON3>0x7f);
   lo=ADCDATAL;
   hi=ADCDATAH&0x0f;
   ad[0]=hi*256+lo;

   SBUF="$"
   while(TI==0);
   TI=0;
   delay(200);
   
   SBUF=hi;
   while(TI==0);
   TI=0;
   delay(200);
   
   SBUF=lo;
   while(TI==0);
   TI=0;
   delay(200);
   /*   
   for(j=0;j<3;j++)
   {
    ADCCON2=j;                        /*转到通道j*/
  /*  SCONV=1;                          /*启动转换*/
/*	 ;
	 ;
    while(ADCCON3>0x7f);                    /*当转换结束*/
/*    lo=ADCDATAL;             /*存转换的结果*/ 
  /*  hi=ADCDATAH&0x0f;
    ad[j]=hi*256+lo; 
    if (j==2) ADCCON2=0;            /*转到通道0*/
   /*   else ADCCON2=ADCCON2+1;    /*转到下一通道*/
   /* }
   
   
       /*数据处理 

 if((ad[0]<irvt[0])||(ad[0]>irvt[470]))   ircov=888;
   else
	{
	  for(a=1;a<471;a++)
     {
       if(ad[0]<=irvt[a]) 
	    {
	     ircov=a-20;
         if((irvt[a]-ad[0])>=(ad[0]-irvt[a-1]))ircov--;
	     break;
        }
     }
   }*/

	//环境温度计算
  // ad[2]=ad[2]>>4;
   //if((ad[2]>0x7af) || (ad[2]<0xe5))   /*环温>50 环温<-10度 */
   // { SendTemperature(888);}
   //else { ad[2]=ad[2]>>2;
    //      ambf=((ad[2]*125)>>1)+0x80;
      //    ambf=ambf>>8;
        //  ambc=(ambf-32)*5/9;
     //}
  

//  SendTemperature(ad[2]);

 }

}

⌨️ 快捷键说明

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