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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機PWM試驗程序

          AVR單片機PWM試驗程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏

          此圖電壓輸出位0.6V
          以下是程序源碼可從http://www.51hei.com/f/avrpwmcx.rar下載源文件.
          // ATMEGA16 晶振8MHZ

          #include
          #define uchar unsigned char
          #define uint unsigned int
          #define xtal 8
          __flash uchar seg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管碼表
          __flash uchar tab[]={0xfe,0xfd,0xfb,0xf7};//數(shù)碼管位選
          //---------------------------------
          void delaynms(uint k) //延時k毫秒函數(shù)
          {
          uint i,j;
          for(i=0;i
          {
          for(j=0;j<1140;j++);
          }
          }

          uint wide; //脈沖寬度

          void portinit() //端口初始化
          {
          DDRA=0xff;
          PORTA=0xff;
          DDRC=0xff;
          PORTC=0xff;
          DDRB=0xff;
          PORTB=0xff;
          DDRD=0xff;
          PORTD=0xff;
          }

          void time1init() //定時器設置函數(shù)
          {
          TCCR1A=0x83; //升序計數(shù)比較匹配清零,降序計數(shù)比較匹配置位
          TCCR1B=0x02; //設置為相位修正PWM模式,選擇8分頻
          }

          void initdevice()
          {
          portinit();
          time1init();
          }

          void scanint1() //PD3口按下,脈寬增加
          {
          if((PIND&0x08)==0)
          {
          delaynms(10);
          if((PIND&0x08)==0)
          {
          if(wide<1023)wide++; 脈寬最大增加到1023
          delaynms(200);
          }
          }
          }

          void scanint0() //PD2按下,脈寬減少
          {
          if((PIND&0x04)==0)
          {
          delaynms(10);
          if((PIND&0x04)==0)
          {
          if(wide>0)wide--;
          delaynms(200);
          }
          }
          }


          void main(void)
          {
          long x;
          uint voltage;
          initdevice();
          delaynms(100);
          while(1)
          {
          voltage=wide;
          OCR1AH=(uchar)(wide>>8); 脈寬取低8位
          OCR1AL=(uchar)(wide&0xff);脈寬低8位和高8位組合成比較匹配器A的數(shù)值
          scanint1();
          scanint0();
          x=(long)voltage; 設置電壓變量
          x=(x*5000)/1023; 電壓為5V 分辨率5000設置
          voltage=(uint)x;
          PORTA=seg7[voltage/1000];
          PORTC=tab[3];
          PORTA=seg7[voltage%1000/100];
          PORTC=tab[2];
          PORTA=seg7[voltage%100/10];
          PORTC=tab[1];
          PORTA=seg7[voltage%10];
          PORTC=tab[0];
          }
          }

          上一頁 1 2 下一頁

          評論


          技術專區(qū)

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