51单片机+DAC0832三角波的产生和输出程序与Proteus仿真

[复制链接]
查看28 | 回复0 | 2021-7-20 18:20:10 | 显示全部楼层 |阅读模式
本实验介绍三角波的产生和输出。并且可以通过本次实验加深定时器的应用。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
1.png

部分源码:完整源码请下载附件
  1. #include "reg51.h"
  2. #define u8 unsigned char
  3. u8 i=0;
  4. bit up=1;//up=1向上,0向下
  5. void delay(long d){while(d--);}
  6. //三角波    改成  正弦波
  7. void T0_init(void)
  8. {
  9.     TMOD = 0x01;
  10.     TH0 = 0x0FC;
  11.     TL0 = 0x18;
  12.     EA = 1;
  13.     ET0 = 1;
  14.     TR0 = 1;
  15. }

  16. void main (void)
  17. {
  18.         u8 k=0;
  19.         T0_init();
  20.         while(1)
  21.         {
  22.                 P1=k++;
  23.                 delay(10000);
  24.         }
  25. }

  26. void Timer0Interrupt(void) interrupt 1//1ms
  27. {
  28.     TH0 = 0x0FC;
  29.     TL0 = 0x18;
  30.       
  31.                 if(up==1)
  32.                 {
  33.                         P2=i++;
  34.                         if(i==255)up=0;
  35.                 }
  36.                 else
  37.                 {
  38.                         P2=i--;
  39.                         if(i==0)up=1;
  40.                 }
  41. }
复制代码
完整代码和proteus仿真文件: 定时器三角波.zip (109.75 KB, 售价: 1 工控币)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则