• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

周期为50ms的三角波C语言源程序思路怎么写?

小菜鸟_4624 2018-11-08 浏览量:1767
周期为50ms的三角波C语言源程序思路怎么写?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 想要达到50MS的周期,必须要使用定时器。

    软件延时不好使。

    另外,需要根据你的DAC的速度进行定时器中断周期设定以及细分度的划分。

    比如,定时器设置1MS中断一次,

    那么需要50次中断才能完成一个三角波的周期,每个中断DAC输出幅度增加。

    所以,你的DAC操作必须要在1MS内完成。


    • 发布于 2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15
  • #define DA0832 XBYTE[0x7fff]

    #define uchar unsigned char

    #define uint unsigned int

    uchar ij;

    void delay_100us()

    { TH1=0xff;                 //置定时器初值0xff9c,即65436,定时0.1ms

      TL1=0x9c;

      TR1=1;                    // 启动定时器1

      while(!TF1);             // 查询计数是否溢出,即定时0.1ms时间到,TF1=1

      TF1=0;                    // 0.1ms时间到,将定时器溢出标志位TF清零

    }

    void main(void)

    {    TMOD=0x10;            // 置定时器1为方式1

         while(1)

         { for(i=0;i<=255;i++)   //形成三角波输出值,最大255

           {    DA0832=i;        //D/A转换输出

                delay_100us();

           }

           for(j=255;j>=0;j--)//形成三角波输出值,最大255

           {    DA0832=j;            //D/A转换输出

                delay_100us();

           }

         }

    }

    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0


  • {    TMOD=0x10;            // 置定时器1为方式1

         while(1)

         { for(i=0;i<=255;i++)   //形成三角波输出值,最大255

           {    DA0832=i;        //D/A转换输出

                delay_100us();

           }

           for(j=255;j>=0;j--)//形成三角波输出值,最大255

           {    DA0832=j;            //D/A转换输出

                delay_100us();

           }

         }

    }

    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 自己就写出来啦。

    不过你的程序不具有通用性吧,最好进行一次封装,这样可以在不同的支持DAC输出的地方输出。类似

    void sO(uint t    uint  v   uint  p)// 其中 t是设置周期,v是幅度最大值,p是输出端口

    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般要有支持dac的单片机才能输出特定的波形,思路就是把三角波分为多个点每个点的电压值转换成adc值然后持续输出,也有用pwm做的但是要有硬件支持
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用定时器来实现,要注意DAC的操作时间。
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 我还是给链接吧,锯齿波,三角波http://www.docin.com/p-737664051.html
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 通过for循环输出da把的值,和流水灯差不多
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 单片机有DAC吧?

    有DAC就创建周期50ms的三角波数据表,然后定时器中断查表输出DAC值

    输出加上滤波


    如果没有DAC就用PWM做,一样查表输出,输出一样滤波


    如果还想简单,就输出方波,外面用运放做积分电路

    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 定时器定时25ms,DAC输出波形的值与定时器关联
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 创建一个数据表,然后提高dac输出就可以了,要用定时器
    • 发布于2018-11-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 用DA输出,隔一段时间输出一个特定的电压,这个电压跟时间的关系可以用函数表示,只要这个时间够短,就可以显示出三角波的效果
    • 发布于2018-11-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 感觉还是一个循环,看看测量波形再修改代码
    • 发布于2018-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 要使用DAC进行输出的了,这个时间要配置在DAc 的中断函数中,去实时修改波形
    • 发布于2018-12-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以用一个定时器来定时输出DAC的控制数据,控制DAC的输出
    • 发布于2018-12-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般都是用一个固定的时间来输出DAC,然后写出DAC输出
    • 发布于2018-12-17
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

周期为50ms的三角波C语言源程序思路怎么写?