找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8118|回復(fù): 4
收起左側(cè)

模數(shù)轉(zhuǎn)換芯片DAC0832產(chǎn)生鋸齒波 三角波發(fā)生器 proteus仿真及源碼

[復(fù)制鏈接]
ID:137190 發(fā)表于 2016-10-10 16:16 | 顯示全部樓層 |閱讀模式
51單片機(jī)驅(qū)動(dòng)模數(shù)轉(zhuǎn)換芯片DAC0832產(chǎn)生鋸齒波 三角波的proteus仿真原理圖:
0.png
單片機(jī)源程序:
  1. /********************************************************************
  2. 51黑電子論壇
  3. *********************************************************************/
  4. #include<reg52.h>                 //庫文件
  5. #define uchar unsigned char//宏定義無符號字符型
  6. #define uint unsigned int  //宏定義無符號整型
  7. /********************************************************************
  8.                             初始定義
  9. *********************************************************************/
  10. sbit P3_2=P3^2;
  11. sbit P3_3=P3^3;
  12. unsigned char keycnt=0;
  13. unsigned char tcnt=0; //鍵值判斷
  14. bit sjz=0; //產(chǎn)生三角波時(shí)用到的標(biāo)志

  15. void delayl() //延時(shí)子程序
  16. {
  17.         unsigned char i,j;
  18.         for(i=20;i>0;i--)
  19.         for(j=248;j>0;j--);
  20. }

  21. void KEY() //按鍵掃描程序
  22. {
  23.   if(P3_2==0)
  24.   {
  25.     delayl(); //延時(shí)跳過按下時(shí)的抖動(dòng)
  26.     if(P3_2==0)
  27.     {                     
  28.      keycnt=0; //定時(shí)器產(chǎn)生鋸齒波標(biāo)志
  29.      TR0=0; //暫時(shí)停止波形輸出
  30.      TH0=0x256-40; //對TH0 TL0 賦值
  31.      TL0=0x256-40;
  32.      TR0=1; //開始定時(shí),產(chǎn)生鋸齒波
  33.      while(P3_2==0); //如果一直按著鍵,則等待松鍵開
  34.      delayl(); //延時(shí)跳過松開后的抖動(dòng)
  35.     }
  36.    }

  37.   if(P3_3==0)
  38.   {
  39.     delayl(); //延時(shí)跳過按下時(shí)的抖動(dòng)
  40.     if(P3_3==0)
  41.     {
  42.      keycnt=1; //定時(shí)器產(chǎn)生三角波標(biāo)志
  43.      TR0=0; //暫時(shí)停止波形輸出
  44.      TH0=0x256-40; //對TH0 TL0 賦值
  45.      TL0=0x256-40;
  46.      TR0=1; //開始定時(shí) 產(chǎn)生三角波
  47.      }
  48.    while(P3_2==0); //如果一直按著鍵,則等待松鍵開
  49.    delayl(); //延時(shí)跳過松開后的抖動(dòng)
  50. }
  51. }

  52. void t0(void) interrupt 1 using 0 //定時(shí)中斷服務(wù)函數(shù)
  53. {
  54.    if(keycnt==0) //產(chǎn)生鋸齒波
  55.    {
  56.      P0=tcnt;
  57.      tcnt=+0x0a; //步進(jìn)0.2V/一次中斷
  58.      if(tcnt==0xfb)
  59.        tcnt=0;
  60.    }

  61.    if(keycnt==1) //產(chǎn)生三角波
  62.    {
  63.      if(sjz==0)
  64.      {
  65.        P0=tcnt;
  66.        tcnt=+0x0a;//步進(jìn)0.2V/一次中斷
  67.        if(tcnt==0xfa)
  68.          sjz=1;
  69.       }
  70.       if(sjz==1)
  71.       {
  72.        P0=tcnt;
  73.        tcnt=-0x0a;
  74.        if(tcnt==0)                     
  75.        sjz=0;
  76.      }
  77.     }
  78. }
  79. void main(void)
  80. {
  81.   TMOD=0x02; //定時(shí)器工作在方式2
  82.   ET0=1;
  83.   EA=1;
  84.   while(1)
  85.    KEY();
  86. }
復(fù)制代碼
0.png


仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個(gè)單片機(jī)仿真,全部下載后找到第013個(gè)項(xiàng)目即可):
http://www.torrancerestoration.com/bbs/dpj-56298-1.html
回復(fù)

使用道具 舉報(bào)

ID:121114 發(fā)表于 2016-11-2 22:44 | 顯示全部樓層
示波器呢?
回復(fù)

使用道具 舉報(bào)

ID:425369 發(fā)表于 2018-11-12 23:00 來自觸屏版 | 顯示全部樓層
可以使用嗎
回復(fù)

使用道具 舉報(bào)

ID:573415 發(fā)表于 2020-3-13 13:58 | 顯示全部樓層
示波器呢。。?
回復(fù)

使用道具 舉報(bào)

ID:1080159 發(fā)表于 2023-5-28 01:22 來自觸屏版 | 顯示全部樓層
示波器:沒我也可以有波?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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