標題: 51單片機+DAC0832可調(diào)幅度及頻率信號發(fā)生器程序+Proteus仿真設(shè)計 [打印本頁]

作者: Leawon    時間: 2019-4-13 13:46
標題: 51單片機+DAC0832可調(diào)幅度及頻率信號發(fā)生器程序+Proteus仿真設(shè)計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. //文件、端口定義、程序開始
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit SQU_K=P1^4;                 //開關(guān)接口定義
  6. sbit SAW_K=P1^5;
  7. sbit TRI_K=P1^6;
  8. sbit SIN_K=P1^7;               
  9. sbit SQU_L=P1^0;
  10. sbit SAW_L=P1^1;
  11. sbit TRI_L=P1^2;
  12. sbit SIN_L=P1^3;               
  13. sbit ST=P3^0;                          //0808接口定義
  14. sbit EOC=P3^3;
  15. sbit OE=P3^4;
  16. sbit CS=P3^2;                 //0832接口定義
  17. sbit W_R=P3^6;
  18. uchar code sin_tab[]={0,0,0,0,1,1,2,3,4,5,6,8,
  19.                                           9,11,13,15,17,19,22,24,
  20.                                           27,30,33,36,39,42,46,49,
  21.                                           53,56,60,64,68,72,76,80,
  22.                                           84,88,92,97,101,105,110,114,
  23.                                           119,123,128,132,136,141,145,150,
  24.                                           154,158,163,167,171,175,179,183,
  25.                                           187,191,195,199,202,206,209,213,
  26.                                           216,219,222,225,228,231,233,236,
  27.                                           238,240,242,244,246,247,249,250,
  28.                                           251,252,253,254,254,255,255,255
  29.                                           };
  30. //讀ADC0808子程序
  31. unsigned char adc0808(void)
  32. {        
  33.                 uchar dat,i;
  34.                 ST=0;
  35.                 ST=1;
  36.                 ST=0;
  37.                 for(i=10;i>0;i--)
  38.                 while(!EOC);
  39.                 OE=1;
  40.                 dat=P2;
  41.                 return(dat);
  42. }
  43. //方波發(fā)生函數(shù)
  44. void square()
  45. {
  46.         uchar a,b;
  47.         for(a=0;a<127;a++)
  48.         {
  49.                 P0=0xff;
  50.                 P2=0xff;
  51.                 b=adc0808();
  52.                 b=~b;
  53.                 while(b--);                        //調(diào)節(jié)相位,b的變化越大,相位變化越小
  54.         }
  55.         for(a=0;a<127;a++)
  56.         {
  57.                 P0=0;
  58.                 P2=0xff;
  59.                 b=adc0808();
  60.                 b=~b;
  61.                 while(b--);
  62.         }
  63. }
  64. //鋸齒波發(fā)生函數(shù)
  65. void sawtooth()
  66. {
  67.         uchar a,b;
  68.         for(a=0;a<255;a++)
  69.         {        
  70.                 P0=a;
  71.                 P2=0xff;
  72.                 b=adc0808();
  73.                 b=~b;
  74.                 while(b--);
  75.         }
  76. }
  77. //三角波發(fā)生函數(shù)
  78. void triang()
  79. {
  80.         uchar a,b;
  81.         for(a=0;a<254;a=a+2)
  82.         {
  83.                 P0=a;
  84.                 P2=0xff;
  85.                 b=adc0808();
  86.                 b=~b;
  87.                 while(b--);
  88.         }
  89.         for(a;a>1;a=a-2)
  90.         {
  91.                 P0=a;
  92.                 P2=0xff;
  93.                 b=adc0808();
  94.                 b=~b;
  95.                 while(b--);
  96.         }
  97. }
  98. //正弦波發(fā)生函數(shù)
  99. void sinwave()
  100. {
  101.         uchar a,b;
  102.         for(a=0;a<92;a++)
  103.         {
  104.                 P0=sin_tab[a];
  105.                 P2=0xff;
  106.                 b=adc0808();
  107.                 b=~b;
  108.                 while(b--);
  109.         }
  110.         for(a=a-1;a>0;a--)
  111.         {
  112.                 P0=sin_tab[a];
  113.                 P2=0xff;
  114.                 b=adc0808();
  115.                 b=~b;
  116.                 while(b--);
  117.         }
  118. }
  119. //主函數(shù)
復制代碼
全部資料51hei下載地址:
信號發(fā)生器.zip (969.18 KB, 下載次數(shù): 245)


作者: asdafdfaf    時間: 2020-6-17 16:46
沒有仿真圖啊
作者: Leawon    時間: 2020-6-19 16:33
asdafdfaf 發(fā)表于 2020-6-17 16:46
沒有仿真圖啊

把程序燒進去仿真
作者: hdhdh    時間: 2021-6-25 10:50
Leawon 發(fā)表于 2020-6-19 16:33
把程序燒進去仿真

感謝感謝感謝
作者: jinlingpop    時間: 2022-3-4 10:11
非常棒哦,是自己想要的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1