找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5348|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機+DAC0832的信號發(fā)生器Proteus仿真設(shè)計(附仿真文件+Word文檔+C程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:596401 發(fā)表于 2019-8-7 12:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
設(shè)計要求:
1.輸出4種波形:方波、鋸齒波、三角波、正弦波;
2.幅值可調(diào)節(jié)范圍為2V~10V;
3.頻率可調(diào)節(jié)范圍為20Hz~80Hz;
設(shè)計思路:
通過Keil平臺下的C語言編程,單片機控制輸出的數(shù)字信號經(jīng)工作在直通方式下的DAC0832數(shù)模轉(zhuǎn)換,輸出方波、正弦波、鋸齒波、三角波4種電壓波形,且波形幅值、頻率可調(diào)。波形的切換、頻率和幅值的增減可通過按鍵模塊實現(xiàn),同時當前的波形信息可實時更新在LCD12864顯示模塊上,波形形象可通過示波器測量模塊展現(xiàn)。整個設(shè)計由Proteus仿真實現(xiàn),并能滿足設(shè)計內(nèi)容及要求。
程序思路:



仿真結(jié)果:
1.幅值為4V,頻率為20Hz的方波輸出信號


2.幅值為5V,頻率為50Hz的鋸齒波輸出信號


3.幅值為6V,頻率為60Hz的三角波輸出信號


4.幅值為10V,頻率為80Hz的正弦波輸出信號



由以上四圖看出,信號發(fā)生器仿真設(shè)計結(jié)果滿足設(shè)計要求,LCD液晶顯示的波形信息與示波器上的波形一一對應(yīng)。

程序代碼:
  1. intmain(void)
  2. {
  3. uchar data i=0;
  4. uchar idata strtemp[35];
  5. SP=0xA0;
  6. for(i=0; i<7; i++)
  7. {
  8.   //從20Hz開始,到80Hz,步長為10Hz,共7個頻率數(shù)據(jù),最高只能做到80Hz,同時由于啟動中斷會占用一定時間,所以補償25us。
  9.   freq=65535-(1000000/(20+i*10)/256)+25;
  10. }
  11. TMOD=0x11;
  12. ET0=1;
  13. ET1=0;
  14. EA=1;
  15. TL0=freq[index_freq]%256;
  16. TH0=freq[index_freq]/256;
  17. TR0=1;
  18. IT0=0;
  19. EX0=1;
  20. LE1=0;
  21. P2=amplitude[index_amp];
  22. EA=0;
  23. LE1=1;
  24. LCDinit12864();
  25. LCD_DispStrWide(0x00,"波形:1方波");
  26. LCD_DispStrWide(0x10,"頻率:20Hz");
  27. LCD_DispStrWide(0x08,"幅值:2.0V");
  28. LCD_DispStrWide(0x18,"波形 頻率 +-");
  29. LE1=0;   
  30. EA=1;
  31. while(1)
  32. {
  33.   if(K_WAVE==1)
  34.   {   
  35.     K_WAVE=0;
  36. C_WAVE++;
  37. if(C_WAVE>=4) C_WAVE=0;  //0:方波1:鋸齒波 2:三角波3:正弦波
  38.     sprintf(strtemp,"%s%s","波形:",disp_wave[C_WAVE]);
  39.     LE1=1;
  40.     EA=0;
  41.     LCD_DispStrWide(0x00,strtemp);
  42.     EA=1;
  43.     LE1=0;
  44.    }   
  45.   else if(K_FREQ_AMP==1)
  46.   {   
  47.      K_FREQ_AMP=0;
  48.      C_FREQ_AMP++;
  49.      if(C_FREQ_AMP >= 2) C_FREQ_AMP=0;
  50.      LE1=1;
  51.      EA=0;
  52.      if(C_FREQ_AMP == 0)
  53.       LCD_DispStrWide(0x18,"波形 頻率。");  //0:頻率
  54.      else
  55.       LCD_DispStrWide(0x18,"波形 幅值 +-");  //1:幅值
  56.      EA=1;
  57.      LE1=0;
  58.   }
  59.   else if(K_ADD == 1)
  60.   {        
  61.      K_ADD=0;
  62.      if(C_FREQ_AMP == 0)
  63.      {//在7種頻率之間切換 20Hz,30Hz,40Hz,50Hz,60Hz,70Hz,80Hz   
  64.      index_freq++;
  65.      if(index_freq>=7) index_freq=0;
  66.      sprintf(strtemp,"%s%d%s","頻率:",(int)(20+index_freq*10),"Hz");
  67.      LE1=1;
  68.      EA=0;
  69.       LCD_DispStrWide(0x10,strtemp);
  70.      EA=1;
  71.      LE1=0;
  72.      }
  73.      else
  74.      {
  75.       //在9種幅值之間切換  1V,2V,3V,4V,5V,6V,7V,8V,9V,10V
  76.      index_amp++;
  77.    if(index_amp > 8) index_amp=0;   
  78. sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
  79.      LE1=1;
  80.      EA=0;
  81.       LCD_DispStrWide(0x08,strtemp);
  82.       LCD_DispStrWide(0x10,"頻");
  83.      EA=1;
  84.       LE1=0;
  85.      P2=amplitude[index_amp];
  86.      }
  87.   }
  88.   else if(K_REDUCE==1)
  89.   {        
  90.      K_REDUCE=0;
  91.      if(C_FREQ_AMP == 0)
  92.      {   
  93.       if(index_freq > 0)
  94.       index_freq--;
  95.       sprintf(strtemp,"%s%d%s","頻率:",(int)(20+index_freq*10),"Hz");
  96.       LE1=1;
  97.       EA=0;
  98.      LCD_DispStrWide(0x10,strtemp);
  99.      EA=1;
  100.      LE1=0;
  101.      }
  102.      else
  103.      {
  104.      if(index_amp > 0)
  105.      index_amp--;
  106.      sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
  107.       LE1=1;
  108.      EA=0;
  109.      LCD_DispStrWide(0x08,strtemp);
  110.      LCD_DispStrWide(0x10,"頻");
  111.      EA=1;
  112.      LE1=0;
  113.      P2=amplitude[index_amp];
  114.      }
  115.   }
  116. } return 0;

  117. }
復(fù)制代碼

word資源如下:內(nèi)容不全已經(jīng)刪除

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:316613 發(fā)表于 2023-5-20 14:11 | 只看該作者
沒有附件啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表