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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機做信號發(fā)生器實例編程

          51單片機做信號發(fā)生器實例編程

          作者: 時間:2014-01-16 來源:網(wǎng)絡 收藏

          //用,同時輸出四種頻率的方波。
          //要求:晶振為12MHz,用T0做定時器,在P1的低四位輸出四種頻率的方波:

          // P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz

          //另外,上述四個頻率要求用一個四選一數(shù)據(jù)選擇器,再選出其中的一個輸出出去。
          //P1.6、P1.7的輸出用來控制四選一數(shù)據(jù)選擇器的選擇位,它們由P3.0按鍵控制。
          //懸賞分:10 - 解決時間:2009-12-5 10:45
          //===================================================
          //最佳答案:
          //本題目早在一年前就回答完畢,現(xiàn)在增加了PROTEUS仿真圖片發(fā)上博客。
          //題目要求在相鄰四條接口線輸出的四種頻率,恰有二倍的關系,這就可以利用一個定時中斷來完成。
          //題目還要求使用一個數(shù)據(jù)選擇器,通過按鍵選擇一個頻率來輸出。
          //利用PROTEUS仿真的截圖如下所示。
          //圖中在輸出端接上了一個頻率計和一個揚聲器,進行頻率檢測。
          //當按下按鍵時,輸出頻率可以輪番轉(zhuǎn)換。
          //圖中把四種頻率的檢測結(jié)果都截圖顯示,可以看出,輸出的頻率十分理想。
          //PC的揚聲器也能聽到聲音,10kHz的頻率,比較刺耳。

          //以下程序已經(jīng)仿真成功。
          //---------------------------------------------------
          #include reg52.h>
          #define uchar unsigned char
          #define TL_0SET (256 - 50) //定時時間選為50us
          //輸出的方波周期將為100us, 10kHz
          sbit P3_2 = P3^2; //用于按鍵
          sbit P1_0 = P1^0; //四個頻率輸出
          sbit P1_1 = P1^1; //
          sbit P1_2 = P1^2; //
          sbit P1_3 = P1^3; //
          sbit P1_6 = P1^6; //兩個選擇控制輸出
          sbit P1_7 = P1^7; //

          bdata uchar x = 0;
          sbit p16 = x^0;
          sbit p17 = x^1;

          uchar i, j;
          //---------------------------------------------------
          void e0int() interrupt 0 //外部中斷0作開關,控制四選一數(shù)據(jù)選擇器
          {
          while(P3_2 == 0) {;} //等待按鍵釋放
          x++;
          if(x == 4) x = 0; //改變當前輸出的選擇
          P1_7 = p16;
          P1_6 = p17;
          }
          //---------------------------------------------------
          void time0() interrupt 1 //T0的中斷服務程序
          { //T0工作在方式2,自動裝入初始值
          i++;
          j = i % 16; //?。榈牡退奈?BR>j += x 6; //組合上數(shù)據(jù)選擇器的控制信號
          P1 = j; //輸出四種頻率的方波以及控制信號
          }
          //---------------------------------------------------
          void main()
          {
          TMOD = 0x02; //T0定時方式2
          TH0 = TL_0SET; //自裝入式的定時初始值
          TR0 = 1; //啟動T0
          ET0 = 1;
          IT0 = 1; //外部中斷0由下降沿觸發(fā)
          EX0 = 1; //外部中斷0允許
          EA = 1;
          while(1) {;}
          }
          //---------------------------------------------------

          信號發(fā)生器



          評論


          相關推薦

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