- DAC0832工作于直通方式,MCU的P0口直接输给DAC0832数据口
DAC0832的参考电平引脚+10V,输出运放电源采用+12V和-12V双极性供电 - P1.0控制 方波 输出的选择开关,低电平有效
P1.1控制 锯齿波 输出的选择开关,低电平有效
P1.2控制 三角波 输出的选择开关,低电平有效
P1.3控制 正弦波 输出的选择开关,低电平有效 - P1.4控制 方波 的指示灯,低电平有效
P1.5控制 锯齿波 的指示灯,低电平有效
P1.6控制 三角波 的指示灯,低电平有效
P1.7控制 正弦波 的指示灯,低电平有效
ORG 0000H LJMP INIT ORG 0100H INIT: MOV DPTR,#SIN // 指向正弦表 MAIN: MOV A,#00H // A清零 ORL P1,#0F0H // 指示灯复位 JNB P1.0,SQUARE // 选择方波 JNB P1.1,SAWTOOTH // 选择锯齿波 JNB P1.2,TRIANG // 选择三角波 JNB P1.3,SINE // 选择正弦波 SJMP MAIN SQUARE: CLR P1.4 // 方波 SQULOOP:JB P1.0,MAIN // 判断是否返回 MOV A,#00H // 下降沿 MOV P0,A LCALL DELAY1 MOV A,#0FFH // 上升沿 MOV P0,A LCALL DELAY1 SJMP SQULOOP SAWTOOTH:CLR P1.5 // 锯齿波 SAWLOOP:JB P1.1,MAIN // 判断是否返回 MOV P0,A INC A // A+1 LCALL DELAY1 SJMP SAWLOOP TRIANG: CLR P1.6 // 三角波 UPLOOP: JB P1.2,MAIN // 判断是否返回 MOV P0,A INC A // A+1 LCALL DELAY1 CJNE A,#0FFH,UPLOOP // 判断是否到最大值 DOWNLOOP:JB P1.2,MAIN // 判断是否返回 MOV P0,A DEC A // A-1 LCALL DELAY1 CJNE A,#00H,DOWNLOOP // 判断是否到最小值 SJMP UPLOOP SINE: CLR P1.7 // 正弦波 SINLOOP:JB P1.3,MAIN // 判断是否返回 MOV R0,A // 保护A MOVC A,@A+DPTR // 查表 MOV P0,A MOV A,R0 // 恢复A INC A // A+1 LCALL DELAY1 SJMP SINLOOP SIN: 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, 75H, 78H, 7bH, 7eH DELAY100: MOV 30H,#195 //延时100ms MOV 31H,#133 NEXT100: DJNZ 31H,NEXT100 DJNZ 30H,NEXT100 RET DELAY1: MOV 30H,#2 //延时1ms MOV 31H,#234 NEXT1: DJNZ 31H,NEXT1 DJNZ 30H,NEXT1 RET END效果图
-
方波
-
锯齿波
-
三角波
-
正弦波



