久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3108|回復: 0
打印 上一主題 下一主題
收起左側

51單片機低頻信號發生器電路原理圖程序電路圖和Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>   //51頭文件
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. sbit s1=P3^2;
  5. sbit s2=P3^3;
  6. uchar k=0,p=0,delay=0;
  7. uchar bxxz=0;pinglv=0;
  8. uchar a=1,b=0,c=0,d=0;

  9. //正弦波數據
  10. uchar code sin[64]={
  11. 135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,
  12. 146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
  13. };
  14. //方波數據報表
  15. uchar code juxing[64]={
  16. 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  17. 255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  18. };

  19. //鋸齒波數據
  20. uchar code juchi[64]={
  21. 0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
  22. 146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
  23. };

  24. //三角波數據
  25. uchar code sanjiao[64]={
  26. 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
  27. 248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
  28. };
  29. void delay1()                  //延時  ms級
  30. {
  31.         int a,b;
  32.         for(a=1;a>0;a--)
  33.                 for(b=122;b>0;b--);
  34. }
  35. void int0() interrupt 0          //外部中斷0  P3.2  中斷處理,用于波形切換
  36. {       
  37.         EX0=0;
  38.         delay1();

  39.         if(s1==0)
  40.         {               
  41.                 bxxz++;
  42.                 if(bxxz==4)
  43.                 bxxz=0;
  44.                 switch(bxxz)
  45.                 {
  46.                         case 0 :
  47.                                 {a=1,b=0,c=0,d=0;}                //正弦波
  48.                                 break;
  49.                         case 1 :
  50.                                 {a=0,b=1,c=0,d=0;}                //方波
  51.                                 break;
  52.                         case 2 :                                       
  53.                                 {a=0,b=0,c=1,d=0;}                  //鋸齒波
  54.                                 break;       
  55.                         case 3 :
  56.                                 {a=0,b=0,c=0,d=1;}                  //三角波
  57.                                 break;
  58.                 }
  59.                 delay1();
  60.                 while(!s1);       
  61.         }

  62.         while(!s1);
  63.         EX0=1;          
  64. }

  65. void int1() interrupt 2                //外部中斷1  P3.3  中斷處理,用于頻率調節
  66. {
  67.         EX1=0;       
  68.         delay1();
  69.         if(s2==0){               
  70.         p++;
  71.         if(p==8)
  72.         p=0;
  73.         switch(p)
  74.         {
  75.                 case 1 :
  76.                         pinglv=4;                //400Hz
  77.                         break;
  78.                 case 2 :
  79.                         pinglv=8;                //250Hz
  80.                         break;       
  81.                 case 3 :
  82.                         pinglv=16;          //140Hz
  83.                         break;
  84.                 case 4 :
  85.                         pinglv=32;         //75Hz
  86.                         break;
  87.                 case 5 :
  88.                         pinglv=64;         //40Hz
  89.                         break;
  90.                 case 6 :
  91.                         pinglv=125;                //20Hz
  92.                         break;
  93.                 case 7 :
  94.                         pinglv=255;                   //10Hz
  95.                         break;                               
  96.                 default :
  97.                         pinglv=0;                   //1000Hz
  98.                         break;
  99.                 }
  100.                 delay1();
  101.                 while(!s2);       
  102.         }
  103.         while(!s2);       
  104.         EX1=1;        //開中斷
  105. }
  106. void main()
  107. {

  108.         EA=1;
  109.         IT0=1;
  110.         EX0=1;
  111.         IT1=1;
  112.         EX1=1;
  113.         pinglv=15;

  114.         while(1)
  115.         {
  116.             
  117.                 while(a)               //產生正弦波
  118.                 {
  119.                         delay=pinglv; //獲取周期數據
  120.                         P2=sin[k];          //數據數P2口進行波形轉換
  121.                         k++;
  122.                         if(k==64)          //一個周期取64點波數據
  123.                         k=0;

  124.                         while(delay)  //延時處理         
  125.                     delay--;
  126.                 }
  127.                 while(b)                   //產生方波
  128.                 {
  129.                         delay=pinglv;
  130.                         P2=juxing[k];
  131.                         k++;
  132.                         if(k==64)
  133.                         k=0;
  134.                         while(delay)           
  135.                     delay--;
  136.                 }
  137.                 while(c)                   //產生鋸齒波
  138.                 {
  139.                         delay=pinglv;
  140.                         P2=juchi[k];
  141.                         k++;
  142.                         if(k==64)
  143.                         k=0;
  144.                         while(delay)            
  145.                             delay--;
  146.                 }
  147.                 while(d)                         //產生三角波     
  148.                 {
  149.                         delay=pinglv;
  150.                         P2=sanjiao[k];
  151.                         k++;
  152.                         if(k==64)
  153.                         k=0;
  154.                         while(delay)            
  155.                     delay--;
  156.                 }
  157.         }
  158. }
復制代碼

所有資料51hei附件下載:
資料.7z (94.29 KB, 下載次數: 50)

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本天天操 | 亚洲理论在线观看电影 | 99精品国产一区二区三区 | 欧美性生活视频 | 激情五月婷婷在线 | 中文字幕在线免费视频 | 亚洲综合热 | 91看片官网 | 欧美日韩久久 | 日本精品一区二区 | 国产一区不卡 | 亚洲+变态+欧美+另类+精品 | 天堂视频一区 | 免费艹逼视频 | 狠狠色综合久久丁香婷婷 | 成人网av| 妖精视频一区二区三区 | www日本在线观看 | 欧美成人免费在线 | 日韩一三区 | 在线看亚洲 | 在线播放精品视频 | 日韩精品免费一区 | 奇米四色在线观看 | 99国产精品视频免费观看一公开 | 日韩欧美福利视频 | 久久久入口 | 欧美一区二区三区免费电影 | 日韩欧美一级精品久久 | 亚洲精品久久久久久久不卡四虎 | 色视频www在线播放国产人成 | 91国内在线观看 | 手机在线不卡av | 亚洲精品综合 | 免费一区二区三区在线视频 | 狠狠色狠狠色综合日日92 | 99精品国产一区二区青青牛奶 | 久久精品亚洲精品国产欧美 | 在线高清免费观看视频 | 超碰成人免费观看 | 嫩草视频在线免费观看 |