用单片机产生正弦波程序
要用到数模转换DAC0832
MOV DPTR,#SINTAB ;正弦表写入内部RAM6DH-7FH
MOV R0,#6DH
LOOP: CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
CJNE R0,#80H,LOOP
MOV DPTR,#7FFFH ;设置D/A转换器的端口地址
MOV R0,#6DH ;设置正弦表指针
LOOP1: MOV A,@R0 ;查表
MOVX @DPTR,A ;D/A转换
ACALL DELAY ;延时,等待转换结束
DEC R0 ;正弦表位移量增量
CJNE R0, #6DH,LOOP1 ;第一象限输出完?
LOOP2: MOV A,@R0 ;查表
MOVX @DPTR,A ;D/A转换
acall DELAY ;延时,等待转换结束
DEC R0 ;正弦表位移量减量
CJNE R0, #6DH,LOOP2 ;第二象限输出完?
LOOP3: MOV A,@R0 ;查表
CPL A ;表值取反
MOVX @DPTR,A ;D/A转换
ACALL DELAY ;延时,等待转换结束
INC R0 ;正弦表位移量增量
CJNE R0,#7FH,LOOP3 ;第三象限输出完?
LOOP4:MOV A,@R0 ;查表
CPL A ;表值取反
MOVX @DPTR,A ;D/A转换
ACALL DELAY ;延时,等待转换结束
DEC R0 ;正弦表位移量减量
CJNE R0,#6DH,LOOP4 ;第四象限输出完?
SJMP LOOP1
DELAY:MOV R7,#200 ; 延时50ms
DEL1:MOV R6,#123
NOP
DEL2:JNZ R6,DEL2
DJNZ R7,DEL1
RET
SINTAB:
DB 80H,83H,86H,89H,8DH,90H,93H,96H
DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H
DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H
DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H
DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH
DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH
DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H
DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH
DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH
DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H
DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H
DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H
DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H
DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H
DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH
DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H
DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H
DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH
DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H
DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H
DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H
DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H
DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H
DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H
DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH
DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H
DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H
END
-
-
xilinxue 发表于 2008/11/6 18:46:50
只是把正弦波产生的数据先存起来,再查表直接发送就可以了,也可以通过公式计算,不过由于 51的计算能力有限,希望大家采用查表的方法,要产生别的波形也是一样的,先准备表格,再通过DA就可以实现你要求的波形了2楼 回复本楼
引用 xilinxue 2008/11/6 18:46:50 发表于2楼的内容
-
引用 semiscone 2008/11/13 20:19:24 发表于3楼的内容
-
引用 xilinxue 2008/11/17 18:26:14 发表于4楼的内容
-
-
-
jiaobei2354717 | 当前状态:离线
总积分:57 2024年可用积分:0
注册时间: 2009-06-12
最后登录时间: 2009-06-12
-
jiaobei2354717 发表于 2009/6/12 12:31:48
你好,请问有没有关于C语言设计的 频率可调的正弦波编程啊
引用 jiaobei2354717 2009/6/12 12:31:48 发表于5楼的内容
-