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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(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 來(lái)源:網(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.ex-cimer.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; //第一脈沖,開(kāi)始位
          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)//寫(xiě)指令//
          { delay1ms(1);
          RS=0;
          RW=0;
          EN=0;
          P0=com;
          delay1ms(1);
          EN=1;
          delay1ms(1);
          EN=0;
          }
          void wr_dat(unsigned char dat)//寫(xiě)數(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,沒(méi)有對(duì)電壓值進(jìn)行轉(zhuǎn)換
          要想得到準(zhǔn)確電壓值,請(qǐng)把Chan0Value和Chan1Value
          的值乘以5再除以255即可。當(dāng)某一通道沒(méi)有輸入而
          懸空時(shí),有可能會(huì)顯示256的中間值128,這是干擾,可
          以不理會(huì)*/



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁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); })();