找回密码
 注册
关于网站域名变更的通知
查看: 564|回复: 2
打印 上一主题 下一主题

单片机模拟低频DDS信号发生器系统仿真加源程序 DAC0832实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-17 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机模拟低频DDS信号发生器系统仿真加源程序 DAC0832实现
6 O4 Q) M3 K( e9 `( B
3 R' M. O% R& r6 G; v9 b

$ t9 A5 c1 v6 ^$ a给论坛的朋友们分享一个用51单片机做的模拟低频DDS信号发生器系统,带proteus仿真工程文件加单片机源程序.8 m' o7 p/ Z; {6 h0 [

: D7 z& g* Y0 q$ f2 C! p0 F4 cDDS信号发生器的部分单片机源程序:

6 p6 R( k) Q9 E7 e+ T, O
) c: R3 E* I$ W2 P2 T5 B! x0 n2 r
  {. j) A. O2 l
#include "sin_dds.h"9 M5 V  G$ _( f
+ l& a4 l9 H- B- E' @

5 e& q% @  S3 ^# Nuchar i,j;2 V7 Z5 w/ P9 T' ^
uint counter,step;- ?; y/ l2 p" q. l5 v

  _# o4 d1 L8 Q1 D- a% D0 z
. l& w& M$ e1 ~- M/ a
/**************定时器0初始化**********************************/
/ R% `# M& M4 Q8 G, Hvoid Init_Timer0(void); C  w/ i$ `$ V: m2 R/ N6 x
{
3 l3 n0 `5 P8 g/ ]   TMOD = (TMOD & 0XF0) | 0X01;         //定时器0,方式1
6 M  c/ o" n: |% u4 r3 ^   TH0 = 0xff;                                                //定时器初值
3 ?# ^0 I  P" ?8 |0 c   TL0 = 0xff;
$ c+ P% ^7 `7 H   TR0 =1;                                                         //启动定时器0: e' b1 e: a& T1 D5 O4 s
   ET0 =1;                                                        //开定时器0中断
6 h) R6 G, c4 ?4 s}: Z; r) K1 j, Q: }. A

; j- z- [/ \) q0 X% e: T

. @6 y: n4 r5 b9 r; J  s1 r/*************************主函数*********************************/5 L+ E9 Z* q9 |9 @! m
main()
2 d( c  D5 [; ]6 Y9 H{
* `2 x; b/ L6 ~5 O4 g7 }2 [% b: l3 ^   Init_Timer0();                                    //定时器0初始化! |( F$ w" }' B& b% U+ ^
   step=2;                                                        //数值采样步数初始化
9 [, `0 x! ~# w6 N$ F4 D   EA = 1;                                                        //CPU开中断/ d6 \  t# z/ @1 j  j. w7 c
         while(1)                                                $ I1 x% P' }; m6 T" g* o- Q# d/ @
        {
* E& O* Z" S5 ?- u                if(key_up == 0) if(step<4096) step++;         //数值采样步数加1,采样频率变高 ,正弦波周期变小
7 p$ Q! I9 y: B' r  a                if(key_dw == 0) if(step>1) step--;                 //数值采样步数减1,采样频率变低 ,正弦波周期变大
/ |1 Z$ R  g$ h- d& n- z6 K                while((!key_up)||(!key_dw));                             //若有一个键按下去,则正弦波周期始终保持不变' i0 K$ G- M/ r
         }
7 B+ s. k2 T8 ?1 b$ z% l$ e8 B}. i3 W* [" t; Y& x1 T
/******************系统OS定时中断服务***************************/
3 J' {& n# I. d/ R# x+ cvoid OS_Timer0(void) interrupt 1 using 2+ P# d! C; f9 A
{                                                                                                           7 y% a, T6 [7 ~3 M9 ~
   TH0 = 0xff;                                                                          //重装定时器初值# D* ^( X3 h3 O  P, @
   TL0 = 0xff;                                                                           
& L0 W+ b6 Q, {: R$ T' i2 B   counter = counter + step;                                          //counter以step的步数递增
* |8 [6 T; o4 _5 `! E/ o   dac1=type[(unsigned int)counter>>8];                          //当counter加满(256/step)次时,dac1的采样值变化一次& k2 h5 J7 F5 s! t1 w5 v
}
$ h( f; J8 f- q; _  C! C2 Q. E6 b! W" v
& v# b4 A: e) R+ |8 @
全部资料下载(含仿真工程文件和完整代码):
/ v5 h$ C0 ~! l8 y3 Q
游客,如果您要查看本帖隐藏内容请回复
. t0 o$ L  p7 p. Q# e1 v/ M5 V8 ^

: m) _+ l" o8 o9 H

该用户从未签到

2#
发表于 2019-1-17 18:04 | 只看该作者
看看楼主的代码

该用户从未签到

3#
发表于 2022-3-5 16:17 | 只看该作者
我是新手,学习一下9 j: E. U9 i7 t* F1 q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 11:03 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表