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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机模拟低频DDS信号发生器系统仿真加源程序 DAC0832实现) ]' f" @. n% J" ^

% J/ ]$ w5 R6 y8 |* y) _

7 |) F& m" K, h  E! Q4 f给论坛的朋友们分享一个用51单片机做的模拟低频DDS信号发生器系统,带proteus仿真工程文件加单片机源程序.
  [- _" i9 G8 O* @0 l
: E  y5 Z0 a2 t3 F! A5 ^  YDDS信号发生器的部分单片机源程序:
1 O; F  P( ]" V, R" k: w

# b% _1 n8 x9 d6 r

; U2 E; p7 X' h! d7 x+ `! Z#include "sin_dds.h"9 ]; [/ q# s, P

( G; B/ ]& x1 O
. O2 r5 o! K! p6 P( c" @% R/ [2 Y
uchar i,j;
6 q4 }- u! g+ auint counter,step;4 ^9 u4 R1 A. Q' u3 d% Q* H% M6 I5 q
7 [2 E: y" r8 Z# s' |! F
7 C* F+ S' K9 k1 E3 \7 [: I
/**************定时器0初始化**********************************/: `3 @+ e, q0 |' I
void Init_Timer0(void)
( V6 W) D3 ]9 v2 j, I{7 O( D% T: G2 ]1 I# K, y
   TMOD = (TMOD & 0XF0) | 0X01;         //定时器0,方式1, B/ N* F: ^) ~# s' W
   TH0 = 0xff;                                                //定时器初值
5 g. J' O2 {5 p) _   TL0 = 0xff;
5 s! k0 N) H' d   TR0 =1;                                                         //启动定时器0
/ U, y& \* z% c' R: t  G" l, r0 ]   ET0 =1;                                                        //开定时器0中断) F4 C# m. y2 D" W4 J/ k& K
}
9 p5 V. r0 w) A; {3 ?1 N
* ]+ n: l' `  |

2 N3 J/ J2 O$ r7 W; |/*************************主函数*********************************/! d* c3 o& d6 Q, S# u* w+ K
main()- @5 n0 G7 L  h# x
{
6 Q. L1 n! ~1 C/ N2 [9 Z   Init_Timer0();                                    //定时器0初始化. E% H& C1 p/ m( ~3 I% y3 m% U
   step=2;                                                        //数值采样步数初始化1 D9 ]' c! W! C8 {1 {" f9 M
   EA = 1;                                                        //CPU开中断/ w7 v' y* Q$ Q
         while(1)                                                
0 A1 x; L  a  h/ q$ U! S! x1 C3 N4 c        {
& o* ]- B* g, }  z* W                if(key_up == 0) if(step<4096) step++;         //数值采样步数加1,采样频率变高 ,正弦波周期变小+ W4 N: r. @% C7 C
                if(key_dw == 0) if(step>1) step--;                 //数值采样步数减1,采样频率变低 ,正弦波周期变大
* K! h, a( }' \" R9 m3 Q4 M$ x2 T                while((!key_up)||(!key_dw));                             //若有一个键按下去,则正弦波周期始终保持不变  t- ]( }+ m7 F+ \. B. K- U& S( @
         }
+ q: U2 j. F( o1 X  N$ a5 e* o}
& Y9 I; D, W8 f! u/******************系统OS定时中断服务***************************/
0 i: ~* A, p7 z1 z* ]! Tvoid OS_Timer0(void) interrupt 1 using 2
4 F& a  ]! ?2 X' F* `# k4 O1 T{                                                                                                           
" F4 ~: e% r, l6 @! v   TH0 = 0xff;                                                                          //重装定时器初值9 m" Q: }0 G  m# ~. t
   TL0 = 0xff;                                                                           
! k& F' u. l1 s! e, s2 k7 X   counter = counter + step;                                          //counter以step的步数递增9 G$ N! r3 S9 b! {0 g9 P( A
   dac1=type[(unsigned int)counter>>8];                          //当counter加满(256/step)次时,dac1的采样值变化一次# b  P6 z7 x# u* d2 Q1 m6 p1 b5 I- g  h
}: n- }) ]& j. a

# K9 R( Z9 \1 Z# d  W
0 E( v4 Q; W' s2 `3 _9 Q; J  p# e% M全部资料下载(含仿真工程文件和完整代码):7 `$ @2 [7 O. D& V3 E0 \
游客,如果您要查看本帖隐藏内容请回复
* u% z/ F& v! J$ T- b8 |; }4 ]

" y& T1 x, q9 u) B/ F* l

该用户从未签到

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

该用户从未签到

3#
发表于 2022-3-5 16:17 | 只看该作者
我是新手,学习一下" P8 }- O+ P% g, G7 z0 @' Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 09:48 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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