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

          新聞中心

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

          AVR單片機PWM試驗程序

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

          此圖電壓輸出位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è)置函數(shù)
          {
          TCCR1A=0x83; //升序計數(shù)比較匹配清零,降序計數(shù)比較匹配置位
          TCCR1B=0x02; //設(shè)置為相位修正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; 設(shè)置電壓變量
          x=(x*5000)/1023; 電壓為5V 分辨率5000設(shè)置
          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 下一頁

          關(guān)鍵詞: AVR單片機PWM試驗程

          評論


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

          關(guān)閉