在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)驅(qū)動(dòng)ADC0832模數(shù)轉(zhuǎn)換程序-lcd1602顯示

      51單片機(jī)驅(qū)動(dòng)ADC0832模數(shù)轉(zhuǎn)換程序-lcd1602顯示

      作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
      /*這個(gè)芯應(yīng)用不多*/

      #include
      #define uchar unsigned char
      #define uint unsigned int
      uchar Chan0Value,Chan1Value;
      sbit RS=P1^0; //1602各控制腳
      sbit RW=P1^1;
      sbit EN=P1^2;
      sbit Cs0832= P2^0; //0832各控制腳
      sbit Clk0832= P3^6;
      sbit Di0832= P3^7;
      sbit Do0832= P3^7;

      本文引用地址:http://www.biyoush.com/article/201612/324680.htm

      void delay1ms(unsigned int ms)//延時(shí)1毫秒(不夠精確的)
      {
      int i,j;
      for(i=0;i for(j=0;j<100;j++);
      }

      /**********************************ADC0832********************************/
      uchar GetValue0832(uchar Channel) //獲取數(shù)值返回。入口:通道(0或1)。出口:數(shù)值。
      {
      uchar i,Dat1=0,Dat2=0;
      Clk0832=0;
      Di0832=1;
      Cs0832=0;
      Clk0832=1;
      Clk0832=0; //第一脈沖,開始位
      Di0832=1;
      Clk0832=1;
      Clk0832=0; //第二脈沖,模式選擇
      Di0832=Channel;//通道選擇,0或1
      Clk0832=1;
      Clk0832=0; //第三脈沖,通道選擇
      Di0832=1; //釋放輸入線
      for(i=0;i<8;i++) //從高到低取一次數(shù)
      {
      Clk0832=1; //下降沿有效
      Clk0832=0;
      if(Do0832) Dat1|=0x80>>i;
      }
      for(i=0;i<8;i++) //從低到高取一次數(shù)
      {
      if(Do0832) Dat2|=0x01< Clk0832=1; //下降沿有效
      Clk0832=0;
      }
      Cs0832=1;
      Di0832=1;
      Clk0832=1; //數(shù)據(jù)讀取完成,釋放所有數(shù)據(jù)線
      if(Dat1==Dat2)
      return Dat1; //校驗(yàn)兩次數(shù)相等,輸出
      }
      /*本程序與其他一般程序最大的不同就是要讀兩次
      一次從最高位到最低位,一次從最低位到最高位,
      兩次所讀值相等即為正常,可以輸出*/
      /******************************LCD1602**************************************/
      /*************************lcd1602程序**************************/

      void wr_com(unsigned char com)//寫指令//
      { delay1ms(1);
      RS=0;
      RW=0;
      EN=0;
      P0=com;
      delay1ms(1);
      EN=1;
      delay1ms(1);
      EN=0;
      }
      void wr_dat(unsigned char dat)//寫數(shù)據(jù)//
      { delay1ms(1);
      RS=1;
      RW=0;
      EN=0;
      P0=dat;
      delay1ms(1);
      EN=1;
      delay1ms(1);
      EN=0;
      }
      void lcd_init()//初始化設(shè)置//
      {
      delay1ms(15);
      wr_com(0x38);delay1ms(5);
      wr_com(0x80);delay1ms(5);
      wr_com(0x01);delay1ms(5);
      wr_com(0x06);delay1ms(5);
      wr_com(0x0c);delay1ms(5);
      }
      void writevalue(uchar add,uchar dat)
      {
      wr_com(0x80+add);
      wr_dat(dat);
      }
      void zifuchuan(uchar *ch)
      {
      while(*ch!=0)
      wr_dat(*ch++);
      delay1ms(20);
      }
      void main(void)
      {
      lcd_init();
      while(1)
      {
      Chan0Value=GetValue0832(0);
      delay1ms(100);
      Chan1Value=GetValue0832(1);

      wr_com(0x80);
      zifuchuan("Chanal 0:");
      writevalue(10,Chan0Value/100+0x30);
      writevalue(11,Chan0Value%100/10+0x30);
      writevalue(12,Chan0Value%100%10+0x30);

      wr_com(0x80+0x40);
      zifuchuan("Chanal 1:");
      writevalue(0x40+10,Chan1Value/100+0x30);
      writevalue(0x40+11,Chan1Value%100/10+0x30);
      writevalue(0x40+12,Chan1Value%100%10+0x30);
      delay1ms(1000);
      }
      }
      /*此程序只為調(diào) 通ADC0832,沒有對(duì)電壓值進(jìn)行轉(zhuǎn)換
      要想得到準(zhǔn)確電壓值,請(qǐng)把Chan0Value和Chan1Value
      的值乘以5再除以255即可。當(dāng)某一通道沒有輸入而
      懸空時(shí),有可能會(huì)顯示256的中間值128,這是干擾,可
      以不理會(huì)*/



      評(píng)論


      技術(shù)專區(qū)

      關(guān)閉