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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4943|回復: 1
收起左側

單片機產生方波鋸齒波三角波程序

[復制鏈接]
ID:200833 發表于 2017-5-15 09:42 | 顯示全部樓層 |閱讀模式
單片機產生方波鋸齒波三角波程序
基于單片機產生方波、鋸齒波、三角波程序.doc (34 KB, 下載次數: 9)

  1. #include<reg51.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. unsigned char x=0,m=0,y=128;

  5. sbit WR_DA=P2^1;
  6. sbit CS_DA=P2^0;//DA與單片機的接口
  7. sbit S0=P3^0; //波形選擇,每次按下將產生不同的波形
  8. sbit S1=P3^1; //頻率減
  9. sbit S2=P3^2; //頻率加
  10. sbit S3=P3^3; //調節方波的占空比

  11. uchar code SinTab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5

  12. ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5

  13. ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd

  14. ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda

  15. ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99

  16. ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51

  17. ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16

  18. ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00

  19. ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15

  20. ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e

  21. ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };

  22. void delayms(uint t)
  23. {
  24.     uint i;
  25.     while(t--)
  26.     {
  27.        for (i=0;i<125;i++);//對于11.0592M時鐘,約延時1ms
  28.     }
  29. }

  30. void delay(uint t)
  31. {
  32.     uint i;
  33.     for (i=t;i>0;i--);
  34. }


  35. void time0_init()
  36. {
  37.     TMOD|=0x01;   //定時器設置 16位
  38.     TH0=-50000/256;
  39.     TL0=-50000%256;//初始化值
  40.     ET0=1;
  41.     TR0=1;
  42.     EA=1;
  43. }

  44. void time0_int(void) interrupt 1
  45. {  
  46.     TR0=0;//關閉定時器
  47.     TH0=-50000/256;
  48.     TL0=-50000%256;//重裝初值

  49. if(S0==0)
  50. {
  51.      delayms(10);//按鍵消抖
  52.      if(S0==0) m++;
  53.    while(!S0);//松手檢測
  54. }

  55. if(S1==0)
  56. {
  57.      delayms(10);
  58.      if(S1==0) x=x+1;
  59.    while(!S1);//松手檢測
  60. }

  61. if(S2==0)
  62. {
  63.      delayms(10);
  64.      if(S2==0) x=x-1;
  65.    while(!S2);//松手檢測
  66. }

  67. if(S3==0)
  68. {
  69.      delayms(10);
  70.      if(S3==0) y=y+5;
  71.    while(!S3);//松手檢測
  72. }

  73. if(y>254) y=0;
  74. if(m>5) m=0;
  75. if(x>50) x=0;
  76. TR0=1;//啟動定時器
  77. }

  78. void fangbo()    //方波
  79. {  
  80.    uchar i,j;
  81.    j=255-y;
  82.    CS_DA=0;
  83.    WR_DA=0;
  84. for(i=y;i>0;i--)
  85. {
  86.     P0=0;
  87.     delay(x);
  88. }

  89. while(j--)
  90. {
  91.     P0=255;
  92.     delay(x);
  93. }   
  94. }

  95. void juchi()    //鋸齒波
  96. {
  97.     uchar i;
  98.     CS_DA=0;
  99.     WR_DA=0;
  100. for(i=255;i>0;i--)
  101. {   
  102.      P0=i;
  103.      delay(x);
  104. }

  105. }
  106. void sanjiao()      //三角波
  107. {
  108. uchar i;
  109.     CS_DA=0;
  110.     WR_DA=0;
  111. for(i=0;i<255;i++)
  112. {
  113.      P0=i;
  114.      delay(x);
  115. }
  116. while(i--)
  117. {
  118.     P0=i;
  119.     delay(x);
  120. }
  121. }

  122. void tixing()         //梯形波
  123. {
  124. uchar i=255,j,k;
  125. CS_DA=0;
  126. WR_DA=0;
  127. while(i--)
  128. {
  129.    P0=i;
  130.    delay(x);
  131. }

  132. for(j=0;j<100;j++)
  133. {
  134.    P0=0;
  135.    delay(x);
  136. }

  137. for(k=0;k<255;k++)
  138. {
  139.    P0=k;
  140.    delay(x);
  141. }
  142. }

  143. void sin()      //正弦波
  144. {  
  145. uchar a;  
  146. CS_DA=0;
  147. WR_DA=0;
  148. for(a=0;a<255;a++)
  149. {
  150.    P0=SinTab[a];
  151.    delay(x);
  152. }
  153. }

  154. main()
  155. {
  156. time0_init();
  157. while(1)
  158. {
  159.    switch(m)
  160.    {
  161.      case 0:
  162.      fangbo();    //方波
  163.      break;
  164.      case 1:
  165.      juchi();    //鋸齒波
  166.      break;
  167.      case 2:
  168.      sanjiao();   //三角波
  169.      break;
  170.      case 3:
  171.      sin();    //正弦波
  172.      break;
  173.      case 4:
  174.      tixing();    //梯形波
  175.      break;
  176.      default: fangbo();
  177.    }
  178. }
  179. }

復制代碼


回復

使用道具 舉報

ID:266164 發表于 2018-6-20 22:45 | 顯示全部樓層
此程序我試驗了。不可用啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二区三 | 国产a区| 国产98色在线 | 日韩 | 美女久久久久久久 | 色一阁 | 一本色道久久综合亚洲精品高清 | 国产欧美在线播放 | 欧美色综合一区二区三区 | 国产亚洲精品91 | 国产欧美一区二区精品忘忧草 | 日韩欧美在线视频 | 欧美一区视频 | 精品毛片视频 | 男女羞羞视频网站 | 亚洲精品免费视频 | 色综合一区二区三区 | 涩涩鲁亚洲精品一区二区 | 日韩精品一区二区三区在线观看 | 日本黄色免费大片 | 羞羞视频在线免费 | 国产综合在线视频 | 国产99久久久国产精品下药 | 国产精品国产成人国产三级 | 久久久噜噜噜久久中文字幕色伊伊 | 国产亚洲精品综合一区 | 99tv| 久久久久久网站 | 久久av一区二区三区 | 国产高清在线视频 | 欧美在线观看一区 | 国产精品视频一二三区 | 亚洲国产成人精品久久 | 国产蜜臀97一区二区三区 | 国产欧美精品一区二区色综合朱莉 | 成人99 | 高清国产午夜精品久久久久久 | 中文字幕在线播放第一页 | 久久久久久久夜 | 日韩高清一区 | 神马久久av | 欧美性一区二区三区 |