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

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      咱們的ADC0809電壓表

      作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
      ///////通道編號的數(shù)碼管顯示函數(shù)///////
      void disp_in(uchar a)
      {
      ADD_A = 0;
      ADD_B = 0;
      ADD_C = 0;
      P0 = numtable[a];
      delay(3);
      }
      ///////通道1的AD轉(zhuǎn)換函數(shù)///////
      void ADC_1()
      {
      STA_ALE = 0;
      STA_ALE = 1;
      ADD_A = 1;
      ADD_B = 0;
      ADD_C = 1;
      ADC_B = 0;
      ADC_A = 0;
      STA_ALE = 0;
      }
      ///////通道2的AD轉(zhuǎn)換函數(shù)///////
      void ADC_2()
      {
      STA_ALE = 0;
      STA_ALE = 1;
      ADD_A = 1;
      ADD_B = 0;
      ADD_C = 1;
      ADC_B = 0;
      ADC_A = 1;
      STA_ALE = 0;
      }
      ///////判別是哪條通道AD轉(zhuǎn)換函數(shù)///////
      void ADC(uchar ad_dat)
      {
      if (1 == keynum)
      {
      ADC_1();
      disp();
      disp_in(1);
      }
      else if (2 == keynum)
      {
      ADC_2();
      disp();
      disp_in(2);
      }
      else if (3 == keynum)
      {
      TR1 = 1;
      if (!shift)
      {
      ADC_1();
      disp();
      disp_in(1);
      }
      if (shift)
      {
      ADC_2();
      disp();
      disp_in(2);
      }
      }
      else if (16 == keynum)
      {
      ADC_2();
      disp();
      disp_in(2);
      }
      while ( 0 == OE_EOC )
      {
      keyscan();
      if (1 == keynum)
      {
      disp();
      disp_in(1);
      }
      else if (2 == keynum)
      {
      disp();
      disp_in(2);
      }
      else if (3 == keynum)
      {
      TR1 = 1;
      if (!shift)
      {
      disp();
      disp_in(1);
      }
      if (shift)
      {
      disp();
      disp_in(2);
      }
      }
      }
      temp = ad_dat*0.0196078;
      val_int = (uchar) temp;
      val_decimal = (uchar) ((temp - val_int)*100);
      }
      ///////定時器初始化函數(shù)//////
      void timer_init()
      {
      IE = 0x8a;
      TMOD = 0x12;
      TH0 = 0x14;
      TL0 = 0x00;
      TR0 = 1;
      TH1 = -50000/256;
      TL1 = -50000%6;
      }
      ///////主函數(shù)//////
      int main ()
      {
      timer_init();//初始化定時器
      while(1)
      {
      keyscan();//矩陣鍵盤掃描賦值
      if (1 == keynum || 2 == keynum || 3== keynum) //當(dāng)有鍵按下時,啟動ADC轉(zhuǎn)換
      ADC(P2);
      else //否則顯示四個0
      {
      disp();
      disp_in(0);
      }
      }
      return 0;
      }
      ///////1S顯示切換的定時中斷函數(shù)(T1)//////
      void TIMER(void) interrupt 3
      {
      static uchar timer;
      timer++;
      if (20 == timer)
      {
      timer = 0;
      shift = !shift;//用于兩位的1S顯示切換
      }
      }
      ///////提供給ADC芯片CLOCK的定時函數(shù)(T0)//////
      void OTHER_CLOCK(void) interrupt 1
      {
      CLK = !CLK;
      }
      說說主要遇到的問題和學(xué)到的東西:一個是因為用了等待查詢方式來讀取ADC0809的AD轉(zhuǎn)換結(jié)果,加上矩陣鍵盤和38譯碼器選址,導(dǎo)致兩個問題:
      1.各個功能的邏輯關(guān)系混亂。雖然只有幾個功能模塊,但是也思考了一番才有了新的程序架構(gòu)。還有就是始終沒能適應(yīng)自頂向下的編程思維,比如會習(xí)慣先編出ADC的START信號或者選址函數(shù),再去想用在哪里。而不是先直接構(gòu)造一個ADC處理的框架,再去想細(xì)節(jié)的實現(xiàn)。
      2.還有數(shù)碼管動態(tài)顯示不停閃爍。調(diào)試的時候,也老想著,應(yīng)該就是這樣了吧,改不了了吧,呵呵,可是解決之后再次覺得天無絕人之路啊,
      ADD_A = 1;
      ADD_B = 0; 這段語句起初P0 = numtable_DE[val_int];是放在首位的,結(jié)果想想是不是因為用38
      ADD_C = 0; 譯碼器控制位選擾亂了下一位的段選,移一下位就搞定了……真是奇妙
      P0 = numtable_DE[val_int];
      delay(1);
      團隊合作的效率這次體現(xiàn)得很明顯,特別是繁瑣的畫圖,可是因為大家實踐比較少,結(jié)果很不幸犯了很基礎(chǔ)的錯誤,導(dǎo)致成品沒有成功。不知道以后還有機會合作不
      上一頁 1 2 下一頁

      關(guān)鍵詞: ADC0809電壓

      評論


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

      關(guān)閉