色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          咱們的ADC0809電壓表

          作者: 時(shí)間:2016-11-28 來(lái)源:網(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();//矩陣鍵盤(pán)掃描賦值
          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;
          }
          說(shuō)說(shuō)主要遇到的問(wèn)題和學(xué)到的東西:一個(gè)是因?yàn)橛昧说却樵兎绞絹?lái)讀取ADC0809的AD轉(zhuǎn)換結(jié)果,加上矩陣鍵盤(pán)和38譯碼器選址,導(dǎo)致兩個(gè)問(wèn)題:
          1.各個(gè)功能的邏輯關(guān)系混亂。雖然只有幾個(gè)功能模塊,但是也思考了一番才有了新的程序架構(gòu)。還有就是始終沒(méi)能適應(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)該就是這樣了吧,改不了了吧,呵呵,可是解決之后再次覺(jué)得天無(wú)絕人之路啊,
          ADD_A = 1;
          ADD_B = 0; 這段語(yǔ)句起初P0 = numtable_DE[val_int];是放在首位的,結(jié)果想想是不是因?yàn)橛?8
          ADD_C = 0; 譯碼器控制位選擾亂了下一位的段選,移一下位就搞定了……真是奇妙
          P0 = numtable_DE[val_int];
          delay(1);
          團(tuán)隊(duì)合作的效率這次體現(xiàn)得很明顯,特別是繁瑣的畫(huà)圖,可是因?yàn)榇蠹覍?shí)踐比較少,結(jié)果很不幸犯了很基礎(chǔ)的錯(cuò)誤,導(dǎo)致成品沒(méi)有成功。不知道以后還有機(jī)會(huì)合作不
          上一頁(yè) 1 2 下一頁(yè)

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

          評(píng)論


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

          關(guān)閉