久久91精品,老鸭窝国产在线视频,日本无码-第1页,五月丁香婷婷爱爱,国产高清无码久久久

<style id="rlzbc"><progress id="rlzbc"></progress></style>

      <rt id="rlzbc"></rt>
      <ruby id="rlzbc"></ruby>
      技術(shù)文章您的位置:網(wǎng)站首頁 >技術(shù)文章>旋轉(zhuǎn)編碼器程序簡介
      旋轉(zhuǎn)編碼器程序簡介
      更新時間:2013-05-08   點擊次數(shù):4428次
      zui近用到旋轉(zhuǎn)編碼器,在網(wǎng)上找了一大堆資料,發(fā)現(xiàn)這篇好文章。供大家參考!
      [ME850擴展應(yīng)用]旋轉(zhuǎn)編碼器計數(shù)程序(飛梭旋鈕功能)-數(shù)碼管顯示
      /*******************************************************************
      * *
      * ME850單片機開發(fā)實驗儀演示程序 - 旋轉(zhuǎn)編碼器計數(shù)程序 *
      * *
      * 3位數(shù)碼管顯示 *
      * *
      * MCU: AT89S52 晶振:11.0592MHz *
      * *
      * 版本:V1.1 (2009/04/29) *
      * 作者:gguoqing (: gguoqing@) *
      * : (碩飛科技) *
      * (偉納單片機世界) *
      * :sofitech@ *
      * *
      *【版權(quán)】Copyright(C) 深圳碩飛科技有限公司 All Rights Reserved *
      *【聲明】此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息! *
      * *
      ********************************************************************
      * *
      * 功能簡述: (飛梭旋鈕功能) *
      * 當(dāng)旋鈕順時針旋轉(zhuǎn)時,計數(shù)值增加。達到zui大值255后,不再響應(yīng)。 *
      * 當(dāng)逆鈕順時針旋轉(zhuǎn)時,計數(shù)值減小。達到zui小值0后,不再響應(yīng)。 *
      * 當(dāng)按下旋鈕時,將計數(shù)值清零(歸位)。 *
      * *
      *******************************************************************/
      #Include <reg52.h>
      sbit PINA = P1^0;
      sbit PINB = P1^1;
      sbit PIND = P1^2;
      unsigned char display[3];
      unsigned char code LEDData[ ] =
      {
      0xC0,0xF9,0xA4,0xB0,0x99,0x92,
      0x82,0xF8,0x80,0x90,0xff
      };
      char code reserve[3]_at_ 0x3b; //保留0x3b開始的3個字節(jié)
      unsigned char counter = 0; //編碼器脈沖計數(shù)
      unsigned char n,shift;
      /**********************************************************
      ms延時子函數(shù)
      **********************************************************/
      void delayms(unsigned int ms)
      {
      unsigned char k;
      while (ms--)
      {
      for (k = 0; k < 114; k++)
      ;
      }
      }
      /**********************************************************
      掃描編碼器子函數(shù)
      在編碼器引腳A為低電平期間:
      編碼器引腳B從0到1為正轉(zhuǎn),編碼器引腳B從1到0為反轉(zhuǎn)。
      **********************************************************/
      void scan_encoder(void)
      {
      static bit Curr_encoder_b; //定義一個變量來儲存當(dāng)前B信號
      static bit Last_encoder_b; //定義一個變量來儲存上次B腳信號
      static bit updata= 0;
      if( PINA && PINB) //編碼器無轉(zhuǎn)動退出
      {
      updata = 0;
      return;
      }
      Last_encoder_b = PINB; //記錄B信號
      while(!PINA) //等待A由低變高
      {
      Curr_encoder_b = PINB; //記錄等待期間的B信號(指當(dāng)前B信號)
      updata = 1;
      }
      if(updata)
      {
      updata = 0 ;
      if( (Last_encoder_b == 0)&&(Curr_encoder_b== 1) ) //B從0到1為正轉(zhuǎn)
      {
      if(counter == 255)
      return;
      counter++; //正轉(zhuǎn)計數(shù)加
      }
      else if( (Last_encoder_b == 1)&&(Curr_encoder_b == 0) ) //B從1到0為反轉(zhuǎn)
      {
      if(counter == 0)
      return;
      counter--; //反轉(zhuǎn)計數(shù)減
      }
      }
      }
      /**********************************************************
      主函數(shù)
      **********************************************************/
      void main(void)
      {
      P0 = 0xff;
      P1 = 0xff;
      P2 = 0xff;
      T2CON = 0x00; //設(shè)置T2CON寄存器
      TH2 = 0xfc; //1ms定時
      TL2 = 0x66;
      ET2 = 1; //啟用Timer2中斷
      EA = 1; //總中斷允許
      TR2 = 1; //啟動定時器2
      counter = 0; //計數(shù)單元清零
      while(1)
      {
      scan_encoder();
      if(! PIND) //當(dāng)按下旋鈕時
      {
      counter = 0; //計數(shù)單元清零(歸位)
      delayms(10);
      }
      }
      }
      /*********************************************************
      Timer2中斷函數(shù)
      **********************************************************/
      void timer2() interrupt 5
      {
      TR2 = 0;
      TF2 = 0; //手工清中斷標志
      TH2 = 0xfc; //1ms定時常數(shù)
      TL2 = 0x66;
      if(n >= 3) //3位數(shù)碼管顯示
      {
      n = 0;
      shift = 0xfe; //送位碼初值
      P2 = 0xff; //關(guān)閉顯示
      }
      else
      {
      display[0] = counter%10; //個位數(shù)據(jù)
      display[1] = (counter%100)/10; //十位數(shù)據(jù)
      display[2] = counter/100; //百位數(shù)據(jù)

      if(display[2] == 0)
      {
      display[2] = 0x0a; //百位為0,不顯示
      if(display[1] == 0)
      display[1] =0x0a; //十位為0,不顯示
      }
      P0 = LEDData[display[n++]]; //送段碼
      P2 = shift; //送位碼
      shift = (shift<<1)|0x01; //調(diào)整位碼
      }
      TR2 = 1;
      }
      網(wǎng)站首頁 關(guān)于我們 新聞中心 產(chǎn)品中心 聯(lián)系我們
      備案號:滬ICP備09051314號-3   GoogleSitemap   技術(shù)支持:智能制造網(wǎng) 管理登陸
      © 2018 上海德晶光電科技有限公司DECHING(www.yisuchong.com) 版權(quán)所有 總訪問量:508923
      熟妇一区二区| 青青草国产亚洲精品久久| 欧美爱爱爱视频| 国产人妻在线| 性欧美狂战久久久久久久海边| 免费人妻精品| 嘉义县| 天天色色天天| 亲女小嫩嫩h乱视频在线观看| 狠狠干狠狠操AV| 百色市| 久久无码少妇| 熟女视频91| 国产成人精品无码久久久精东影业| 久久熟女五十路| 极品少妇无码| 日本久久一区| jizz精品| 天天干学生妹| 中文字幕人妻高清乱码| 亚洲美女精品视频| 久久久影院| 蜜桃免费视频| 人妻视频导航| 人人爽人人人| 天天综合伊人| 亚洲精品美女| 欧美日韩一区二区在线| 秋霞成人午夜鲁丝一区二区三区| 人妻制服av| 亚洲人娇小的毛茸茸| 欧美性大战久久久久| 天天操综合网| 青娱乐免费视频| 精品少妇av| 91人妻无码一区二区三区 | 日日嗨av一区二区一牛影视| 色多多网| 国四虎影永久| 林口县| 人妻精品久久久麻豆|