求51单片机控制AD9833输出正弦波的程序啊,最好有仿真图,谢谢

求51单片机控制AD9833输出正弦波的程序啊,最好有仿真图,谢谢,第1张

你直接用个sin 函数写啊 设定一个幅值 然后使用一个延时 幅值的大小决定振幅 延时的大小决定频率 我随手写写:

{ int i,temp,A(幅值)

while(1)

{ for(i=0;i<=A;i++)

{ temp=(int(sin(i90/A))常数 这里好好理解下

延时(自定时间)(正半周)

AD芯片驱动函数(temp)

}

for(i=0;i<=A;i++)

{ temp=—(int(sin(i90/A))常数 (负半周)

延时(自定时间)

AD芯片驱动函数(temp)

}

}

延时函数(int :时间值)带参

{

}

AD芯片驱动程序(带参(参数为AD输出模拟量大小所代表的数值 注意 这里这个参数应该体现temp的正负值引起AD输出模拟信号方向的改变))

{

}

纯手打 求采纳

不是转换……

不论十进制还是十六进制都是看你怎么解释,或者说怎么定义,但是不论怎么定义数据,存储的都是十六进制形式,你发送的数据是存储的形式,所以上位机vb读取的数据也是十六进制的,你如果想要十进制,需要自己在上位机接收后解析数据,解析的时候注意大小端等问题……

程序在下面:

   ORG  0000H

START:   LJMP MAIN

       ORG  0003H

LJMP INSER

ORG  0030H

MAIN:    MOV  DPTR,#7FFFH

       SETB EX0

SETB IT0

SETB EA

HEHE:    JB   20H0,ST

       JB   20H1,TRI

JB   20H2,SQ

JB   20H3,SIN

SJMP HEHE

INSER:   JNB  P10,LL1

       SJMP L1

LL1:     MOV  20H,#00H

SETB 20H0

RETI

L1:      JNB  P12,LL2

       SJMP L2

LL2:     MOV  20H,#00H

       SETB 20H1

RETI

L2:      JNB  P14,LL3

       SJMP L3

LL3:     MOV  20H,#00H

       SETB 20H2

RETI

L3:      JNB  P16,LL4

       RETI

LL4:     MOV  20H,#00H

       SETB 20H3

RETI

ST: MOV  A,#00H

LOOP:    MOVX @DPTR,A

       INC  A

AJMP LOOP

TRI: MOV  A,#00H

UP:      MOVX @DPTR,A

       INC  A

CJNE A,#0FFH,UP

DOWN:    MOVX @DPTR,A

       DEC  A

CJNE A,#00H,DOWN

AJMP UP

SQ: MOV  A,#0FFH

       MOVX @DPTR,A

ACALL DELAY1

MOV  A,#7FH

MOVX @DPTR,A

ACALL DELAY2

AJMP SQ

DELAY1:  MOV  R4,#0FFH

LOOP7:   MOV  R5,#10H

LOOP8: NOP

DJNZ R5,LOOP2

DJNZ R4,LOOP1

RET

DELAY2:  MOV  R4,#0FFH

LOOP5:   MOV  R5,#10H

LOOP6: NOP

DJNZ R5,LOOP6

DJNZ R4,LOOP5

RET

SIN: MOV  DPTR,#SINTAB

       MOV  R0,#6DH

LOOP0:   CLR  A

       MOVC A,@A+DPTR

MOV  @R0,A

INC  DPTR

INC  R0

CJNE R0,#80H,LOOP0

MOV  DPTR,#7FFFH

MOV  R0,6DH

LOOP1:   MOV  A,@R0

       MOVX @DPTR,A

INC  R0

CJNE R0,#7FH,LOOP1

LOOP2:   MOV  A,@R0

       MOVX @DPTR,A

DEC  R0

CJNE R0,#6DH,LOOP2

LOOP3:   MOV  A,@R0

       CPL  A

MOVX @DPTR,A

INC  R0

CJNE R0,#7FH,LOOP3

LOOP4: MOV  A,@R0

       CPL  A

MOVX @DPTR,A

DEC  R0

CJNE R0,#6DH,LOOP4

SJMP LOOP1

SINTAB:  DB 7FH,89H,94H,9FH,0AAH,0B4H,0BEH,0C8H,0D1H,0D9H

       DB 0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,0FEH,0FFH

END

第一步,查看芯片手册配置SPI工作方式,控制芯片的SPI工作方式必须和AD9833的一样。

第二步,使用厂商做好的函数进行AD9833的设置。(我没有用过AD9833)但是带串行接口的芯片一般都需要设置一下,怎么设置需要看AD手册了。

第三步,向AD发送你想要输出的数字量吧。

以上就是关于求51单片机控制AD9833输出正弦波的程序啊,最好有仿真图,谢谢全部的内容,包括:求51单片机控制AD9833输出正弦波的程序啊,最好有仿真图,谢谢、怎么将单片机接收到的十六进制数转为十进制,、求AD9833与51单片机的整体电路连接图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9467722.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存