2. 电路设计及编程考虑
_%_l|n%yVO29132 单片机简易信号发生器电路框图如图1,仅由一片AT89C2051单片机,一片DAC0832和由运放组成的低通滤波器组成。AT89C2051内部有2KB的FLASH存储器,可以保存运行程序和波形参数,128字节的RAM可以用于存放波形参数。由于采用了数字合成技术,可以产生各种简单或复杂的波形。
aI ennK*K29132电子园51单片机学习网Ehv)d-dt
工作过程说明如下;(1)决定产生的信号波形;通电稳定工作以后,单片机首先读取P3.0和P3.1引脚信号,决定程序应跳转的地址。每个跳转地址有一个输出波形。(2)将保存在FLASH中的样本数据送往DAC0832,供其转换成模拟电压。
0KW+ep9l2r0h29132 首先应将波形参数转换成样本数据。假若每周期有N个样本数据,则第K个样本数据的计算方法为:电子园51单片机学习网D"X2C6[kw&Av
DK="127"(1+SIN(2πK/N) K=0,1,2,……N-1电子园51单片机学习网!ge(["BU!aT%^g
由于在实际产生波形的过程中,数据由运行程序逐个取得送出,在产生周期波时是一个循环过程。因此必须考虑程序取数、送数、循环等操作的时间开销。对于MCS51系列单片机,在晶振频率为12MHz时,每条指令的执行时间为1~2μs。为了使波形足够光滑,每周期的点数应尽可能多,这样要求单片机发送样本数据的速率尽量快。由于送数周期的限制,在增加样本点数时,输出信号频率会降低。同时从程序存储器空间取数时需要较长的时间,当样本数据的个数不多时,可以把样本数据先移到RAM中,程序执行时直接从RAM中取数送往DAC,就能增加发送样本数据的速率。
5am\.S_ S l'IX29132 下面以产生单一4800Hz正弦波为例,说明程序设计过程。参数N的计算见后面的说明。电子园51单片机学习网Z[Q:iM&a[T
ORG 0000H电子园51单片机学习网1bK#`7Cq;M-u
MOV R0,#0电子园51单片机学习网-e*pE:i;Q0{
MOV R1,#4电子园51单片机学习网n%n,jRg"U"\
MOV R2,#124电子园51单片机学习网|AgX^1is
MOV DPTR,#200H电子园51单片机学习网tkW v+NU
MOV A,#0
'K5P$B)ug;_*H M29132MOVD: MOVC A,@A+DPTR ;将样本数据从FLASH
I*TO[8m|H29132 MOV @R1,A ;移到内部RAM中,
[P P"`k:\-u!x7o29132 INC R0 ;可以减少送数时间电子园51单片机学习网J*a2G{\(v(V_
INC R1
mc#xy oQ2px)n{m29132 MOV A,R0电子园51单片机学习网u*Hu L5`-[:e9K [
DJNZ R2,MOVD
*w!X`v { l29132 MOV R0,#04电子园51单片机学习网KW6k@{ @4i5g
DOUT: MOV A,@R0 ;轮流送数到DAC
z$|.VH?o~3W29132 MOV P1,A
5j O#RaH!?29132 INC R0电子园51单片机学习网.F:w(I/|7K
CJNE R0,#128,DOUT
5L o)v9Em7G,jj29132 MOV P1,#128 ;从起点开始重新送样本数据电子园51单片机学习网*Gi JQ/?)_wo4Ry
MOV R0,#04 ;电子园51单片机学习网%p|W5GH0M3OO
SJMP DOUT ;送数循环结束电子园51单片机学习网+uq"[;Nn1Z]
;电子园51单片机学习网#~8KAy0R*B-yv#w
ORG 0200H ;样本数据表电子园51单片机学习网^'w;fs*a:nJ
DB 0147
5\Q rL Ev8r"d29132 DB 165
-a+Q OJ!j0N29132 ……
tUV4Z0BxHN29132 以上程序中,DOUT标号开始的一段循环程序送样本数据。该段循环程序指令经过精心选择,N个样本数据共用4条指令,执行时间为5μs。但对4800 Hz的信号频率,信号周期为208.3333μs,计算得到样本数据的个数N=208.3333/5=41.6667。由于样本数据的个数不能为小数,可以考虑采用4舍5入,以得到最接近的信号频率。因此取样本个数为42,但信号周期变为210μs,信号频率为4762Hz,频率误差很大,达不到使用要求。电子园51单片机学习网l u[7h2{Q!?3O;t-?
为此,可采用多周期综合技术。多周期综合的方法就是在计算样本数据时,将M个周期一并考虑。即N个样本数据代表了M个信号周期的波形,使每个周期的样本数与要求值最接近。计算公式如下:电子园51单片机学习网F?U il9Ok"T]n
DK=127(1+SIN(2лMK/N) K="0",1,2,3……N-1电子园51单片机学习网XQ)M4GlI'}
为此,需合理确定N和M的值。电子园51单片机学习网+XM haXWRX6j*q
M的值可如下确定;取单周期样本数据个数的小数部分,除1的结果既为M。对f0=4800Hz,可知M恰好等于3。电子园51单片机学习网5| ZZ_#|
下面计算N;已知每个样本数据需要5μs,样本周期数为3,信号频率为4800 Hz,则电子园51单片机学习网v b+N1U"IMM:Joa
N="3/4800"*1000000/5=125
L/_0M'{.\29132 由此可知样本数据的计算公式:
pr|3B,bd U29132 DK="127"(1+SIN(6л/125)) K=0,1,2……124
NC4l"@:M&u } r29132 实用中,用该信号源产生了4800Hz正弦波,400Hz正弦波、480Hz正弦波和1000Hz方波四种波形。400Hz、480Hz正弦波和1000Hz方波的波形参数计算此处略。实测表明四种信号的频率误差都小于0.5Hz。
k8KQr&~B Au-I"i7l6D29132如果信号频率比较低,样本数据很多,就不需要把样本数据先移到RAM中,而直接从FLASH中取得样本数据送往DAC。对正弦波来说,当每周期有20个以上的样本数据时,就有比较好的波形。对于矩形波来说,每周期只需要2个样本数据。
3. 小结
+\ yV4T8ei29132 以上电路虽然简单,但有比较精确的波形。由于波形参数完全由软件预先设定,除了产生正弦波、方波以外,还能产生梯形波或sin(x)/x等形状复杂的波形。可以将电路设计成嵌入式结构,从而在一些工业生产现场得到应用。电子园51单片机学习网!jY \B T+e5P&yo
9SwK3Lvb1E z u29132参考文献电子园51单片机学习网b(a"|Me+oK.Yr
1 余永权.ATMEL89系列(MCS-51兼容)FLASH单片机原理及应用.电子工业出版社.1997年电子园51单片机学习网 {H"])e*]_@
2 蒋焕文,孙续.电子测量.中国计量出版社.1988年
nw4h"}\29132电子园51单片机学习网7w9t7x`ac#?
文章评论(0条评论)
登录后参与讨论