找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)波形發(fā)生器+Proteus仿真程序設(shè)計(jì) 正弦波、三角波、矩形波

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:836200 發(fā)表于 2020-12-22 10:12 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本設(shè)計(jì)可產(chǎn)生正弦波、三角波、矩形波。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)





單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define DAC0832 XBYTE[0x7fff]  
  4. sbit a=P3^0;
  5. sbit b=P3^1;
  6. sbit c=P3^2;
  7. sbit e=P3^3;

  8. unsigned char code juxing[64]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  9.                                                                                                 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  10.                                                                                                 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
  11.                                                                                         };                                                
  12. unsigned char code sanjiao[64]={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,
  13.                                                                                                 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,};


  14. void delay(unsigned int x)         
  15. {         
  16.         unsigned char i;
  17.         while(x--)
  18.         for(i=0;i<=140;i++);      
  19. }
  20. void square(void)               
  21. {  
  22.         unsigned char i;
  23.         for(i=0;i<64;i++)                           
  24.         DAC0832=juxing[i];
  25. /*        for(i=0;i<255;i++)
  26.         DAC0832=0xff;
  27.         */
  28. }
  29. void sanjiaobo()         
  30. {   
  31.         unsigned char i;
  32.         for(i=0;i<64;i++)
  33.         {   
  34.         DAC0832=sanjiao[i];
  35.         }
  36. //  for(i=255;i>0;i--)
  37. //        {
  38. //        DAC0832=i;
  39. //        }  
  40. }
  41. void juchibo()
  42. {
  43.         int i;
  44.         unsigned char code sin[64]={135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,
  45.                                                                                                                         254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,
  46.                                                                                                                         121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,
  47.                                                                                                                         36,45,55,66,78,90,102,114,128
  48.                                     };//??????
  49.         for(i=0;i<64;i++)
  50.         {
  51.                 DAC0832=sin[i];
  52.         }

  53. }

  54. void main(void)
  55. {
  56.         e=0;  //???E1?????
  57.         while(1)
  58.         {
  59.                 switch(P1)
  60.                 {  
  61.                         case 0xfe:
  62.                                                                 delay(10);
  63.                                                                 while(P1==0XFF)
  64.                                                                 {square();}break;
  65.                         case 0xfd:
  66.                                         delay(10);
  67.                                                                 while(P1==0XFF)  
  68.                                                                 {sanjiaobo();} break;
  69.                         case 0xfb:
  70.                                         delay(10);
  71.                                                                 while(P1==0XFF)
  72.                                                           {juchibo();}break;
  73.                         default:break;   
  74.                 }
  75.         }
  76. }
復(fù)制代碼
仿真程序51hei下載地址:
諧波發(fā)生器.zip (57.95 KB, 下載次數(shù): 47)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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