<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC12c5a60s2單片機(jī)內(nèi)部ADC應(yīng)用測(cè)試外部電壓

          STC12c5a60s2單片機(jī)內(nèi)部ADC應(yīng)用測(cè)試外部電壓

          作者: 時(shí)間:2016-12-03 來(lái)源:網(wǎng)絡(luò) 收藏
          #include

          #include /*use _nop_() function*/
          #define uchar unsigned char
          #define uint unsigned int

          本文引用地址:http://www.ex-cimer.com/article/201612/325259.htm

          uint k;
          uchar ch ;
          /*******************延時(shí)****************/
          void Delay (uint j)
          {
          uint i;
          while(j--)
          {
          i=111;while(i--);
          }
          }
          void InitADC()
          {
          P1M0=0X01;
          P1M1=0X01;
          P1ASF=0XFF; //相應(yīng)端口當(dāng)ADC使用時(shí),端口要置位
          ADC_RES=0;
          ADC_CONTR=0XE0; //1110 0000 開(kāi)電源,最高速
          Delay(50);
          }
          int GetADC(uchar ch)
          {
          int result;
          ADC_CONTR|=ch; //選擇通道
          _nop_(); _nop_();
          _nop_(); _nop_();
          ADC_CONTR|=0x08; //0000 0100 開(kāi)始AD轉(zhuǎn)換
          while(!(ADC_CONTR&ADC_FLAG)); //查詢ADC_FLOG是否置位1 轉(zhuǎn)換結(jié)束
          ADC_CONTR &= ~ADC_FLAG; //Clear ADC interrupt flag
          //result=ADC_RES;//1111 0111 結(jié)束AD轉(zhuǎn)換
          result=ADC_RES*4+ADC_RESL;
          return(result);
          }

          /////////////////////平均濾波//////////////////////
          #define N 100
          float filter(uchar ch)
          {
          float value=0;
          uchar count;
          for(count=0;count{
          value+=GetADC(ch); //100次采樣求平均
          }
          value/=202.5;//單片機(jī)電壓5.05V
          //value/=205;
          //value/=2048;
          //value/=512;
          //value/=100;
          //value=value*5.0/1024;
          return (value);
          }
          /****************1602液晶******************/
          sbit RS = P2^4;
          sbit RW = P2^5;
          sbit E = P2^6;
          /*******************查表0~f****************/
          uchar code LCD_display_code[16]=
          {
          0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
          0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x046
          };
          void lcd_Write_com(uchar com)
          {
          RS=0; //定義指令寄存器
          RW=0; //寫(xiě)允許
          P0=com; //寫(xiě)指令
          Delay(5);E=1;//片選端上拉
          Delay(5);E=0;//下降沿鎖存
          }
          void lcd_write_date(uchar date)
          {
          RS=1;//定義數(shù)據(jù)寄存器
          RW=0;//寫(xiě)允許
          P0=date;//寫(xiě)數(shù)據(jù)
          Delay(5);E=1;//片選端上拉
          Delay(5);E=0;//下降沿鎖存
          }
          void dis_lcd1602(uchar x,uchar y,uchar dat)
          {
          uchar add;
          if(y==1) add=(0x80+x);
          if(y==2) add=(0xc0+x);
          lcd_Write_com(add);//寫(xiě)指令
          lcd_write_date(dat);//寫(xiě)數(shù)據(jù)
          }
          void lcd1602_init()
          {
          lcd_Write_com(0x38);//設(shè)置8位格式,2行,5*7
          lcd_Write_com(0x01);//清屏
          lcd_Write_com(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
          lcd_Write_com(0x06);//設(shè)定輸入方式,增量不移位
          lcd_Write_com(0x80);//初始坐標(biāo)
          }
          /*******************液晶顯示漢字程序****************/
          void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
          {
          uchar i=0,temp;
          if(x)temp = 0x40; else temp = 0;
          for(i=y;*p!=看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();