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

          新聞中心

          咱們的ADC0809電壓表

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

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

          評論


          技術(shù)專區(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); })();